From a61a2edf5e30621bdd8fae3c496ff0bfabf8d47e Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Tue, 30 Oct 2018 18:00:22 +0100 Subject: [PATCH 01/17] Initial commit --- README.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 000000000..c45c553d2 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# ALGOToken +Responsible for the issuing of ALGO tokens From 5a1dfea03178d694f2d94995f793908f43080c54 Mon Sep 17 00:00:00 2001 From: Julian Molina Date: Thu, 8 Nov 2018 09:30:45 +0100 Subject: [PATCH 02/17] Legal docs --- CODE_OF_CONDUCT.md | 46 ++++++++++++++++++++++++++++++++++++++++++++++ CONTRIBUTING.md | 45 +++++++++++++++++++++++++++++++++++++++++++++ LICENSE | 42 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 133 insertions(+) create mode 100644 CODE_OF_CONDUCT.md create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..c71b685b4 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,46 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at feedback at advancedalgos dot org. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..311653120 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,45 @@ +# Contributing + +We are thrilled you are interested in contributing to this repository. Your help may be essential to the project's success and we want you in! + +Advanced Algos LTD is a startup, currently at a very early stage. Although this repository is not open source software yet, we do welcome contributions from the community. + +Contributions are deemed _voluntary work_. There might be incentives in place for certain kinds of contributions. Contact us for more information in this regards. + +In any case, contributors agree to provide an express grant of patent rights for their contributions. Submitting Pull Requests to this repository represents an express agreement with the terms of our Balanced Contributor Intellectual Property Agreement. This agreement is a direct implementation of GitHub's [Balanced Employee Intellectual Property Agreement 1.0.1](https://github.com/github/balanced-employee-ip-agreement/blob/master/Balanced_Employee_IP_Agreement.md). + +# Balanced Contributor Intellectual Property Agreement 1.0.1 + +This BALANCED CONTRIBUTOR INTELLECTUAL PROPERTY AGREEMENT is between person or team submitting Pull Requests to this repository and Advanced Algos LTD ("Company"). + +**What is this?** This is the Company's Intellectual Property Agreement ("Agreement"). If you've worked in the technology space before, there's a good chance that you've run across one or more of these in the past. This document is the official, entire and exclusive agreement on what intellectual property ("IP") is yours, and what belongs to the Company. + +**Why is this?** The Company needs to be clear on what IP it owns and has rights to. Its customers, contributors, and investors depend on the Company having the legal rights to the products and services it is providing so that the Company can continue operating and doing business. + +The Company also believes that it's important to be clear on what it doesn't own. The Company doesn't want you looking over your shoulder every time you work on something personal or worrying that the Company will someday seize your open source non-lethal mousetrap simulation software. In other words, the Company isn't interested in appropriating your personal projects. + +**Read this.** Please read this document and be sure you understand it before you submit any Pull Requests. Due to legal risk and corporate obligations, the Company cannot, by and large, negotiate its terms. If you feel you have a particular circumstance that keeps you from signing, please let the Company's legal department ("Legal") know. And, of course, you're always free and encouraged to get your own legal counsel to explain anything you're not clear on. + +Cool? Then, by submitting your first Pull Request, and as a condition of your contribution, you agree to the following: + +1. **What the Company owns.** The Company owns any IP ("Company IP") that you create, or help create _as its contributor_, but only if it meets one or more of these additional conditions: The IP was (i) related to an existing or prospective Company product or service at the time you developed, invented, or created it, (ii) developed for use by the Company, or (iii) developed or promoted with existing Company IP or with the Company's endorsement. You hereby grant and assign, and will grant and assign, to the Company all rights and interests in all Company IP. + + "Company IP" includes concepts, designs, developments, discoveries, ideas, improvements, inventions, trade secrets, trademarks, and works of authorship. + +2. **What the Company doesn't own.** If you create IP that doesn't fit into one of the categories listed above, the Company doesn't own it. In other words, the Company doesn't own concepts, designs, developments, discoveries, ideas, improvements, inventions, trade secrets, trademarks, or works of authorship that you develop, invent, or create that do not meet any of the conditions in Section 1. + +3. **Contribution of your IP to Company projects.** If you include your own IP – such as IP you created prior to working for the Company – into a Company product or service, it's still yours, of course, but you grant the Company a non-exclusive, irrevocable, fully paid-up, royalty-free, perpetual, sublicensable, transferable, worldwide license to use it without restriction in any way or implementation, in modified form, or as is, by itself, or incorporated into another product or service ("License"). If you include your name in any project over which the Company would have rights under this Agreement, such as in a copyright notice or a comment in code or documentation, then the License covers the rights associated with that use of your name as well. + +4. **Your contributions to non-Company projects.** The Company recognizes that you may be engaged in work that requires you to submit IP to entities other than the Company, such as open source projects used by the Company. Please make sure that Legal is aware of what you're working on so that Legal can help with any licensing issues. If any project asks you to sign a contribution agreement, you should check with Legal before doing so. These agreements may be legally binding on the Company and so should be run through Legal first. + +5. **Voluntary Works** All Company IP that you are involved with or create as part of your work for the Company is voluntary work which does not require compensation. There might be incentives in place for certain kinds of contributions. Feel free to contact the Company to learn more. + +6. **No conflicts.** You agree that you don't have any outstanding agreements or obligations that conflict with those in this Agreement, and that you won't enter into conflicting agreements in the future. + +7. **IP protection.** The Company might someday need to show the work that went into the development of IP that it uses or has used, or to make government filings to establish that it owns the IP or has rights over it. To help in those situations, you agree not to destroy any records you maintain relating to the development of any Company IP or IP under License (together, "All IP"), and, if the Company asks, to provide those records to the Company. You agree to help the Company secure and defend its rights in All IP. For your help the Company will compensate you at a reasonable rate. If the Company is unable to secure your help, you authorize the Company to act on your behalf (as your agent and attorney-in-fact) in securing all rights related to All IP. + +8. **Confidentiality.** As an contributor or contractor of the Company, you will have access to sensitive confidential information that is important to the Company's business. You are responsible for keeping this information confidential, including after you end your work for the Company. + + "Confidential Information" includes non-public technical details about our products or services, financial information, business strategies and forecasts, customer data, or any other information, data or know-how that is valuable to the Company because it is not publicly known. + + The Company's Confidential Information is sensitive and we expect that you'll treat it as such. You agree to only use the Company's Confidential Information for the purpose of performing your contribution and for the benefit of the Company. You will do your best to keep Confidential Information secret. If you are not sure if something is Confidential Information, you should assume that it is, until you can confirm otherwise. \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..c049df9cb --- /dev/null +++ b/LICENSE @@ -0,0 +1,42 @@ +COPYRIGHT NOTICE + +© Copyright 2018 Advanced Algos LTD. + + +LICENSE NOTICE + +Advanced Algos LTD. is a startup, currently at a very early stage. Because certain aspects of +the business are still not clearly defined, we have chosen to --temporarily-- grant a +restrictive license for the use of this repository, until those business aspects are clarified +and a proper open source license can be granted. + +Advanced Algos LTD. is publishing the code of this software for several reasons. However, +it shall not be considered free software yet. Advanced Algos LTD. is a for-profit company +in the crypto space and this module is still proprietary software. + +The reasons for opening up the code of this module at this stage are the following: + + * We believe that transparency is paramount to achieving our goals, so we want everyone + to be able to understand what this module does and how. Opening up the code of this module + allows anyone to take a close look. + + * We welcome contributions from the community. Contributions are regarded as voluntary work. + There may be incentives in place for certain kinds of contributions. Contact us to learn more. + Contributors agree to provide an express grant of patent rights for their contributions. + + +LICENSE WORDING + +Advanced Algos LTD. grants a limited license for the following uses: + +1. CODE REVIEW AND AUDITS. You are granted permission to clone this repository to analyze, + review or audit the code. + +2. COLLABORATING WITH ADVANCED ALGOS LTD. You are granted permission to fork this repository + with the sole purpose of correcting bugs and developing functionality in agreement with + Advanced Algos LTD. By contributing to this repository you explicitely agree to the terms + detailed in CONTRIBUTING.MD. + +PLEASE SEE CONTRIBUTING.MD FOR MORE DETAILS ON THE IMPLICATIONS SURROUNDING YOUR CONTRIBUTIONS TO THIS REPOSITORY. + + From 99d694ad78983eb8c6bffbff6a197094e91bdb3b Mon Sep 17 00:00:00 2001 From: pmmax Date: Thu, 8 Nov 2018 19:38:34 -0300 Subject: [PATCH 03/17] Initial POC for the ERC20 ALGO token implementation (based on openzeppelin-solidity v2.0.0) --- .gitignore | 332 ++++++++++++++++++ .../AdvancedAlgos.AlgoErc20Token.sln | 37 ++ ....AlgoErc20Token.EthClientExtensions.csproj | 12 + .../EthAccountFactory.cs | 19 + .../TransactionRejectedException.cs | 24 ++ .../TransactionReceiptExtensions.cs | 16 + .../Reflection/AssemblyExtensions.cs | 20 ++ .../SmartContract.cs | 97 +++++ .../AdvancedAlgos.AlgoErc20Token.csproj | 23 ++ .../AlgoIntegralConverterExtensions.cs | 25 ++ .../AlgoTokenV1.cs | 16 + .../Erc20Token.cs | 40 +++ .../SmartContracts/src/AlgoTokenV1.sol | 17 + .../SmartContracts/src/bin/AlgoTokenV1.abi | 1 + .../SmartContracts/src/bin/AlgoTokenV1.bin | 1 + .../SmartContracts/src/bin/AlgoTokenV1.json | 52 +++ .../contracts/.npmignore | 2 + .../contracts/ARCHITECTURE.md | 27 ++ .../contracts/access/Roles.sol | 44 +++ .../contracts/access/roles/CapperRole.sol | 43 +++ .../contracts/access/roles/MinterRole.sol | 43 +++ .../contracts/access/roles/PauserRole.sol | 43 +++ .../contracts/access/roles/SignerRole.sol | 43 +++ .../contracts/crowdsale/Crowdsale.sol | 241 +++++++++++++ .../distribution/FinalizableCrowdsale.sol | 50 +++ .../distribution/PostDeliveryCrowdsale.sol | 50 +++ .../distribution/RefundableCrowdsale.sol | 91 +++++ .../crowdsale/emission/AllowanceCrowdsale.sol | 59 ++++ .../crowdsale/emission/MintedCrowdsale.sol | 29 ++ .../price/IncreasingPriceCrowdsale.sol | 81 +++++ .../crowdsale/validation/CappedCrowdsale.sol | 55 +++ .../IndividuallyCappedCrowdsale.sol | 81 +++++ .../crowdsale/validation/TimedCrowdsale.sol | 85 +++++ .../contracts/cryptography/ECDSA.sol | 71 ++++ .../contracts/cryptography/MerkleProof.sol | 42 +++ .../contracts/drafts/.gitkeep | 0 .../contracts/drafts/Counter.sol | 28 ++ .../drafts/ERC1046/TokenMetadata.sol | 27 ++ .../contracts/drafts/ERC20Migrator.sol | 100 ++++++ .../contracts/drafts/SignatureBouncer.sol | 146 ++++++++ .../contracts/drafts/TokenVesting.sol | 175 +++++++++ .../contracts/examples/SampleCrowdsale.sol | 57 +++ .../contracts/examples/SimpleToken.sol | 26 ++ .../contracts/introspection/ERC165.sol | 53 +++ .../contracts/introspection/ERC165Checker.sol | 146 ++++++++ .../contracts/introspection/IERC165.sol | 19 + .../contracts/lifecycle/Pausable.sol | 57 +++ .../contracts/math/Math.sol | 31 ++ .../contracts/math/SafeMath.sol | 65 ++++ .../contracts/mocks/AddressImpl.sol | 14 + .../mocks/AllowanceCrowdsaleImpl.sol | 20 ++ .../contracts/mocks/ArraysImpl.sol | 18 + .../contracts/mocks/CappedCrowdsaleImpl.sol | 20 ++ .../contracts/mocks/CapperRoleMock.sol | 17 + .../contracts/mocks/ConditionalEscrowMock.sol | 16 + .../contracts/mocks/CounterImpl.sol | 20 ++ .../contracts/mocks/CrowdsaleMock.sol | 9 + .../contracts/mocks/DetailedERC20Mock.sol | 15 + .../contracts/mocks/ECDSAMock.sol | 23 ++ .../ERC165/ERC165InterfacesSupported.sol | 66 ++++ .../mocks/ERC165/ERC165NotSupported.sol | 5 + .../contracts/mocks/ERC165CheckerMock.sol | 31 ++ .../contracts/mocks/ERC165Mock.sol | 11 + .../contracts/mocks/ERC20BurnableMock.sol | 11 + .../contracts/mocks/ERC20MintableMock.sol | 7 + .../contracts/mocks/ERC20Mock.sol | 24 ++ .../contracts/mocks/ERC20PausableMock.sol | 13 + .../contracts/mocks/ERC20WithMetadataMock.sol | 11 + .../contracts/mocks/ERC721FullMock.sol | 32 ++ .../mocks/ERC721MintableBurnableImpl.sol | 20 ++ .../contracts/mocks/ERC721Mock.sol | 17 + .../contracts/mocks/ERC721PausableMock.sol | 22 ++ .../contracts/mocks/ERC721ReceiverMock.sol | 41 +++ .../contracts/mocks/EventEmitter.sol | 62 ++++ .../mocks/FinalizableCrowdsaleImpl.sol | 21 ++ .../mocks/IncreasingPriceCrowdsaleImpl.sol | 23 ++ .../mocks/IndividuallyCappedCrowdsaleImpl.sol | 19 + .../contracts/mocks/MathMock.sol | 17 + .../contracts/mocks/MerkleProofWrapper.sol | 18 + .../contracts/mocks/MintedCrowdsaleImpl.sol | 18 + .../contracts/mocks/MinterRoleMock.sol | 17 + .../contracts/mocks/OwnableMock.sol | 6 + .../contracts/mocks/PausableMock.sol | 24 ++ .../contracts/mocks/PauserRoleMock.sol | 17 + .../mocks/PostDeliveryCrowdsaleImpl.sol | 21 ++ .../contracts/mocks/PullPaymentMock.sol | 15 + .../contracts/mocks/ReentrancyAttack.sol | 10 + .../contracts/mocks/ReentrancyMock.sol | 44 +++ .../mocks/RefundableCrowdsaleImpl.sol | 23 ++ .../contracts/mocks/RolesMock.sol | 21 ++ .../contracts/mocks/SafeERC20Helper.sol | 112 ++++++ .../contracts/mocks/SafeMathMock.sol | 26 ++ .../contracts/mocks/SecondaryMock.sol | 8 + .../contracts/mocks/SignatureBouncerMock.sol | 73 ++++ .../contracts/mocks/SignerRoleMock.sol | 17 + .../contracts/mocks/TimedCrowdsaleImpl.sol | 21 ++ .../contracts/ownership/Ownable.sol | 75 ++++ .../contracts/ownership/Secondary.sol | 46 +++ .../contracts/payment/PaymentSplitter.sol | 116 ++++++ .../contracts/payment/PullPayment.sol | 41 +++ .../payment/escrow/ConditionalEscrow.sol | 22 ++ .../contracts/payment/escrow/Escrow.sol | 54 +++ .../contracts/payment/escrow/RefundEscrow.sol | 91 +++++ .../contracts/token/ERC20/ERC20.sol | 211 +++++++++++ .../contracts/token/ERC20/ERC20Burnable.sol | 27 ++ .../contracts/token/ERC20/ERC20Capped.sol | 31 ++ .../contracts/token/ERC20/ERC20Detailed.sol | 42 +++ .../contracts/token/ERC20/ERC20Mintable.sol | 28 ++ .../contracts/token/ERC20/ERC20Pausable.sol | 67 ++++ .../contracts/token/ERC20/IERC20.sol | 34 ++ .../contracts/token/ERC20/SafeERC20.sol | 72 ++++ .../contracts/token/ERC20/TokenTimelock.sol | 69 ++++ .../contracts/token/ERC721/ERC721.sol | 330 +++++++++++++++++ .../contracts/token/ERC721/ERC721Burnable.sol | 12 + .../token/ERC721/ERC721Enumerable.sol | 150 ++++++++ .../contracts/token/ERC721/ERC721Full.sol | 18 + .../contracts/token/ERC721/ERC721Holder.sol | 17 + .../contracts/token/ERC721/ERC721Metadata.sol | 87 +++++ .../token/ERC721/ERC721MetadataMintable.sol | 32 ++ .../contracts/token/ERC721/ERC721Mintable.sol | 28 ++ .../contracts/token/ERC721/ERC721Pausable.sol | 41 +++ .../contracts/token/ERC721/IERC721.sol | 49 +++ .../token/ERC721/IERC721Enumerable.sol | 20 ++ .../contracts/token/ERC721/IERC721Full.sol | 12 + .../token/ERC721/IERC721Metadata.sol | 13 + .../token/ERC721/IERC721Receiver.sol | 31 ++ .../contracts/utils/Address.sol | 28 ++ .../contracts/utils/Arrays.sol | 56 +++ .../contracts/utils/ReentrancyGuard.sol | 34 ++ ...gos.AlgoErc20Token.IntegrationTests.csproj | 20 ++ .../AlgoTokenV1Tests.cs | 74 ++++ .../EthNetwork.cs | 73 ++++ 132 files changed, 6109 insertions(+) create mode 100644 .gitignore create mode 100644 labs/algo-erc20-token/AdvancedAlgos.AlgoErc20Token.sln create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/AdvancedAlgos.AlgoErc20Token.EthClientExtensions.csproj create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/EthAccountFactory.cs create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/Exceptions/TransactionRejectedException.cs create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/Extensions/TransactionReceiptExtensions.cs create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/Reflection/AssemblyExtensions.cs create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/SmartContract.cs create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/AdvancedAlgos.AlgoErc20Token.csproj create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/AlgoIntegralConverterExtensions.cs create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/AlgoTokenV1.cs create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/Erc20Token.cs create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoTokenV1.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.abi create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.bin create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.json create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/.npmignore create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/ARCHITECTURE.md create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/Roles.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/CapperRole.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/MinterRole.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/PauserRole.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/SignerRole.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/distribution/FinalizableCrowdsale.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/distribution/PostDeliveryCrowdsale.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/distribution/RefundableCrowdsale.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/emission/AllowanceCrowdsale.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/emission/MintedCrowdsale.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/price/IncreasingPriceCrowdsale.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/validation/CappedCrowdsale.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/validation/IndividuallyCappedCrowdsale.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/validation/TimedCrowdsale.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/cryptography/ECDSA.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/cryptography/MerkleProof.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/.gitkeep create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/Counter.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/ERC1046/TokenMetadata.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/ERC20Migrator.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/SignatureBouncer.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/TokenVesting.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/examples/SampleCrowdsale.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/examples/SimpleToken.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/introspection/ERC165.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/introspection/ERC165Checker.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/introspection/IERC165.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/lifecycle/Pausable.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/math/Math.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/math/SafeMath.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/AddressImpl.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/AllowanceCrowdsaleImpl.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ArraysImpl.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CappedCrowdsaleImpl.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CapperRoleMock.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ConditionalEscrowMock.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CounterImpl.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CrowdsaleMock.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/DetailedERC20Mock.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ECDSAMock.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165/ERC165InterfacesSupported.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165/ERC165NotSupported.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165CheckerMock.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165Mock.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20BurnableMock.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20MintableMock.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20Mock.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20PausableMock.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20WithMetadataMock.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721FullMock.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721MintableBurnableImpl.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721Mock.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721PausableMock.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721ReceiverMock.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/EventEmitter.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/FinalizableCrowdsaleImpl.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/IncreasingPriceCrowdsaleImpl.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/IndividuallyCappedCrowdsaleImpl.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MathMock.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MerkleProofWrapper.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MintedCrowdsaleImpl.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MinterRoleMock.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/OwnableMock.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PausableMock.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PauserRoleMock.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PostDeliveryCrowdsaleImpl.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PullPaymentMock.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ReentrancyAttack.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ReentrancyMock.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/RefundableCrowdsaleImpl.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/RolesMock.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SafeERC20Helper.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SafeMathMock.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SecondaryMock.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SignatureBouncerMock.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SignerRoleMock.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/TimedCrowdsaleImpl.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/ownership/Ownable.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/ownership/Secondary.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/PaymentSplitter.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/PullPayment.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/escrow/ConditionalEscrow.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/escrow/Escrow.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/escrow/RefundEscrow.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Capped.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/TokenTimelock.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Burnable.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Enumerable.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Full.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Holder.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Metadata.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721MetadataMintable.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Mintable.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Pausable.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Enumerable.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Full.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Metadata.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/utils/Address.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/utils/Arrays.sol create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/utils/ReentrancyGuard.sol create mode 100644 labs/algo-erc20-token/test/AdvancedAlgos.AlgoErc20Token.IntegrationTests/AdvancedAlgos.AlgoErc20Token.IntegrationTests.csproj create mode 100644 labs/algo-erc20-token/test/AdvancedAlgos.AlgoErc20Token.IntegrationTests/AlgoTokenV1Tests.cs create mode 100644 labs/algo-erc20-token/test/AdvancedAlgos.AlgoErc20Token.IntegrationTests/EthNetwork.cs diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..a1c7c5444 --- /dev/null +++ b/.gitignore @@ -0,0 +1,332 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ +**/Properties/launchSettings.json + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# SmartContracts +!**/SmartContracts/src/bin diff --git a/labs/algo-erc20-token/AdvancedAlgos.AlgoErc20Token.sln b/labs/algo-erc20-token/AdvancedAlgos.AlgoErc20Token.sln new file mode 100644 index 000000000..d496c206e --- /dev/null +++ b/labs/algo-erc20-token/AdvancedAlgos.AlgoErc20Token.sln @@ -0,0 +1,37 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28010.2048 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdvancedAlgos.AlgoErc20Token", "src\AdvancedAlgos.AlgoErc20Token\AdvancedAlgos.AlgoErc20Token.csproj", "{6916F713-4B7F-4B20-9205-BAEF417A0316}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdvancedAlgos.AlgoErc20Token.IntegrationTests", "test\AdvancedAlgos.AlgoErc20Token.IntegrationTests\AdvancedAlgos.AlgoErc20Token.IntegrationTests.csproj", "{4587034D-7844-4A36-9F49-FBA9702382E6}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdvancedAlgos.AlgoErc20Token.EthClientExtensions", "src\AdvancedAlgos.AlgoErc20Token.EthClientExtensions\AdvancedAlgos.AlgoErc20Token.EthClientExtensions.csproj", "{A392DD77-CB11-464F-A0D6-77F4AC5BC79F}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {6916F713-4B7F-4B20-9205-BAEF417A0316}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6916F713-4B7F-4B20-9205-BAEF417A0316}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6916F713-4B7F-4B20-9205-BAEF417A0316}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6916F713-4B7F-4B20-9205-BAEF417A0316}.Release|Any CPU.Build.0 = Release|Any CPU + {4587034D-7844-4A36-9F49-FBA9702382E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4587034D-7844-4A36-9F49-FBA9702382E6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4587034D-7844-4A36-9F49-FBA9702382E6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4587034D-7844-4A36-9F49-FBA9702382E6}.Release|Any CPU.Build.0 = Release|Any CPU + {A392DD77-CB11-464F-A0D6-77F4AC5BC79F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A392DD77-CB11-464F-A0D6-77F4AC5BC79F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A392DD77-CB11-464F-A0D6-77F4AC5BC79F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A392DD77-CB11-464F-A0D6-77F4AC5BC79F}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {7273BF71-A9AA-472B-84A8-7658BB88D497} + EndGlobalSection +EndGlobal diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/AdvancedAlgos.AlgoErc20Token.EthClientExtensions.csproj b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/AdvancedAlgos.AlgoErc20Token.EthClientExtensions.csproj new file mode 100644 index 000000000..daa61afdf --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/AdvancedAlgos.AlgoErc20Token.EthClientExtensions.csproj @@ -0,0 +1,12 @@ + + + + netcoreapp2.1 + latest + + + + + + + diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/EthAccountFactory.cs b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/EthAccountFactory.cs new file mode 100644 index 000000000..6e022fdde --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/EthAccountFactory.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Nethereum.Hex.HexConvertors.Extensions; +using Nethereum.Signer; +using Nethereum.Web3.Accounts; + +namespace AdvancedAlgos.AlgoErc20Token.EthClientExtensions +{ + public static class EthAccountFactory + { + public static Account Create() + { + var accountEcKey = EthECKey.GenerateKey(); + var accountPrivateKey = accountEcKey.GetPrivateKeyAsBytes().ToHex(); + return new Account(accountPrivateKey); + } + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/Exceptions/TransactionRejectedException.cs b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/Exceptions/TransactionRejectedException.cs new file mode 100644 index 000000000..c18a8c0bf --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/Exceptions/TransactionRejectedException.cs @@ -0,0 +1,24 @@ +#pragma warning disable RCS1194 // Implement exception constructors. + +using System; +using System.Collections.Generic; +using System.Text; +using Nethereum.RPC.Eth.DTOs; + +namespace AdvancedAlgos.AlgoErc20Token.EthClientExtensions.Exceptions +{ + public class TransactionRejectedException : Exception + { + private const string ERROR_MESSAGE = "Failed to execute the transaction."; + + public TransactionRejectedException(TransactionReceipt transactionReceipt) + : base(ERROR_MESSAGE) + { + TransactionReceipt = transactionReceipt; + } + + public TransactionReceipt TransactionReceipt { get; } + + public static void Throw(TransactionReceipt transactionReceipt) => throw new TransactionRejectedException(transactionReceipt); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/Extensions/TransactionReceiptExtensions.cs b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/Extensions/TransactionReceiptExtensions.cs new file mode 100644 index 000000000..2ce8dec83 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/Extensions/TransactionReceiptExtensions.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Nethereum.RPC.Eth.DTOs; +using AdvancedAlgos.AlgoErc20Token.EthClientExtensions.Exceptions; + +namespace AdvancedAlgos.AlgoErc20Token.EthClientExtensions.Extensions +{ + public static class TransactionReceiptExtensions + { + public static void EnsureSucceededStatus(this TransactionReceipt transactionReceipt) + { + if (transactionReceipt.Status.Value != 1) TransactionRejectedException.Throw(transactionReceipt); + } + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/Reflection/AssemblyExtensions.cs b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/Reflection/AssemblyExtensions.cs new file mode 100644 index 000000000..219d7160b --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/Reflection/AssemblyExtensions.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using System.Text; + +namespace AdvancedAlgos.AlgoErc20Token.EthClientExtensions.Reflection +{ + public static class AssemblyExtensions + { + public static string GetResourceString(this Assembly assembly, string resourceName, Encoding encoding = null) + { + using (var stream = assembly.GetManifestResourceStream(assembly.GetName().Name + "." + resourceName)) + using (var reader = new StreamReader(stream, encoding ?? Encoding.UTF8)) + { + return reader.ReadToEnd(); + } + } + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/SmartContract.cs b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/SmartContract.cs new file mode 100644 index 000000000..a2bebbef4 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/SmartContract.cs @@ -0,0 +1,97 @@ +using System; +using System.Numerics; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoErc20Token.EthClientExtensions.Extensions; +using AdvancedAlgos.AlgoErc20Token.EthClientExtensions.Reflection; +using Nethereum.Contracts; +using Nethereum.Hex.HexTypes; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoErc20Token.EthClientExtensions +{ + public abstract class SmartContract where TContract : SmartContract, new() + { + private static readonly object _syncForResourceLoader = new object(); + + private static string _abi; + private static string _bin; + + public Web3 Web3 { get; private set; } + public string ContractAddress { get; private set; } + + protected abstract string AbiResourceName { get; } + protected abstract string BinResourceName { get; } + protected abstract BigInteger DeploymentGasUnits { get; } + + protected virtual void Initialize(Contract contractDescriptor) { } + + public static TContract Get(Web3 web3, string contractAddress) + { + var contractInstance = new TContract(); + + contractInstance.LoadAbiAndBin(); + + contractInstance.Web3 = web3; + contractInstance.ContractAddress = contractAddress; + + var contractDescriptor = web3.Eth.GetContract(_abi, contractAddress); + + contractInstance.Initialize(contractDescriptor); + + return contractInstance; + } + + public async Task DeployAsync(Web3 web3, BigInteger gasPrice, params object[] constructorParameters) + { + LoadAbiAndBin(); + + var transactionReceipt = await web3.Eth.DeployContract.SendRequestAndWaitForReceiptAsync( + _abi, + _bin, + web3.TransactionManager.Account.Address, + new HexBigInteger(DeploymentGasUnits), + new HexBigInteger(gasPrice), + null, + null, + constructorParameters); + + transactionReceipt.EnsureSucceededStatus(); + + var contractDescriptor = web3.Eth.GetContract(_abi, transactionReceipt.ContractAddress); + + Initialize(contractDescriptor); + + Web3 = web3; + ContractAddress = transactionReceipt.ContractAddress; + + return transactionReceipt; + } + + protected async Task InvokeAsync(Function function, BigInteger gasUnits, BigInteger gasPrice, params object[] parameters) + { + var transactionReceipt = await function.SendTransactionAndWaitForReceiptAsync( + Web3.TransactionManager.Account.Address, + new HexBigInteger(gasUnits), + new HexBigInteger(gasPrice), + null, + null, + parameters); + + transactionReceipt.EnsureSucceededStatus(); + + return transactionReceipt; + } + + private void LoadAbiAndBin() + { + lock (_syncForResourceLoader) + { + if (_abi != null) return; + + _abi = GetType().Assembly.GetResourceString(AbiResourceName); + _bin = GetType().Assembly.GetResourceString(BinResourceName); + } + } + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/AdvancedAlgos.AlgoErc20Token.csproj b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/AdvancedAlgos.AlgoErc20Token.csproj new file mode 100644 index 000000000..bc5df3e67 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/AdvancedAlgos.AlgoErc20Token.csproj @@ -0,0 +1,23 @@ + + + + netcoreapp2.1 + latest + + + + + + + + + + + + + + + + + + diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/AlgoIntegralConverterExtensions.cs b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/AlgoIntegralConverterExtensions.cs new file mode 100644 index 000000000..b870cddaf --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/AlgoIntegralConverterExtensions.cs @@ -0,0 +1,25 @@ +#pragma warning disable EPS02 // Non-readonly struct used as in-parameter + +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; + +namespace AdvancedAlgos.AlgoErc20Token +{ + public static class AlgoIntegralConverterExtensions + { + public const byte TOKEN_DECIMALS = 18; + + public static readonly BigInteger TokenFactor = BigInteger.Pow(10, TOKEN_DECIMALS); + + public static BigInteger Algo(this in byte value) => value * TokenFactor; + public static BigInteger Algo(this in sbyte value) => value * TokenFactor; + public static BigInteger Algo(this in short value) => value * TokenFactor; + public static BigInteger Algo(this in ushort value) => value * TokenFactor; + public static BigInteger Algo(this in int value) => value * TokenFactor; + public static BigInteger Algo(this in uint value) => value * TokenFactor; + public static BigInteger Algo(this in long value) => value * TokenFactor; + public static BigInteger Algo(this in ulong value) => value * TokenFactor; + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/AlgoTokenV1.cs b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/AlgoTokenV1.cs new file mode 100644 index 000000000..1f30aa237 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/AlgoTokenV1.cs @@ -0,0 +1,16 @@ +using System; +using System.Numerics; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoErc20Token.EthClientExtensions; +using Nethereum.Contracts; +using Nethereum.RPC.Eth.DTOs; + +namespace AdvancedAlgos.AlgoErc20Token +{ + public class AlgoTokenV1 : Erc20Token + { + protected override string AbiResourceName => $"SmartContracts.src.bin.{nameof(AlgoTokenV1)}.abi"; + protected override string BinResourceName => $"SmartContracts.src.bin.{nameof(AlgoTokenV1)}.bin"; + protected override BigInteger DeploymentGasUnits => 1200000; + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/Erc20Token.cs b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/Erc20Token.cs new file mode 100644 index 000000000..5cb42bf9d --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/Erc20Token.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoErc20Token.EthClientExtensions; +using Nethereum.Contracts; +using Nethereum.RPC.Eth.DTOs; + +namespace AdvancedAlgos.AlgoErc20Token +{ + public abstract class Erc20Token : SmartContract + where TContract : SmartContract, new() + { + private Function _transfer; + private Function _balanceOf; + private Function _pause; + private Function _unpause; + + protected override void Initialize(Contract contractDescriptor) + { + _transfer = contractDescriptor.GetFunction("transfer"); + _balanceOf = contractDescriptor.GetFunction("balanceOf"); + _pause = contractDescriptor.GetFunction("pause"); + _unpause = contractDescriptor.GetFunction("unpause"); + } + + public Task TransferAsync(BigInteger gasPrice, string to, BigInteger value) => + InvokeAsync(_transfer, 900000, gasPrice, to, value); + + public Task BalanceOfAsync(string owner) => + _balanceOf.CallAsync(owner); + + public Task PauseAsync(BigInteger gasPrice) => + InvokeAsync(_pause, 900000, gasPrice); + + public Task UnpauseAsync(BigInteger gasPrice) => + InvokeAsync(_unpause, 900000, gasPrice); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoTokenV1.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoTokenV1.sol new file mode 100644 index 000000000..0563b6d40 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoTokenV1.sol @@ -0,0 +1,17 @@ +pragma solidity ^0.4.24; + +import "./openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol"; +import "./openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol"; + +contract AlgoTokenV1 is ERC20, ERC20Detailed, ERC20Pausable { + + uint256 public constant INITIAL_SUPPLY = 1000000000 * (10 ** uint256(18)); + + constructor() + ERC20Pausable() + ERC20Detailed("Algos", "ALGO", 18) + public + { + _mint(msg.sender, INITIAL_SUPPLY); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.abi b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.abi new file mode 100644 index 000000000..2b88afa15 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.abi @@ -0,0 +1 @@ +[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isPauser","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renouncePauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addPauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"PauserAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"PauserRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}] \ No newline at end of file diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.bin b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.bin new file mode 100644 index 000000000..12c6b6a7a --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.bin @@ -0,0 +1 @@ +60806040523480156200001157600080fd5b50604080518082018252600581527f416c676f7300000000000000000000000000000000000000000000000000000060208083019182528351808501909452600484527f414c474f00000000000000000000000000000000000000000000000000000000908401528151919291601291620000909160039190620002c1565b508151620000a6906004906020850190620002c1565b506005805460ff191660ff9290921691909117905550620000d290503364010000000062000103810204565b6007805460ff19169055620000fd336b033b2e3c9fd0803ce800000064010000000062000155810204565b62000366565b6200011e60068264010000000062000b226200021482021704565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b600160a060020a03821615156200016b57600080fd5b60025462000188908264010000000062000ac46200026f82021704565b600255600160a060020a038216600090815260208190526040902054620001be908264010000000062000ac46200026f82021704565b600160a060020a0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600160a060020a03811615156200022a57600080fd5b6200023f828264010000000062000289810204565b156200024a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000828201838110156200028257600080fd5b9392505050565b6000600160a060020a0382161515620002a157600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200030457805160ff191683800117855562000334565b8280016001018555821562000334579182015b828111156200033457825182559160200191906001019062000317565b506200034292915062000346565b5090565b6200036391905b808211156200034257600081556001016200034d565b90565b610b9c80620003766000396000f3006080604052600436106100fb5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610100578063095ea7b31461018a57806318160ddd146101c257806323b872dd146101e95780632ff2e9dc14610213578063313ce5671461022857806339509351146102535780633f4ba83a1461027757806346fbf68e1461028e5780635c975abb146102af5780636ef8d66d146102c457806370a08231146102d957806382dc1ec4146102fa5780638456cb591461031b57806395d89b4114610330578063a457c2d714610345578063a9059cbb14610369578063dd62ed3e1461038d575b600080fd5b34801561010c57600080fd5b506101156103b4565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014f578181015183820152602001610137565b50505050905090810190601f16801561017c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561019657600080fd5b506101ae600160a060020a036004351660243561044a565b604080519115158252519081900360200190f35b3480156101ce57600080fd5b506101d761046e565b60408051918252519081900360200190f35b3480156101f557600080fd5b506101ae600160a060020a0360043581169060243516604435610474565b34801561021f57600080fd5b506101d761049a565b34801561023457600080fd5b5061023d6104aa565b6040805160ff9092168252519081900360200190f35b34801561025f57600080fd5b506101ae600160a060020a03600435166024356104b3565b34801561028357600080fd5b5061028c6104d0565b005b34801561029a57600080fd5b506101ae600160a060020a0360043516610534565b3480156102bb57600080fd5b506101ae61054d565b3480156102d057600080fd5b5061028c610556565b3480156102e557600080fd5b506101d7600160a060020a0360043516610561565b34801561030657600080fd5b5061028c600160a060020a036004351661057c565b34801561032757600080fd5b5061028c61059c565b34801561033c57600080fd5b50610115610602565b34801561035157600080fd5b506101ae600160a060020a0360043516602435610663565b34801561037557600080fd5b506101ae600160a060020a0360043516602435610680565b34801561039957600080fd5b506101d7600160a060020a036004358116906024351661069d565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104405780601f1061041557610100808354040283529160200191610440565b820191906000526020600020905b81548152906001019060200180831161042357829003601f168201915b5050505050905090565b60075460009060ff161561045d57600080fd5b61046783836106c8565b9392505050565b60025490565b60075460009060ff161561048757600080fd5b610492848484610746565b949350505050565b6b033b2e3c9fd0803ce800000081565b60055460ff1690565b60075460009060ff16156104c657600080fd5b61046783836107e3565b6104d933610534565b15156104e457600080fd5b60075460ff1615156104f557600080fd5b6007805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b600061054760068363ffffffff61089316565b92915050565b60075460ff1690565b61055f336108ca565b565b600160a060020a031660009081526020819052604090205490565b61058533610534565b151561059057600080fd5b61059981610912565b50565b6105a533610534565b15156105b057600080fd5b60075460ff16156105c057600080fd5b6007805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104405780601f1061041557610100808354040283529160200191610440565b60075460009060ff161561067657600080fd5b610467838361095a565b60075460009060ff161561069357600080fd5b61046783836109a5565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b6000600160a060020a03831615156106df57600080fd5b336000818152600160209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b600160a060020a038316600090815260016020908152604080832033845290915281205482111561077657600080fd5b600160a060020a03841660009081526001602090815260408083203384529091529020546107aa908363ffffffff6109bb16565b600160a060020a03851660009081526001602090815260408083203384529091529020556107d98484846109d2565b5060019392505050565b6000600160a060020a03831615156107fa57600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461082e908363ffffffff610ac416565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b6000600160a060020a03821615156108aa57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6108db60068263ffffffff610ad616565b604051600160a060020a038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b61092360068263ffffffff610b2216565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6000600160a060020a038316151561097157600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461082e908363ffffffff6109bb16565b60006109b23384846109d2565b50600192915050565b600080838311156109cb57600080fd5b5050900390565b600160a060020a0383166000908152602081905260409020548111156109f757600080fd5b600160a060020a0382161515610a0c57600080fd5b600160a060020a038316600090815260208190526040902054610a35908263ffffffff6109bb16565b600160a060020a038085166000908152602081905260408082209390935590841681522054610a6a908263ffffffff610ac416565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282018381101561046757600080fd5b600160a060020a0381161515610aeb57600080fd5b610af58282610893565b1515610b0057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a0381161515610b3757600080fd5b610b418282610893565b15610b4b57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191660011790555600a165627a7a723058202dd18facb88fce52397143655484bd6bb04ca8578eb8c0779511f9e8d97c55f20029 \ No newline at end of file diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.json b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.json new file mode 100644 index 000000000..e0b102ac5 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.json @@ -0,0 +1,52 @@ +{ + "abi": "[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"INITIAL_SUPPLY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPauser\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renouncePauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addPauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}]", + "bytecode": "60806040523480156200001157600080fd5b50604080518082018252600581527f416c676f7300000000000000000000000000000000000000000000000000000060208083019182528351808501909452600484527f414c474f00000000000000000000000000000000000000000000000000000000908401528151919291601291620000909160039190620002c1565b508151620000a6906004906020850190620002c1565b506005805460ff191660ff9290921691909117905550620000d290503364010000000062000103810204565b6007805460ff19169055620000fd336b033b2e3c9fd0803ce800000064010000000062000155810204565b62000366565b6200011e60068264010000000062000b226200021482021704565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b600160a060020a03821615156200016b57600080fd5b60025462000188908264010000000062000ac46200026f82021704565b600255600160a060020a038216600090815260208190526040902054620001be908264010000000062000ac46200026f82021704565b600160a060020a0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600160a060020a03811615156200022a57600080fd5b6200023f828264010000000062000289810204565b156200024a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000828201838110156200028257600080fd5b9392505050565b6000600160a060020a0382161515620002a157600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200030457805160ff191683800117855562000334565b8280016001018555821562000334579182015b828111156200033457825182559160200191906001019062000317565b506200034292915062000346565b5090565b6200036391905b808211156200034257600081556001016200034d565b90565b610b9c80620003766000396000f3006080604052600436106100fb5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610100578063095ea7b31461018a57806318160ddd146101c257806323b872dd146101e95780632ff2e9dc14610213578063313ce5671461022857806339509351146102535780633f4ba83a1461027757806346fbf68e1461028e5780635c975abb146102af5780636ef8d66d146102c457806370a08231146102d957806382dc1ec4146102fa5780638456cb591461031b57806395d89b4114610330578063a457c2d714610345578063a9059cbb14610369578063dd62ed3e1461038d575b600080fd5b34801561010c57600080fd5b506101156103b4565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014f578181015183820152602001610137565b50505050905090810190601f16801561017c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561019657600080fd5b506101ae600160a060020a036004351660243561044a565b604080519115158252519081900360200190f35b3480156101ce57600080fd5b506101d761046e565b60408051918252519081900360200190f35b3480156101f557600080fd5b506101ae600160a060020a0360043581169060243516604435610474565b34801561021f57600080fd5b506101d761049a565b34801561023457600080fd5b5061023d6104aa565b6040805160ff9092168252519081900360200190f35b34801561025f57600080fd5b506101ae600160a060020a03600435166024356104b3565b34801561028357600080fd5b5061028c6104d0565b005b34801561029a57600080fd5b506101ae600160a060020a0360043516610534565b3480156102bb57600080fd5b506101ae61054d565b3480156102d057600080fd5b5061028c610556565b3480156102e557600080fd5b506101d7600160a060020a0360043516610561565b34801561030657600080fd5b5061028c600160a060020a036004351661057c565b34801561032757600080fd5b5061028c61059c565b34801561033c57600080fd5b50610115610602565b34801561035157600080fd5b506101ae600160a060020a0360043516602435610663565b34801561037557600080fd5b506101ae600160a060020a0360043516602435610680565b34801561039957600080fd5b506101d7600160a060020a036004358116906024351661069d565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104405780601f1061041557610100808354040283529160200191610440565b820191906000526020600020905b81548152906001019060200180831161042357829003601f168201915b5050505050905090565b60075460009060ff161561045d57600080fd5b61046783836106c8565b9392505050565b60025490565b60075460009060ff161561048757600080fd5b610492848484610746565b949350505050565b6b033b2e3c9fd0803ce800000081565b60055460ff1690565b60075460009060ff16156104c657600080fd5b61046783836107e3565b6104d933610534565b15156104e457600080fd5b60075460ff1615156104f557600080fd5b6007805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b600061054760068363ffffffff61089316565b92915050565b60075460ff1690565b61055f336108ca565b565b600160a060020a031660009081526020819052604090205490565b61058533610534565b151561059057600080fd5b61059981610912565b50565b6105a533610534565b15156105b057600080fd5b60075460ff16156105c057600080fd5b6007805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104405780601f1061041557610100808354040283529160200191610440565b60075460009060ff161561067657600080fd5b610467838361095a565b60075460009060ff161561069357600080fd5b61046783836109a5565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b6000600160a060020a03831615156106df57600080fd5b336000818152600160209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b600160a060020a038316600090815260016020908152604080832033845290915281205482111561077657600080fd5b600160a060020a03841660009081526001602090815260408083203384529091529020546107aa908363ffffffff6109bb16565b600160a060020a03851660009081526001602090815260408083203384529091529020556107d98484846109d2565b5060019392505050565b6000600160a060020a03831615156107fa57600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461082e908363ffffffff610ac416565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b6000600160a060020a03821615156108aa57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6108db60068263ffffffff610ad616565b604051600160a060020a038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b61092360068263ffffffff610b2216565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6000600160a060020a038316151561097157600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461082e908363ffffffff6109bb16565b60006109b23384846109d2565b50600192915050565b600080838311156109cb57600080fd5b5050900390565b600160a060020a0383166000908152602081905260409020548111156109f757600080fd5b600160a060020a0382161515610a0c57600080fd5b600160a060020a038316600090815260208190526040902054610a35908263ffffffff6109bb16565b600160a060020a038085166000908152602081905260408082209390935590841681522054610a6a908263ffffffff610ac416565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282018381101561046757600080fd5b600160a060020a0381161515610aeb57600080fd5b610af58282610893565b1515610b0057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a0381161515610b3757600080fd5b610b418282610893565b15610b4b57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191660011790555600a165627a7a723058202dd18facb88fce52397143655484bd6bb04ca8578eb8c0779511f9e8d97c55f20029", + "functionHashes": { + "INITIAL_SUPPLY()": "2ff2e9dc", + "addPauser(address)": "82dc1ec4", + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decimals()": "313ce567", + "decreaseAllowance(address,uint256)": "a457c2d7", + "increaseAllowance(address,uint256)": "39509351", + "isPauser(address)": "46fbf68e", + "name()": "06fdde03", + "pause()": "8456cb59", + "paused()": "5c975abb", + "renouncePauser()": "6ef8d66d", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd", + "unpause()": "3f4ba83a" + }, + "gasEstimates": { + "creation": [ + null, + 594400 + ], + "external": { + "INITIAL_SUPPLY()": 272, + "addPauser(address)": null, + "allowance(address,address)": 1082, + "approve(address,uint256)": 22732, + "balanceOf(address)": 851, + "decimals()": 509, + "decreaseAllowance(address,uint256)": null, + "increaseAllowance(address,uint256)": null, + "isPauser(address)": null, + "name()": null, + "pause()": null, + "paused()": 594, + "renouncePauser()": null, + "symbol()": null, + "totalSupply()": 428, + "transfer(address,uint256)": null, + "transferFrom(address,address,uint256)": null, + "unpause()": null + }, + "internal": {} + }, + "runtimeBytecode": "6080604052600436106100fb5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610100578063095ea7b31461018a57806318160ddd146101c257806323b872dd146101e95780632ff2e9dc14610213578063313ce5671461022857806339509351146102535780633f4ba83a1461027757806346fbf68e1461028e5780635c975abb146102af5780636ef8d66d146102c457806370a08231146102d957806382dc1ec4146102fa5780638456cb591461031b57806395d89b4114610330578063a457c2d714610345578063a9059cbb14610369578063dd62ed3e1461038d575b600080fd5b34801561010c57600080fd5b506101156103b4565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014f578181015183820152602001610137565b50505050905090810190601f16801561017c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561019657600080fd5b506101ae600160a060020a036004351660243561044a565b604080519115158252519081900360200190f35b3480156101ce57600080fd5b506101d761046e565b60408051918252519081900360200190f35b3480156101f557600080fd5b506101ae600160a060020a0360043581169060243516604435610474565b34801561021f57600080fd5b506101d761049a565b34801561023457600080fd5b5061023d6104aa565b6040805160ff9092168252519081900360200190f35b34801561025f57600080fd5b506101ae600160a060020a03600435166024356104b3565b34801561028357600080fd5b5061028c6104d0565b005b34801561029a57600080fd5b506101ae600160a060020a0360043516610534565b3480156102bb57600080fd5b506101ae61054d565b3480156102d057600080fd5b5061028c610556565b3480156102e557600080fd5b506101d7600160a060020a0360043516610561565b34801561030657600080fd5b5061028c600160a060020a036004351661057c565b34801561032757600080fd5b5061028c61059c565b34801561033c57600080fd5b50610115610602565b34801561035157600080fd5b506101ae600160a060020a0360043516602435610663565b34801561037557600080fd5b506101ae600160a060020a0360043516602435610680565b34801561039957600080fd5b506101d7600160a060020a036004358116906024351661069d565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104405780601f1061041557610100808354040283529160200191610440565b820191906000526020600020905b81548152906001019060200180831161042357829003601f168201915b5050505050905090565b60075460009060ff161561045d57600080fd5b61046783836106c8565b9392505050565b60025490565b60075460009060ff161561048757600080fd5b610492848484610746565b949350505050565b6b033b2e3c9fd0803ce800000081565b60055460ff1690565b60075460009060ff16156104c657600080fd5b61046783836107e3565b6104d933610534565b15156104e457600080fd5b60075460ff1615156104f557600080fd5b6007805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b600061054760068363ffffffff61089316565b92915050565b60075460ff1690565b61055f336108ca565b565b600160a060020a031660009081526020819052604090205490565b61058533610534565b151561059057600080fd5b61059981610912565b50565b6105a533610534565b15156105b057600080fd5b60075460ff16156105c057600080fd5b6007805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104405780601f1061041557610100808354040283529160200191610440565b60075460009060ff161561067657600080fd5b610467838361095a565b60075460009060ff161561069357600080fd5b61046783836109a5565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b6000600160a060020a03831615156106df57600080fd5b336000818152600160209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b600160a060020a038316600090815260016020908152604080832033845290915281205482111561077657600080fd5b600160a060020a03841660009081526001602090815260408083203384529091529020546107aa908363ffffffff6109bb16565b600160a060020a03851660009081526001602090815260408083203384529091529020556107d98484846109d2565b5060019392505050565b6000600160a060020a03831615156107fa57600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461082e908363ffffffff610ac416565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b6000600160a060020a03821615156108aa57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6108db60068263ffffffff610ad616565b604051600160a060020a038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b61092360068263ffffffff610b2216565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6000600160a060020a038316151561097157600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461082e908363ffffffff6109bb16565b60006109b23384846109d2565b50600192915050565b600080838311156109cb57600080fd5b5050900390565b600160a060020a0383166000908152602081905260409020548111156109f757600080fd5b600160a060020a0382161515610a0c57600080fd5b600160a060020a038316600090815260208190526040902054610a35908263ffffffff6109bb16565b600160a060020a038085166000908152602081905260408082209390935590841681522054610a6a908263ffffffff610ac416565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282018381101561046757600080fd5b600160a060020a0381161515610aeb57600080fd5b610af58282610893565b1515610b0057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a0381161515610b3757600080fd5b610b418282610893565b15610b4b57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191660011790555600a165627a7a723058202dd18facb88fce52397143655484bd6bb04ca8578eb8c0779511f9e8d97c55f20029" +} \ No newline at end of file diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/.npmignore b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/.npmignore new file mode 100644 index 000000000..e792d8bc6 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/.npmignore @@ -0,0 +1,2 @@ +mocks +examples diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/ARCHITECTURE.md b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/ARCHITECTURE.md new file mode 100644 index 000000000..bfb6cff8d --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/ARCHITECTURE.md @@ -0,0 +1,27 @@ +## Architecture + +The following provides visibility into how OpenZeppelin's contracts are organized: + +- **access** - Smart contracts that enable functionality that can be used for selective restrictions and basic authorization control functions. +- **crowdsale** - A collection of smart contracts used to manage token crowdsales that allow investors to purchase tokens with ETH. Includes a base contract which implements fundamental crowdsale functionality in its simplest form. The base contract can be extended in order to satisfy your crowdsale’s specific requirements. + - **distribution** - Includes extensions of the base crowdsale contract which can be used to customize the completion of a crowdsale. + - **emission** - Includes extensions of the base crowdsale contract which can be used to mint and manage how tokens are issued to purchasers. + - **price** - Includes extensions of the crowdsale contract that can be used to manage changes in token prices. + - **validation** - Includes extensions of the crowdsale contract that can be used to enforce restraints and limit access to token purchases. +- **examples** - A collection of simple smart contracts that demonstrate how to add new features to base contracts through multiple inheritance. +- **introspection** - An interface that can be used to make a contract comply with the ERC-165 standard as well as a contract that implements ERC-165 using a lookup table. +- **lifecycle** - A collection of base contracts used to manage the existence and behavior of your contracts and their funds. +- **math** - Libraries with safety checks on operations that throw on errors. +- **mocks** - A collection of abstract contracts that are primarily used for unit testing. They also serve as good usage examples and demonstrate how to combine contracts with inheritance when developing your own custom applications. +- **ownership** - A collection of smart contracts that can be used to manage contract and token ownership +- **payment** - A collection of smart contracts that can be used to manage payments through escrow arrangements, withdrawals, and claims. Includes support for both single payees and multiple payees. +- **proposals** - A collection of smart contracts that reflect community Ethereum Improvement Proposals (EIPs). These contracts are under development and standardization. They are not recommended for production, but they are useful for experimentation with pending EIP standards. Go [here](https://github.com/OpenZeppelin/openzeppelin-solidity/wiki/ERC-Process) for more information. + +- **token** - A collection of approved ERC standard tokens -- their interfaces and implementations. + - **ERC20** - A standard interface for fungible tokens: + - *Interfaces* - Includes the ERC-20 token standard basic interface. I.e., what the contract’s ABI can represent. + - *Implementations* - Includes ERC-20 token implementations that include all required and some optional ERC-20 functionality. + - **ERC721** - A standard interface for non-fungible tokens + - *Interfaces* - Includes the ERC-721 token standard basic interface. I.e., what the contract’s ABI can represent. + - *Implementations* - Includes ERC-721 token implementations that include all required and some optional ERC-721 functionality. + diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/Roles.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/Roles.sol new file mode 100644 index 000000000..e3b97ddb7 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/Roles.sol @@ -0,0 +1,44 @@ +pragma solidity ^0.4.24; + +/** + * @title Roles + * @dev Library for managing addresses assigned to a Role. + */ +library Roles { + struct Role { + mapping (address => bool) bearer; + } + + /** + * @dev give an account access to this role + */ + function add(Role storage role, address account) internal { + require(account != address(0)); + require(!has(role, account)); + + role.bearer[account] = true; + } + + /** + * @dev remove an account's access to this role + */ + function remove(Role storage role, address account) internal { + require(account != address(0)); + require(has(role, account)); + + role.bearer[account] = false; + } + + /** + * @dev check if an account has this role + * @return bool + */ + function has(Role storage role, address account) + internal + view + returns (bool) + { + require(account != address(0)); + return role.bearer[account]; + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/CapperRole.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/CapperRole.sol new file mode 100644 index 000000000..d6b2ba066 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/CapperRole.sol @@ -0,0 +1,43 @@ +pragma solidity ^0.4.24; + +import "../Roles.sol"; + +contract CapperRole { + using Roles for Roles.Role; + + event CapperAdded(address indexed account); + event CapperRemoved(address indexed account); + + Roles.Role private cappers; + + constructor() internal { + _addCapper(msg.sender); + } + + modifier onlyCapper() { + require(isCapper(msg.sender)); + _; + } + + function isCapper(address account) public view returns (bool) { + return cappers.has(account); + } + + function addCapper(address account) public onlyCapper { + _addCapper(account); + } + + function renounceCapper() public { + _removeCapper(msg.sender); + } + + function _addCapper(address account) internal { + cappers.add(account); + emit CapperAdded(account); + } + + function _removeCapper(address account) internal { + cappers.remove(account); + emit CapperRemoved(account); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/MinterRole.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/MinterRole.sol new file mode 100644 index 000000000..57f4a5a80 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/MinterRole.sol @@ -0,0 +1,43 @@ +pragma solidity ^0.4.24; + +import "../Roles.sol"; + +contract MinterRole { + using Roles for Roles.Role; + + event MinterAdded(address indexed account); + event MinterRemoved(address indexed account); + + Roles.Role private minters; + + constructor() internal { + _addMinter(msg.sender); + } + + modifier onlyMinter() { + require(isMinter(msg.sender)); + _; + } + + function isMinter(address account) public view returns (bool) { + return minters.has(account); + } + + function addMinter(address account) public onlyMinter { + _addMinter(account); + } + + function renounceMinter() public { + _removeMinter(msg.sender); + } + + function _addMinter(address account) internal { + minters.add(account); + emit MinterAdded(account); + } + + function _removeMinter(address account) internal { + minters.remove(account); + emit MinterRemoved(account); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/PauserRole.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/PauserRole.sol new file mode 100644 index 000000000..58bb6a313 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/PauserRole.sol @@ -0,0 +1,43 @@ +pragma solidity ^0.4.24; + +import "../Roles.sol"; + +contract PauserRole { + using Roles for Roles.Role; + + event PauserAdded(address indexed account); + event PauserRemoved(address indexed account); + + Roles.Role private pausers; + + constructor() internal { + _addPauser(msg.sender); + } + + modifier onlyPauser() { + require(isPauser(msg.sender)); + _; + } + + function isPauser(address account) public view returns (bool) { + return pausers.has(account); + } + + function addPauser(address account) public onlyPauser { + _addPauser(account); + } + + function renouncePauser() public { + _removePauser(msg.sender); + } + + function _addPauser(address account) internal { + pausers.add(account); + emit PauserAdded(account); + } + + function _removePauser(address account) internal { + pausers.remove(account); + emit PauserRemoved(account); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/SignerRole.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/SignerRole.sol new file mode 100644 index 000000000..6a2bc602d --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/SignerRole.sol @@ -0,0 +1,43 @@ +pragma solidity ^0.4.24; + +import "../Roles.sol"; + +contract SignerRole { + using Roles for Roles.Role; + + event SignerAdded(address indexed account); + event SignerRemoved(address indexed account); + + Roles.Role private signers; + + constructor() internal { + _addSigner(msg.sender); + } + + modifier onlySigner() { + require(isSigner(msg.sender)); + _; + } + + function isSigner(address account) public view returns (bool) { + return signers.has(account); + } + + function addSigner(address account) public onlySigner { + _addSigner(account); + } + + function renounceSigner() public { + _removeSigner(msg.sender); + } + + function _addSigner(address account) internal { + signers.add(account); + emit SignerAdded(account); + } + + function _removeSigner(address account) internal { + signers.remove(account); + emit SignerRemoved(account); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol new file mode 100644 index 000000000..a0c227607 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol @@ -0,0 +1,241 @@ +pragma solidity ^0.4.24; + +import "../token/ERC20/IERC20.sol"; +import "../math/SafeMath.sol"; +import "../token/ERC20/SafeERC20.sol"; +import "../utils/ReentrancyGuard.sol"; + +/** + * @title Crowdsale + * @dev Crowdsale is a base contract for managing a token crowdsale, + * allowing investors to purchase tokens with ether. This contract implements + * such functionality in its most fundamental form and can be extended to provide additional + * functionality and/or custom behavior. + * The external interface represents the basic interface for purchasing tokens, and conform + * the base architecture for crowdsales. They are *not* intended to be modified / overridden. + * The internal interface conforms the extensible and modifiable surface of crowdsales. Override + * the methods to add functionality. Consider using 'super' where appropriate to concatenate + * behavior. + */ +contract Crowdsale is ReentrancyGuard { + using SafeMath for uint256; + using SafeERC20 for IERC20; + + // The token being sold + IERC20 private _token; + + // Address where funds are collected + address private _wallet; + + // How many token units a buyer gets per wei. + // The rate is the conversion between wei and the smallest and indivisible token unit. + // So, if you are using a rate of 1 with a ERC20Detailed token with 3 decimals called TOK + // 1 wei will give you 1 unit, or 0.001 TOK. + uint256 private _rate; + + // Amount of wei raised + uint256 private _weiRaised; + + /** + * Event for token purchase logging + * @param purchaser who paid for the tokens + * @param beneficiary who got the tokens + * @param value weis paid for purchase + * @param amount amount of tokens purchased + */ + event TokensPurchased( + address indexed purchaser, + address indexed beneficiary, + uint256 value, + uint256 amount + ); + + /** + * @param rate Number of token units a buyer gets per wei + * @dev The rate is the conversion between wei and the smallest and indivisible + * token unit. So, if you are using a rate of 1 with a ERC20Detailed token + * with 3 decimals called TOK, 1 wei will give you 1 unit, or 0.001 TOK. + * @param wallet Address where collected funds will be forwarded to + * @param token Address of the token being sold + */ + constructor(uint256 rate, address wallet, IERC20 token) internal { + require(rate > 0); + require(wallet != address(0)); + require(token != address(0)); + + _rate = rate; + _wallet = wallet; + _token = token; + } + + // ----------------------------------------- + // Crowdsale external interface + // ----------------------------------------- + + /** + * @dev fallback function ***DO NOT OVERRIDE*** + * Note that other contracts will transfer fund with a base gas stipend + * of 2300, which is not enough to call buyTokens. Consider calling + * buyTokens directly when purchasing tokens from a contract. + */ + function () external payable { + buyTokens(msg.sender); + } + + /** + * @return the token being sold. + */ + function token() public view returns(IERC20) { + return _token; + } + + /** + * @return the address where funds are collected. + */ + function wallet() public view returns(address) { + return _wallet; + } + + /** + * @return the number of token units a buyer gets per wei. + */ + function rate() public view returns(uint256) { + return _rate; + } + + /** + * @return the amount of wei raised. + */ + function weiRaised() public view returns (uint256) { + return _weiRaised; + } + + /** + * @dev low level token purchase ***DO NOT OVERRIDE*** + * This function has a non-reentrancy guard, so it shouldn't be called by + * another `nonReentrant` function. + * @param beneficiary Recipient of the token purchase + */ + function buyTokens(address beneficiary) public nonReentrant payable { + + uint256 weiAmount = msg.value; + _preValidatePurchase(beneficiary, weiAmount); + + // calculate token amount to be created + uint256 tokens = _getTokenAmount(weiAmount); + + // update state + _weiRaised = _weiRaised.add(weiAmount); + + _processPurchase(beneficiary, tokens); + emit TokensPurchased( + msg.sender, + beneficiary, + weiAmount, + tokens + ); + + _updatePurchasingState(beneficiary, weiAmount); + + _forwardFunds(); + _postValidatePurchase(beneficiary, weiAmount); + } + + // ----------------------------------------- + // Internal interface (extensible) + // ----------------------------------------- + + /** + * @dev Validation of an incoming purchase. Use require statements to revert state when conditions are not met. Use `super` in contracts that inherit from Crowdsale to extend their validations. + * Example from CappedCrowdsale.sol's _preValidatePurchase method: + * super._preValidatePurchase(beneficiary, weiAmount); + * require(weiRaised().add(weiAmount) <= cap); + * @param beneficiary Address performing the token purchase + * @param weiAmount Value in wei involved in the purchase + */ + function _preValidatePurchase( + address beneficiary, + uint256 weiAmount + ) + internal + view + { + require(beneficiary != address(0)); + require(weiAmount != 0); + } + + /** + * @dev Validation of an executed purchase. Observe state and use revert statements to undo rollback when valid conditions are not met. + * @param beneficiary Address performing the token purchase + * @param weiAmount Value in wei involved in the purchase + */ + function _postValidatePurchase( + address beneficiary, + uint256 weiAmount + ) + internal + view + { + // optional override + } + + /** + * @dev Source of tokens. Override this method to modify the way in which the crowdsale ultimately gets and sends its tokens. + * @param beneficiary Address performing the token purchase + * @param tokenAmount Number of tokens to be emitted + */ + function _deliverTokens( + address beneficiary, + uint256 tokenAmount + ) + internal + { + _token.safeTransfer(beneficiary, tokenAmount); + } + + /** + * @dev Executed when a purchase has been validated and is ready to be executed. Doesn't necessarily emit/send tokens. + * @param beneficiary Address receiving the tokens + * @param tokenAmount Number of tokens to be purchased + */ + function _processPurchase( + address beneficiary, + uint256 tokenAmount + ) + internal + { + _deliverTokens(beneficiary, tokenAmount); + } + + /** + * @dev Override for extensions that require an internal state to check for validity (current user contributions, etc.) + * @param beneficiary Address receiving the tokens + * @param weiAmount Value in wei involved in the purchase + */ + function _updatePurchasingState( + address beneficiary, + uint256 weiAmount + ) + internal + { + // optional override + } + + /** + * @dev Override to extend the way in which ether is converted to tokens. + * @param weiAmount Value in wei to be converted into tokens + * @return Number of tokens that can be purchased with the specified _weiAmount + */ + function _getTokenAmount(uint256 weiAmount) + internal view returns (uint256) + { + return weiAmount.mul(_rate); + } + + /** + * @dev Determines how ETH is stored/forwarded on purchases. + */ + function _forwardFunds() internal { + _wallet.transfer(msg.value); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/distribution/FinalizableCrowdsale.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/distribution/FinalizableCrowdsale.sol new file mode 100644 index 000000000..8add165da --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/distribution/FinalizableCrowdsale.sol @@ -0,0 +1,50 @@ +pragma solidity ^0.4.24; + +import "../../math/SafeMath.sol"; +import "../validation/TimedCrowdsale.sol"; + +/** + * @title FinalizableCrowdsale + * @dev Extension of Crowdsale with a one-off finalization action, where one + * can do extra work after finishing. + */ +contract FinalizableCrowdsale is TimedCrowdsale { + using SafeMath for uint256; + + bool private _finalized; + + event CrowdsaleFinalized(); + + constructor() internal { + _finalized = false; + } + + /** + * @return true if the crowdsale is finalized, false otherwise. + */ + function finalized() public view returns (bool) { + return _finalized; + } + + /** + * @dev Must be called after crowdsale ends, to do some extra finalization + * work. Calls the contract's finalization function. + */ + function finalize() public { + require(!_finalized); + require(hasClosed()); + + _finalized = true; + + _finalization(); + emit CrowdsaleFinalized(); + } + + /** + * @dev Can be overridden to add finalization logic. The overriding function + * should call super._finalization() to ensure the chain of finalization is + * executed entirely. + */ + function _finalization() internal { + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/distribution/PostDeliveryCrowdsale.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/distribution/PostDeliveryCrowdsale.sol new file mode 100644 index 000000000..b8c9ede77 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/distribution/PostDeliveryCrowdsale.sol @@ -0,0 +1,50 @@ +pragma solidity ^0.4.24; + +import "../validation/TimedCrowdsale.sol"; +import "../../math/SafeMath.sol"; + +/** + * @title PostDeliveryCrowdsale + * @dev Crowdsale that locks tokens from withdrawal until it ends. + */ +contract PostDeliveryCrowdsale is TimedCrowdsale { + using SafeMath for uint256; + + mapping(address => uint256) private _balances; + + constructor() internal {} + + /** + * @dev Withdraw tokens only after crowdsale ends. + * @param beneficiary Whose tokens will be withdrawn. + */ + function withdrawTokens(address beneficiary) public { + require(hasClosed()); + uint256 amount = _balances[beneficiary]; + require(amount > 0); + _balances[beneficiary] = 0; + _deliverTokens(beneficiary, amount); + } + + /** + * @return the balance of an account. + */ + function balanceOf(address account) public view returns(uint256) { + return _balances[account]; + } + + /** + * @dev Overrides parent by storing balances instead of issuing tokens right away. + * @param beneficiary Token purchaser + * @param tokenAmount Amount of tokens purchased + */ + function _processPurchase( + address beneficiary, + uint256 tokenAmount + ) + internal + { + _balances[beneficiary] = _balances[beneficiary].add(tokenAmount); + } + +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/distribution/RefundableCrowdsale.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/distribution/RefundableCrowdsale.sol new file mode 100644 index 000000000..9b814cd7d --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/distribution/RefundableCrowdsale.sol @@ -0,0 +1,91 @@ +pragma solidity ^0.4.24; + +import "../../math/SafeMath.sol"; +import "./FinalizableCrowdsale.sol"; +import "../../payment/escrow/RefundEscrow.sol"; + +/** + * @title RefundableCrowdsale + * @dev Extension of Crowdsale contract that adds a funding goal, and + * the possibility of users getting a refund if goal is not met. + * WARNING: note that if you allow tokens to be traded before the goal + * is met, then an attack is possible in which the attacker purchases + * tokens from the crowdsale and when they sees that the goal is + * unlikely to be met, they sell their tokens (possibly at a discount). + * The attacker will be refunded when the crowdsale is finalized, and + * the users that purchased from them will be left with worthless + * tokens. There are many possible ways to avoid this, like making the + * the crowdsale inherit from PostDeliveryCrowdsale, or imposing + * restrictions on token trading until the crowdsale is finalized. + * This is being discussed in + * https://github.com/OpenZeppelin/openzeppelin-solidity/issues/877 + * This contract will be updated when we agree on a general solution + * for this problem. + */ +contract RefundableCrowdsale is FinalizableCrowdsale { + using SafeMath for uint256; + + // minimum amount of funds to be raised in weis + uint256 private _goal; + + // refund escrow used to hold funds while crowdsale is running + RefundEscrow private _escrow; + + /** + * @dev Constructor, creates RefundEscrow. + * @param goal Funding goal + */ + constructor(uint256 goal) internal { + require(goal > 0); + _escrow = new RefundEscrow(wallet()); + _goal = goal; + } + + /** + * @return minimum amount of funds to be raised in wei. + */ + function goal() public view returns(uint256) { + return _goal; + } + + /** + * @dev Investors can claim refunds here if crowdsale is unsuccessful + * @param beneficiary Whose refund will be claimed. + */ + function claimRefund(address beneficiary) public { + require(finalized()); + require(!goalReached()); + + _escrow.withdraw(beneficiary); + } + + /** + * @dev Checks whether funding goal was reached. + * @return Whether funding goal was reached + */ + function goalReached() public view returns (bool) { + return weiRaised() >= _goal; + } + + /** + * @dev escrow finalization task, called when finalize() is called + */ + function _finalization() internal { + if (goalReached()) { + _escrow.close(); + _escrow.beneficiaryWithdraw(); + } else { + _escrow.enableRefunds(); + } + + super._finalization(); + } + + /** + * @dev Overrides Crowdsale fund forwarding, sending funds to escrow. + */ + function _forwardFunds() internal { + _escrow.deposit.value(msg.value)(msg.sender); + } + +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/emission/AllowanceCrowdsale.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/emission/AllowanceCrowdsale.sol new file mode 100644 index 000000000..346275c7d --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/emission/AllowanceCrowdsale.sol @@ -0,0 +1,59 @@ +pragma solidity ^0.4.24; + +import "../Crowdsale.sol"; +import "../../token/ERC20/IERC20.sol"; +import "../../token/ERC20/SafeERC20.sol"; +import "../../math/SafeMath.sol"; +import "../../math/Math.sol"; + +/** + * @title AllowanceCrowdsale + * @dev Extension of Crowdsale where tokens are held by a wallet, which approves an allowance to the crowdsale. + */ +contract AllowanceCrowdsale is Crowdsale { + using SafeMath for uint256; + using SafeERC20 for IERC20; + + address private _tokenWallet; + + /** + * @dev Constructor, takes token wallet address. + * @param tokenWallet Address holding the tokens, which has approved allowance to the crowdsale + */ + constructor(address tokenWallet) internal { + require(tokenWallet != address(0)); + _tokenWallet = tokenWallet; + } + + /** + * @return the address of the wallet that will hold the tokens. + */ + function tokenWallet() public view returns(address) { + return _tokenWallet; + } + + /** + * @dev Checks the amount of tokens left in the allowance. + * @return Amount of tokens left in the allowance + */ + function remainingTokens() public view returns (uint256) { + return Math.min( + token().balanceOf(_tokenWallet), + token().allowance(_tokenWallet, this) + ); + } + + /** + * @dev Overrides parent behavior by transferring tokens from wallet. + * @param beneficiary Token purchaser + * @param tokenAmount Amount of tokens purchased + */ + function _deliverTokens( + address beneficiary, + uint256 tokenAmount + ) + internal + { + token().safeTransferFrom(_tokenWallet, beneficiary, tokenAmount); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/emission/MintedCrowdsale.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/emission/MintedCrowdsale.sol new file mode 100644 index 000000000..3ebea857d --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/emission/MintedCrowdsale.sol @@ -0,0 +1,29 @@ +pragma solidity ^0.4.24; + +import "../Crowdsale.sol"; +import "../../token/ERC20/ERC20Mintable.sol"; + +/** + * @title MintedCrowdsale + * @dev Extension of Crowdsale contract whose tokens are minted in each purchase. + * Token ownership should be transferred to MintedCrowdsale for minting. + */ +contract MintedCrowdsale is Crowdsale { + constructor() internal {} + + /** + * @dev Overrides delivery by minting tokens upon purchase. + * @param beneficiary Token purchaser + * @param tokenAmount Number of tokens to be minted + */ + function _deliverTokens( + address beneficiary, + uint256 tokenAmount + ) + internal + { + // Potentially dangerous assumption about the type of the token. + require( + ERC20Mintable(address(token())).mint(beneficiary, tokenAmount)); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/price/IncreasingPriceCrowdsale.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/price/IncreasingPriceCrowdsale.sol new file mode 100644 index 000000000..c86353c0f --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/price/IncreasingPriceCrowdsale.sol @@ -0,0 +1,81 @@ +pragma solidity ^0.4.24; + +import "../validation/TimedCrowdsale.sol"; +import "../../math/SafeMath.sol"; + +/** + * @title IncreasingPriceCrowdsale + * @dev Extension of Crowdsale contract that increases the price of tokens linearly in time. + * Note that what should be provided to the constructor is the initial and final _rates_, that is, + * the amount of tokens per wei contributed. Thus, the initial rate must be greater than the final rate. + */ +contract IncreasingPriceCrowdsale is TimedCrowdsale { + using SafeMath for uint256; + + uint256 private _initialRate; + uint256 private _finalRate; + + /** + * @dev Constructor, takes initial and final rates of tokens received per wei contributed. + * @param initialRate Number of tokens a buyer gets per wei at the start of the crowdsale + * @param finalRate Number of tokens a buyer gets per wei at the end of the crowdsale + */ + constructor(uint256 initialRate, uint256 finalRate) internal { + require(finalRate > 0); + require(initialRate > finalRate); + _initialRate = initialRate; + _finalRate = finalRate; + } + + /** + * The base rate function is overridden to revert, since this crowdsale doens't use it, and + * all calls to it are a mistake. + */ + function rate() public view returns(uint256) { + revert(); + } + + /** + * @return the initial rate of the crowdsale. + */ + function initialRate() public view returns(uint256) { + return _initialRate; + } + + /** + * @return the final rate of the crowdsale. + */ + function finalRate() public view returns (uint256) { + return _finalRate; + } + + /** + * @dev Returns the rate of tokens per wei at the present time. + * Note that, as price _increases_ with time, the rate _decreases_. + * @return The number of tokens a buyer gets per wei at a given time + */ + function getCurrentRate() public view returns (uint256) { + if (!isOpen()) { + return 0; + } + + // solium-disable-next-line security/no-block-members + uint256 elapsedTime = block.timestamp.sub(openingTime()); + uint256 timeRange = closingTime().sub(openingTime()); + uint256 rateRange = _initialRate.sub(_finalRate); + return _initialRate.sub(elapsedTime.mul(rateRange).div(timeRange)); + } + + /** + * @dev Overrides parent method taking into account variable rate. + * @param weiAmount The value in wei to be converted into tokens + * @return The number of tokens _weiAmount wei will buy at present time + */ + function _getTokenAmount(uint256 weiAmount) + internal view returns (uint256) + { + uint256 currentRate = getCurrentRate(); + return currentRate.mul(weiAmount); + } + +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/validation/CappedCrowdsale.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/validation/CappedCrowdsale.sol new file mode 100644 index 000000000..4d9eb604d --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/validation/CappedCrowdsale.sol @@ -0,0 +1,55 @@ +pragma solidity ^0.4.24; + +import "../../math/SafeMath.sol"; +import "../Crowdsale.sol"; + +/** + * @title CappedCrowdsale + * @dev Crowdsale with a limit for total contributions. + */ +contract CappedCrowdsale is Crowdsale { + using SafeMath for uint256; + + uint256 private _cap; + + /** + * @dev Constructor, takes maximum amount of wei accepted in the crowdsale. + * @param cap Max amount of wei to be contributed + */ + constructor(uint256 cap) internal { + require(cap > 0); + _cap = cap; + } + + /** + * @return the cap of the crowdsale. + */ + function cap() public view returns(uint256) { + return _cap; + } + + /** + * @dev Checks whether the cap has been reached. + * @return Whether the cap was reached + */ + function capReached() public view returns (bool) { + return weiRaised() >= _cap; + } + + /** + * @dev Extend parent behavior requiring purchase to respect the funding cap. + * @param beneficiary Token purchaser + * @param weiAmount Amount of wei contributed + */ + function _preValidatePurchase( + address beneficiary, + uint256 weiAmount + ) + internal + view + { + super._preValidatePurchase(beneficiary, weiAmount); + require(weiRaised().add(weiAmount) <= _cap); + } + +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/validation/IndividuallyCappedCrowdsale.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/validation/IndividuallyCappedCrowdsale.sol new file mode 100644 index 000000000..5a5d4e317 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/validation/IndividuallyCappedCrowdsale.sol @@ -0,0 +1,81 @@ +pragma solidity ^0.4.24; + +import "../../math/SafeMath.sol"; +import "../Crowdsale.sol"; +import "../../access/roles/CapperRole.sol"; + +/** + * @title IndividuallyCappedCrowdsale + * @dev Crowdsale with per-beneficiary caps. + */ +contract IndividuallyCappedCrowdsale is Crowdsale, CapperRole { + using SafeMath for uint256; + + mapping(address => uint256) private _contributions; + mapping(address => uint256) private _caps; + + constructor() internal {} + + /** + * @dev Sets a specific beneficiary's maximum contribution. + * @param beneficiary Address to be capped + * @param cap Wei limit for individual contribution + */ + function setCap(address beneficiary, uint256 cap) external onlyCapper { + _caps[beneficiary] = cap; + } + + /** + * @dev Returns the cap of a specific beneficiary. + * @param beneficiary Address whose cap is to be checked + * @return Current cap for individual beneficiary + */ + function getCap(address beneficiary) public view returns (uint256) { + return _caps[beneficiary]; + } + + /** + * @dev Returns the amount contributed so far by a specific beneficiary. + * @param beneficiary Address of contributor + * @return Beneficiary contribution so far + */ + function getContribution(address beneficiary) + public view returns (uint256) + { + return _contributions[beneficiary]; + } + + /** + * @dev Extend parent behavior requiring purchase to respect the beneficiary's funding cap. + * @param beneficiary Token purchaser + * @param weiAmount Amount of wei contributed + */ + function _preValidatePurchase( + address beneficiary, + uint256 weiAmount + ) + internal + view + { + super._preValidatePurchase(beneficiary, weiAmount); + require( + _contributions[beneficiary].add(weiAmount) <= _caps[beneficiary]); + } + + /** + * @dev Extend parent behavior to update beneficiary contributions + * @param beneficiary Token purchaser + * @param weiAmount Amount of wei contributed + */ + function _updatePurchasingState( + address beneficiary, + uint256 weiAmount + ) + internal + { + super._updatePurchasingState(beneficiary, weiAmount); + _contributions[beneficiary] = _contributions[beneficiary].add( + weiAmount); + } + +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/validation/TimedCrowdsale.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/validation/TimedCrowdsale.sol new file mode 100644 index 000000000..73d6a5c0f --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/validation/TimedCrowdsale.sol @@ -0,0 +1,85 @@ +pragma solidity ^0.4.24; + +import "../../math/SafeMath.sol"; +import "../Crowdsale.sol"; + +/** + * @title TimedCrowdsale + * @dev Crowdsale accepting contributions only within a time frame. + */ +contract TimedCrowdsale is Crowdsale { + using SafeMath for uint256; + + uint256 private _openingTime; + uint256 private _closingTime; + + /** + * @dev Reverts if not in crowdsale time range. + */ + modifier onlyWhileOpen { + require(isOpen()); + _; + } + + /** + * @dev Constructor, takes crowdsale opening and closing times. + * @param openingTime Crowdsale opening time + * @param closingTime Crowdsale closing time + */ + constructor(uint256 openingTime, uint256 closingTime) internal { + // solium-disable-next-line security/no-block-members + require(openingTime >= block.timestamp); + require(closingTime > openingTime); + + _openingTime = openingTime; + _closingTime = closingTime; + } + + /** + * @return the crowdsale opening time. + */ + function openingTime() public view returns(uint256) { + return _openingTime; + } + + /** + * @return the crowdsale closing time. + */ + function closingTime() public view returns(uint256) { + return _closingTime; + } + + /** + * @return true if the crowdsale is open, false otherwise. + */ + function isOpen() public view returns (bool) { + // solium-disable-next-line security/no-block-members + return block.timestamp >= _openingTime && block.timestamp <= _closingTime; + } + + /** + * @dev Checks whether the period in which the crowdsale is open has already elapsed. + * @return Whether crowdsale period has elapsed + */ + function hasClosed() public view returns (bool) { + // solium-disable-next-line security/no-block-members + return block.timestamp > _closingTime; + } + + /** + * @dev Extend parent behavior requiring to be within contributing period + * @param beneficiary Token purchaser + * @param weiAmount Amount of wei contributed + */ + function _preValidatePurchase( + address beneficiary, + uint256 weiAmount + ) + internal + onlyWhileOpen + view + { + super._preValidatePurchase(beneficiary, weiAmount); + } + +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/cryptography/ECDSA.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/cryptography/ECDSA.sol new file mode 100644 index 000000000..71c0e41ed --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/cryptography/ECDSA.sol @@ -0,0 +1,71 @@ +pragma solidity ^0.4.24; + +/** + * @title Elliptic curve signature operations + * @dev Based on https://gist.github.com/axic/5b33912c6f61ae6fd96d6c4a47afde6d + * TODO Remove this library once solidity supports passing a signature to ecrecover. + * See https://github.com/ethereum/solidity/issues/864 + */ + +library ECDSA { + + /** + * @dev Recover signer address from a message by using their signature + * @param hash bytes32 message, the hash is the signed message. What is recovered is the signer address. + * @param signature bytes signature, the signature is generated using web3.eth.sign() + */ + function recover(bytes32 hash, bytes signature) + internal + pure + returns (address) + { + bytes32 r; + bytes32 s; + uint8 v; + + // Check the signature length + if (signature.length != 65) { + return (address(0)); + } + + // Divide the signature in r, s and v variables + // ecrecover takes the signature parameters, and the only way to get them + // currently is to use assembly. + // solium-disable-next-line security/no-inline-assembly + assembly { + r := mload(add(signature, 0x20)) + s := mload(add(signature, 0x40)) + v := byte(0, mload(add(signature, 0x60))) + } + + // Version of signature should be 27 or 28, but 0 and 1 are also possible versions + if (v < 27) { + v += 27; + } + + // If the version is correct return the signer address + if (v != 27 && v != 28) { + return (address(0)); + } else { + // solium-disable-next-line arg-overflow + return ecrecover(hash, v, r, s); + } + } + + /** + * toEthSignedMessageHash + * @dev prefix a bytes32 value with "\x19Ethereum Signed Message:" + * and hash the result + */ + function toEthSignedMessageHash(bytes32 hash) + internal + pure + returns (bytes32) + { + // 32 is the length in bytes of hash, + // enforced by the type signature above + return keccak256( + abi.encodePacked("\x19Ethereum Signed Message:\n32", hash) + ); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/cryptography/MerkleProof.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/cryptography/MerkleProof.sol new file mode 100644 index 000000000..a0c304c57 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/cryptography/MerkleProof.sol @@ -0,0 +1,42 @@ +pragma solidity ^0.4.24; + +/** + * @title MerkleProof + * @dev Merkle proof verification based on + * https://github.com/ameensol/merkle-tree-solidity/blob/master/src/MerkleProof.sol + */ +library MerkleProof { + /** + * @dev Verifies a Merkle proof proving the existence of a leaf in a Merkle tree. Assumes that each pair of leaves + * and each pair of pre-images are sorted. + * @param proof Merkle proof containing sibling hashes on the branch from the leaf to the root of the Merkle tree + * @param root Merkle root + * @param leaf Leaf of Merkle tree + */ + function verify( + bytes32[] proof, + bytes32 root, + bytes32 leaf + ) + internal + pure + returns (bool) + { + bytes32 computedHash = leaf; + + for (uint256 i = 0; i < proof.length; i++) { + bytes32 proofElement = proof[i]; + + if (computedHash < proofElement) { + // Hash(current computed hash + current element of the proof) + computedHash = keccak256(abi.encodePacked(computedHash, proofElement)); + } else { + // Hash(current element of the proof + current computed hash) + computedHash = keccak256(abi.encodePacked(proofElement, computedHash)); + } + } + + // Check if the computed hash (root) is equal to the provided root + return computedHash == root; + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/.gitkeep b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/Counter.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/Counter.sol new file mode 100644 index 000000000..3557bd744 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/Counter.sol @@ -0,0 +1,28 @@ +pragma solidity ^0.4.24; + +/** + * @title Counter + * @author Matt Condon (@shrugs) + * @dev Provides an incrementing uint256 id acquired by the `Counter#next` getter. + * Use this for issuing ERC721 ids or keeping track of request ids, anything you want, really. + * + * Include with `using Counter for Counter.Counter;` + * @notice Does not allow an Id of 0, which is popularly used to signify a null state in solidity. + * Does not protect from overflows, but if you have 2^256 ids, you have other problems. + * (But actually, it's generally impossible to increment a counter this many times, energy wise + * so it's not something you have to worry about.) + */ +library Counter { + + struct Counter { + uint256 current; // default: 0 + } + + function next(Counter storage index) + internal + returns (uint256) + { + index.current += 1; + return index.current; + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/ERC1046/TokenMetadata.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/ERC1046/TokenMetadata.sol new file mode 100644 index 000000000..9057711d9 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/ERC1046/TokenMetadata.sol @@ -0,0 +1,27 @@ +pragma solidity ^0.4.24; + +import "../../token/ERC20/IERC20.sol"; + +/** + * @title ERC-1047 Token Metadata + * @dev See https://eips.ethereum.org/EIPS/eip-1046 + * @dev tokenURI must respond with a URI that implements https://eips.ethereum.org/EIPS/eip-1047 + * @dev TODO - update https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/token/ERC721/IERC721.sol#L17 when 1046 is finalized + */ +contract ERC20TokenMetadata is IERC20 { + function tokenURI() external view returns (string); +} + +contract ERC20WithMetadata is ERC20TokenMetadata { + string private _tokenURI; + + constructor(string tokenURI) + public + { + _tokenURI = tokenURI; + } + + function tokenURI() external view returns (string) { + return _tokenURI; + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/ERC20Migrator.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/ERC20Migrator.sol new file mode 100644 index 000000000..44ed16423 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/ERC20Migrator.sol @@ -0,0 +1,100 @@ +pragma solidity ^0.4.24; + +import "../token/ERC20/IERC20.sol"; +import "../token/ERC20/ERC20Mintable.sol"; +import "../token/ERC20/SafeERC20.sol"; +import "../math/Math.sol"; + +/** + * @title ERC20Migrator + * @dev This contract can be used to migrate an ERC20 token from one + * contract to another, where each token holder has to opt-in to the migration. + * To opt-in, users must approve for this contract the number of tokens they + * want to migrate. Once the allowance is set up, anyone can trigger the + * migration to the new token contract. In this way, token holders "turn in" + * their old balance and will be minted an equal amount in the new token. + * The new token contract must be mintable. For the precise interface refer to + * OpenZeppelin's ERC20Mintable, but the only functions that are needed are + * `isMinter(address)` and `mint(address, amount)`. The migrator will check + * that it is a minter for the token. + * The balance from the legacy token will be transfered to the migrator, as it + * is migrated, and remain there forever. + * Although this contract can be used in many different scenarios, the main + * motivation was to provide a way to migrate ERC20 tokens into an upgradeable + * version of it using ZeppelinOS. To read more about how this can be done + * using this implementation, please follow the official documentation site of + * ZeppelinOS: https://docs.zeppelinos.org/docs/erc20_onboarding.html + * Example of usage: + * ``` + * const migrator = await ERC20Migrator.new(legacyToken.address); + * await newToken.addMinter(migrator.address); + * await migrator.beginMigration(newToken.address); + * ``` + */ +contract ERC20Migrator { + using SafeERC20 for IERC20; + + /// Address of the old token contract + IERC20 private _legacyToken; + + /// Address of the new token contract + ERC20Mintable private _newToken; + + /** + * @param legacyToken address of the old token contract + */ + constructor(IERC20 legacyToken) public { + require(legacyToken != address(0)); + _legacyToken = legacyToken; + } + + /** + * @dev Returns the legacy token that is being migrated. + */ + function legacyToken() public view returns (IERC20) { + return _legacyToken; + } + + /** + * @dev Returns the new token to which we are migrating. + */ + function newToken() public view returns (IERC20) { + return _newToken; + } + + /** + * @dev Begins the migration by setting which is the new token that will be + * minted. This contract must be a minter for the new token. + * @param newToken the token that will be minted + */ + function beginMigration(ERC20Mintable newToken) public { + require(_newToken == address(0)); + require(newToken != address(0)); + require(newToken.isMinter(this)); + + _newToken = newToken; + } + + /** + * @dev Transfers part of an account's balance in the old token to this + * contract, and mints the same amount of new tokens for that account. + * @param account whose tokens will be migrated + * @param amount amount of tokens to be migrated + */ + function migrate(address account, uint256 amount) public { + _legacyToken.safeTransferFrom(account, this, amount); + _newToken.mint(account, amount); + } + + /** + * @dev Transfers all of an account's allowed balance in the old token to + * this contract, and mints the same amount of new tokens for that account. + * @param account whose tokens will be migrated + */ + function migrateAll(address account) public { + uint256 balance = _legacyToken.balanceOf(account); + uint256 allowance = _legacyToken.allowance(account, this); + uint256 amount = Math.min(balance, allowance); + migrate(account, amount); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/SignatureBouncer.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/SignatureBouncer.sol new file mode 100644 index 000000000..2cd600b35 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/SignatureBouncer.sol @@ -0,0 +1,146 @@ +pragma solidity ^0.4.24; + +import "../access/roles/SignerRole.sol"; +import "../cryptography/ECDSA.sol"; + +/** + * @title SignatureBouncer + * @author PhABC, Shrugs and aflesher + * @dev SignatureBouncer allows users to submit a signature as a permission to + * do an action. + * If the signature is from one of the authorized signer addresses, the + * signature is valid. + * Note that SignatureBouncer offers no protection against replay attacks, users + * must add this themselves! + * + * Signer addresses can be individual servers signing grants or different + * users within a decentralized club that have permission to invite other + * members. This technique is useful for whitelists and airdrops; instead of + * putting all valid addresses on-chain, simply sign a grant of the form + * keccak256(abi.encodePacked(`:contractAddress` + `:granteeAddress`)) using a + * valid signer address. + * Then restrict access to your crowdsale/whitelist/airdrop using the + * `onlyValidSignature` modifier (or implement your own using _isValidSignature). + * In addition to `onlyValidSignature`, `onlyValidSignatureAndMethod` and + * `onlyValidSignatureAndData` can be used to restrict access to only a given + * method or a given method with given parameters respectively. + * See the tests in SignatureBouncer.test.js for specific usage examples. + * + * @notice A method that uses the `onlyValidSignatureAndData` modifier must make + * the _signature parameter the "last" parameter. You cannot sign a message that + * has its own signature in it so the last 128 bytes of msg.data (which + * represents the length of the _signature data and the _signaature data itself) + * is ignored when validating. Also non fixed sized parameters make constructing + * the data in the signature much more complex. + * See https://ethereum.stackexchange.com/a/50616 for more details. + */ +contract SignatureBouncer is SignerRole { + using ECDSA for bytes32; + + // Function selectors are 4 bytes long, as documented in + // https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector + uint256 private constant _METHOD_ID_SIZE = 4; + // Signature size is 65 bytes (tightly packed v + r + s), but gets padded to 96 bytes + uint256 private constant _SIGNATURE_SIZE = 96; + + constructor() internal {} + + /** + * @dev requires that a valid signature of a signer was provided + */ + modifier onlyValidSignature(bytes signature) + { + require(_isValidSignature(msg.sender, signature)); + _; + } + + /** + * @dev requires that a valid signature with a specifed method of a signer was provided + */ + modifier onlyValidSignatureAndMethod(bytes signature) + { + require(_isValidSignatureAndMethod(msg.sender, signature)); + _; + } + + /** + * @dev requires that a valid signature with a specifed method and params of a signer was provided + */ + modifier onlyValidSignatureAndData(bytes signature) + { + require(_isValidSignatureAndData(msg.sender, signature)); + _; + } + + /** + * @dev is the signature of `this + sender` from a signer? + * @return bool + */ + function _isValidSignature(address account, bytes signature) + internal + view + returns (bool) + { + return _isValidDataHash( + keccak256(abi.encodePacked(address(this), account)), + signature + ); + } + + /** + * @dev is the signature of `this + sender + methodId` from a signer? + * @return bool + */ + function _isValidSignatureAndMethod(address account, bytes signature) + internal + view + returns (bool) + { + bytes memory data = new bytes(_METHOD_ID_SIZE); + for (uint i = 0; i < data.length; i++) { + data[i] = msg.data[i]; + } + return _isValidDataHash( + keccak256(abi.encodePacked(address(this), account, data)), + signature + ); + } + + /** + * @dev is the signature of `this + sender + methodId + params(s)` from a signer? + * @notice the signature parameter of the method being validated must be the "last" parameter + * @return bool + */ + function _isValidSignatureAndData(address account, bytes signature) + internal + view + returns (bool) + { + require(msg.data.length > _SIGNATURE_SIZE); + bytes memory data = new bytes(msg.data.length - _SIGNATURE_SIZE); + for (uint i = 0; i < data.length; i++) { + data[i] = msg.data[i]; + } + return _isValidDataHash( + keccak256(abi.encodePacked(address(this), account, data)), + signature + ); + } + + /** + * @dev internal function to convert a hash to an eth signed message + * and then recover the signature and check it against the signer role + * @return bool + */ + function _isValidDataHash(bytes32 hash, bytes signature) + internal + view + returns (bool) + { + address signer = hash + .toEthSignedMessageHash() + .recover(signature); + + return signer != address(0) && isSigner(signer); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/TokenVesting.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/TokenVesting.sol new file mode 100644 index 000000000..2f5fd2fdc --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/TokenVesting.sol @@ -0,0 +1,175 @@ +/* solium-disable security/no-block-members */ + +pragma solidity ^0.4.24; + +import "../token/ERC20/SafeERC20.sol"; +import "../ownership/Ownable.sol"; +import "../math/SafeMath.sol"; + +/** + * @title TokenVesting + * @dev A token holder contract that can release its token balance gradually like a + * typical vesting scheme, with a cliff and vesting period. Optionally revocable by the + * owner. + */ +contract TokenVesting is Ownable { + using SafeMath for uint256; + using SafeERC20 for IERC20; + + event TokensReleased(address token, uint256 amount); + event TokenVestingRevoked(address token); + + // beneficiary of tokens after they are released + address private _beneficiary; + + uint256 private _cliff; + uint256 private _start; + uint256 private _duration; + + bool private _revocable; + + mapping (address => uint256) private _released; + mapping (address => bool) private _revoked; + + /** + * @dev Creates a vesting contract that vests its balance of any ERC20 token to the + * beneficiary, gradually in a linear fashion until start + duration. By then all + * of the balance will have vested. + * @param beneficiary address of the beneficiary to whom vested tokens are transferred + * @param cliffDuration duration in seconds of the cliff in which tokens will begin to vest + * @param start the time (as Unix time) at which point vesting starts + * @param duration duration in seconds of the period in which the tokens will vest + * @param revocable whether the vesting is revocable or not + */ + constructor( + address beneficiary, + uint256 start, + uint256 cliffDuration, + uint256 duration, + bool revocable + ) + public + { + require(beneficiary != address(0)); + require(cliffDuration <= duration); + require(duration > 0); + require(start.add(duration) > block.timestamp); + + _beneficiary = beneficiary; + _revocable = revocable; + _duration = duration; + _cliff = start.add(cliffDuration); + _start = start; + } + + /** + * @return the beneficiary of the tokens. + */ + function beneficiary() public view returns(address) { + return _beneficiary; + } + + /** + * @return the cliff time of the token vesting. + */ + function cliff() public view returns(uint256) { + return _cliff; + } + + /** + * @return the start time of the token vesting. + */ + function start() public view returns(uint256) { + return _start; + } + + /** + * @return the duration of the token vesting. + */ + function duration() public view returns(uint256) { + return _duration; + } + + /** + * @return true if the vesting is revocable. + */ + function revocable() public view returns(bool) { + return _revocable; + } + + /** + * @return the amount of the token released. + */ + function released(address token) public view returns(uint256) { + return _released[token]; + } + + /** + * @return true if the token is revoked. + */ + function revoked(address token) public view returns(bool) { + return _revoked[token]; + } + + /** + * @notice Transfers vested tokens to beneficiary. + * @param token ERC20 token which is being vested + */ + function release(IERC20 token) public { + uint256 unreleased = _releasableAmount(token); + + require(unreleased > 0); + + _released[token] = _released[token].add(unreleased); + + token.safeTransfer(_beneficiary, unreleased); + + emit TokensReleased(token, unreleased); + } + + /** + * @notice Allows the owner to revoke the vesting. Tokens already vested + * remain in the contract, the rest are returned to the owner. + * @param token ERC20 token which is being vested + */ + function revoke(IERC20 token) public onlyOwner { + require(_revocable); + require(!_revoked[token]); + + uint256 balance = token.balanceOf(address(this)); + + uint256 unreleased = _releasableAmount(token); + uint256 refund = balance.sub(unreleased); + + _revoked[token] = true; + + token.safeTransfer(owner(), refund); + + emit TokenVestingRevoked(token); + } + + /** + * @dev Calculates the amount that has already vested but hasn't been released yet. + * @param token ERC20 token which is being vested + */ + function _releasableAmount(IERC20 token) private view returns (uint256) { + return _vestedAmount(token).sub(_released[token]); + } + + /** + * @dev Calculates the amount that has already vested. + * @param token ERC20 token which is being vested + */ + function _vestedAmount(IERC20 token) private view returns (uint256) { + uint256 currentBalance = token.balanceOf(this); + uint256 totalBalance = currentBalance.add(_released[token]); + + if (block.timestamp < _cliff) { + return 0; + } else if (block.timestamp >= _start.add(_duration) || _revoked[token]) { + return totalBalance; + } else { + return totalBalance.mul(block.timestamp.sub(_start)).div(_duration); + } + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/examples/SampleCrowdsale.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/examples/SampleCrowdsale.sol new file mode 100644 index 000000000..d22598092 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/examples/SampleCrowdsale.sol @@ -0,0 +1,57 @@ +pragma solidity ^0.4.24; + +import "../crowdsale/validation/CappedCrowdsale.sol"; +import "../crowdsale/distribution/RefundableCrowdsale.sol"; +import "../crowdsale/emission/MintedCrowdsale.sol"; +import "../token/ERC20/ERC20Mintable.sol"; +import "../token/ERC20/ERC20Detailed.sol"; + +/** + * @title SampleCrowdsaleToken + * @dev Very simple ERC20 Token that can be minted. + * It is meant to be used in a crowdsale contract. + */ +contract SampleCrowdsaleToken is ERC20Mintable, ERC20Detailed { + constructor() public ERC20Detailed("Sample Crowdsale Token", "SCT", 18) {} +} + +/** + * @title SampleCrowdsale + * @dev This is an example of a fully fledged crowdsale. + * The way to add new features to a base crowdsale is by multiple inheritance. + * In this example we are providing following extensions: + * CappedCrowdsale - sets a max boundary for raised funds + * RefundableCrowdsale - set a min goal to be reached and returns funds if it's not met + * MintedCrowdsale - assumes the token can be minted by the crowdsale, which does so + * when receiving purchases. + * + * After adding multiple features it's good practice to run integration tests + * to ensure that subcontracts works together as intended. + */ +// XXX There doesn't seem to be a way to split this line that keeps solium +// happy. See: +// https://github.com/duaraghav8/Solium/issues/205 +// --elopio - 2018-05-10 +// solium-disable-next-line max-len +contract SampleCrowdsale is CappedCrowdsale, RefundableCrowdsale, MintedCrowdsale { + + constructor( + uint256 openingTime, + uint256 closingTime, + uint256 rate, + address wallet, + uint256 cap, + ERC20Mintable token, + uint256 goal + ) + public + Crowdsale(rate, wallet, token) + CappedCrowdsale(cap) + TimedCrowdsale(openingTime, closingTime) + RefundableCrowdsale(goal) + { + //As goal needs to be met for a successful crowdsale + //the value needs to less or equal than a cap which is limit for accepted funds + require(goal <= cap); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/examples/SimpleToken.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/examples/SimpleToken.sol new file mode 100644 index 000000000..8c63fdd98 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/examples/SimpleToken.sol @@ -0,0 +1,26 @@ +pragma solidity ^0.4.24; + +import "../token/ERC20/ERC20.sol"; + +/** + * @title SimpleToken + * @dev Very simple ERC20 Token example, where all tokens are pre-assigned to the creator. + * Note they can later distribute these tokens as they wish using `transfer` and other + * `ERC20` functions. + */ +contract SimpleToken is ERC20 { + + string public constant name = "SimpleToken"; + string public constant symbol = "SIM"; + uint8 public constant decimals = 18; + + uint256 public constant INITIAL_SUPPLY = 10000 * (10 ** uint256(decimals)); + + /** + * @dev Constructor that gives msg.sender all of existing tokens. + */ + constructor() public { + _mint(msg.sender, INITIAL_SUPPLY); + } + +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/introspection/ERC165.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/introspection/ERC165.sol new file mode 100644 index 000000000..5d083acdf --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/introspection/ERC165.sol @@ -0,0 +1,53 @@ +pragma solidity ^0.4.24; + +import "./IERC165.sol"; + +/** + * @title ERC165 + * @author Matt Condon (@shrugs) + * @dev Implements ERC165 using a lookup table. + */ +contract ERC165 is IERC165 { + + bytes4 private constant _InterfaceId_ERC165 = 0x01ffc9a7; + /** + * 0x01ffc9a7 === + * bytes4(keccak256('supportsInterface(bytes4)')) + */ + + /** + * @dev a mapping of interface id to whether or not it's supported + */ + mapping(bytes4 => bool) private _supportedInterfaces; + + /** + * @dev A contract implementing SupportsInterfaceWithLookup + * implement ERC165 itself + */ + constructor() + internal + { + _registerInterface(_InterfaceId_ERC165); + } + + /** + * @dev implement supportsInterface(bytes4) using a lookup table + */ + function supportsInterface(bytes4 interfaceId) + external + view + returns (bool) + { + return _supportedInterfaces[interfaceId]; + } + + /** + * @dev internal method for registering an interface + */ + function _registerInterface(bytes4 interfaceId) + internal + { + require(interfaceId != 0xffffffff); + _supportedInterfaces[interfaceId] = true; + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/introspection/ERC165Checker.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/introspection/ERC165Checker.sol new file mode 100644 index 000000000..2490b191e --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/introspection/ERC165Checker.sol @@ -0,0 +1,146 @@ +pragma solidity ^0.4.24; + +/** + * @title ERC165Checker + * @dev Use `using ERC165Checker for address`; to include this library + * https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md + */ +library ERC165Checker { + // As per the EIP-165 spec, no interface should ever match 0xffffffff + bytes4 private constant _InterfaceId_Invalid = 0xffffffff; + + bytes4 private constant _InterfaceId_ERC165 = 0x01ffc9a7; + /** + * 0x01ffc9a7 === + * bytes4(keccak256('supportsInterface(bytes4)')) + */ + + /** + * @notice Query if a contract supports ERC165 + * @param account The address of the contract to query for support of ERC165 + * @return true if the contract at account implements ERC165 + */ + function _supportsERC165(address account) + internal + view + returns (bool) + { + // Any contract that implements ERC165 must explicitly indicate support of + // InterfaceId_ERC165 and explicitly indicate non-support of InterfaceId_Invalid + return _supportsERC165Interface(account, _InterfaceId_ERC165) && + !_supportsERC165Interface(account, _InterfaceId_Invalid); + } + + /** + * @notice Query if a contract implements an interface, also checks support of ERC165 + * @param account The address of the contract to query for support of an interface + * @param interfaceId The interface identifier, as specified in ERC-165 + * @return true if the contract at account indicates support of the interface with + * identifier interfaceId, false otherwise + * @dev Interface identification is specified in ERC-165. + */ + function _supportsInterface(address account, bytes4 interfaceId) + internal + view + returns (bool) + { + // query support of both ERC165 as per the spec and support of _interfaceId + return _supportsERC165(account) && + _supportsERC165Interface(account, interfaceId); + } + + /** + * @notice Query if a contract implements interfaces, also checks support of ERC165 + * @param account The address of the contract to query for support of an interface + * @param interfaceIds A list of interface identifiers, as specified in ERC-165 + * @return true if the contract at account indicates support all interfaces in the + * interfaceIds list, false otherwise + * @dev Interface identification is specified in ERC-165. + */ + function _supportsAllInterfaces(address account, bytes4[] interfaceIds) + internal + view + returns (bool) + { + // query support of ERC165 itself + if (!_supportsERC165(account)) { + return false; + } + + // query support of each interface in _interfaceIds + for (uint256 i = 0; i < interfaceIds.length; i++) { + if (!_supportsERC165Interface(account, interfaceIds[i])) { + return false; + } + } + + // all interfaces supported + return true; + } + + /** + * @notice Query if a contract implements an interface, does not check ERC165 support + * @param account The address of the contract to query for support of an interface + * @param interfaceId The interface identifier, as specified in ERC-165 + * @return true if the contract at account indicates support of the interface with + * identifier interfaceId, false otherwise + * @dev Assumes that account contains a contract that supports ERC165, otherwise + * the behavior of this method is undefined. This precondition can be checked + * with the `supportsERC165` method in this library. + * Interface identification is specified in ERC-165. + */ + function _supportsERC165Interface(address account, bytes4 interfaceId) + private + view + returns (bool) + { + // success determines whether the staticcall succeeded and result determines + // whether the contract at account indicates support of _interfaceId + (bool success, bool result) = _callERC165SupportsInterface( + account, interfaceId); + + return (success && result); + } + + /** + * @notice Calls the function with selector 0x01ffc9a7 (ERC165) and suppresses throw + * @param account The address of the contract to query for support of an interface + * @param interfaceId The interface identifier, as specified in ERC-165 + * @return success true if the STATICCALL succeeded, false otherwise + * @return result true if the STATICCALL succeeded and the contract at account + * indicates support of the interface with identifier interfaceId, false otherwise + */ + function _callERC165SupportsInterface( + address account, + bytes4 interfaceId + ) + private + view + returns (bool success, bool result) + { + bytes memory encodedParams = abi.encodeWithSelector( + _InterfaceId_ERC165, + interfaceId + ); + + // solium-disable-next-line security/no-inline-assembly + assembly { + let encodedParams_data := add(0x20, encodedParams) + let encodedParams_size := mload(encodedParams) + + let output := mload(0x40) // Find empty storage location using "free memory pointer" + mstore(output, 0x0) + + success := staticcall( + 30000, // 30k gas + account, // To addr + encodedParams_data, + encodedParams_size, + output, + 0x20 // Outputs are 32 bytes long + ) + + result := mload(output) // Load the result + } + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/introspection/IERC165.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/introspection/IERC165.sol new file mode 100644 index 000000000..4e4b7bbf6 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/introspection/IERC165.sol @@ -0,0 +1,19 @@ +pragma solidity ^0.4.24; + +/** + * @title IERC165 + * @dev https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md + */ +interface IERC165 { + + /** + * @notice Query if a contract implements an interface + * @param interfaceId The interface identifier, as specified in ERC-165 + * @dev Interface identification is specified in ERC-165. This function + * uses less than 30,000 gas. + */ + function supportsInterface(bytes4 interfaceId) + external + view + returns (bool); +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/lifecycle/Pausable.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/lifecycle/Pausable.sol new file mode 100644 index 000000000..3703fed4b --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/lifecycle/Pausable.sol @@ -0,0 +1,57 @@ +pragma solidity ^0.4.24; + +import "../access/roles/PauserRole.sol"; + +/** + * @title Pausable + * @dev Base contract which allows children to implement an emergency stop mechanism. + */ +contract Pausable is PauserRole { + event Paused(address account); + event Unpaused(address account); + + bool private _paused; + + constructor() internal { + _paused = false; + } + + /** + * @return true if the contract is paused, false otherwise. + */ + function paused() public view returns(bool) { + return _paused; + } + + /** + * @dev Modifier to make a function callable only when the contract is not paused. + */ + modifier whenNotPaused() { + require(!_paused); + _; + } + + /** + * @dev Modifier to make a function callable only when the contract is paused. + */ + modifier whenPaused() { + require(_paused); + _; + } + + /** + * @dev called by the owner to pause, triggers stopped state + */ + function pause() public onlyPauser whenNotPaused { + _paused = true; + emit Paused(msg.sender); + } + + /** + * @dev called by the owner to unpause, returns to normal state + */ + function unpause() public onlyPauser whenPaused { + _paused = false; + emit Unpaused(msg.sender); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/math/Math.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/math/Math.sol new file mode 100644 index 000000000..ffff83961 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/math/Math.sol @@ -0,0 +1,31 @@ +pragma solidity ^0.4.24; + +/** + * @title Math + * @dev Assorted math operations + */ +library Math { + /** + * @dev Returns the largest of two numbers. + */ + function max(uint256 a, uint256 b) internal pure returns (uint256) { + return a >= b ? a : b; + } + + /** + * @dev Returns the smallest of two numbers. + */ + function min(uint256 a, uint256 b) internal pure returns (uint256) { + return a < b ? a : b; + } + + /** + * @dev Calculates the average of two numbers. Since these are integers, + * averages of an even and odd number cannot be represented, and will be + * rounded down. + */ + function average(uint256 a, uint256 b) internal pure returns (uint256) { + // (a + b) / 2 can overflow, so we distribute + return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/math/SafeMath.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/math/SafeMath.sol new file mode 100644 index 000000000..97494e1f1 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/math/SafeMath.sol @@ -0,0 +1,65 @@ +pragma solidity ^0.4.24; + +/** + * @title SafeMath + * @dev Math operations with safety checks that revert on error + */ +library SafeMath { + + /** + * @dev Multiplies two numbers, reverts on overflow. + */ + function mul(uint256 a, uint256 b) internal pure returns (uint256) { + // Gas optimization: this is cheaper than requiring 'a' not being zero, but the + // benefit is lost if 'b' is also tested. + // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 + if (a == 0) { + return 0; + } + + uint256 c = a * b; + require(c / a == b); + + return c; + } + + /** + * @dev Integer division of two numbers truncating the quotient, reverts on division by zero. + */ + function div(uint256 a, uint256 b) internal pure returns (uint256) { + require(b > 0); // Solidity only automatically asserts when dividing by 0 + uint256 c = a / b; + // assert(a == b * c + a % b); // There is no case in which this doesn't hold + + return c; + } + + /** + * @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend). + */ + function sub(uint256 a, uint256 b) internal pure returns (uint256) { + require(b <= a); + uint256 c = a - b; + + return c; + } + + /** + * @dev Adds two numbers, reverts on overflow. + */ + function add(uint256 a, uint256 b) internal pure returns (uint256) { + uint256 c = a + b; + require(c >= a); + + return c; + } + + /** + * @dev Divides two numbers and returns the remainder (unsigned integer modulo), + * reverts when dividing by zero. + */ + function mod(uint256 a, uint256 b) internal pure returns (uint256) { + require(b != 0); + return a % b; + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/AddressImpl.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/AddressImpl.sol new file mode 100644 index 000000000..e29396056 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/AddressImpl.sol @@ -0,0 +1,14 @@ +pragma solidity ^0.4.24; + +import "../utils/Address.sol"; + +contract AddressImpl { + function isContract(address account) + external + view + returns (bool) + { + return Address.isContract(account); + } + +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/AllowanceCrowdsaleImpl.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/AllowanceCrowdsaleImpl.sol new file mode 100644 index 000000000..5b2104e38 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/AllowanceCrowdsaleImpl.sol @@ -0,0 +1,20 @@ +pragma solidity ^0.4.24; + +import "../token/ERC20/IERC20.sol"; +import "../crowdsale/emission/AllowanceCrowdsale.sol"; + +contract AllowanceCrowdsaleImpl is AllowanceCrowdsale { + + constructor ( + uint256 rate, + address wallet, + IERC20 token, + address tokenWallet + ) + public + Crowdsale(rate, wallet, token) + AllowanceCrowdsale(tokenWallet) + { + } + +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ArraysImpl.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ArraysImpl.sol new file mode 100644 index 000000000..8a2b9ec51 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ArraysImpl.sol @@ -0,0 +1,18 @@ +pragma solidity ^0.4.24; + +import "../utils/Arrays.sol"; + +contract ArraysImpl { + + using Arrays for uint256[]; + + uint256[] private array; + + constructor(uint256[] _array) public { + array = _array; + } + + function findUpperBound(uint256 _element) external view returns (uint256) { + return array.findUpperBound(_element); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CappedCrowdsaleImpl.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CappedCrowdsaleImpl.sol new file mode 100644 index 000000000..176033b7f --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CappedCrowdsaleImpl.sol @@ -0,0 +1,20 @@ +pragma solidity ^0.4.24; + +import "../token/ERC20/IERC20.sol"; +import "../crowdsale/validation/CappedCrowdsale.sol"; + +contract CappedCrowdsaleImpl is CappedCrowdsale { + + constructor ( + uint256 rate, + address wallet, + IERC20 token, + uint256 cap + ) + public + Crowdsale(rate, wallet, token) + CappedCrowdsale(cap) + { + } + +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CapperRoleMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CapperRoleMock.sol new file mode 100644 index 000000000..118058f39 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CapperRoleMock.sol @@ -0,0 +1,17 @@ +pragma solidity ^0.4.24; + +import "../access/roles/CapperRole.sol"; + +contract CapperRoleMock is CapperRole { + function removeCapper(address account) public { + _removeCapper(account); + } + + function onlyCapperMock() public view onlyCapper { + } + + // Causes a compilation error if super._removeCapper is not internal + function _removeCapper(address account) internal { + super._removeCapper(account); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ConditionalEscrowMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ConditionalEscrowMock.sol new file mode 100644 index 000000000..3e30c21a2 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ConditionalEscrowMock.sol @@ -0,0 +1,16 @@ +pragma solidity ^0.4.24; + +import "../payment/escrow/ConditionalEscrow.sol"; + +// mock class using ConditionalEscrow +contract ConditionalEscrowMock is ConditionalEscrow { + mapping(address => bool) private _allowed; + + function setAllowed(address payee, bool allowed) public { + _allowed[payee] = allowed; + } + + function withdrawalAllowed(address payee) public view returns (bool) { + return _allowed[payee]; + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CounterImpl.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CounterImpl.sol new file mode 100644 index 000000000..3c958ba97 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CounterImpl.sol @@ -0,0 +1,20 @@ +pragma solidity ^0.4.24; + +import "../drafts/Counter.sol"; + +contract CounterImpl { + using Counter for Counter.Counter; + + uint256 public theId; + + // use whatever key you want to track your counters + mapping(string => Counter.Counter) private _counters; + + function doThing(string key) + public + returns (uint256) + { + theId = _counters[key].next(); + return theId; + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CrowdsaleMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CrowdsaleMock.sol new file mode 100644 index 000000000..834105e6a --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CrowdsaleMock.sol @@ -0,0 +1,9 @@ +pragma solidity ^0.4.24; + +import "../crowdsale/Crowdsale.sol"; + +contract CrowdsaleMock is Crowdsale { + constructor(uint256 rate, address wallet, IERC20 token) public + Crowdsale(rate, wallet, token) { + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/DetailedERC20Mock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/DetailedERC20Mock.sol new file mode 100644 index 000000000..eea706326 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/DetailedERC20Mock.sol @@ -0,0 +1,15 @@ +pragma solidity ^0.4.24; + +import "../token/ERC20/ERC20.sol"; +import "../token/ERC20/ERC20Detailed.sol"; + +contract ERC20DetailedMock is ERC20, ERC20Detailed { + constructor( + string name, + string symbol, + uint8 decimals + ) + ERC20Detailed(name, symbol, decimals) + public + {} +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ECDSAMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ECDSAMock.sol new file mode 100644 index 000000000..9f489069f --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ECDSAMock.sol @@ -0,0 +1,23 @@ +pragma solidity ^0.4.24; + +import "../cryptography/ECDSA.sol"; + +contract ECDSAMock { + using ECDSA for bytes32; + + function recover(bytes32 hash, bytes signature) + public + pure + returns (address) + { + return hash.recover(signature); + } + + function toEthSignedMessageHash(bytes32 hash) + public + pure + returns (bytes32) + { + return hash.toEthSignedMessageHash(); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165/ERC165InterfacesSupported.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165/ERC165InterfacesSupported.sol new file mode 100644 index 000000000..e41901a32 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165/ERC165InterfacesSupported.sol @@ -0,0 +1,66 @@ +pragma solidity ^0.4.24; + +import "../../introspection/IERC165.sol"; + +/** + * https://github.com/ethereum/EIPs/blob/master/EIPS/eip-214.md#specification + * > Any attempts to make state-changing operations inside an execution instance with STATIC set to true will instead throw an exception. + * > These operations include [...], LOG0, LOG1, LOG2, [...] + * + * therefore, because this contract is staticcall'd we need to not emit events (which is how solidity-coverage works) + * solidity-coverage ignores the /mocks folder, so we duplicate its implementation here to avoid instrumenting it + */ +contract SupportsInterfaceWithLookupMock is IERC165 { + + bytes4 public constant InterfaceId_ERC165 = 0x01ffc9a7; + /** + * 0x01ffc9a7 === + * bytes4(keccak256('supportsInterface(bytes4)')) + */ + + /** + * @dev a mapping of interface id to whether or not it's supported + */ + mapping(bytes4 => bool) private _supportedInterfaces; + + /** + * @dev A contract implementing SupportsInterfaceWithLookup + * implement ERC165 itself + */ + constructor() + public + { + _registerInterface(InterfaceId_ERC165); + } + + /** + * @dev implement supportsInterface(bytes4) using a lookup table + */ + function supportsInterface(bytes4 interfaceId) + external + view + returns (bool) + { + return _supportedInterfaces[interfaceId]; + } + + /** + * @dev private method for registering an interface + */ + function _registerInterface(bytes4 interfaceId) + internal + { + require(interfaceId != 0xffffffff); + _supportedInterfaces[interfaceId] = true; + } +} + +contract ERC165InterfacesSupported is SupportsInterfaceWithLookupMock { + constructor (bytes4[] interfaceIds) + public + { + for (uint256 i = 0; i < interfaceIds.length; i++) { + _registerInterface(interfaceIds[i]); + } + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165/ERC165NotSupported.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165/ERC165NotSupported.sol new file mode 100644 index 000000000..156ef8e8b --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165/ERC165NotSupported.sol @@ -0,0 +1,5 @@ +pragma solidity ^0.4.24; + +contract ERC165NotSupported { + +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165CheckerMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165CheckerMock.sol new file mode 100644 index 000000000..559cea0d7 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165CheckerMock.sol @@ -0,0 +1,31 @@ +pragma solidity ^0.4.24; + +import "../introspection/ERC165Checker.sol"; + +contract ERC165CheckerMock { + using ERC165Checker for address; + + function supportsERC165(address account) + public + view + returns (bool) + { + return account._supportsERC165(); + } + + function supportsInterface(address account, bytes4 interfaceId) + public + view + returns (bool) + { + return account._supportsInterface(interfaceId); + } + + function supportsAllInterfaces(address account, bytes4[] interfaceIds) + public + view + returns (bool) + { + return account._supportsAllInterfaces(interfaceIds); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165Mock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165Mock.sol new file mode 100644 index 000000000..c42ba62f2 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165Mock.sol @@ -0,0 +1,11 @@ +pragma solidity ^0.4.24; + +import "../introspection/ERC165.sol"; + +contract ERC165Mock is ERC165 { + function registerInterface(bytes4 interfaceId) + public + { + _registerInterface(interfaceId); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20BurnableMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20BurnableMock.sol new file mode 100644 index 000000000..2c8b3b54a --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20BurnableMock.sol @@ -0,0 +1,11 @@ +pragma solidity ^0.4.24; + +import "../token/ERC20/ERC20Burnable.sol"; + +contract ERC20BurnableMock is ERC20Burnable { + + constructor(address initialAccount, uint256 initialBalance) public { + _mint(initialAccount, initialBalance); + } + +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20MintableMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20MintableMock.sol new file mode 100644 index 000000000..31384c790 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20MintableMock.sol @@ -0,0 +1,7 @@ +pragma solidity ^0.4.24; + +import "../token/ERC20/ERC20Mintable.sol"; +import "./MinterRoleMock.sol"; + +contract ERC20MintableMock is ERC20Mintable, MinterRoleMock { +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20Mock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20Mock.sol new file mode 100644 index 000000000..ab0877653 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20Mock.sol @@ -0,0 +1,24 @@ +pragma solidity ^0.4.24; + +import "../token/ERC20/ERC20.sol"; + +// mock class using ERC20 +contract ERC20Mock is ERC20 { + + constructor(address initialAccount, uint256 initialBalance) public { + _mint(initialAccount, initialBalance); + } + + function mint(address account, uint256 amount) public { + _mint(account, amount); + } + + function burn(address account, uint256 amount) public { + _burn(account, amount); + } + + function burnFrom(address account, uint256 amount) public { + _burnFrom(account, amount); + } + +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20PausableMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20PausableMock.sol new file mode 100644 index 000000000..c6c0fd5ed --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20PausableMock.sol @@ -0,0 +1,13 @@ +pragma solidity ^0.4.24; + +import "../token/ERC20/ERC20Pausable.sol"; +import "./PauserRoleMock.sol"; + +// mock class using ERC20Pausable +contract ERC20PausableMock is ERC20Pausable, PauserRoleMock { + + constructor(address initialAccount, uint initialBalance) public { + _mint(initialAccount, initialBalance); + } + +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20WithMetadataMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20WithMetadataMock.sol new file mode 100644 index 000000000..ec2d122a1 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20WithMetadataMock.sol @@ -0,0 +1,11 @@ +pragma solidity ^0.4.24; + +import "../token/ERC20/ERC20.sol"; +import "../drafts/ERC1046/TokenMetadata.sol"; + +contract ERC20WithMetadataMock is ERC20, ERC20WithMetadata { + constructor(string tokenURI) public + ERC20WithMetadata(tokenURI) + { + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721FullMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721FullMock.sol new file mode 100644 index 000000000..2d85e7372 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721FullMock.sol @@ -0,0 +1,32 @@ +pragma solidity ^0.4.24; + +import "../token/ERC721/ERC721Full.sol"; +import "../token/ERC721/ERC721Mintable.sol"; +import "../token/ERC721/ERC721MetadataMintable.sol"; +import "../token/ERC721/ERC721Burnable.sol"; + +/** + * @title ERC721FullMock + * This mock just provides a public mint and burn functions for testing purposes, + * and a public setter for metadata URI + */ +contract ERC721FullMock + is ERC721Full, ERC721Mintable, ERC721MetadataMintable, ERC721Burnable { + + constructor(string name, string symbol) public + ERC721Mintable() + ERC721Full(name, symbol) + {} + + function exists(uint256 tokenId) public view returns (bool) { + return _exists(tokenId); + } + + function setTokenURI(uint256 tokenId, string uri) public { + _setTokenURI(tokenId, uri); + } + + function removeTokenFrom(address from, uint256 tokenId) public { + _removeTokenFrom(from, tokenId); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721MintableBurnableImpl.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721MintableBurnableImpl.sol new file mode 100644 index 000000000..51d3ff4f6 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721MintableBurnableImpl.sol @@ -0,0 +1,20 @@ +pragma solidity ^0.4.24; + +import "../token/ERC721/ERC721Full.sol"; +import "../token/ERC721/ERC721Mintable.sol"; +import "../token/ERC721/ERC721MetadataMintable.sol"; +import "../token/ERC721/ERC721Burnable.sol"; + +/** + * @title ERC721MintableBurnableImpl + */ +contract ERC721MintableBurnableImpl + is ERC721Full, ERC721Mintable, ERC721MetadataMintable, ERC721Burnable { + + constructor() + ERC721Mintable() + ERC721Full("Test", "TEST") + public + { + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721Mock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721Mock.sol new file mode 100644 index 000000000..514d3bdbe --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721Mock.sol @@ -0,0 +1,17 @@ +pragma solidity ^0.4.24; + +import "../token/ERC721/ERC721.sol"; + +/** + * @title ERC721Mock + * This mock just provides a public mint and burn functions for testing purposes + */ +contract ERC721Mock is ERC721 { + function mint(address to, uint256 tokenId) public { + _mint(to, tokenId); + } + + function burn(uint256 tokenId) public { + _burn(ownerOf(tokenId), tokenId); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721PausableMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721PausableMock.sol new file mode 100644 index 000000000..9751d04cb --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721PausableMock.sol @@ -0,0 +1,22 @@ +pragma solidity ^0.4.24; + +import "../token/ERC721/ERC721Pausable.sol"; +import "./PauserRoleMock.sol"; + +/** + * @title ERC721PausableMock + * This mock just provides a public mint, burn and exists functions for testing purposes + */ +contract ERC721PausableMock is ERC721Pausable, PauserRoleMock { + function mint(address to, uint256 tokenId) public { + super._mint(to, tokenId); + } + + function burn(uint256 tokenId) public { + super._burn(ownerOf(tokenId), tokenId); + } + + function exists(uint256 tokenId) public view returns (bool) { + return super._exists(tokenId); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721ReceiverMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721ReceiverMock.sol new file mode 100644 index 000000000..57fb04e3a --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721ReceiverMock.sol @@ -0,0 +1,41 @@ +pragma solidity ^0.4.24; + +import "../token/ERC721/IERC721Receiver.sol"; + +contract ERC721ReceiverMock is IERC721Receiver { + bytes4 private _retval; + bool private _reverts; + + event Received( + address operator, + address from, + uint256 tokenId, + bytes data, + uint256 gas + ); + + constructor(bytes4 retval, bool reverts) public { + _retval = retval; + _reverts = reverts; + } + + function onERC721Received( + address operator, + address from, + uint256 tokenId, + bytes data + ) + public + returns(bytes4) + { + require(!_reverts); + emit Received( + operator, + from, + tokenId, + data, + gasleft() // msg.gas was deprecated in solidityv0.4.21 + ); + return _retval; + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/EventEmitter.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/EventEmitter.sol new file mode 100644 index 000000000..71582d9f5 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/EventEmitter.sol @@ -0,0 +1,62 @@ +pragma solidity ^0.4.24; + +contract EventEmitter { + event Argumentless(); + event ShortUint(uint8 value); + event ShortInt(int8 value); + event LongUint(uint256 value); + event LongInt(int256 value); + event Address(address value); + event Boolean(bool value); + event String(string value); + event LongUintBooleanString( + uint256 uintValue, + bool booleanValue, + string stringValue + ); + + function emitArgumentless() public { + emit Argumentless(); + } + + function emitShortUint(uint8 value) public { + emit ShortUint(value); + } + + function emitShortInt(int8 value) public { + emit ShortInt(value); + } + + function emitLongUint(uint256 value) public { + emit LongUint(value); + } + + function emitLongInt(int256 value) public { + emit LongInt(value); + } + + function emitAddress(address value) public { + emit Address(value); + } + + function emitBoolean(bool value) public { + emit Boolean(value); + } + + function emitString(string value) public { + emit String(value); + } + + function emitLongUintBooleanString( + uint256 uintValue, + bool booleanValue, + string stringValue) + public { + emit LongUintBooleanString(uintValue, booleanValue, stringValue); + } + + function emitLongUintAndBoolean(uint256 uintValue, bool boolValue) public { + emit LongUint(uintValue); + emit Boolean(boolValue); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/FinalizableCrowdsaleImpl.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/FinalizableCrowdsaleImpl.sol new file mode 100644 index 000000000..084780b1d --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/FinalizableCrowdsaleImpl.sol @@ -0,0 +1,21 @@ +pragma solidity ^0.4.24; + +import "../token/ERC20/IERC20.sol"; +import "../crowdsale/distribution/FinalizableCrowdsale.sol"; + +contract FinalizableCrowdsaleImpl is FinalizableCrowdsale { + + constructor ( + uint256 openingTime, + uint256 closingTime, + uint256 rate, + address wallet, + IERC20 token + ) + public + Crowdsale(rate, wallet, token) + TimedCrowdsale(openingTime, closingTime) + { + } + +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/IncreasingPriceCrowdsaleImpl.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/IncreasingPriceCrowdsaleImpl.sol new file mode 100644 index 000000000..6f1f2e2a0 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/IncreasingPriceCrowdsaleImpl.sol @@ -0,0 +1,23 @@ +pragma solidity ^0.4.24; + +import "../crowdsale/price/IncreasingPriceCrowdsale.sol"; +import "../math/SafeMath.sol"; + +contract IncreasingPriceCrowdsaleImpl is IncreasingPriceCrowdsale { + + constructor ( + uint256 openingTime, + uint256 closingTime, + address wallet, + IERC20 token, + uint256 initialRate, + uint256 finalRate + ) + public + Crowdsale(initialRate, wallet, token) + TimedCrowdsale(openingTime, closingTime) + IncreasingPriceCrowdsale(initialRate, finalRate) + { + } + +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/IndividuallyCappedCrowdsaleImpl.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/IndividuallyCappedCrowdsaleImpl.sol new file mode 100644 index 000000000..1bcb95301 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/IndividuallyCappedCrowdsaleImpl.sol @@ -0,0 +1,19 @@ +pragma solidity ^0.4.24; + +import "../token/ERC20/IERC20.sol"; +import "../crowdsale/validation/IndividuallyCappedCrowdsale.sol"; +import "./CapperRoleMock.sol"; + +contract IndividuallyCappedCrowdsaleImpl + is IndividuallyCappedCrowdsale, CapperRoleMock { + + constructor( + uint256 rate, + address wallet, + IERC20 token + ) + public + Crowdsale(rate, wallet, token) + { + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MathMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MathMock.sol new file mode 100644 index 000000000..72f7fc204 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MathMock.sol @@ -0,0 +1,17 @@ +pragma solidity ^0.4.24; + +import "../math/Math.sol"; + +contract MathMock { + function max(uint256 a, uint256 b) public pure returns (uint256) { + return Math.max(a, b); + } + + function min(uint256 a, uint256 b) public pure returns (uint256) { + return Math.min(a, b); + } + + function average(uint256 a, uint256 b) public pure returns (uint256) { + return Math.average(a, b); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MerkleProofWrapper.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MerkleProofWrapper.sol new file mode 100644 index 000000000..b359dc790 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MerkleProofWrapper.sol @@ -0,0 +1,18 @@ +pragma solidity ^0.4.24; + +import { MerkleProof } from "../cryptography/MerkleProof.sol"; + +contract MerkleProofWrapper { + + function verify( + bytes32[] proof, + bytes32 root, + bytes32 leaf + ) + public + pure + returns (bool) + { + return MerkleProof.verify(proof, root, leaf); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MintedCrowdsaleImpl.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MintedCrowdsaleImpl.sol new file mode 100644 index 000000000..518371b75 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MintedCrowdsaleImpl.sol @@ -0,0 +1,18 @@ +pragma solidity ^0.4.24; + +import "../token/ERC20/ERC20Mintable.sol"; +import "../crowdsale/emission/MintedCrowdsale.sol"; + +contract MintedCrowdsaleImpl is MintedCrowdsale { + + constructor ( + uint256 rate, + address wallet, + ERC20Mintable token + ) + public + Crowdsale(rate, wallet, token) + { + } + +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MinterRoleMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MinterRoleMock.sol new file mode 100644 index 000000000..45e5a4195 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MinterRoleMock.sol @@ -0,0 +1,17 @@ +pragma solidity ^0.4.24; + +import "../access/roles/MinterRole.sol"; + +contract MinterRoleMock is MinterRole { + function removeMinter(address account) public { + _removeMinter(account); + } + + function onlyMinterMock() public view onlyMinter { + } + + // Causes a compilation error if super._removeMinter is not internal + function _removeMinter(address account) internal { + super._removeMinter(account); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/OwnableMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/OwnableMock.sol new file mode 100644 index 000000000..e16a89012 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/OwnableMock.sol @@ -0,0 +1,6 @@ +pragma solidity ^0.4.24; + +import "../ownership/Ownable.sol"; + +contract OwnableMock is Ownable { +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PausableMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PausableMock.sol new file mode 100644 index 000000000..72ec843ed --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PausableMock.sol @@ -0,0 +1,24 @@ +pragma solidity ^0.4.24; + +import "../lifecycle/Pausable.sol"; +import "./PauserRoleMock.sol"; + +// mock class using Pausable +contract PausableMock is Pausable, PauserRoleMock { + bool public drasticMeasureTaken; + uint256 public count; + + constructor() public { + drasticMeasureTaken = false; + count = 0; + } + + function normalProcess() external whenNotPaused { + count++; + } + + function drasticMeasure() external whenPaused { + drasticMeasureTaken = true; + } + +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PauserRoleMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PauserRoleMock.sol new file mode 100644 index 000000000..267101e4a --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PauserRoleMock.sol @@ -0,0 +1,17 @@ +pragma solidity ^0.4.24; + +import "../access/roles/PauserRole.sol"; + +contract PauserRoleMock is PauserRole { + function removePauser(address account) public { + _removePauser(account); + } + + function onlyPauserMock() public view onlyPauser { + } + + // Causes a compilation error if super._removePauser is not internal + function _removePauser(address account) internal { + super._removePauser(account); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PostDeliveryCrowdsaleImpl.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PostDeliveryCrowdsaleImpl.sol new file mode 100644 index 000000000..98d056c66 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PostDeliveryCrowdsaleImpl.sol @@ -0,0 +1,21 @@ +pragma solidity ^0.4.24; + +import "../token/ERC20/IERC20.sol"; +import "../crowdsale/distribution/PostDeliveryCrowdsale.sol"; + +contract PostDeliveryCrowdsaleImpl is PostDeliveryCrowdsale { + + constructor ( + uint256 openingTime, + uint256 closingTime, + uint256 rate, + address wallet, + IERC20 token + ) + public + TimedCrowdsale(openingTime, closingTime) + Crowdsale(rate, wallet, token) + { + } + +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PullPaymentMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PullPaymentMock.sol new file mode 100644 index 000000000..63076c904 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PullPaymentMock.sol @@ -0,0 +1,15 @@ +pragma solidity ^0.4.24; + +import "../payment/PullPayment.sol"; + +// mock class using PullPayment +contract PullPaymentMock is PullPayment { + + constructor() public payable { } + + // test helper function to call asyncTransfer + function callTransfer(address dest, uint256 amount) public { + _asyncTransfer(dest, amount); + } + +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ReentrancyAttack.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ReentrancyAttack.sol new file mode 100644 index 000000000..96231de27 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ReentrancyAttack.sol @@ -0,0 +1,10 @@ +pragma solidity ^0.4.24; + +contract ReentrancyAttack { + + function callSender(bytes4 data) public { + // solium-disable-next-line security/no-low-level-calls + require(msg.sender.call(abi.encodeWithSelector(data))); + } + +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ReentrancyMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ReentrancyMock.sol new file mode 100644 index 000000000..474ecd433 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ReentrancyMock.sol @@ -0,0 +1,44 @@ +pragma solidity ^0.4.24; + +import "../utils/ReentrancyGuard.sol"; +import "./ReentrancyAttack.sol"; + +contract ReentrancyMock is ReentrancyGuard { + + uint256 public counter; + + constructor() public { + counter = 0; + } + + function callback() external nonReentrant { + count(); + } + + function countLocalRecursive(uint256 n) public nonReentrant { + if (n > 0) { + count(); + countLocalRecursive(n - 1); + } + } + + function countThisRecursive(uint256 n) public nonReentrant { + if (n > 0) { + count(); + // solium-disable-next-line security/no-low-level-calls + bool result = address(this).call(abi.encodeWithSignature("countThisRecursive(uint256)", n - 1)); + require(result == true); + } + } + + function countAndCall(ReentrancyAttack attacker) public nonReentrant { + count(); + bytes4 func = bytes4(keccak256("callback()")); + attacker.callSender(func); + } + + function count() private { + counter += 1; + } + +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/RefundableCrowdsaleImpl.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/RefundableCrowdsaleImpl.sol new file mode 100644 index 000000000..a14dfbcb3 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/RefundableCrowdsaleImpl.sol @@ -0,0 +1,23 @@ +pragma solidity ^0.4.24; + +import "../token/ERC20/ERC20Mintable.sol"; +import "../crowdsale/distribution/RefundableCrowdsale.sol"; + +contract RefundableCrowdsaleImpl is RefundableCrowdsale { + + constructor ( + uint256 openingTime, + uint256 closingTime, + uint256 rate, + address wallet, + ERC20Mintable token, + uint256 goal + ) + public + Crowdsale(rate, wallet, token) + TimedCrowdsale(openingTime, closingTime) + RefundableCrowdsale(goal) + { + } + +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/RolesMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/RolesMock.sol new file mode 100644 index 000000000..bfcee20ee --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/RolesMock.sol @@ -0,0 +1,21 @@ +pragma solidity ^0.4.24; + +import "../access/Roles.sol"; + +contract RolesMock { + using Roles for Roles.Role; + + Roles.Role private dummyRole; + + function add(address account) public { + dummyRole.add(account); + } + + function remove(address account) public { + dummyRole.remove(account); + } + + function has(address account) public view returns (bool) { + return dummyRole.has(account); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SafeERC20Helper.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SafeERC20Helper.sol new file mode 100644 index 000000000..7e639f86f --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SafeERC20Helper.sol @@ -0,0 +1,112 @@ +pragma solidity ^0.4.24; + +import "../token/ERC20/IERC20.sol"; +import "../token/ERC20/SafeERC20.sol"; + +contract ERC20FailingMock { + uint256 private _allowance; + + function transfer(address, uint256) public returns (bool) { + return false; + } + + function transferFrom(address, address, uint256) public returns (bool) { + return false; + } + + function approve(address, uint256) public returns (bool) { + return false; + } + + function allowance(address, address) public view returns (uint256) { + return 0; + } +} + +contract ERC20SucceedingMock { + uint256 private _allowance; + + function transfer(address, uint256) public returns (bool) { + return true; + } + + function transferFrom(address, address, uint256) public returns (bool) { + return true; + } + + function approve(address, uint256) public returns (bool) { + return true; + } + + function setAllowance(uint256 allowance_) public { + _allowance = allowance_; + } + + function allowance(address, address) public view returns (uint256) { + return _allowance; + } +} + +contract SafeERC20Helper { + using SafeERC20 for IERC20; + + IERC20 private _failing; + IERC20 private _succeeding; + + constructor() public { + _failing = IERC20(new ERC20FailingMock()); + _succeeding = IERC20(new ERC20SucceedingMock()); + } + + // Using _failing + + function doFailingTransfer() public { + _failing.safeTransfer(address(0), 0); + } + + function doFailingTransferFrom() public { + _failing.safeTransferFrom(address(0), address(0), 0); + } + + function doFailingApprove() public { + _failing.safeApprove(address(0), 0); + } + + function doFailingIncreaseAllowance() public { + _failing.safeIncreaseAllowance(address(0), 0); + } + + function doFailingDecreaseAllowance() public { + _failing.safeDecreaseAllowance(address(0), 0); + } + + // Using _succeeding + + function doSucceedingTransfer() public { + _succeeding.safeTransfer(address(0), 0); + } + + function doSucceedingTransferFrom() public { + _succeeding.safeTransferFrom(address(0), address(0), 0); + } + + function doSucceedingApprove(uint256 amount) public { + _succeeding.safeApprove(address(0), amount); + } + + function doSucceedingIncreaseAllowance(uint256 amount) public { + _succeeding.safeIncreaseAllowance(address(0), amount); + } + + function doSucceedingDecreaseAllowance(uint256 amount) public { + _succeeding.safeDecreaseAllowance(address(0), amount); + } + + function setAllowance(uint256 allowance_) public { + ERC20SucceedingMock(_succeeding).setAllowance(allowance_); + } + + function allowance() public view returns (uint256) { + return _succeeding.allowance(address(0), address(0)); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SafeMathMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SafeMathMock.sol new file mode 100644 index 000000000..7ddf17e9f --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SafeMathMock.sol @@ -0,0 +1,26 @@ +pragma solidity ^0.4.24; + +import "../math/SafeMath.sol"; + +contract SafeMathMock { + + function mul(uint256 a, uint256 b) public pure returns (uint256) { + return SafeMath.mul(a, b); + } + + function div(uint256 a, uint256 b) public pure returns (uint256) { + return SafeMath.div(a, b); + } + + function sub(uint256 a, uint256 b) public pure returns (uint256) { + return SafeMath.sub(a, b); + } + + function add(uint256 a, uint256 b) public pure returns (uint256) { + return SafeMath.add(a, b); + } + + function mod(uint256 a, uint256 b) public pure returns (uint256) { + return SafeMath.mod(a, b); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SecondaryMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SecondaryMock.sol new file mode 100644 index 000000000..268c12516 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SecondaryMock.sol @@ -0,0 +1,8 @@ +pragma solidity ^0.4.24; + +import "../ownership/Secondary.sol"; + +contract SecondaryMock is Secondary { + function onlyPrimaryMock() public view onlyPrimary { + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SignatureBouncerMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SignatureBouncerMock.sol new file mode 100644 index 000000000..85076eae6 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SignatureBouncerMock.sol @@ -0,0 +1,73 @@ +pragma solidity ^0.4.24; + +import "../drafts/SignatureBouncer.sol"; +import "./SignerRoleMock.sol"; + +contract SignatureBouncerMock is SignatureBouncer, SignerRoleMock { + function checkValidSignature(address account, bytes signature) + public + view + returns (bool) + { + return _isValidSignature(account, signature); + } + + function onlyWithValidSignature(bytes signature) + public + onlyValidSignature(signature) + view + { + + } + + function checkValidSignatureAndMethod(address account, bytes signature) + public + view + returns (bool) + { + return _isValidSignatureAndMethod(account, signature); + } + + function onlyWithValidSignatureAndMethod(bytes signature) + public + onlyValidSignatureAndMethod(signature) + view + { + + } + + function checkValidSignatureAndData( + address account, + bytes, + uint, + bytes signature + ) + public + view + returns (bool) + { + return _isValidSignatureAndData(account, signature); + } + + function onlyWithValidSignatureAndData(uint, bytes signature) + public + onlyValidSignatureAndData(signature) + view + { + + } + + function theWrongMethod(bytes) + public + pure + { + + } + + function tooShortMsgData() + public + onlyValidSignatureAndData("") + view + { + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SignerRoleMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SignerRoleMock.sol new file mode 100644 index 000000000..faf92db68 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SignerRoleMock.sol @@ -0,0 +1,17 @@ +pragma solidity ^0.4.24; + +import "../access/roles/SignerRole.sol"; + +contract SignerRoleMock is SignerRole { + function removeSigner(address account) public { + _removeSigner(account); + } + + function onlySignerMock() public view onlySigner { + } + + // Causes a compilation error if super._removeSigner is not internal + function _removeSigner(address account) internal { + super._removeSigner(account); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/TimedCrowdsaleImpl.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/TimedCrowdsaleImpl.sol new file mode 100644 index 000000000..f16e5eb2a --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/TimedCrowdsaleImpl.sol @@ -0,0 +1,21 @@ +pragma solidity ^0.4.24; + +import "../token/ERC20/IERC20.sol"; +import "../crowdsale/validation/TimedCrowdsale.sol"; + +contract TimedCrowdsaleImpl is TimedCrowdsale { + + constructor ( + uint256 openingTime, + uint256 closingTime, + uint256 rate, + address wallet, + IERC20 token + ) + public + Crowdsale(rate, wallet, token) + TimedCrowdsale(openingTime, closingTime) + { + } + +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/ownership/Ownable.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/ownership/Ownable.sol new file mode 100644 index 000000000..7b5b72102 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/ownership/Ownable.sol @@ -0,0 +1,75 @@ +pragma solidity ^0.4.24; + +/** + * @title Ownable + * @dev The Ownable contract has an owner address, and provides basic authorization control + * functions, this simplifies the implementation of "user permissions". + */ +contract Ownable { + address private _owner; + + event OwnershipTransferred( + address indexed previousOwner, + address indexed newOwner + ); + + /** + * @dev The Ownable constructor sets the original `owner` of the contract to the sender + * account. + */ + constructor() internal { + _owner = msg.sender; + emit OwnershipTransferred(address(0), _owner); + } + + /** + * @return the address of the owner. + */ + function owner() public view returns(address) { + return _owner; + } + + /** + * @dev Throws if called by any account other than the owner. + */ + modifier onlyOwner() { + require(isOwner()); + _; + } + + /** + * @return true if `msg.sender` is the owner of the contract. + */ + function isOwner() public view returns(bool) { + return msg.sender == _owner; + } + + /** + * @dev Allows the current owner to relinquish control of the contract. + * @notice Renouncing to ownership will leave the contract without an owner. + * It will not be possible to call the functions with the `onlyOwner` + * modifier anymore. + */ + function renounceOwnership() public onlyOwner { + emit OwnershipTransferred(_owner, address(0)); + _owner = address(0); + } + + /** + * @dev Allows the current owner to transfer control of the contract to a newOwner. + * @param newOwner The address to transfer ownership to. + */ + function transferOwnership(address newOwner) public onlyOwner { + _transferOwnership(newOwner); + } + + /** + * @dev Transfers control of the contract to a newOwner. + * @param newOwner The address to transfer ownership to. + */ + function _transferOwnership(address newOwner) internal { + require(newOwner != address(0)); + emit OwnershipTransferred(_owner, newOwner); + _owner = newOwner; + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/ownership/Secondary.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/ownership/Secondary.sol new file mode 100644 index 000000000..67d2250d5 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/ownership/Secondary.sol @@ -0,0 +1,46 @@ +pragma solidity ^0.4.24; + +/** + * @title Secondary + * @dev A Secondary contract can only be used by its primary account (the one that created it) + */ +contract Secondary { + address private _primary; + + event PrimaryTransferred( + address recipient + ); + + /** + * @dev Sets the primary account to the one that is creating the Secondary contract. + */ + constructor() internal { + _primary = msg.sender; + emit PrimaryTransferred(_primary); + } + + /** + * @dev Reverts if called from any account other than the primary. + */ + modifier onlyPrimary() { + require(msg.sender == _primary); + _; + } + + /** + * @return the address of the primary. + */ + function primary() public view returns (address) { + return _primary; + } + + /** + * @dev Transfers contract to a new primary. + * @param recipient The address of new primary. + */ + function transferPrimary(address recipient) public onlyPrimary { + require(recipient != address(0)); + _primary = recipient; + emit PrimaryTransferred(_primary); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/PaymentSplitter.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/PaymentSplitter.sol new file mode 100644 index 000000000..0a1b470ef --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/PaymentSplitter.sol @@ -0,0 +1,116 @@ +pragma solidity ^0.4.24; + +import "../math/SafeMath.sol"; + +/** + * @title PaymentSplitter + * @dev This contract can be used when payments need to be received by a group + * of people and split proportionately to some number of shares they own. + */ +contract PaymentSplitter { + using SafeMath for uint256; + + event PayeeAdded(address account, uint256 shares); + event PaymentReleased(address to, uint256 amount); + event PaymentReceived(address from, uint256 amount); + + uint256 private _totalShares; + uint256 private _totalReleased; + + mapping(address => uint256) private _shares; + mapping(address => uint256) private _released; + address[] private _payees; + + /** + * @dev Constructor + */ + constructor(address[] payees, uint256[] shares) public payable { + require(payees.length == shares.length); + require(payees.length > 0); + + for (uint256 i = 0; i < payees.length; i++) { + _addPayee(payees[i], shares[i]); + } + } + + /** + * @dev payable fallback + */ + function () external payable { + emit PaymentReceived(msg.sender, msg.value); + } + + /** + * @return the total shares of the contract. + */ + function totalShares() public view returns(uint256) { + return _totalShares; + } + + /** + * @return the total amount already released. + */ + function totalReleased() public view returns(uint256) { + return _totalReleased; + } + + /** + * @return the shares of an account. + */ + function shares(address account) public view returns(uint256) { + return _shares[account]; + } + + /** + * @return the amount already released to an account. + */ + function released(address account) public view returns(uint256) { + return _released[account]; + } + + /** + * @return the address of a payee. + */ + function payee(uint256 index) public view returns(address) { + return _payees[index]; + } + + /** + * @dev Release one of the payee's proportional payment. + * @param account Whose payments will be released. + */ + function release(address account) public { + require(_shares[account] > 0); + + uint256 totalReceived = address(this).balance.add(_totalReleased); + uint256 payment = totalReceived.mul( + _shares[account]).div( + _totalShares).sub( + _released[account] + ); + + require(payment != 0); + + _released[account] = _released[account].add(payment); + _totalReleased = _totalReleased.add(payment); + + account.transfer(payment); + emit PaymentReleased(account, payment); + } + + /** + * @dev Add a new payee to the contract. + * @param account The address of the payee to add. + * @param shares_ The number of shares owned by the payee. + */ + function _addPayee(address account, uint256 shares_) private { + require(account != address(0)); + require(shares_ > 0); + require(_shares[account] == 0); + + _payees.push(account); + _shares[account] = shares_; + _totalShares = _totalShares.add(shares_); + emit PayeeAdded(account, shares_); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/PullPayment.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/PullPayment.sol new file mode 100644 index 000000000..f6d7e2c1e --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/PullPayment.sol @@ -0,0 +1,41 @@ +pragma solidity ^0.4.24; + +import "./escrow/Escrow.sol"; + +/** + * @title PullPayment + * @dev Base contract supporting async send for pull payments. Inherit from this + * contract and use _asyncTransfer instead of send or transfer. + */ +contract PullPayment { + Escrow private _escrow; + + constructor() internal { + _escrow = new Escrow(); + } + + /** + * @dev Withdraw accumulated balance. + * @param payee Whose balance will be withdrawn. + */ + function withdrawPayments(address payee) public { + _escrow.withdraw(payee); + } + + /** + * @dev Returns the credit owed to an address. + * @param dest The creditor's address. + */ + function payments(address dest) public view returns (uint256) { + return _escrow.depositsOf(dest); + } + + /** + * @dev Called by the payer to store the sent amount as credit to be pulled. + * @param dest The destination address of the funds. + * @param amount The amount to transfer. + */ + function _asyncTransfer(address dest, uint256 amount) internal { + _escrow.deposit.value(amount)(dest); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/escrow/ConditionalEscrow.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/escrow/ConditionalEscrow.sol new file mode 100644 index 000000000..c3f63ee37 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/escrow/ConditionalEscrow.sol @@ -0,0 +1,22 @@ +pragma solidity ^0.4.24; + +import "./Escrow.sol"; + +/** + * @title ConditionalEscrow + * @dev Base abstract escrow to only allow withdrawal if a condition is met. + * @dev Intended usage: See Escrow.sol. Same usage guidelines apply here. + */ +contract ConditionalEscrow is Escrow { + /** + * @dev Returns whether an address is allowed to withdraw their funds. To be + * implemented by derived contracts. + * @param payee The destination address of the funds. + */ + function withdrawalAllowed(address payee) public view returns (bool); + + function withdraw(address payee) public { + require(withdrawalAllowed(payee)); + super.withdraw(payee); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/escrow/Escrow.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/escrow/Escrow.sol new file mode 100644 index 000000000..b2f2a85ee --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/escrow/Escrow.sol @@ -0,0 +1,54 @@ +pragma solidity ^0.4.24; + +import "../../math/SafeMath.sol"; +import "../../ownership/Secondary.sol"; + + /** + * @title Escrow + * @dev Base escrow contract, holds funds designated for a payee until they + * withdraw them. + * @dev Intended usage: This contract (and derived escrow contracts) should be a + * standalone contract, that only interacts with the contract that instantiated + * it. That way, it is guaranteed that all Ether will be handled according to + * the Escrow rules, and there is no need to check for payable functions or + * transfers in the inheritance tree. The contract that uses the escrow as its + * payment method should be its primary, and provide public methods redirecting + * to the escrow's deposit and withdraw. + */ +contract Escrow is Secondary { + using SafeMath for uint256; + + event Deposited(address indexed payee, uint256 weiAmount); + event Withdrawn(address indexed payee, uint256 weiAmount); + + mapping(address => uint256) private _deposits; + + function depositsOf(address payee) public view returns (uint256) { + return _deposits[payee]; + } + + /** + * @dev Stores the sent amount as credit to be withdrawn. + * @param payee The destination address of the funds. + */ + function deposit(address payee) public onlyPrimary payable { + uint256 amount = msg.value; + _deposits[payee] = _deposits[payee].add(amount); + + emit Deposited(payee, amount); + } + + /** + * @dev Withdraw accumulated balance for a payee. + * @param payee The address whose funds will be withdrawn and transferred to. + */ + function withdraw(address payee) public onlyPrimary { + uint256 payment = _deposits[payee]; + + _deposits[payee] = 0; + + payee.transfer(payment); + + emit Withdrawn(payee, payment); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/escrow/RefundEscrow.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/escrow/RefundEscrow.sol new file mode 100644 index 000000000..a776a81c8 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/escrow/RefundEscrow.sol @@ -0,0 +1,91 @@ +pragma solidity ^0.4.24; + +import "./ConditionalEscrow.sol"; + +/** + * @title RefundEscrow + * @dev Escrow that holds funds for a beneficiary, deposited from multiple + * parties. + * @dev Intended usage: See Escrow.sol. Same usage guidelines apply here. + * @dev The primary account (that is, the contract that instantiates this + * contract) may deposit, close the deposit period, and allow for either + * withdrawal by the beneficiary, or refunds to the depositors. All interactions + * with RefundEscrow will be made through the primary contract. See the + * RefundableCrowdsale contract for an example of RefundEscrow’s use. + */ +contract RefundEscrow is ConditionalEscrow { + enum State { Active, Refunding, Closed } + + event RefundsClosed(); + event RefundsEnabled(); + + State private _state; + address private _beneficiary; + + /** + * @dev Constructor. + * @param beneficiary The beneficiary of the deposits. + */ + constructor(address beneficiary) public { + require(beneficiary != address(0)); + _beneficiary = beneficiary; + _state = State.Active; + } + + /** + * @return the current state of the escrow. + */ + function state() public view returns (State) { + return _state; + } + + /** + * @return the beneficiary of the escrow. + */ + function beneficiary() public view returns (address) { + return _beneficiary; + } + + /** + * @dev Stores funds that may later be refunded. + * @param refundee The address funds will be sent to if a refund occurs. + */ + function deposit(address refundee) public payable { + require(_state == State.Active); + super.deposit(refundee); + } + + /** + * @dev Allows for the beneficiary to withdraw their funds, rejecting + * further deposits. + */ + function close() public onlyPrimary { + require(_state == State.Active); + _state = State.Closed; + emit RefundsClosed(); + } + + /** + * @dev Allows for refunds to take place, rejecting further deposits. + */ + function enableRefunds() public onlyPrimary { + require(_state == State.Active); + _state = State.Refunding; + emit RefundsEnabled(); + } + + /** + * @dev Withdraws the beneficiary's funds. + */ + function beneficiaryWithdraw() public { + require(_state == State.Closed); + _beneficiary.transfer(address(this).balance); + } + + /** + * @dev Returns whether refundees can withdraw their deposits (be refunded). + */ + function withdrawalAllowed(address payee) public view returns (bool) { + return _state == State.Refunding; + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol new file mode 100644 index 000000000..25b2694a2 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol @@ -0,0 +1,211 @@ +pragma solidity ^0.4.24; + +import "./IERC20.sol"; +import "../../math/SafeMath.sol"; + +/** + * @title Standard ERC20 token + * + * @dev Implementation of the basic standard token. + * https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md + * Originally based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol + */ +contract ERC20 is IERC20 { + using SafeMath for uint256; + + mapping (address => uint256) private _balances; + + mapping (address => mapping (address => uint256)) private _allowed; + + uint256 private _totalSupply; + + /** + * @dev Total number of tokens in existence + */ + function totalSupply() public view returns (uint256) { + return _totalSupply; + } + + /** + * @dev Gets the balance of the specified address. + * @param owner The address to query the balance of. + * @return An uint256 representing the amount owned by the passed address. + */ + function balanceOf(address owner) public view returns (uint256) { + return _balances[owner]; + } + + /** + * @dev Function to check the amount of tokens that an owner allowed to a spender. + * @param owner address The address which owns the funds. + * @param spender address The address which will spend the funds. + * @return A uint256 specifying the amount of tokens still available for the spender. + */ + function allowance( + address owner, + address spender + ) + public + view + returns (uint256) + { + return _allowed[owner][spender]; + } + + /** + * @dev Transfer token for a specified address + * @param to The address to transfer to. + * @param value The amount to be transferred. + */ + function transfer(address to, uint256 value) public returns (bool) { + _transfer(msg.sender, to, value); + return true; + } + + /** + * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. + * Beware that changing an allowance with this method brings the risk that someone may use both the old + * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this + * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: + * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 + * @param spender The address which will spend the funds. + * @param value The amount of tokens to be spent. + */ + function approve(address spender, uint256 value) public returns (bool) { + require(spender != address(0)); + + _allowed[msg.sender][spender] = value; + emit Approval(msg.sender, spender, value); + return true; + } + + /** + * @dev Transfer tokens from one address to another + * @param from address The address which you want to send tokens from + * @param to address The address which you want to transfer to + * @param value uint256 the amount of tokens to be transferred + */ + function transferFrom( + address from, + address to, + uint256 value + ) + public + returns (bool) + { + require(value <= _allowed[from][msg.sender]); + + _allowed[from][msg.sender] = _allowed[from][msg.sender].sub(value); + _transfer(from, to, value); + return true; + } + + /** + * @dev Increase the amount of tokens that an owner allowed to a spender. + * approve should be called when allowed_[_spender] == 0. To increment + * allowed value is better to use this function to avoid 2 calls (and wait until + * the first transaction is mined) + * From MonolithDAO Token.sol + * @param spender The address which will spend the funds. + * @param addedValue The amount of tokens to increase the allowance by. + */ + function increaseAllowance( + address spender, + uint256 addedValue + ) + public + returns (bool) + { + require(spender != address(0)); + + _allowed[msg.sender][spender] = ( + _allowed[msg.sender][spender].add(addedValue)); + emit Approval(msg.sender, spender, _allowed[msg.sender][spender]); + return true; + } + + /** + * @dev Decrease the amount of tokens that an owner allowed to a spender. + * approve should be called when allowed_[_spender] == 0. To decrement + * allowed value is better to use this function to avoid 2 calls (and wait until + * the first transaction is mined) + * From MonolithDAO Token.sol + * @param spender The address which will spend the funds. + * @param subtractedValue The amount of tokens to decrease the allowance by. + */ + function decreaseAllowance( + address spender, + uint256 subtractedValue + ) + public + returns (bool) + { + require(spender != address(0)); + + _allowed[msg.sender][spender] = ( + _allowed[msg.sender][spender].sub(subtractedValue)); + emit Approval(msg.sender, spender, _allowed[msg.sender][spender]); + return true; + } + + /** + * @dev Transfer token for a specified addresses + * @param from The address to transfer from. + * @param to The address to transfer to. + * @param value The amount to be transferred. + */ + function _transfer(address from, address to, uint256 value) internal { + require(value <= _balances[from]); + require(to != address(0)); + + _balances[from] = _balances[from].sub(value); + _balances[to] = _balances[to].add(value); + emit Transfer(from, to, value); + } + + /** + * @dev Internal function that mints an amount of the token and assigns it to + * an account. This encapsulates the modification of balances such that the + * proper events are emitted. + * @param account The account that will receive the created tokens. + * @param value The amount that will be created. + */ + function _mint(address account, uint256 value) internal { + require(account != 0); + _totalSupply = _totalSupply.add(value); + _balances[account] = _balances[account].add(value); + emit Transfer(address(0), account, value); + } + + /** + * @dev Internal function that burns an amount of the token of a given + * account. + * @param account The account whose tokens will be burnt. + * @param value The amount that will be burnt. + */ + function _burn(address account, uint256 value) internal { + require(account != 0); + require(value <= _balances[account]); + + _totalSupply = _totalSupply.sub(value); + _balances[account] = _balances[account].sub(value); + emit Transfer(account, address(0), value); + } + + /** + * @dev Internal function that burns an amount of the token of a given + * account, deducting from the sender's allowance for said account. Uses the + * internal burn function. + * @param account The account whose tokens will be burnt. + * @param value The amount that will be burnt. + */ + function _burnFrom(address account, uint256 value) internal { + require(value <= _allowed[account][msg.sender]); + + // Should https://github.com/OpenZeppelin/zeppelin-solidity/issues/707 be accepted, + // this function needs to emit an event with the updated approval. + _allowed[account][msg.sender] = _allowed[account][msg.sender].sub( + value); + _burn(account, value); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol new file mode 100644 index 000000000..ba4a2ccbe --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol @@ -0,0 +1,27 @@ +pragma solidity ^0.4.24; + +import "./ERC20.sol"; + +/** + * @title Burnable Token + * @dev Token that can be irreversibly burned (destroyed). + */ +contract ERC20Burnable is ERC20 { + + /** + * @dev Burns a specific amount of tokens. + * @param value The amount of token to be burned. + */ + function burn(uint256 value) public { + _burn(msg.sender, value); + } + + /** + * @dev Burns a specific amount of tokens from the target address and decrements allowance + * @param from address The address which you want to send tokens from + * @param value uint256 The amount of token to be burned + */ + function burnFrom(address from, uint256 value) public { + _burnFrom(from, value); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Capped.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Capped.sol new file mode 100644 index 000000000..a80dd491c --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Capped.sol @@ -0,0 +1,31 @@ +pragma solidity ^0.4.24; + +import "./ERC20Mintable.sol"; + +/** + * @title Capped token + * @dev Mintable token with a token cap. + */ +contract ERC20Capped is ERC20Mintable { + + uint256 private _cap; + + constructor(uint256 cap) + public + { + require(cap > 0); + _cap = cap; + } + + /** + * @return the cap for the token minting. + */ + function cap() public view returns(uint256) { + return _cap; + } + + function _mint(address account, uint256 value) internal { + require(totalSupply().add(value) <= _cap); + super._mint(account, value); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol new file mode 100644 index 000000000..706dbfc46 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol @@ -0,0 +1,42 @@ +pragma solidity ^0.4.24; + +import "./IERC20.sol"; + +/** + * @title ERC20Detailed token + * @dev The decimals are only for visualization purposes. + * All the operations are done using the smallest and indivisible token unit, + * just as on Ethereum all the operations are done in wei. + */ +contract ERC20Detailed is IERC20 { + string private _name; + string private _symbol; + uint8 private _decimals; + + constructor(string name, string symbol, uint8 decimals) public { + _name = name; + _symbol = symbol; + _decimals = decimals; + } + + /** + * @return the name of the token. + */ + function name() public view returns(string) { + return _name; + } + + /** + * @return the symbol of the token. + */ + function symbol() public view returns(string) { + return _symbol; + } + + /** + * @return the number of decimals of the token. + */ + function decimals() public view returns(uint8) { + return _decimals; + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol new file mode 100644 index 000000000..eb01f06e7 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol @@ -0,0 +1,28 @@ +pragma solidity ^0.4.24; + +import "./ERC20.sol"; +import "../../access/roles/MinterRole.sol"; + +/** + * @title ERC20Mintable + * @dev ERC20 minting logic + */ +contract ERC20Mintable is ERC20, MinterRole { + /** + * @dev Function to mint tokens + * @param to The address that will receive the minted tokens. + * @param value The amount of tokens to mint. + * @return A boolean that indicates if the operation was successful. + */ + function mint( + address to, + uint256 value + ) + public + onlyMinter + returns (bool) + { + _mint(to, value); + return true; + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol new file mode 100644 index 000000000..8e6aa881f --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol @@ -0,0 +1,67 @@ +pragma solidity ^0.4.24; + +import "./ERC20.sol"; +import "../../lifecycle/Pausable.sol"; + +/** + * @title Pausable token + * @dev ERC20 modified with pausable transfers. + **/ +contract ERC20Pausable is ERC20, Pausable { + + function transfer( + address to, + uint256 value + ) + public + whenNotPaused + returns (bool) + { + return super.transfer(to, value); + } + + function transferFrom( + address from, + address to, + uint256 value + ) + public + whenNotPaused + returns (bool) + { + return super.transferFrom(from, to, value); + } + + function approve( + address spender, + uint256 value + ) + public + whenNotPaused + returns (bool) + { + return super.approve(spender, value); + } + + function increaseAllowance( + address spender, + uint addedValue + ) + public + whenNotPaused + returns (bool success) + { + return super.increaseAllowance(spender, addedValue); + } + + function decreaseAllowance( + address spender, + uint subtractedValue + ) + public + whenNotPaused + returns (bool success) + { + return super.decreaseAllowance(spender, subtractedValue); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol new file mode 100644 index 000000000..37e5a447c --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol @@ -0,0 +1,34 @@ +pragma solidity ^0.4.24; + +/** + * @title ERC20 interface + * @dev see https://github.com/ethereum/EIPs/issues/20 + */ +interface IERC20 { + function totalSupply() external view returns (uint256); + + function balanceOf(address who) external view returns (uint256); + + function allowance(address owner, address spender) + external view returns (uint256); + + function transfer(address to, uint256 value) external returns (bool); + + function approve(address spender, uint256 value) + external returns (bool); + + function transferFrom(address from, address to, uint256 value) + external returns (bool); + + event Transfer( + address indexed from, + address indexed to, + uint256 value + ); + + event Approval( + address indexed owner, + address indexed spender, + uint256 value + ); +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol new file mode 100644 index 000000000..2774afa08 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol @@ -0,0 +1,72 @@ +pragma solidity ^0.4.24; + +import "./IERC20.sol"; +import "../../math/SafeMath.sol"; + +/** + * @title SafeERC20 + * @dev Wrappers around ERC20 operations that throw on failure. + * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, + * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. + */ +library SafeERC20 { + + using SafeMath for uint256; + + function safeTransfer( + IERC20 token, + address to, + uint256 value + ) + internal + { + require(token.transfer(to, value)); + } + + function safeTransferFrom( + IERC20 token, + address from, + address to, + uint256 value + ) + internal + { + require(token.transferFrom(from, to, value)); + } + + function safeApprove( + IERC20 token, + address spender, + uint256 value + ) + internal + { + // safeApprove should only be called when setting an initial allowance, + // or when resetting it to zero. To increase and decrease it, use + // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' + require((value == 0) || (token.allowance(msg.sender, spender) == 0)); + require(token.approve(spender, value)); + } + + function safeIncreaseAllowance( + IERC20 token, + address spender, + uint256 value + ) + internal + { + uint256 newAllowance = token.allowance(address(this), spender).add(value); + require(token.approve(spender, newAllowance)); + } + + function safeDecreaseAllowance( + IERC20 token, + address spender, + uint256 value + ) + internal + { + uint256 newAllowance = token.allowance(address(this), spender).sub(value); + require(token.approve(spender, newAllowance)); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/TokenTimelock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/TokenTimelock.sol new file mode 100644 index 000000000..55903482b --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/TokenTimelock.sol @@ -0,0 +1,69 @@ +pragma solidity ^0.4.24; + +import "./SafeERC20.sol"; + +/** + * @title TokenTimelock + * @dev TokenTimelock is a token holder contract that will allow a + * beneficiary to extract the tokens after a given release time + */ +contract TokenTimelock { + using SafeERC20 for IERC20; + + // ERC20 basic token contract being held + IERC20 private _token; + + // beneficiary of tokens after they are released + address private _beneficiary; + + // timestamp when token release is enabled + uint256 private _releaseTime; + + constructor( + IERC20 token, + address beneficiary, + uint256 releaseTime + ) + public + { + // solium-disable-next-line security/no-block-members + require(releaseTime > block.timestamp); + _token = token; + _beneficiary = beneficiary; + _releaseTime = releaseTime; + } + + /** + * @return the token being held. + */ + function token() public view returns(IERC20) { + return _token; + } + + /** + * @return the beneficiary of the tokens. + */ + function beneficiary() public view returns(address) { + return _beneficiary; + } + + /** + * @return the time when the tokens are released. + */ + function releaseTime() public view returns(uint256) { + return _releaseTime; + } + + /** + * @notice Transfers tokens held by timelock to beneficiary. + */ + function release() public { + // solium-disable-next-line security/no-block-members + require(block.timestamp >= _releaseTime); + + uint256 amount = _token.balanceOf(address(this)); + require(amount > 0); + + _token.safeTransfer(_beneficiary, amount); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721.sol new file mode 100644 index 000000000..ec0763b96 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721.sol @@ -0,0 +1,330 @@ +pragma solidity ^0.4.24; + +import "./IERC721.sol"; +import "./IERC721Receiver.sol"; +import "../../math/SafeMath.sol"; +import "../../utils/Address.sol"; +import "../../introspection/ERC165.sol"; + +/** + * @title ERC721 Non-Fungible Token Standard basic implementation + * @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md + */ +contract ERC721 is ERC165, IERC721 { + + using SafeMath for uint256; + using Address for address; + + // Equals to `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))` + // which can be also obtained as `IERC721Receiver(0).onERC721Received.selector` + bytes4 private constant _ERC721_RECEIVED = 0x150b7a02; + + // Mapping from token ID to owner + mapping (uint256 => address) private _tokenOwner; + + // Mapping from token ID to approved address + mapping (uint256 => address) private _tokenApprovals; + + // Mapping from owner to number of owned token + mapping (address => uint256) private _ownedTokensCount; + + // Mapping from owner to operator approvals + mapping (address => mapping (address => bool)) private _operatorApprovals; + + bytes4 private constant _InterfaceId_ERC721 = 0x80ac58cd; + /* + * 0x80ac58cd === + * bytes4(keccak256('balanceOf(address)')) ^ + * bytes4(keccak256('ownerOf(uint256)')) ^ + * bytes4(keccak256('approve(address,uint256)')) ^ + * bytes4(keccak256('getApproved(uint256)')) ^ + * bytes4(keccak256('setApprovalForAll(address,bool)')) ^ + * bytes4(keccak256('isApprovedForAll(address,address)')) ^ + * bytes4(keccak256('transferFrom(address,address,uint256)')) ^ + * bytes4(keccak256('safeTransferFrom(address,address,uint256)')) ^ + * bytes4(keccak256('safeTransferFrom(address,address,uint256,bytes)')) + */ + + constructor() + public + { + // register the supported interfaces to conform to ERC721 via ERC165 + _registerInterface(_InterfaceId_ERC721); + } + + /** + * @dev Gets the balance of the specified address + * @param owner address to query the balance of + * @return uint256 representing the amount owned by the passed address + */ + function balanceOf(address owner) public view returns (uint256) { + require(owner != address(0)); + return _ownedTokensCount[owner]; + } + + /** + * @dev Gets the owner of the specified token ID + * @param tokenId uint256 ID of the token to query the owner of + * @return owner address currently marked as the owner of the given token ID + */ + function ownerOf(uint256 tokenId) public view returns (address) { + address owner = _tokenOwner[tokenId]; + require(owner != address(0)); + return owner; + } + + /** + * @dev Approves another address to transfer the given token ID + * The zero address indicates there is no approved address. + * There can only be one approved address per token at a given time. + * Can only be called by the token owner or an approved operator. + * @param to address to be approved for the given token ID + * @param tokenId uint256 ID of the token to be approved + */ + function approve(address to, uint256 tokenId) public { + address owner = ownerOf(tokenId); + require(to != owner); + require(msg.sender == owner || isApprovedForAll(owner, msg.sender)); + + _tokenApprovals[tokenId] = to; + emit Approval(owner, to, tokenId); + } + + /** + * @dev Gets the approved address for a token ID, or zero if no address set + * Reverts if the token ID does not exist. + * @param tokenId uint256 ID of the token to query the approval of + * @return address currently approved for the given token ID + */ + function getApproved(uint256 tokenId) public view returns (address) { + require(_exists(tokenId)); + return _tokenApprovals[tokenId]; + } + + /** + * @dev Sets or unsets the approval of a given operator + * An operator is allowed to transfer all tokens of the sender on their behalf + * @param to operator address to set the approval + * @param approved representing the status of the approval to be set + */ + function setApprovalForAll(address to, bool approved) public { + require(to != msg.sender); + _operatorApprovals[msg.sender][to] = approved; + emit ApprovalForAll(msg.sender, to, approved); + } + + /** + * @dev Tells whether an operator is approved by a given owner + * @param owner owner address which you want to query the approval of + * @param operator operator address which you want to query the approval of + * @return bool whether the given operator is approved by the given owner + */ + function isApprovedForAll( + address owner, + address operator + ) + public + view + returns (bool) + { + return _operatorApprovals[owner][operator]; + } + + /** + * @dev Transfers the ownership of a given token ID to another address + * Usage of this method is discouraged, use `safeTransferFrom` whenever possible + * Requires the msg sender to be the owner, approved, or operator + * @param from current owner of the token + * @param to address to receive the ownership of the given token ID + * @param tokenId uint256 ID of the token to be transferred + */ + function transferFrom( + address from, + address to, + uint256 tokenId + ) + public + { + require(_isApprovedOrOwner(msg.sender, tokenId)); + require(to != address(0)); + + _clearApproval(from, tokenId); + _removeTokenFrom(from, tokenId); + _addTokenTo(to, tokenId); + + emit Transfer(from, to, tokenId); + } + + /** + * @dev Safely transfers the ownership of a given token ID to another address + * If the target address is a contract, it must implement `onERC721Received`, + * which is called upon a safe transfer, and return the magic value + * `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`; otherwise, + * the transfer is reverted. + * + * Requires the msg sender to be the owner, approved, or operator + * @param from current owner of the token + * @param to address to receive the ownership of the given token ID + * @param tokenId uint256 ID of the token to be transferred + */ + function safeTransferFrom( + address from, + address to, + uint256 tokenId + ) + public + { + // solium-disable-next-line arg-overflow + safeTransferFrom(from, to, tokenId, ""); + } + + /** + * @dev Safely transfers the ownership of a given token ID to another address + * If the target address is a contract, it must implement `onERC721Received`, + * which is called upon a safe transfer, and return the magic value + * `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`; otherwise, + * the transfer is reverted. + * Requires the msg sender to be the owner, approved, or operator + * @param from current owner of the token + * @param to address to receive the ownership of the given token ID + * @param tokenId uint256 ID of the token to be transferred + * @param _data bytes data to send along with a safe transfer check + */ + function safeTransferFrom( + address from, + address to, + uint256 tokenId, + bytes _data + ) + public + { + transferFrom(from, to, tokenId); + // solium-disable-next-line arg-overflow + require(_checkOnERC721Received(from, to, tokenId, _data)); + } + + /** + * @dev Returns whether the specified token exists + * @param tokenId uint256 ID of the token to query the existence of + * @return whether the token exists + */ + function _exists(uint256 tokenId) internal view returns (bool) { + address owner = _tokenOwner[tokenId]; + return owner != address(0); + } + + /** + * @dev Returns whether the given spender can transfer a given token ID + * @param spender address of the spender to query + * @param tokenId uint256 ID of the token to be transferred + * @return bool whether the msg.sender is approved for the given token ID, + * is an operator of the owner, or is the owner of the token + */ + function _isApprovedOrOwner( + address spender, + uint256 tokenId + ) + internal + view + returns (bool) + { + address owner = ownerOf(tokenId); + // Disable solium check because of + // https://github.com/duaraghav8/Solium/issues/175 + // solium-disable-next-line operator-whitespace + return ( + spender == owner || + getApproved(tokenId) == spender || + isApprovedForAll(owner, spender) + ); + } + + /** + * @dev Internal function to mint a new token + * Reverts if the given token ID already exists + * @param to The address that will own the minted token + * @param tokenId uint256 ID of the token to be minted by the msg.sender + */ + function _mint(address to, uint256 tokenId) internal { + require(to != address(0)); + _addTokenTo(to, tokenId); + emit Transfer(address(0), to, tokenId); + } + + /** + * @dev Internal function to burn a specific token + * Reverts if the token does not exist + * @param tokenId uint256 ID of the token being burned by the msg.sender + */ + function _burn(address owner, uint256 tokenId) internal { + _clearApproval(owner, tokenId); + _removeTokenFrom(owner, tokenId); + emit Transfer(owner, address(0), tokenId); + } + + /** + * @dev Internal function to add a token ID to the list of a given address + * Note that this function is left internal to make ERC721Enumerable possible, but is not + * intended to be called by custom derived contracts: in particular, it emits no Transfer event. + * @param to address representing the new owner of the given token ID + * @param tokenId uint256 ID of the token to be added to the tokens list of the given address + */ + function _addTokenTo(address to, uint256 tokenId) internal { + require(_tokenOwner[tokenId] == address(0)); + _tokenOwner[tokenId] = to; + _ownedTokensCount[to] = _ownedTokensCount[to].add(1); + } + + /** + * @dev Internal function to remove a token ID from the list of a given address + * Note that this function is left internal to make ERC721Enumerable possible, but is not + * intended to be called by custom derived contracts: in particular, it emits no Transfer event, + * and doesn't clear approvals. + * @param from address representing the previous owner of the given token ID + * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address + */ + function _removeTokenFrom(address from, uint256 tokenId) internal { + require(ownerOf(tokenId) == from); + _ownedTokensCount[from] = _ownedTokensCount[from].sub(1); + _tokenOwner[tokenId] = address(0); + } + + /** + * @dev Internal function to invoke `onERC721Received` on a target address + * The call is not executed if the target address is not a contract + * @param from address representing the previous owner of the given token ID + * @param to target address that will receive the tokens + * @param tokenId uint256 ID of the token to be transferred + * @param _data bytes optional data to send along with the call + * @return whether the call correctly returned the expected magic value + */ + function _checkOnERC721Received( + address from, + address to, + uint256 tokenId, + bytes _data + ) + internal + returns (bool) + { + if (!to.isContract()) { + return true; + } + bytes4 retval = IERC721Receiver(to).onERC721Received( + msg.sender, from, tokenId, _data); + return (retval == _ERC721_RECEIVED); + } + + /** + * @dev Private function to clear current approval of a given token ID + * Reverts if the given address is not indeed the owner of the token + * @param owner owner of the token + * @param tokenId uint256 ID of the token to be transferred + */ + function _clearApproval(address owner, uint256 tokenId) private { + require(ownerOf(tokenId) == owner); + if (_tokenApprovals[tokenId] != address(0)) { + _tokenApprovals[tokenId] = address(0); + } + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Burnable.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Burnable.sol new file mode 100644 index 000000000..3fc0277e5 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Burnable.sol @@ -0,0 +1,12 @@ +pragma solidity ^0.4.24; + +import "./ERC721.sol"; + +contract ERC721Burnable is ERC721 { + function burn(uint256 tokenId) + public + { + require(_isApprovedOrOwner(msg.sender, tokenId)); + _burn(ownerOf(tokenId), tokenId); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Enumerable.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Enumerable.sol new file mode 100644 index 000000000..c85514720 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Enumerable.sol @@ -0,0 +1,150 @@ +pragma solidity ^0.4.24; + +import "./IERC721Enumerable.sol"; +import "./ERC721.sol"; +import "../../introspection/ERC165.sol"; + +contract ERC721Enumerable is ERC165, ERC721, IERC721Enumerable { + // Mapping from owner to list of owned token IDs + mapping(address => uint256[]) private _ownedTokens; + + // Mapping from token ID to index of the owner tokens list + mapping(uint256 => uint256) private _ownedTokensIndex; + + // Array with all token ids, used for enumeration + uint256[] private _allTokens; + + // Mapping from token id to position in the allTokens array + mapping(uint256 => uint256) private _allTokensIndex; + + bytes4 private constant _InterfaceId_ERC721Enumerable = 0x780e9d63; + /** + * 0x780e9d63 === + * bytes4(keccak256('totalSupply()')) ^ + * bytes4(keccak256('tokenOfOwnerByIndex(address,uint256)')) ^ + * bytes4(keccak256('tokenByIndex(uint256)')) + */ + + /** + * @dev Constructor function + */ + constructor() public { + // register the supported interface to conform to ERC721 via ERC165 + _registerInterface(_InterfaceId_ERC721Enumerable); + } + + /** + * @dev Gets the token ID at a given index of the tokens list of the requested owner + * @param owner address owning the tokens list to be accessed + * @param index uint256 representing the index to be accessed of the requested tokens list + * @return uint256 token ID at the given index of the tokens list owned by the requested address + */ + function tokenOfOwnerByIndex( + address owner, + uint256 index + ) + public + view + returns (uint256) + { + require(index < balanceOf(owner)); + return _ownedTokens[owner][index]; + } + + /** + * @dev Gets the total amount of tokens stored by the contract + * @return uint256 representing the total amount of tokens + */ + function totalSupply() public view returns (uint256) { + return _allTokens.length; + } + + /** + * @dev Gets the token ID at a given index of all the tokens in this contract + * Reverts if the index is greater or equal to the total number of tokens + * @param index uint256 representing the index to be accessed of the tokens list + * @return uint256 token ID at the given index of the tokens list + */ + function tokenByIndex(uint256 index) public view returns (uint256) { + require(index < totalSupply()); + return _allTokens[index]; + } + + /** + * @dev Internal function to add a token ID to the list of a given address + * This function is internal due to language limitations, see the note in ERC721.sol. + * It is not intended to be called by custom derived contracts: in particular, it emits no Transfer event. + * @param to address representing the new owner of the given token ID + * @param tokenId uint256 ID of the token to be added to the tokens list of the given address + */ + function _addTokenTo(address to, uint256 tokenId) internal { + super._addTokenTo(to, tokenId); + uint256 length = _ownedTokens[to].length; + _ownedTokens[to].push(tokenId); + _ownedTokensIndex[tokenId] = length; + } + + /** + * @dev Internal function to remove a token ID from the list of a given address + * This function is internal due to language limitations, see the note in ERC721.sol. + * It is not intended to be called by custom derived contracts: in particular, it emits no Transfer event, + * and doesn't clear approvals. + * @param from address representing the previous owner of the given token ID + * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address + */ + function _removeTokenFrom(address from, uint256 tokenId) internal { + super._removeTokenFrom(from, tokenId); + + // To prevent a gap in the array, we store the last token in the index of the token to delete, and + // then delete the last slot. + uint256 tokenIndex = _ownedTokensIndex[tokenId]; + uint256 lastTokenIndex = _ownedTokens[from].length.sub(1); + uint256 lastToken = _ownedTokens[from][lastTokenIndex]; + + _ownedTokens[from][tokenIndex] = lastToken; + // This also deletes the contents at the last position of the array + _ownedTokens[from].length--; + + // Note that this will handle single-element arrays. In that case, both tokenIndex and lastTokenIndex are going to + // be zero. Then we can make sure that we will remove tokenId from the ownedTokens list since we are first swapping + // the lastToken to the first position, and then dropping the element placed in the last position of the list + + _ownedTokensIndex[tokenId] = 0; + _ownedTokensIndex[lastToken] = tokenIndex; + } + + /** + * @dev Internal function to mint a new token + * Reverts if the given token ID already exists + * @param to address the beneficiary that will own the minted token + * @param tokenId uint256 ID of the token to be minted by the msg.sender + */ + function _mint(address to, uint256 tokenId) internal { + super._mint(to, tokenId); + + _allTokensIndex[tokenId] = _allTokens.length; + _allTokens.push(tokenId); + } + + /** + * @dev Internal function to burn a specific token + * Reverts if the token does not exist + * @param owner owner of the token to burn + * @param tokenId uint256 ID of the token being burned by the msg.sender + */ + function _burn(address owner, uint256 tokenId) internal { + super._burn(owner, tokenId); + + // Reorg all tokens array + uint256 tokenIndex = _allTokensIndex[tokenId]; + uint256 lastTokenIndex = _allTokens.length.sub(1); + uint256 lastToken = _allTokens[lastTokenIndex]; + + _allTokens[tokenIndex] = lastToken; + _allTokens[lastTokenIndex] = 0; + + _allTokens.length--; + _allTokensIndex[tokenId] = 0; + _allTokensIndex[lastToken] = tokenIndex; + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Full.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Full.sol new file mode 100644 index 000000000..293637501 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Full.sol @@ -0,0 +1,18 @@ +pragma solidity ^0.4.24; + +import "./ERC721.sol"; +import "./ERC721Enumerable.sol"; +import "./ERC721Metadata.sol"; + +/** + * @title Full ERC721 Token + * This implementation includes all the required and some optional functionality of the ERC721 standard + * Moreover, it includes approve all functionality using operator terminology + * @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md + */ +contract ERC721Full is ERC721, ERC721Enumerable, ERC721Metadata { + constructor(string name, string symbol) ERC721Metadata(name, symbol) + public + { + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Holder.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Holder.sol new file mode 100644 index 000000000..cf0e9ce55 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Holder.sol @@ -0,0 +1,17 @@ +pragma solidity ^0.4.24; + +import "./IERC721Receiver.sol"; + +contract ERC721Holder is IERC721Receiver { + function onERC721Received( + address, + address, + uint256, + bytes + ) + public + returns(bytes4) + { + return this.onERC721Received.selector; + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Metadata.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Metadata.sol new file mode 100644 index 000000000..bd1105188 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Metadata.sol @@ -0,0 +1,87 @@ +pragma solidity ^0.4.24; + +import "./ERC721.sol"; +import "./IERC721Metadata.sol"; +import "../../introspection/ERC165.sol"; + +contract ERC721Metadata is ERC165, ERC721, IERC721Metadata { + // Token name + string private _name; + + // Token symbol + string private _symbol; + + // Optional mapping for token URIs + mapping(uint256 => string) private _tokenURIs; + + bytes4 private constant InterfaceId_ERC721Metadata = 0x5b5e139f; + /** + * 0x5b5e139f === + * bytes4(keccak256('name()')) ^ + * bytes4(keccak256('symbol()')) ^ + * bytes4(keccak256('tokenURI(uint256)')) + */ + + /** + * @dev Constructor function + */ + constructor(string name, string symbol) public { + _name = name; + _symbol = symbol; + + // register the supported interfaces to conform to ERC721 via ERC165 + _registerInterface(InterfaceId_ERC721Metadata); + } + + /** + * @dev Gets the token name + * @return string representing the token name + */ + function name() external view returns (string) { + return _name; + } + + /** + * @dev Gets the token symbol + * @return string representing the token symbol + */ + function symbol() external view returns (string) { + return _symbol; + } + + /** + * @dev Returns an URI for a given token ID + * Throws if the token ID does not exist. May return an empty string. + * @param tokenId uint256 ID of the token to query + */ + function tokenURI(uint256 tokenId) external view returns (string) { + require(_exists(tokenId)); + return _tokenURIs[tokenId]; + } + + /** + * @dev Internal function to set the token URI for a given token + * Reverts if the token ID does not exist + * @param tokenId uint256 ID of the token to set its URI + * @param uri string URI to assign + */ + function _setTokenURI(uint256 tokenId, string uri) internal { + require(_exists(tokenId)); + _tokenURIs[tokenId] = uri; + } + + /** + * @dev Internal function to burn a specific token + * Reverts if the token does not exist + * @param owner owner of the token to burn + * @param tokenId uint256 ID of the token being burned by the msg.sender + */ + function _burn(address owner, uint256 tokenId) internal { + super._burn(owner, tokenId); + + // Clear metadata (if any) + if (bytes(_tokenURIs[tokenId]).length != 0) { + delete _tokenURIs[tokenId]; + } + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721MetadataMintable.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721MetadataMintable.sol new file mode 100644 index 000000000..95a9f2124 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721MetadataMintable.sol @@ -0,0 +1,32 @@ +pragma solidity ^0.4.24; + +import "./ERC721Metadata.sol"; +import "../../access/roles/MinterRole.sol"; + + +/** + * @title ERC721MetadataMintable + * @dev ERC721 minting logic with metadata + */ +contract ERC721MetadataMintable is ERC721, ERC721Metadata, MinterRole { + /** + * @dev Function to mint tokens + * @param to The address that will receive the minted tokens. + * @param tokenId The token id to mint. + * @param tokenURI The token URI of the minted token. + * @return A boolean that indicates if the operation was successful. + */ + function mintWithTokenURI( + address to, + uint256 tokenId, + string tokenURI + ) + public + onlyMinter + returns (bool) + { + _mint(to, tokenId); + _setTokenURI(tokenId, tokenURI); + return true; + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Mintable.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Mintable.sol new file mode 100644 index 000000000..74b7b0186 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Mintable.sol @@ -0,0 +1,28 @@ +pragma solidity ^0.4.24; + +import "./ERC721.sol"; +import "../../access/roles/MinterRole.sol"; + +/** + * @title ERC721Mintable + * @dev ERC721 minting logic + */ +contract ERC721Mintable is ERC721, MinterRole { + /** + * @dev Function to mint tokens + * @param to The address that will receive the minted tokens. + * @param tokenId The token id to mint. + * @return A boolean that indicates if the operation was successful. + */ + function mint( + address to, + uint256 tokenId + ) + public + onlyMinter + returns (bool) + { + _mint(to, tokenId); + return true; + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Pausable.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Pausable.sol new file mode 100644 index 000000000..c66d9da1f --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Pausable.sol @@ -0,0 +1,41 @@ +pragma solidity ^0.4.24; + +import "./ERC721.sol"; +import "../../lifecycle/Pausable.sol"; + +/** + * @title ERC721 Non-Fungible Pausable token + * @dev ERC721 modified with pausable transfers. + **/ +contract ERC721Pausable is ERC721, Pausable { + function approve( + address to, + uint256 tokenId + ) + public + whenNotPaused + { + super.approve(to, tokenId); + } + + function setApprovalForAll( + address to, + bool approved + ) + public + whenNotPaused + { + super.setApprovalForAll(to, approved); + } + + function transferFrom( + address from, + address to, + uint256 tokenId + ) + public + whenNotPaused + { + super.transferFrom(from, to, tokenId); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721.sol new file mode 100644 index 000000000..24bc6a242 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721.sol @@ -0,0 +1,49 @@ +pragma solidity ^0.4.24; + +import "../../introspection/IERC165.sol"; + +/** + * @title ERC721 Non-Fungible Token Standard basic interface + * @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md + */ +contract IERC721 is IERC165 { + + event Transfer( + address indexed from, + address indexed to, + uint256 indexed tokenId + ); + event Approval( + address indexed owner, + address indexed approved, + uint256 indexed tokenId + ); + event ApprovalForAll( + address indexed owner, + address indexed operator, + bool approved + ); + + function balanceOf(address owner) public view returns (uint256 balance); + function ownerOf(uint256 tokenId) public view returns (address owner); + + function approve(address to, uint256 tokenId) public; + function getApproved(uint256 tokenId) + public view returns (address operator); + + function setApprovalForAll(address operator, bool _approved) public; + function isApprovedForAll(address owner, address operator) + public view returns (bool); + + function transferFrom(address from, address to, uint256 tokenId) public; + function safeTransferFrom(address from, address to, uint256 tokenId) + public; + + function safeTransferFrom( + address from, + address to, + uint256 tokenId, + bytes data + ) + public; +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Enumerable.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Enumerable.sol new file mode 100644 index 000000000..b772f2507 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Enumerable.sol @@ -0,0 +1,20 @@ +pragma solidity ^0.4.24; + +import "./IERC721.sol"; + +/** + * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension + * @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md + */ +contract IERC721Enumerable is IERC721 { + function totalSupply() public view returns (uint256); + function tokenOfOwnerByIndex( + address owner, + uint256 index + ) + public + view + returns (uint256 tokenId); + + function tokenByIndex(uint256 index) public view returns (uint256); +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Full.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Full.sol new file mode 100644 index 000000000..90d8c21d8 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Full.sol @@ -0,0 +1,12 @@ +pragma solidity ^0.4.24; + +import "./IERC721.sol"; +import "./IERC721Enumerable.sol"; +import "./IERC721Metadata.sol"; + +/** + * @title ERC-721 Non-Fungible Token Standard, full implementation interface + * @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md + */ +contract IERC721Full is IERC721, IERC721Enumerable, IERC721Metadata { +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Metadata.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Metadata.sol new file mode 100644 index 000000000..15b5ae4c6 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Metadata.sol @@ -0,0 +1,13 @@ +pragma solidity ^0.4.24; + +import "./IERC721.sol"; + +/** + * @title ERC-721 Non-Fungible Token Standard, optional metadata extension + * @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md + */ +contract IERC721Metadata is IERC721 { + function name() external view returns (string); + function symbol() external view returns (string); + function tokenURI(uint256 tokenId) external view returns (string); +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol new file mode 100644 index 000000000..e692f7e2c --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol @@ -0,0 +1,31 @@ +pragma solidity ^0.4.24; + +/** + * @title ERC721 token receiver interface + * @dev Interface for any contract that wants to support safeTransfers + * from ERC721 asset contracts. + */ +contract IERC721Receiver { + /** + * @notice Handle the receipt of an NFT + * @dev The ERC721 smart contract calls this function on the recipient + * after a `safeTransfer`. This function MUST return the function selector, + * otherwise the caller will revert the transaction. The selector to be + * returned can be obtained as `this.onERC721Received.selector`. This + * function MAY throw to revert and reject the transfer. + * Note: the ERC721 contract address is always the message sender. + * @param operator The address which called `safeTransferFrom` function + * @param from The address which previously owned the token + * @param tokenId The NFT identifier which is being transferred + * @param data Additional data with no specified format + * @return `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))` + */ + function onERC721Received( + address operator, + address from, + uint256 tokenId, + bytes data + ) + public + returns(bytes4); +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/utils/Address.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/utils/Address.sol new file mode 100644 index 000000000..92a43ff9c --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/utils/Address.sol @@ -0,0 +1,28 @@ +pragma solidity ^0.4.24; + +/** + * Utility library of inline functions on addresses + */ +library Address { + + /** + * Returns whether the target address is a contract + * @dev This function will return false if invoked during the constructor of a contract, + * as the code is not actually created until after the constructor finishes. + * @param account address of the account to check + * @return whether the target address is a contract + */ + function isContract(address account) internal view returns (bool) { + uint256 size; + // XXX Currently there is no better way to check if there is a contract in an address + // than to check the size of the code at that address. + // See https://ethereum.stackexchange.com/a/14016/36603 + // for more details about how this works. + // TODO Check this again before the Serenity release, because all addresses will be + // contracts then. + // solium-disable-next-line security/no-inline-assembly + assembly { size := extcodesize(account) } + return size > 0; + } + +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/utils/Arrays.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/utils/Arrays.sol new file mode 100644 index 000000000..6882ea995 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/utils/Arrays.sol @@ -0,0 +1,56 @@ +pragma solidity ^0.4.23; + +import "../math/Math.sol"; + + +/** + * @title Arrays + * @dev Utility library of inline array functions + */ +library Arrays { + + /** + * @dev Upper bound search function which is kind of binary search algoritm. It searches sorted + * array to find index of the element value. If element is found then returns it's index otherwise + * it returns index of first element which is grater than searched value. If searched element is + * bigger than any array element function then returns first index after last element (i.e. all + * values inside the array are smaller than the target). Complexity O(log n). + * @param array The array sorted in ascending order. + * @param element The element's value to be find. + * @return The calculated index value. Returns 0 for empty array. + */ + function findUpperBound( + uint256[] storage array, + uint256 element + ) + internal + view + returns (uint256) + { + if (array.length == 0) { + return 0; + } + + uint256 low = 0; + uint256 high = array.length; + + while (low < high) { + uint256 mid = Math.average(low, high); + + // Note that mid will always be strictly less than high (i.e. it will be a valid array index) + // because Math.average rounds down (it does integer division with truncation). + if (array[mid] > element) { + high = mid; + } else { + low = mid + 1; + } + } + + // At this point `low` is the exclusive upper bound. We will return the inclusive upper bound. + if (low > 0 && array[low - 1] == element) { + return low - 1; + } else { + return low; + } + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/utils/ReentrancyGuard.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/utils/ReentrancyGuard.sol new file mode 100644 index 000000000..7a2895da2 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/utils/ReentrancyGuard.sol @@ -0,0 +1,34 @@ +pragma solidity ^0.4.24; + +/** + * @title Helps contracts guard against reentrancy attacks. + * @author Remco Bloemen , Eenae + * @dev If you mark a function `nonReentrant`, you should also + * mark it `external`. + */ +contract ReentrancyGuard { + + /// @dev counter to allow mutex lock with only one SSTORE operation + uint256 private _guardCounter; + + constructor() internal { + // The counter starts at one to prevent changing it from zero to a non-zero + // value, which is a more expensive operation. + _guardCounter = 1; + } + + /** + * @dev Prevents a contract from calling itself, directly or indirectly. + * Calling a `nonReentrant` function from another `nonReentrant` + * function is not supported. It is possible to prevent this from happening + * by making the `nonReentrant` function external, and make it call a + * `private` function that does the actual work. + */ + modifier nonReentrant() { + _guardCounter += 1; + uint256 localCounter = _guardCounter; + _; + require(localCounter == _guardCounter); + } + +} diff --git a/labs/algo-erc20-token/test/AdvancedAlgos.AlgoErc20Token.IntegrationTests/AdvancedAlgos.AlgoErc20Token.IntegrationTests.csproj b/labs/algo-erc20-token/test/AdvancedAlgos.AlgoErc20Token.IntegrationTests/AdvancedAlgos.AlgoErc20Token.IntegrationTests.csproj new file mode 100644 index 000000000..b7afbca3b --- /dev/null +++ b/labs/algo-erc20-token/test/AdvancedAlgos.AlgoErc20Token.IntegrationTests/AdvancedAlgos.AlgoErc20Token.IntegrationTests.csproj @@ -0,0 +1,20 @@ + + + + netcoreapp2.1 + false + latest + + + + + + + + + + + + + + diff --git a/labs/algo-erc20-token/test/AdvancedAlgos.AlgoErc20Token.IntegrationTests/AlgoTokenV1Tests.cs b/labs/algo-erc20-token/test/AdvancedAlgos.AlgoErc20Token.IntegrationTests/AlgoTokenV1Tests.cs new file mode 100644 index 000000000..ec61b0cc6 --- /dev/null +++ b/labs/algo-erc20-token/test/AdvancedAlgos.AlgoErc20Token.IntegrationTests/AlgoTokenV1Tests.cs @@ -0,0 +1,74 @@ +using System; +using System.Numerics; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoErc20Token.EthClientExtensions; +using AdvancedAlgos.AlgoErc20Token.EthClientExtensions.Exceptions; +using Nethereum.Web3; +using Nethereum.Web3.Accounts; +using Xunit; + +namespace AdvancedAlgos.AlgoErc20Token.IntegrationTests +{ + public class AlgoTokenV1Tests + { + private const long INITIAL_SUPPLY = 1000000000; + private const byte TOKEN_DECIMALS = 18; + + private static BigInteger _tokenFactor = BigInteger.Pow(10, TOKEN_DECIMALS); + + [Fact] + public async Task DeployContractAndTransferTokensTest() + { + EthNetwork.UseGethTestNet(); + + var account1 = new Account(EthNetwork.Instance.PrefundedPrivateKey); + var account2 = EthAccountFactory.Create(); + + var web3 = new Web3(account1, EthNetwork.Instance.Url); + + var contract = new AlgoTokenV1(); + + await contract.DeployAsync(web3, EthNetwork.Instance.GasPrice); + + Assert.Equal(INITIAL_SUPPLY.Algo(), await contract.BalanceOfAsync(account1.Address)); + + await contract.TransferAsync(EthNetwork.Instance.GasPrice, account2.Address, 2.Algo()); + + Assert.Equal(2.Algo(), await contract.BalanceOfAsync(account2.Address)); + } + + [Fact] + public async Task PausableFeatureTest() + { + EthNetwork.UseGethTestNet(); + + var account1 = new Account(EthNetwork.Instance.PrefundedPrivateKey); + var account2 = EthAccountFactory.Create(); + + var web3 = new Web3(account1, EthNetwork.Instance.Url); + + var contract = new AlgoTokenV1(); + + await contract.DeployAsync(web3, EthNetwork.Instance.GasPrice); + + await contract.TransferAsync(EthNetwork.Instance.GasPrice, account2.Address, 2.Algo()); + + Assert.Equal(2.Algo(), await contract.BalanceOfAsync(account2.Address)); + + await contract.PauseAsync(EthNetwork.Instance.GasPrice); + + await Assert.ThrowsAsync( + () => contract.TransferAsync(EthNetwork.Instance.GasPrice, account2.Address, 2.Algo())); + + Assert.Equal(2.Algo(), await contract.BalanceOfAsync(account2.Address)); + + await contract.UnpauseAsync(EthNetwork.Instance.GasPrice); + + Assert.Equal(2.Algo(), await contract.BalanceOfAsync(account2.Address)); + + await contract.TransferAsync(EthNetwork.Instance.GasPrice, account2.Address, 2.Algo()); + + Assert.Equal(4.Algo(), await contract.BalanceOfAsync(account2.Address)); + } + } +} diff --git a/labs/algo-erc20-token/test/AdvancedAlgos.AlgoErc20Token.IntegrationTests/EthNetwork.cs b/labs/algo-erc20-token/test/AdvancedAlgos.AlgoErc20Token.IntegrationTests/EthNetwork.cs new file mode 100644 index 000000000..b34dbe31d --- /dev/null +++ b/labs/algo-erc20-token/test/AdvancedAlgos.AlgoErc20Token.IntegrationTests/EthNetwork.cs @@ -0,0 +1,73 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using Nethereum.Hex.HexTypes; +using Nethereum.RPC.Accounts; +using Nethereum.Util; +using Nethereum.Web3; +using Nethereum.Web3.Accounts; + +namespace AdvancedAlgos.AlgoErc20Token.IntegrationTests +{ + public class EthNetwork + { + public const int TRANSACTION_BASE_FEE = 21000; + + public static EthNetwork Instance { get; private set; } + + private SemaphoreSlim _refillSync = new SemaphoreSlim(1, 1); + + public string Url { get; private set; } + public string PrefundedAddress { get; private set; } + public string PrefundedPrivateKey { get; private set; } + public BigInteger GasPrice { get; private set; } + public BigInteger TxBaseFeeWei => GasPrice * TRANSACTION_BASE_FEE; + + public static void UseGanacheTestNet() + { + Instance = new EthNetwork + { + Url = "http://127.0.0.1:8545", + PrefundedAddress = "0x06bB4674A4b08d07186b721378C7e241eD85443b", + PrefundedPrivateKey = "0936af475d2701538aad321f87e0a51f2b297634653393e8cab7290a674009a5", + GasPrice = 2000000000 + }; + } + + public static void UseGethTestNet() + { + Instance = new EthNetwork + { + Url = "http://10.4.0.4:8545", + PrefundedAddress = "0x88474Ec3cfddfC943d3E42C94763D43f181A5a83", + PrefundedPrivateKey = "0x69970bd6c1b6cfbffea16656c27ff7b330b751ed5e46c1644b54a642871f4bbb", + GasPrice = 2000000000 + }; + } + + public Task RefillAsync(IAccount account) + { + return RefillAsync(account, UnitConversion.Convert.ToWei(1)); + } + + public async Task RefillAsync(IAccount account, BigInteger weis) + { + await _refillSync.WaitAsync(); + try + { + var prefundedAccount = new Account(PrefundedPrivateKey); + var web3 = new Web3(prefundedAccount, Url); + var recepit = await web3.TransactionManager.TransactionReceiptService.SendRequestAndWaitForReceiptAsync(() => + web3.TransactionManager.SendTransactionAsync(prefundedAccount.Address, account.Address, new HexBigInteger(weis)) + ); + } + finally + { + _refillSync.Release(); + } + } + } +} From 6aa8b9268e8ed63f328435efff9168b4908ff30d Mon Sep 17 00:00:00 2001 From: pmmax Date: Thu, 8 Nov 2018 19:57:56 -0300 Subject: [PATCH 04/17] Added openzeppelin-solidity reference and license --- .../OPENZEPPELIN-SOLIDITY-LICENSE | 22 +++++++++++++++++++ .../src/openzeppelin-solidity/README.md | 5 +++++ 2 files changed, 27 insertions(+) create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/OPENZEPPELIN-SOLIDITY-LICENSE create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/README.md diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/OPENZEPPELIN-SOLIDITY-LICENSE b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/OPENZEPPELIN-SOLIDITY-LICENSE new file mode 100644 index 000000000..98dd89cdc --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/OPENZEPPELIN-SOLIDITY-LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2016 Smart Contract Solutions, Inc. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/README.md b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/README.md new file mode 100644 index 000000000..040789b93 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/README.md @@ -0,0 +1,5 @@ +# ERC20 implementation + +The code used for the token smart-contract implementation is based on openzeppelin-solidity + +* Source: https://github.com/OpenZeppelin/openzeppelin-solidity From 2f3c012fbc9928956e5fcdca5310aadf1dcc8e5c Mon Sep 17 00:00:00 2001 From: pmmax Date: Mon, 12 Nov 2018 17:43:47 -0300 Subject: [PATCH 05/17] Added ganache-cli scripts --- labs/tools/ganache-cli-setup/README.md | 11 +++++++++++ .../ganache-cli-setup/install-local-ganache-cli.cmd | 2 ++ .../ganache-cli-setup/install-local-ganache-cli.sh | 2 ++ .../tools/ganache-cli-setup/run-local-ganache-cli.cmd | 1 + labs/tools/ganache-cli-setup/run-local-ganache-cli.sh | 2 ++ 5 files changed, 18 insertions(+) create mode 100644 labs/tools/ganache-cli-setup/README.md create mode 100644 labs/tools/ganache-cli-setup/install-local-ganache-cli.cmd create mode 100644 labs/tools/ganache-cli-setup/install-local-ganache-cli.sh create mode 100644 labs/tools/ganache-cli-setup/run-local-ganache-cli.cmd create mode 100644 labs/tools/ganache-cli-setup/run-local-ganache-cli.sh diff --git a/labs/tools/ganache-cli-setup/README.md b/labs/tools/ganache-cli-setup/README.md new file mode 100644 index 000000000..e2f11c0cc --- /dev/null +++ b/labs/tools/ganache-cli-setup/README.md @@ -0,0 +1,11 @@ +Ganache accounts: + +mnemonic: act analyst ability congress enter point unlock universe winner achieve refuse border + +Account #0 +Address: 0x06bB4674A4b08d07186b721378C7e241eD85443b +Private Key: 0x0936af475d2701538aad321f87e0a51f2b297634653393e8cab7290a674009a5 + +Account #1 +Address: 0x6d197071d41C77A2779B33304B8cC6Ea41f69918 +Private Key: 0x5e697f9196588307b9e818fafca38c33f6592c005bfd190820b1d2cc2d608882 \ No newline at end of file diff --git a/labs/tools/ganache-cli-setup/install-local-ganache-cli.cmd b/labs/tools/ganache-cli-setup/install-local-ganache-cli.cmd new file mode 100644 index 000000000..94a9e8a1c --- /dev/null +++ b/labs/tools/ganache-cli-setup/install-local-ganache-cli.cmd @@ -0,0 +1,2 @@ +npm install -g ganache-cli + diff --git a/labs/tools/ganache-cli-setup/install-local-ganache-cli.sh b/labs/tools/ganache-cli-setup/install-local-ganache-cli.sh new file mode 100644 index 000000000..363a3abfc --- /dev/null +++ b/labs/tools/ganache-cli-setup/install-local-ganache-cli.sh @@ -0,0 +1,2 @@ +#!/bin/bash +npm install -g ganache-cli diff --git a/labs/tools/ganache-cli-setup/run-local-ganache-cli.cmd b/labs/tools/ganache-cli-setup/run-local-ganache-cli.cmd new file mode 100644 index 000000000..9f4bd884c --- /dev/null +++ b/labs/tools/ganache-cli-setup/run-local-ganache-cli.cmd @@ -0,0 +1 @@ +ganache-cli "--mnemonic" "act analyst ability congress enter point unlock universe winner achieve refuse border" "--accounts" "2" "--defaultBalanceEther" "10000000" "--networkId" "777" "--db" "C:/Temp" "--deterministic" "--noVMErrorsOnRPCResponse" \ No newline at end of file diff --git a/labs/tools/ganache-cli-setup/run-local-ganache-cli.sh b/labs/tools/ganache-cli-setup/run-local-ganache-cli.sh new file mode 100644 index 000000000..c6dde2f78 --- /dev/null +++ b/labs/tools/ganache-cli-setup/run-local-ganache-cli.sh @@ -0,0 +1,2 @@ +#!/bin/bash +ganache-cli "--mnemonic" "act analyst ability congress enter point unlock universe winner achieve refuse border" "--accounts" "2" "--defaultBalanceEther" "10000000" "--networkId" "777" "--db" "$PWD/ganache-db" "--deterministic" "--noVMErrorsOnRPCResponse" From a3531d9d1fe4f270714b4464fe73e906eab39abf Mon Sep 17 00:00:00 2001 From: pmmax Date: Sun, 2 Dec 2018 19:24:06 -0300 Subject: [PATCH 06/17] Refactored repo structure, created AlgoPool and AlgoMiner contracts, added integration tests, created a playground for the contracts --- labs/AdvancedAlgos.AlgoToken.sln | 75 + .../AdvancedAlgos.AlgoErc20Token.sln | 37 - .../SmartContracts/src/bin/AlgoTokenV1.json | 52 - .../OPENZEPPELIN-SOLIDITY-LICENSE | 22 - .../src/openzeppelin-solidity/README.md | 5 - .../contracts/.npmignore | 2 - .../contracts/ARCHITECTURE.md | 27 - .../contracts/access/Roles.sol | 44 - .../contracts/access/roles/CapperRole.sol | 43 - .../contracts/access/roles/MinterRole.sol | 43 - .../contracts/access/roles/PauserRole.sol | 43 - .../contracts/access/roles/SignerRole.sol | 43 - .../contracts/crowdsale/Crowdsale.sol | 241 - .../distribution/FinalizableCrowdsale.sol | 50 - .../distribution/PostDeliveryCrowdsale.sol | 50 - .../distribution/RefundableCrowdsale.sol | 91 - .../crowdsale/emission/AllowanceCrowdsale.sol | 59 - .../crowdsale/emission/MintedCrowdsale.sol | 29 - .../price/IncreasingPriceCrowdsale.sol | 81 - .../crowdsale/validation/CappedCrowdsale.sol | 55 - .../IndividuallyCappedCrowdsale.sol | 81 - .../crowdsale/validation/TimedCrowdsale.sol | 85 - .../contracts/cryptography/ECDSA.sol | 71 - .../contracts/cryptography/MerkleProof.sol | 42 - .../contracts/drafts/.gitkeep | 0 .../contracts/drafts/Counter.sol | 28 - .../drafts/ERC1046/TokenMetadata.sol | 27 - .../contracts/drafts/ERC20Migrator.sol | 100 - .../contracts/drafts/SignatureBouncer.sol | 146 - .../contracts/drafts/TokenVesting.sol | 175 - .../contracts/examples/SampleCrowdsale.sol | 57 - .../contracts/examples/SimpleToken.sol | 26 - .../contracts/introspection/ERC165.sol | 53 - .../contracts/introspection/ERC165Checker.sol | 146 - .../contracts/introspection/IERC165.sol | 19 - .../contracts/lifecycle/Pausable.sol | 57 - .../contracts/math/Math.sol | 31 - .../contracts/math/SafeMath.sol | 65 - .../contracts/mocks/AddressImpl.sol | 14 - .../mocks/AllowanceCrowdsaleImpl.sol | 20 - .../contracts/mocks/ArraysImpl.sol | 18 - .../contracts/mocks/CappedCrowdsaleImpl.sol | 20 - .../contracts/mocks/CapperRoleMock.sol | 17 - .../contracts/mocks/ConditionalEscrowMock.sol | 16 - .../contracts/mocks/CounterImpl.sol | 20 - .../contracts/mocks/CrowdsaleMock.sol | 9 - .../contracts/mocks/DetailedERC20Mock.sol | 15 - .../contracts/mocks/ECDSAMock.sol | 23 - .../ERC165/ERC165InterfacesSupported.sol | 66 - .../mocks/ERC165/ERC165NotSupported.sol | 5 - .../contracts/mocks/ERC165CheckerMock.sol | 31 - .../contracts/mocks/ERC165Mock.sol | 11 - .../contracts/mocks/ERC20BurnableMock.sol | 11 - .../contracts/mocks/ERC20MintableMock.sol | 7 - .../contracts/mocks/ERC20Mock.sol | 24 - .../contracts/mocks/ERC20PausableMock.sol | 13 - .../contracts/mocks/ERC20WithMetadataMock.sol | 11 - .../contracts/mocks/ERC721FullMock.sol | 32 - .../mocks/ERC721MintableBurnableImpl.sol | 20 - .../contracts/mocks/ERC721Mock.sol | 17 - .../contracts/mocks/ERC721PausableMock.sol | 22 - .../contracts/mocks/ERC721ReceiverMock.sol | 41 - .../contracts/mocks/EventEmitter.sol | 62 - .../mocks/FinalizableCrowdsaleImpl.sol | 21 - .../mocks/IncreasingPriceCrowdsaleImpl.sol | 23 - .../mocks/IndividuallyCappedCrowdsaleImpl.sol | 19 - .../contracts/mocks/MathMock.sol | 17 - .../contracts/mocks/MerkleProofWrapper.sol | 18 - .../contracts/mocks/MintedCrowdsaleImpl.sol | 18 - .../contracts/mocks/MinterRoleMock.sol | 17 - .../contracts/mocks/OwnableMock.sol | 6 - .../contracts/mocks/PausableMock.sol | 24 - .../contracts/mocks/PauserRoleMock.sol | 17 - .../mocks/PostDeliveryCrowdsaleImpl.sol | 21 - .../contracts/mocks/PullPaymentMock.sol | 15 - .../contracts/mocks/ReentrancyAttack.sol | 10 - .../contracts/mocks/ReentrancyMock.sol | 44 - .../mocks/RefundableCrowdsaleImpl.sol | 23 - .../contracts/mocks/RolesMock.sol | 21 - .../contracts/mocks/SafeERC20Helper.sol | 112 - .../contracts/mocks/SafeMathMock.sol | 26 - .../contracts/mocks/SecondaryMock.sol | 8 - .../contracts/mocks/SignatureBouncerMock.sol | 73 - .../contracts/mocks/SignerRoleMock.sol | 17 - .../contracts/mocks/TimedCrowdsaleImpl.sol | 21 - .../contracts/ownership/Ownable.sol | 75 - .../contracts/ownership/Secondary.sol | 46 - .../contracts/payment/PaymentSplitter.sol | 116 - .../contracts/payment/PullPayment.sol | 41 - .../payment/escrow/ConditionalEscrow.sol | 22 - .../contracts/payment/escrow/Escrow.sol | 54 - .../contracts/payment/escrow/RefundEscrow.sol | 91 - .../contracts/token/ERC20/ERC20.sol | 211 - .../contracts/token/ERC20/ERC20Burnable.sol | 27 - .../contracts/token/ERC20/ERC20Capped.sol | 31 - .../contracts/token/ERC20/ERC20Detailed.sol | 42 - .../contracts/token/ERC20/ERC20Mintable.sol | 28 - .../contracts/token/ERC20/ERC20Pausable.sol | 67 - .../contracts/token/ERC20/IERC20.sol | 34 - .../contracts/token/ERC20/SafeERC20.sol | 72 - .../contracts/token/ERC20/TokenTimelock.sol | 69 - .../contracts/token/ERC721/ERC721.sol | 330 - .../contracts/token/ERC721/ERC721Burnable.sol | 12 - .../token/ERC721/ERC721Enumerable.sol | 150 - .../contracts/token/ERC721/ERC721Full.sol | 18 - .../contracts/token/ERC721/ERC721Holder.sol | 17 - .../contracts/token/ERC721/ERC721Metadata.sol | 87 - .../token/ERC721/ERC721MetadataMintable.sol | 32 - .../contracts/token/ERC721/ERC721Mintable.sol | 28 - .../contracts/token/ERC721/ERC721Pausable.sol | 41 - .../contracts/token/ERC721/IERC721.sol | 49 - .../token/ERC721/IERC721Enumerable.sol | 20 - .../contracts/token/ERC721/IERC721Full.sol | 12 - .../token/ERC721/IERC721Metadata.sol | 13 - .../token/ERC721/IERC721Receiver.sol | 31 - .../contracts/utils/Address.sol | 28 - .../contracts/utils/Arrays.sol | 56 - .../contracts/utils/ReentrancyGuard.sol | 34 - ...ncedAlgos.AlgoToken.AlgoErc20Token.csproj} | 5 +- .../AlgoIntegralConverterExtensions.cs | 12 +- .../AlgoTokenV1.cs | 8 +- .../Erc20Token.cs | 25 +- .../SmartContracts/src/.vscode/settings.json | 9 + .../SmartContracts/src/AlgoTokenV1.sol | 6 +- .../src/bin/AlgoMiner-sol-output.json | 13793 +++++++++++++ .../SmartContracts/src/bin/AlgoMiner.abi | 1 + .../SmartContracts/src/bin/AlgoMiner.bin | 1 + .../SmartContracts/src/bin/AlgoMiner.json | 303 + .../src/bin/AlgoPool-sol-output.json | 10176 ++++++++++ .../SmartContracts/src/bin/AlgoPool.abi | 1 + .../SmartContracts/src/bin/AlgoPool.bin | 1 + .../SmartContracts/src/bin/AlgoPool.json | 207 + .../src/bin/AlgoTokenV1-sol-output.json | 16419 ++++++++++++++++ .../SmartContracts/src/bin/AlgoTokenV1.abi | 0 .../SmartContracts/src/bin/AlgoTokenV1.bin | 2 +- .../SmartContracts/src/bin/AlgoTokenV1.json | 455 + .../SmartContracts/src/package-lock.json | 495 + .../SmartContracts/src/package.json | 15 + .../AlgoTokenV1Tests.cs | 74 - ...en.AlgoErc20Token.IntegrationTests.csproj} | 6 +- .../AlgoTokenV1Tests.cs | 73 + ...gos.AlgoToken.AlgoTokenDistribution.csproj | 24 + .../AlgoMiner.cs | 97 + .../AlgoPool.cs | 35 + .../SmartContracts/src/.vscode/settings.json | 9 + .../SmartContracts/src/AlgoCoreTeamRole.sol | 38 + .../SmartContracts/src/AlgoMiner.sol | 147 + .../SmartContracts/src/AlgoPool.sol | 59 + .../SmartContracts/src/AlgoSupervisorRole.sol | 38 + .../SmartContracts/src/AlgoSystemRole.sol | 38 + .../SmartContracts/src/IAlgoMiner.sol | 6 + .../src/bin/AlgoMiner-sol-output.json | 14983 ++++++++++++++ .../SmartContracts/src/bin/AlgoMiner.abi | 1 + .../SmartContracts/src/bin/AlgoMiner.bin | 1 + .../SmartContracts/src/bin/AlgoMiner.json | 351 + .../src/bin/AlgoPool-sol-output.json | 10176 ++++++++++ .../SmartContracts/src/bin/AlgoPool.abi | 1 + .../SmartContracts/src/bin/AlgoPool.bin | 1 + .../SmartContracts/src/bin/AlgoPool.json | 207 + .../SmartContracts/src/package-lock.json | 495 + .../SmartContracts/src/package.json | 15 + ...oTokenDistribution.IntegrationTests.csproj | 23 + .../AlgoMinerTests.cs | 108 + .../AlgoPoolTests.cs | 70 + .../build/build-osx-x64.cmd | 1 + .../build/build-win-x64.cmd | 1 + labs/algo-token-playground/script.md | 19 + ...Algos.AlgoToken.AlgoTokenPlayground.csproj | 20 + .../AccountManagement/AccountCounter.cs | 18 + .../AccountManagement/ImportAccountCommand.cs | 38 + .../AccountManagement/ListAccountsCommand.cs | 21 + .../AccountManagement/NewAccountCommand.cs | 37 + .../AccountManagement/SetAccountCommand.cs | 22 + .../AlgoMinerActivateMinerCommand.cs | 23 + .../AlgoMinerAddCoreTeamCommand.cs | 25 + .../AlgoMinerAddSupervisorCommand.cs | 25 + .../AlgoMinerAddSystemCommand.cs | 25 + .../AlgoMinerDeactivateMinerCommand.cs | 23 + .../AlgoMinerDeployCommand.cs | 32 + .../AlgoMinerMigrateMinerCommand.cs | 25 + .../AlgoMinerContract/AlgoMinerMineCommand.cs | 23 + .../AlgoMinerPauseMiningCommand.cs | 23 + .../AlgoMinerResetMinerCommand.cs | 25 + .../AlgoMinerResumeMiningCommand.cs | 23 + .../AlgoMinerStartMiningCommand.cs | 23 + .../AlgoMinerStopAndRemoveOwnershipCommand.cs | 23 + .../AlgoMinerStopMiningCommand.cs | 23 + .../AlgoPoolContract/AlgoPoolDeployCommand.cs | 26 + .../AlgoPoolTrasferToMinerCommand.cs | 25 + .../AlgoTokenBalanceOfCommand.cs | 24 + .../AlgoTokenDeployCommand.cs | 23 + .../AlgoTokenPauseCommand.cs | 22 + .../AlgoTokenTransferCommand.cs | 25 + .../AlgoTokenUnpauseCommand.cs | 22 + .../ContractManagement/ContractCounter.cs | 18 + .../DeployContractCommand.cs | 52 + .../EthInvokeCallFunctionCommand.cs | 36 + .../EthInvokeTransactionalFunctionCommand.cs | 35 + .../ListContractsCommand.cs | 21 + .../EthNetwork/ListEnvironmentCommand.cs | 22 + .../Commands/EthNetwork/SetGasPriceCommand.cs | 23 + .../Commands/EthNetwork/SetNetworkCommand.cs | 27 + .../EthTransactions/EthGetBalanceCommand.cs | 37 + .../EthTransactionalCommand.cs | 29 + .../EthTransactions/EthTransferCommand.cs | 29 + .../Commands/ICommand.cs | 13 + .../Parsers/AccountManagementParsers.cs | 41 + .../Parsers/AlgoMinerParsers.cs | 117 + .../Parsers/AlgoPoolParsers.cs | 33 + .../Parsers/AlgoTokenParsers.cs | 51 + .../Parsers/CommonParsers.cs | 77 + .../Parsers/ContractManagementParsers.cs | 18 + .../Parsers/EthNetworkParsers.cs | 32 + .../Parsers/EthTransactionsParsers.cs | 30 + .../Parsers/EthUnitParsers.cs | 45 + .../Parsers/ParserExtensions.cs | 14 + .../Program.cs | 13 + .../REPL.cs | 97 + .../Runtime/EthAccountDescriptor.cs | 19 + .../Runtime/EthContractDescriptor.cs | 19 + .../Runtime/RuntimeContext.cs | 83 + .../Runtime/StaticGasPriceProvider.cs | 22 + ....Framework.Ethereum.IntegrationTest.csproj | 16 + .../EthNetwork.cs | 13 +- .../StaticGasPriceProvider.cs | 19 + ...Algos.AlgoToken.Framework.Ethereum.csproj} | 0 .../EthAccountFactory.cs | 2 +- .../EthAddressParser.cs | 27 + .../TransactionRejectedException.cs | 4 +- .../TransactionReceiptExtensions.cs | 4 +- .../IGasPriceProvider.cs | 12 + .../Reflection/AssemblyExtensions.cs | 2 +- .../SmartContract.cs | 66 +- 233 files changed, 70856 insertions(+), 5458 deletions(-) create mode 100644 labs/AdvancedAlgos.AlgoToken.sln delete mode 100644 labs/algo-erc20-token/AdvancedAlgos.AlgoErc20Token.sln delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.json delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/OPENZEPPELIN-SOLIDITY-LICENSE delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/README.md delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/.npmignore delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/ARCHITECTURE.md delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/Roles.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/CapperRole.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/MinterRole.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/PauserRole.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/SignerRole.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/distribution/FinalizableCrowdsale.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/distribution/PostDeliveryCrowdsale.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/distribution/RefundableCrowdsale.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/emission/AllowanceCrowdsale.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/emission/MintedCrowdsale.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/price/IncreasingPriceCrowdsale.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/validation/CappedCrowdsale.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/validation/IndividuallyCappedCrowdsale.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/validation/TimedCrowdsale.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/cryptography/ECDSA.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/cryptography/MerkleProof.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/.gitkeep delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/Counter.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/ERC1046/TokenMetadata.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/ERC20Migrator.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/SignatureBouncer.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/TokenVesting.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/examples/SampleCrowdsale.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/examples/SimpleToken.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/introspection/ERC165.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/introspection/ERC165Checker.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/introspection/IERC165.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/lifecycle/Pausable.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/math/Math.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/math/SafeMath.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/AddressImpl.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/AllowanceCrowdsaleImpl.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ArraysImpl.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CappedCrowdsaleImpl.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CapperRoleMock.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ConditionalEscrowMock.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CounterImpl.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CrowdsaleMock.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/DetailedERC20Mock.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ECDSAMock.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165/ERC165InterfacesSupported.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165/ERC165NotSupported.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165CheckerMock.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165Mock.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20BurnableMock.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20MintableMock.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20Mock.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20PausableMock.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20WithMetadataMock.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721FullMock.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721MintableBurnableImpl.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721Mock.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721PausableMock.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721ReceiverMock.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/EventEmitter.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/FinalizableCrowdsaleImpl.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/IncreasingPriceCrowdsaleImpl.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/IndividuallyCappedCrowdsaleImpl.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MathMock.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MerkleProofWrapper.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MintedCrowdsaleImpl.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MinterRoleMock.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/OwnableMock.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PausableMock.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PauserRoleMock.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PostDeliveryCrowdsaleImpl.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PullPaymentMock.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ReentrancyAttack.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ReentrancyMock.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/RefundableCrowdsaleImpl.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/RolesMock.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SafeERC20Helper.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SafeMathMock.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SecondaryMock.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SignatureBouncerMock.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SignerRoleMock.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/TimedCrowdsaleImpl.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/ownership/Ownable.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/ownership/Secondary.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/PaymentSplitter.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/PullPayment.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/escrow/ConditionalEscrow.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/escrow/Escrow.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/escrow/RefundEscrow.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Capped.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/TokenTimelock.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Burnable.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Enumerable.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Full.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Holder.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Metadata.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721MetadataMintable.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Mintable.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Pausable.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Enumerable.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Full.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Metadata.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/utils/Address.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/utils/Arrays.sol delete mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/utils/ReentrancyGuard.sol rename labs/algo-erc20-token/src/{AdvancedAlgos.AlgoErc20Token/AdvancedAlgos.AlgoErc20Token.csproj => AdvancedAlgos.AlgoToken.AlgoErc20Token/AdvancedAlgos.AlgoToken.AlgoErc20Token.csproj} (75%) rename labs/algo-erc20-token/src/{AdvancedAlgos.AlgoErc20Token => AdvancedAlgos.AlgoToken.AlgoErc20Token}/AlgoIntegralConverterExtensions.cs (54%) rename labs/algo-erc20-token/src/{AdvancedAlgos.AlgoErc20Token => AdvancedAlgos.AlgoToken.AlgoErc20Token}/AlgoTokenV1.cs (55%) rename labs/algo-erc20-token/src/{AdvancedAlgos.AlgoErc20Token => AdvancedAlgos.AlgoToken.AlgoErc20Token}/Erc20Token.cs (51%) create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/.vscode/settings.json rename labs/algo-erc20-token/src/{AdvancedAlgos.AlgoErc20Token => AdvancedAlgos.AlgoToken.AlgoErc20Token}/SmartContracts/src/AlgoTokenV1.sol (63%) create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoMiner-sol-output.json create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoMiner.abi create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoMiner.bin create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoMiner.json create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoPool-sol-output.json create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoPool.abi create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoPool.bin create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoPool.json create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1-sol-output.json rename labs/algo-erc20-token/src/{AdvancedAlgos.AlgoErc20Token => AdvancedAlgos.AlgoToken.AlgoErc20Token}/SmartContracts/src/bin/AlgoTokenV1.abi (100%) rename labs/algo-erc20-token/src/{AdvancedAlgos.AlgoErc20Token => AdvancedAlgos.AlgoToken.AlgoErc20Token}/SmartContracts/src/bin/AlgoTokenV1.bin (98%) create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.json create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/package-lock.json create mode 100644 labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/package.json delete mode 100644 labs/algo-erc20-token/test/AdvancedAlgos.AlgoErc20Token.IntegrationTests/AlgoTokenV1Tests.cs rename labs/algo-erc20-token/test/{AdvancedAlgos.AlgoErc20Token.IntegrationTests/AdvancedAlgos.AlgoErc20Token.IntegrationTests.csproj => AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests/AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests.csproj} (54%) create mode 100644 labs/algo-erc20-token/test/AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests/AlgoTokenV1Tests.cs create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.csproj create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoMiner.cs create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoPool.cs create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/.vscode/settings.json create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.abi create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.abi create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/package-lock.json create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/package.json create mode 100644 labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests.csproj create mode 100644 labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoMinerTests.cs create mode 100644 labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoPoolTests.cs create mode 100644 labs/algo-token-playground/build/build-osx-x64.cmd create mode 100644 labs/algo-token-playground/build/build-win-x64.cmd create mode 100644 labs/algo-token-playground/script.md create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AccountManagement/AccountCounter.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AccountManagement/ImportAccountCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AccountManagement/ListAccountsCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AccountManagement/NewAccountCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AccountManagement/SetAccountCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerActivateMinerCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerAddCoreTeamCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerAddSupervisorCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerAddSystemCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerDeactivateMinerCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerDeployCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerMigrateMinerCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerMineCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerPauseMiningCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerResetMinerCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerResumeMiningCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerStartMiningCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerStopAndRemoveOwnershipCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerStopMiningCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoPoolContract/AlgoPoolDeployCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoPoolContract/AlgoPoolTrasferToMinerCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoTokenContract/AlgoTokenBalanceOfCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoTokenContract/AlgoTokenDeployCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoTokenContract/AlgoTokenPauseCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoTokenContract/AlgoTokenTransferCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoTokenContract/AlgoTokenUnpauseCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/ContractManagement/ContractCounter.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/ContractManagement/DeployContractCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/ContractManagement/EthInvokeCallFunctionCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/ContractManagement/EthInvokeTransactionalFunctionCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/ContractManagement/ListContractsCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/EthNetwork/ListEnvironmentCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/EthNetwork/SetGasPriceCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/EthNetwork/SetNetworkCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/EthTransactions/EthGetBalanceCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/EthTransactions/EthTransactionalCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/EthTransactions/EthTransferCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/ICommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AccountManagementParsers.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoMinerParsers.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoPoolParsers.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoTokenParsers.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/CommonParsers.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/ContractManagementParsers.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/EthNetworkParsers.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/EthTransactionsParsers.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/EthUnitParsers.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/ParserExtensions.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Program.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/REPL.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Runtime/EthAccountDescriptor.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Runtime/EthContractDescriptor.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Runtime/RuntimeContext.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Runtime/StaticGasPriceProvider.cs create mode 100644 labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest.csproj rename labs/{algo-erc20-token/test/AdvancedAlgos.AlgoErc20Token.IntegrationTests => framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest}/EthNetwork.cs (81%) create mode 100644 labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest/StaticGasPriceProvider.cs rename labs/{algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/AdvancedAlgos.AlgoErc20Token.EthClientExtensions.csproj => framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/AdvancedAlgos.AlgoToken.Framework.Ethereum.csproj} (100%) rename labs/{algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions => framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum}/EthAccountFactory.cs (88%) create mode 100644 labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/EthAddressParser.cs rename labs/{algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions => framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum}/Exceptions/TransactionRejectedException.cs (80%) rename labs/{algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions => framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum}/Extensions/TransactionReceiptExtensions.cs (74%) create mode 100644 labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/IGasPriceProvider.cs rename labs/{algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions => framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum}/Reflection/AssemblyExtensions.cs (89%) rename labs/{algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions => framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum}/SmartContract.cs (55%) diff --git a/labs/AdvancedAlgos.AlgoToken.sln b/labs/AdvancedAlgos.AlgoToken.sln new file mode 100644 index 000000000..4ea6266e7 --- /dev/null +++ b/labs/AdvancedAlgos.AlgoToken.sln @@ -0,0 +1,75 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28010.2048 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdvancedAlgos.AlgoToken.AlgoErc20Token", "algo-erc20-token\src\AdvancedAlgos.AlgoToken.AlgoErc20Token\AdvancedAlgos.AlgoToken.AlgoErc20Token.csproj", "{96BC465D-507E-43BC-A71E-1B4F7799AB19}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests", "algo-erc20-token\test\AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests\AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests.csproj", "{B569A2AD-A0E7-4623-AB3A-9BB49938CBE6}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "algo-erc20-token", "algo-erc20-token", "{921A277C-0B10-4186-A814-786F903B4E2C}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "algo-token-distribution", "algo-token-distribution", "{4EDC9FAE-176A-4995-B977-F6D2B735F616}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "framework", "framework", "{9A083680-1F9C-4A8C-8FB2-A623DD333AEE}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdvancedAlgos.AlgoToken.AlgoTokenDistribution", "algo-token-distribution\src\AdvancedAlgos.AlgoToken.AlgoTokenDistribution\AdvancedAlgos.AlgoToken.AlgoTokenDistribution.csproj", "{6D1C63E9-A2F1-4084-B8E4-499B41341023}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests", "algo-token-distribution\test\AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests\AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests.csproj", "{CF2E35E6-EFC5-445F-AB17-BEC7E3039C41}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest", "framework\src\AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest\AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest.csproj", "{127474F7-81E8-4153-AEE0-A2049D75F77D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdvancedAlgos.AlgoToken.Framework.Ethereum", "framework\src\AdvancedAlgos.AlgoToken.Framework.Ethereum\AdvancedAlgos.AlgoToken.Framework.Ethereum.csproj", "{B05DC461-E82E-430B-A66D-9C0C9C9F9C9E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdvancedAlgos.AlgoToken.AlgoTokenPlayground", "algo-token-playground\src\AdvancedAlgos.AlgoToken.AlgoTokenPlayground\AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj", "{42569CB0-DA27-4BAE-A657-3617D1644AD5}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {96BC465D-507E-43BC-A71E-1B4F7799AB19}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {96BC465D-507E-43BC-A71E-1B4F7799AB19}.Debug|Any CPU.Build.0 = Debug|Any CPU + {96BC465D-507E-43BC-A71E-1B4F7799AB19}.Release|Any CPU.ActiveCfg = Release|Any CPU + {96BC465D-507E-43BC-A71E-1B4F7799AB19}.Release|Any CPU.Build.0 = Release|Any CPU + {B569A2AD-A0E7-4623-AB3A-9BB49938CBE6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B569A2AD-A0E7-4623-AB3A-9BB49938CBE6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B569A2AD-A0E7-4623-AB3A-9BB49938CBE6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B569A2AD-A0E7-4623-AB3A-9BB49938CBE6}.Release|Any CPU.Build.0 = Release|Any CPU + {6D1C63E9-A2F1-4084-B8E4-499B41341023}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6D1C63E9-A2F1-4084-B8E4-499B41341023}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6D1C63E9-A2F1-4084-B8E4-499B41341023}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6D1C63E9-A2F1-4084-B8E4-499B41341023}.Release|Any CPU.Build.0 = Release|Any CPU + {CF2E35E6-EFC5-445F-AB17-BEC7E3039C41}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CF2E35E6-EFC5-445F-AB17-BEC7E3039C41}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CF2E35E6-EFC5-445F-AB17-BEC7E3039C41}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CF2E35E6-EFC5-445F-AB17-BEC7E3039C41}.Release|Any CPU.Build.0 = Release|Any CPU + {127474F7-81E8-4153-AEE0-A2049D75F77D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {127474F7-81E8-4153-AEE0-A2049D75F77D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {127474F7-81E8-4153-AEE0-A2049D75F77D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {127474F7-81E8-4153-AEE0-A2049D75F77D}.Release|Any CPU.Build.0 = Release|Any CPU + {B05DC461-E82E-430B-A66D-9C0C9C9F9C9E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B05DC461-E82E-430B-A66D-9C0C9C9F9C9E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B05DC461-E82E-430B-A66D-9C0C9C9F9C9E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B05DC461-E82E-430B-A66D-9C0C9C9F9C9E}.Release|Any CPU.Build.0 = Release|Any CPU + {42569CB0-DA27-4BAE-A657-3617D1644AD5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {42569CB0-DA27-4BAE-A657-3617D1644AD5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {42569CB0-DA27-4BAE-A657-3617D1644AD5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {42569CB0-DA27-4BAE-A657-3617D1644AD5}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {96BC465D-507E-43BC-A71E-1B4F7799AB19} = {921A277C-0B10-4186-A814-786F903B4E2C} + {B569A2AD-A0E7-4623-AB3A-9BB49938CBE6} = {921A277C-0B10-4186-A814-786F903B4E2C} + {6D1C63E9-A2F1-4084-B8E4-499B41341023} = {4EDC9FAE-176A-4995-B977-F6D2B735F616} + {CF2E35E6-EFC5-445F-AB17-BEC7E3039C41} = {4EDC9FAE-176A-4995-B977-F6D2B735F616} + {127474F7-81E8-4153-AEE0-A2049D75F77D} = {9A083680-1F9C-4A8C-8FB2-A623DD333AEE} + {B05DC461-E82E-430B-A66D-9C0C9C9F9C9E} = {9A083680-1F9C-4A8C-8FB2-A623DD333AEE} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {79FFEB06-291F-417C-9AC3-2AA0D31CC7D4} + EndGlobalSection +EndGlobal diff --git a/labs/algo-erc20-token/AdvancedAlgos.AlgoErc20Token.sln b/labs/algo-erc20-token/AdvancedAlgos.AlgoErc20Token.sln deleted file mode 100644 index d496c206e..000000000 --- a/labs/algo-erc20-token/AdvancedAlgos.AlgoErc20Token.sln +++ /dev/null @@ -1,37 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.28010.2048 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdvancedAlgos.AlgoErc20Token", "src\AdvancedAlgos.AlgoErc20Token\AdvancedAlgos.AlgoErc20Token.csproj", "{6916F713-4B7F-4B20-9205-BAEF417A0316}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdvancedAlgos.AlgoErc20Token.IntegrationTests", "test\AdvancedAlgos.AlgoErc20Token.IntegrationTests\AdvancedAlgos.AlgoErc20Token.IntegrationTests.csproj", "{4587034D-7844-4A36-9F49-FBA9702382E6}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdvancedAlgos.AlgoErc20Token.EthClientExtensions", "src\AdvancedAlgos.AlgoErc20Token.EthClientExtensions\AdvancedAlgos.AlgoErc20Token.EthClientExtensions.csproj", "{A392DD77-CB11-464F-A0D6-77F4AC5BC79F}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {6916F713-4B7F-4B20-9205-BAEF417A0316}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6916F713-4B7F-4B20-9205-BAEF417A0316}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6916F713-4B7F-4B20-9205-BAEF417A0316}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6916F713-4B7F-4B20-9205-BAEF417A0316}.Release|Any CPU.Build.0 = Release|Any CPU - {4587034D-7844-4A36-9F49-FBA9702382E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4587034D-7844-4A36-9F49-FBA9702382E6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4587034D-7844-4A36-9F49-FBA9702382E6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4587034D-7844-4A36-9F49-FBA9702382E6}.Release|Any CPU.Build.0 = Release|Any CPU - {A392DD77-CB11-464F-A0D6-77F4AC5BC79F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A392DD77-CB11-464F-A0D6-77F4AC5BC79F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A392DD77-CB11-464F-A0D6-77F4AC5BC79F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A392DD77-CB11-464F-A0D6-77F4AC5BC79F}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {7273BF71-A9AA-472B-84A8-7658BB88D497} - EndGlobalSection -EndGlobal diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.json b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.json deleted file mode 100644 index e0b102ac5..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "abi": "[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"INITIAL_SUPPLY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPauser\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renouncePauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addPauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}]", - "bytecode": "60806040523480156200001157600080fd5b50604080518082018252600581527f416c676f7300000000000000000000000000000000000000000000000000000060208083019182528351808501909452600484527f414c474f00000000000000000000000000000000000000000000000000000000908401528151919291601291620000909160039190620002c1565b508151620000a6906004906020850190620002c1565b506005805460ff191660ff9290921691909117905550620000d290503364010000000062000103810204565b6007805460ff19169055620000fd336b033b2e3c9fd0803ce800000064010000000062000155810204565b62000366565b6200011e60068264010000000062000b226200021482021704565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b600160a060020a03821615156200016b57600080fd5b60025462000188908264010000000062000ac46200026f82021704565b600255600160a060020a038216600090815260208190526040902054620001be908264010000000062000ac46200026f82021704565b600160a060020a0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600160a060020a03811615156200022a57600080fd5b6200023f828264010000000062000289810204565b156200024a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000828201838110156200028257600080fd5b9392505050565b6000600160a060020a0382161515620002a157600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200030457805160ff191683800117855562000334565b8280016001018555821562000334579182015b828111156200033457825182559160200191906001019062000317565b506200034292915062000346565b5090565b6200036391905b808211156200034257600081556001016200034d565b90565b610b9c80620003766000396000f3006080604052600436106100fb5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610100578063095ea7b31461018a57806318160ddd146101c257806323b872dd146101e95780632ff2e9dc14610213578063313ce5671461022857806339509351146102535780633f4ba83a1461027757806346fbf68e1461028e5780635c975abb146102af5780636ef8d66d146102c457806370a08231146102d957806382dc1ec4146102fa5780638456cb591461031b57806395d89b4114610330578063a457c2d714610345578063a9059cbb14610369578063dd62ed3e1461038d575b600080fd5b34801561010c57600080fd5b506101156103b4565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014f578181015183820152602001610137565b50505050905090810190601f16801561017c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561019657600080fd5b506101ae600160a060020a036004351660243561044a565b604080519115158252519081900360200190f35b3480156101ce57600080fd5b506101d761046e565b60408051918252519081900360200190f35b3480156101f557600080fd5b506101ae600160a060020a0360043581169060243516604435610474565b34801561021f57600080fd5b506101d761049a565b34801561023457600080fd5b5061023d6104aa565b6040805160ff9092168252519081900360200190f35b34801561025f57600080fd5b506101ae600160a060020a03600435166024356104b3565b34801561028357600080fd5b5061028c6104d0565b005b34801561029a57600080fd5b506101ae600160a060020a0360043516610534565b3480156102bb57600080fd5b506101ae61054d565b3480156102d057600080fd5b5061028c610556565b3480156102e557600080fd5b506101d7600160a060020a0360043516610561565b34801561030657600080fd5b5061028c600160a060020a036004351661057c565b34801561032757600080fd5b5061028c61059c565b34801561033c57600080fd5b50610115610602565b34801561035157600080fd5b506101ae600160a060020a0360043516602435610663565b34801561037557600080fd5b506101ae600160a060020a0360043516602435610680565b34801561039957600080fd5b506101d7600160a060020a036004358116906024351661069d565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104405780601f1061041557610100808354040283529160200191610440565b820191906000526020600020905b81548152906001019060200180831161042357829003601f168201915b5050505050905090565b60075460009060ff161561045d57600080fd5b61046783836106c8565b9392505050565b60025490565b60075460009060ff161561048757600080fd5b610492848484610746565b949350505050565b6b033b2e3c9fd0803ce800000081565b60055460ff1690565b60075460009060ff16156104c657600080fd5b61046783836107e3565b6104d933610534565b15156104e457600080fd5b60075460ff1615156104f557600080fd5b6007805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b600061054760068363ffffffff61089316565b92915050565b60075460ff1690565b61055f336108ca565b565b600160a060020a031660009081526020819052604090205490565b61058533610534565b151561059057600080fd5b61059981610912565b50565b6105a533610534565b15156105b057600080fd5b60075460ff16156105c057600080fd5b6007805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104405780601f1061041557610100808354040283529160200191610440565b60075460009060ff161561067657600080fd5b610467838361095a565b60075460009060ff161561069357600080fd5b61046783836109a5565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b6000600160a060020a03831615156106df57600080fd5b336000818152600160209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b600160a060020a038316600090815260016020908152604080832033845290915281205482111561077657600080fd5b600160a060020a03841660009081526001602090815260408083203384529091529020546107aa908363ffffffff6109bb16565b600160a060020a03851660009081526001602090815260408083203384529091529020556107d98484846109d2565b5060019392505050565b6000600160a060020a03831615156107fa57600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461082e908363ffffffff610ac416565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b6000600160a060020a03821615156108aa57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6108db60068263ffffffff610ad616565b604051600160a060020a038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b61092360068263ffffffff610b2216565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6000600160a060020a038316151561097157600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461082e908363ffffffff6109bb16565b60006109b23384846109d2565b50600192915050565b600080838311156109cb57600080fd5b5050900390565b600160a060020a0383166000908152602081905260409020548111156109f757600080fd5b600160a060020a0382161515610a0c57600080fd5b600160a060020a038316600090815260208190526040902054610a35908263ffffffff6109bb16565b600160a060020a038085166000908152602081905260408082209390935590841681522054610a6a908263ffffffff610ac416565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282018381101561046757600080fd5b600160a060020a0381161515610aeb57600080fd5b610af58282610893565b1515610b0057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a0381161515610b3757600080fd5b610b418282610893565b15610b4b57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191660011790555600a165627a7a723058202dd18facb88fce52397143655484bd6bb04ca8578eb8c0779511f9e8d97c55f20029", - "functionHashes": { - "INITIAL_SUPPLY()": "2ff2e9dc", - "addPauser(address)": "82dc1ec4", - "allowance(address,address)": "dd62ed3e", - "approve(address,uint256)": "095ea7b3", - "balanceOf(address)": "70a08231", - "decimals()": "313ce567", - "decreaseAllowance(address,uint256)": "a457c2d7", - "increaseAllowance(address,uint256)": "39509351", - "isPauser(address)": "46fbf68e", - "name()": "06fdde03", - "pause()": "8456cb59", - "paused()": "5c975abb", - "renouncePauser()": "6ef8d66d", - "symbol()": "95d89b41", - "totalSupply()": "18160ddd", - "transfer(address,uint256)": "a9059cbb", - "transferFrom(address,address,uint256)": "23b872dd", - "unpause()": "3f4ba83a" - }, - "gasEstimates": { - "creation": [ - null, - 594400 - ], - "external": { - "INITIAL_SUPPLY()": 272, - "addPauser(address)": null, - "allowance(address,address)": 1082, - "approve(address,uint256)": 22732, - "balanceOf(address)": 851, - "decimals()": 509, - "decreaseAllowance(address,uint256)": null, - "increaseAllowance(address,uint256)": null, - "isPauser(address)": null, - "name()": null, - "pause()": null, - "paused()": 594, - "renouncePauser()": null, - "symbol()": null, - "totalSupply()": 428, - "transfer(address,uint256)": null, - "transferFrom(address,address,uint256)": null, - "unpause()": null - }, - "internal": {} - }, - "runtimeBytecode": "6080604052600436106100fb5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610100578063095ea7b31461018a57806318160ddd146101c257806323b872dd146101e95780632ff2e9dc14610213578063313ce5671461022857806339509351146102535780633f4ba83a1461027757806346fbf68e1461028e5780635c975abb146102af5780636ef8d66d146102c457806370a08231146102d957806382dc1ec4146102fa5780638456cb591461031b57806395d89b4114610330578063a457c2d714610345578063a9059cbb14610369578063dd62ed3e1461038d575b600080fd5b34801561010c57600080fd5b506101156103b4565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014f578181015183820152602001610137565b50505050905090810190601f16801561017c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561019657600080fd5b506101ae600160a060020a036004351660243561044a565b604080519115158252519081900360200190f35b3480156101ce57600080fd5b506101d761046e565b60408051918252519081900360200190f35b3480156101f557600080fd5b506101ae600160a060020a0360043581169060243516604435610474565b34801561021f57600080fd5b506101d761049a565b34801561023457600080fd5b5061023d6104aa565b6040805160ff9092168252519081900360200190f35b34801561025f57600080fd5b506101ae600160a060020a03600435166024356104b3565b34801561028357600080fd5b5061028c6104d0565b005b34801561029a57600080fd5b506101ae600160a060020a0360043516610534565b3480156102bb57600080fd5b506101ae61054d565b3480156102d057600080fd5b5061028c610556565b3480156102e557600080fd5b506101d7600160a060020a0360043516610561565b34801561030657600080fd5b5061028c600160a060020a036004351661057c565b34801561032757600080fd5b5061028c61059c565b34801561033c57600080fd5b50610115610602565b34801561035157600080fd5b506101ae600160a060020a0360043516602435610663565b34801561037557600080fd5b506101ae600160a060020a0360043516602435610680565b34801561039957600080fd5b506101d7600160a060020a036004358116906024351661069d565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104405780601f1061041557610100808354040283529160200191610440565b820191906000526020600020905b81548152906001019060200180831161042357829003601f168201915b5050505050905090565b60075460009060ff161561045d57600080fd5b61046783836106c8565b9392505050565b60025490565b60075460009060ff161561048757600080fd5b610492848484610746565b949350505050565b6b033b2e3c9fd0803ce800000081565b60055460ff1690565b60075460009060ff16156104c657600080fd5b61046783836107e3565b6104d933610534565b15156104e457600080fd5b60075460ff1615156104f557600080fd5b6007805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b600061054760068363ffffffff61089316565b92915050565b60075460ff1690565b61055f336108ca565b565b600160a060020a031660009081526020819052604090205490565b61058533610534565b151561059057600080fd5b61059981610912565b50565b6105a533610534565b15156105b057600080fd5b60075460ff16156105c057600080fd5b6007805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104405780601f1061041557610100808354040283529160200191610440565b60075460009060ff161561067657600080fd5b610467838361095a565b60075460009060ff161561069357600080fd5b61046783836109a5565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b6000600160a060020a03831615156106df57600080fd5b336000818152600160209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b600160a060020a038316600090815260016020908152604080832033845290915281205482111561077657600080fd5b600160a060020a03841660009081526001602090815260408083203384529091529020546107aa908363ffffffff6109bb16565b600160a060020a03851660009081526001602090815260408083203384529091529020556107d98484846109d2565b5060019392505050565b6000600160a060020a03831615156107fa57600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461082e908363ffffffff610ac416565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b6000600160a060020a03821615156108aa57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6108db60068263ffffffff610ad616565b604051600160a060020a038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b61092360068263ffffffff610b2216565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6000600160a060020a038316151561097157600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461082e908363ffffffff6109bb16565b60006109b23384846109d2565b50600192915050565b600080838311156109cb57600080fd5b5050900390565b600160a060020a0383166000908152602081905260409020548111156109f757600080fd5b600160a060020a0382161515610a0c57600080fd5b600160a060020a038316600090815260208190526040902054610a35908263ffffffff6109bb16565b600160a060020a038085166000908152602081905260408082209390935590841681522054610a6a908263ffffffff610ac416565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282018381101561046757600080fd5b600160a060020a0381161515610aeb57600080fd5b610af58282610893565b1515610b0057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a0381161515610b3757600080fd5b610b418282610893565b15610b4b57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191660011790555600a165627a7a723058202dd18facb88fce52397143655484bd6bb04ca8578eb8c0779511f9e8d97c55f20029" -} \ No newline at end of file diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/OPENZEPPELIN-SOLIDITY-LICENSE b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/OPENZEPPELIN-SOLIDITY-LICENSE deleted file mode 100644 index 98dd89cdc..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/OPENZEPPELIN-SOLIDITY-LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 Smart Contract Solutions, Inc. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/README.md b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/README.md deleted file mode 100644 index 040789b93..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# ERC20 implementation - -The code used for the token smart-contract implementation is based on openzeppelin-solidity - -* Source: https://github.com/OpenZeppelin/openzeppelin-solidity diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/.npmignore b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/.npmignore deleted file mode 100644 index e792d8bc6..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -mocks -examples diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/ARCHITECTURE.md b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/ARCHITECTURE.md deleted file mode 100644 index bfb6cff8d..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/ARCHITECTURE.md +++ /dev/null @@ -1,27 +0,0 @@ -## Architecture - -The following provides visibility into how OpenZeppelin's contracts are organized: - -- **access** - Smart contracts that enable functionality that can be used for selective restrictions and basic authorization control functions. -- **crowdsale** - A collection of smart contracts used to manage token crowdsales that allow investors to purchase tokens with ETH. Includes a base contract which implements fundamental crowdsale functionality in its simplest form. The base contract can be extended in order to satisfy your crowdsale’s specific requirements. - - **distribution** - Includes extensions of the base crowdsale contract which can be used to customize the completion of a crowdsale. - - **emission** - Includes extensions of the base crowdsale contract which can be used to mint and manage how tokens are issued to purchasers. - - **price** - Includes extensions of the crowdsale contract that can be used to manage changes in token prices. - - **validation** - Includes extensions of the crowdsale contract that can be used to enforce restraints and limit access to token purchases. -- **examples** - A collection of simple smart contracts that demonstrate how to add new features to base contracts through multiple inheritance. -- **introspection** - An interface that can be used to make a contract comply with the ERC-165 standard as well as a contract that implements ERC-165 using a lookup table. -- **lifecycle** - A collection of base contracts used to manage the existence and behavior of your contracts and their funds. -- **math** - Libraries with safety checks on operations that throw on errors. -- **mocks** - A collection of abstract contracts that are primarily used for unit testing. They also serve as good usage examples and demonstrate how to combine contracts with inheritance when developing your own custom applications. -- **ownership** - A collection of smart contracts that can be used to manage contract and token ownership -- **payment** - A collection of smart contracts that can be used to manage payments through escrow arrangements, withdrawals, and claims. Includes support for both single payees and multiple payees. -- **proposals** - A collection of smart contracts that reflect community Ethereum Improvement Proposals (EIPs). These contracts are under development and standardization. They are not recommended for production, but they are useful for experimentation with pending EIP standards. Go [here](https://github.com/OpenZeppelin/openzeppelin-solidity/wiki/ERC-Process) for more information. - -- **token** - A collection of approved ERC standard tokens -- their interfaces and implementations. - - **ERC20** - A standard interface for fungible tokens: - - *Interfaces* - Includes the ERC-20 token standard basic interface. I.e., what the contract’s ABI can represent. - - *Implementations* - Includes ERC-20 token implementations that include all required and some optional ERC-20 functionality. - - **ERC721** - A standard interface for non-fungible tokens - - *Interfaces* - Includes the ERC-721 token standard basic interface. I.e., what the contract’s ABI can represent. - - *Implementations* - Includes ERC-721 token implementations that include all required and some optional ERC-721 functionality. - diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/Roles.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/Roles.sol deleted file mode 100644 index e3b97ddb7..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/Roles.sol +++ /dev/null @@ -1,44 +0,0 @@ -pragma solidity ^0.4.24; - -/** - * @title Roles - * @dev Library for managing addresses assigned to a Role. - */ -library Roles { - struct Role { - mapping (address => bool) bearer; - } - - /** - * @dev give an account access to this role - */ - function add(Role storage role, address account) internal { - require(account != address(0)); - require(!has(role, account)); - - role.bearer[account] = true; - } - - /** - * @dev remove an account's access to this role - */ - function remove(Role storage role, address account) internal { - require(account != address(0)); - require(has(role, account)); - - role.bearer[account] = false; - } - - /** - * @dev check if an account has this role - * @return bool - */ - function has(Role storage role, address account) - internal - view - returns (bool) - { - require(account != address(0)); - return role.bearer[account]; - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/CapperRole.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/CapperRole.sol deleted file mode 100644 index d6b2ba066..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/CapperRole.sol +++ /dev/null @@ -1,43 +0,0 @@ -pragma solidity ^0.4.24; - -import "../Roles.sol"; - -contract CapperRole { - using Roles for Roles.Role; - - event CapperAdded(address indexed account); - event CapperRemoved(address indexed account); - - Roles.Role private cappers; - - constructor() internal { - _addCapper(msg.sender); - } - - modifier onlyCapper() { - require(isCapper(msg.sender)); - _; - } - - function isCapper(address account) public view returns (bool) { - return cappers.has(account); - } - - function addCapper(address account) public onlyCapper { - _addCapper(account); - } - - function renounceCapper() public { - _removeCapper(msg.sender); - } - - function _addCapper(address account) internal { - cappers.add(account); - emit CapperAdded(account); - } - - function _removeCapper(address account) internal { - cappers.remove(account); - emit CapperRemoved(account); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/MinterRole.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/MinterRole.sol deleted file mode 100644 index 57f4a5a80..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/MinterRole.sol +++ /dev/null @@ -1,43 +0,0 @@ -pragma solidity ^0.4.24; - -import "../Roles.sol"; - -contract MinterRole { - using Roles for Roles.Role; - - event MinterAdded(address indexed account); - event MinterRemoved(address indexed account); - - Roles.Role private minters; - - constructor() internal { - _addMinter(msg.sender); - } - - modifier onlyMinter() { - require(isMinter(msg.sender)); - _; - } - - function isMinter(address account) public view returns (bool) { - return minters.has(account); - } - - function addMinter(address account) public onlyMinter { - _addMinter(account); - } - - function renounceMinter() public { - _removeMinter(msg.sender); - } - - function _addMinter(address account) internal { - minters.add(account); - emit MinterAdded(account); - } - - function _removeMinter(address account) internal { - minters.remove(account); - emit MinterRemoved(account); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/PauserRole.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/PauserRole.sol deleted file mode 100644 index 58bb6a313..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/PauserRole.sol +++ /dev/null @@ -1,43 +0,0 @@ -pragma solidity ^0.4.24; - -import "../Roles.sol"; - -contract PauserRole { - using Roles for Roles.Role; - - event PauserAdded(address indexed account); - event PauserRemoved(address indexed account); - - Roles.Role private pausers; - - constructor() internal { - _addPauser(msg.sender); - } - - modifier onlyPauser() { - require(isPauser(msg.sender)); - _; - } - - function isPauser(address account) public view returns (bool) { - return pausers.has(account); - } - - function addPauser(address account) public onlyPauser { - _addPauser(account); - } - - function renouncePauser() public { - _removePauser(msg.sender); - } - - function _addPauser(address account) internal { - pausers.add(account); - emit PauserAdded(account); - } - - function _removePauser(address account) internal { - pausers.remove(account); - emit PauserRemoved(account); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/SignerRole.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/SignerRole.sol deleted file mode 100644 index 6a2bc602d..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/access/roles/SignerRole.sol +++ /dev/null @@ -1,43 +0,0 @@ -pragma solidity ^0.4.24; - -import "../Roles.sol"; - -contract SignerRole { - using Roles for Roles.Role; - - event SignerAdded(address indexed account); - event SignerRemoved(address indexed account); - - Roles.Role private signers; - - constructor() internal { - _addSigner(msg.sender); - } - - modifier onlySigner() { - require(isSigner(msg.sender)); - _; - } - - function isSigner(address account) public view returns (bool) { - return signers.has(account); - } - - function addSigner(address account) public onlySigner { - _addSigner(account); - } - - function renounceSigner() public { - _removeSigner(msg.sender); - } - - function _addSigner(address account) internal { - signers.add(account); - emit SignerAdded(account); - } - - function _removeSigner(address account) internal { - signers.remove(account); - emit SignerRemoved(account); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol deleted file mode 100644 index a0c227607..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol +++ /dev/null @@ -1,241 +0,0 @@ -pragma solidity ^0.4.24; - -import "../token/ERC20/IERC20.sol"; -import "../math/SafeMath.sol"; -import "../token/ERC20/SafeERC20.sol"; -import "../utils/ReentrancyGuard.sol"; - -/** - * @title Crowdsale - * @dev Crowdsale is a base contract for managing a token crowdsale, - * allowing investors to purchase tokens with ether. This contract implements - * such functionality in its most fundamental form and can be extended to provide additional - * functionality and/or custom behavior. - * The external interface represents the basic interface for purchasing tokens, and conform - * the base architecture for crowdsales. They are *not* intended to be modified / overridden. - * The internal interface conforms the extensible and modifiable surface of crowdsales. Override - * the methods to add functionality. Consider using 'super' where appropriate to concatenate - * behavior. - */ -contract Crowdsale is ReentrancyGuard { - using SafeMath for uint256; - using SafeERC20 for IERC20; - - // The token being sold - IERC20 private _token; - - // Address where funds are collected - address private _wallet; - - // How many token units a buyer gets per wei. - // The rate is the conversion between wei and the smallest and indivisible token unit. - // So, if you are using a rate of 1 with a ERC20Detailed token with 3 decimals called TOK - // 1 wei will give you 1 unit, or 0.001 TOK. - uint256 private _rate; - - // Amount of wei raised - uint256 private _weiRaised; - - /** - * Event for token purchase logging - * @param purchaser who paid for the tokens - * @param beneficiary who got the tokens - * @param value weis paid for purchase - * @param amount amount of tokens purchased - */ - event TokensPurchased( - address indexed purchaser, - address indexed beneficiary, - uint256 value, - uint256 amount - ); - - /** - * @param rate Number of token units a buyer gets per wei - * @dev The rate is the conversion between wei and the smallest and indivisible - * token unit. So, if you are using a rate of 1 with a ERC20Detailed token - * with 3 decimals called TOK, 1 wei will give you 1 unit, or 0.001 TOK. - * @param wallet Address where collected funds will be forwarded to - * @param token Address of the token being sold - */ - constructor(uint256 rate, address wallet, IERC20 token) internal { - require(rate > 0); - require(wallet != address(0)); - require(token != address(0)); - - _rate = rate; - _wallet = wallet; - _token = token; - } - - // ----------------------------------------- - // Crowdsale external interface - // ----------------------------------------- - - /** - * @dev fallback function ***DO NOT OVERRIDE*** - * Note that other contracts will transfer fund with a base gas stipend - * of 2300, which is not enough to call buyTokens. Consider calling - * buyTokens directly when purchasing tokens from a contract. - */ - function () external payable { - buyTokens(msg.sender); - } - - /** - * @return the token being sold. - */ - function token() public view returns(IERC20) { - return _token; - } - - /** - * @return the address where funds are collected. - */ - function wallet() public view returns(address) { - return _wallet; - } - - /** - * @return the number of token units a buyer gets per wei. - */ - function rate() public view returns(uint256) { - return _rate; - } - - /** - * @return the amount of wei raised. - */ - function weiRaised() public view returns (uint256) { - return _weiRaised; - } - - /** - * @dev low level token purchase ***DO NOT OVERRIDE*** - * This function has a non-reentrancy guard, so it shouldn't be called by - * another `nonReentrant` function. - * @param beneficiary Recipient of the token purchase - */ - function buyTokens(address beneficiary) public nonReentrant payable { - - uint256 weiAmount = msg.value; - _preValidatePurchase(beneficiary, weiAmount); - - // calculate token amount to be created - uint256 tokens = _getTokenAmount(weiAmount); - - // update state - _weiRaised = _weiRaised.add(weiAmount); - - _processPurchase(beneficiary, tokens); - emit TokensPurchased( - msg.sender, - beneficiary, - weiAmount, - tokens - ); - - _updatePurchasingState(beneficiary, weiAmount); - - _forwardFunds(); - _postValidatePurchase(beneficiary, weiAmount); - } - - // ----------------------------------------- - // Internal interface (extensible) - // ----------------------------------------- - - /** - * @dev Validation of an incoming purchase. Use require statements to revert state when conditions are not met. Use `super` in contracts that inherit from Crowdsale to extend their validations. - * Example from CappedCrowdsale.sol's _preValidatePurchase method: - * super._preValidatePurchase(beneficiary, weiAmount); - * require(weiRaised().add(weiAmount) <= cap); - * @param beneficiary Address performing the token purchase - * @param weiAmount Value in wei involved in the purchase - */ - function _preValidatePurchase( - address beneficiary, - uint256 weiAmount - ) - internal - view - { - require(beneficiary != address(0)); - require(weiAmount != 0); - } - - /** - * @dev Validation of an executed purchase. Observe state and use revert statements to undo rollback when valid conditions are not met. - * @param beneficiary Address performing the token purchase - * @param weiAmount Value in wei involved in the purchase - */ - function _postValidatePurchase( - address beneficiary, - uint256 weiAmount - ) - internal - view - { - // optional override - } - - /** - * @dev Source of tokens. Override this method to modify the way in which the crowdsale ultimately gets and sends its tokens. - * @param beneficiary Address performing the token purchase - * @param tokenAmount Number of tokens to be emitted - */ - function _deliverTokens( - address beneficiary, - uint256 tokenAmount - ) - internal - { - _token.safeTransfer(beneficiary, tokenAmount); - } - - /** - * @dev Executed when a purchase has been validated and is ready to be executed. Doesn't necessarily emit/send tokens. - * @param beneficiary Address receiving the tokens - * @param tokenAmount Number of tokens to be purchased - */ - function _processPurchase( - address beneficiary, - uint256 tokenAmount - ) - internal - { - _deliverTokens(beneficiary, tokenAmount); - } - - /** - * @dev Override for extensions that require an internal state to check for validity (current user contributions, etc.) - * @param beneficiary Address receiving the tokens - * @param weiAmount Value in wei involved in the purchase - */ - function _updatePurchasingState( - address beneficiary, - uint256 weiAmount - ) - internal - { - // optional override - } - - /** - * @dev Override to extend the way in which ether is converted to tokens. - * @param weiAmount Value in wei to be converted into tokens - * @return Number of tokens that can be purchased with the specified _weiAmount - */ - function _getTokenAmount(uint256 weiAmount) - internal view returns (uint256) - { - return weiAmount.mul(_rate); - } - - /** - * @dev Determines how ETH is stored/forwarded on purchases. - */ - function _forwardFunds() internal { - _wallet.transfer(msg.value); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/distribution/FinalizableCrowdsale.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/distribution/FinalizableCrowdsale.sol deleted file mode 100644 index 8add165da..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/distribution/FinalizableCrowdsale.sol +++ /dev/null @@ -1,50 +0,0 @@ -pragma solidity ^0.4.24; - -import "../../math/SafeMath.sol"; -import "../validation/TimedCrowdsale.sol"; - -/** - * @title FinalizableCrowdsale - * @dev Extension of Crowdsale with a one-off finalization action, where one - * can do extra work after finishing. - */ -contract FinalizableCrowdsale is TimedCrowdsale { - using SafeMath for uint256; - - bool private _finalized; - - event CrowdsaleFinalized(); - - constructor() internal { - _finalized = false; - } - - /** - * @return true if the crowdsale is finalized, false otherwise. - */ - function finalized() public view returns (bool) { - return _finalized; - } - - /** - * @dev Must be called after crowdsale ends, to do some extra finalization - * work. Calls the contract's finalization function. - */ - function finalize() public { - require(!_finalized); - require(hasClosed()); - - _finalized = true; - - _finalization(); - emit CrowdsaleFinalized(); - } - - /** - * @dev Can be overridden to add finalization logic. The overriding function - * should call super._finalization() to ensure the chain of finalization is - * executed entirely. - */ - function _finalization() internal { - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/distribution/PostDeliveryCrowdsale.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/distribution/PostDeliveryCrowdsale.sol deleted file mode 100644 index b8c9ede77..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/distribution/PostDeliveryCrowdsale.sol +++ /dev/null @@ -1,50 +0,0 @@ -pragma solidity ^0.4.24; - -import "../validation/TimedCrowdsale.sol"; -import "../../math/SafeMath.sol"; - -/** - * @title PostDeliveryCrowdsale - * @dev Crowdsale that locks tokens from withdrawal until it ends. - */ -contract PostDeliveryCrowdsale is TimedCrowdsale { - using SafeMath for uint256; - - mapping(address => uint256) private _balances; - - constructor() internal {} - - /** - * @dev Withdraw tokens only after crowdsale ends. - * @param beneficiary Whose tokens will be withdrawn. - */ - function withdrawTokens(address beneficiary) public { - require(hasClosed()); - uint256 amount = _balances[beneficiary]; - require(amount > 0); - _balances[beneficiary] = 0; - _deliverTokens(beneficiary, amount); - } - - /** - * @return the balance of an account. - */ - function balanceOf(address account) public view returns(uint256) { - return _balances[account]; - } - - /** - * @dev Overrides parent by storing balances instead of issuing tokens right away. - * @param beneficiary Token purchaser - * @param tokenAmount Amount of tokens purchased - */ - function _processPurchase( - address beneficiary, - uint256 tokenAmount - ) - internal - { - _balances[beneficiary] = _balances[beneficiary].add(tokenAmount); - } - -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/distribution/RefundableCrowdsale.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/distribution/RefundableCrowdsale.sol deleted file mode 100644 index 9b814cd7d..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/distribution/RefundableCrowdsale.sol +++ /dev/null @@ -1,91 +0,0 @@ -pragma solidity ^0.4.24; - -import "../../math/SafeMath.sol"; -import "./FinalizableCrowdsale.sol"; -import "../../payment/escrow/RefundEscrow.sol"; - -/** - * @title RefundableCrowdsale - * @dev Extension of Crowdsale contract that adds a funding goal, and - * the possibility of users getting a refund if goal is not met. - * WARNING: note that if you allow tokens to be traded before the goal - * is met, then an attack is possible in which the attacker purchases - * tokens from the crowdsale and when they sees that the goal is - * unlikely to be met, they sell their tokens (possibly at a discount). - * The attacker will be refunded when the crowdsale is finalized, and - * the users that purchased from them will be left with worthless - * tokens. There are many possible ways to avoid this, like making the - * the crowdsale inherit from PostDeliveryCrowdsale, or imposing - * restrictions on token trading until the crowdsale is finalized. - * This is being discussed in - * https://github.com/OpenZeppelin/openzeppelin-solidity/issues/877 - * This contract will be updated when we agree on a general solution - * for this problem. - */ -contract RefundableCrowdsale is FinalizableCrowdsale { - using SafeMath for uint256; - - // minimum amount of funds to be raised in weis - uint256 private _goal; - - // refund escrow used to hold funds while crowdsale is running - RefundEscrow private _escrow; - - /** - * @dev Constructor, creates RefundEscrow. - * @param goal Funding goal - */ - constructor(uint256 goal) internal { - require(goal > 0); - _escrow = new RefundEscrow(wallet()); - _goal = goal; - } - - /** - * @return minimum amount of funds to be raised in wei. - */ - function goal() public view returns(uint256) { - return _goal; - } - - /** - * @dev Investors can claim refunds here if crowdsale is unsuccessful - * @param beneficiary Whose refund will be claimed. - */ - function claimRefund(address beneficiary) public { - require(finalized()); - require(!goalReached()); - - _escrow.withdraw(beneficiary); - } - - /** - * @dev Checks whether funding goal was reached. - * @return Whether funding goal was reached - */ - function goalReached() public view returns (bool) { - return weiRaised() >= _goal; - } - - /** - * @dev escrow finalization task, called when finalize() is called - */ - function _finalization() internal { - if (goalReached()) { - _escrow.close(); - _escrow.beneficiaryWithdraw(); - } else { - _escrow.enableRefunds(); - } - - super._finalization(); - } - - /** - * @dev Overrides Crowdsale fund forwarding, sending funds to escrow. - */ - function _forwardFunds() internal { - _escrow.deposit.value(msg.value)(msg.sender); - } - -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/emission/AllowanceCrowdsale.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/emission/AllowanceCrowdsale.sol deleted file mode 100644 index 346275c7d..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/emission/AllowanceCrowdsale.sol +++ /dev/null @@ -1,59 +0,0 @@ -pragma solidity ^0.4.24; - -import "../Crowdsale.sol"; -import "../../token/ERC20/IERC20.sol"; -import "../../token/ERC20/SafeERC20.sol"; -import "../../math/SafeMath.sol"; -import "../../math/Math.sol"; - -/** - * @title AllowanceCrowdsale - * @dev Extension of Crowdsale where tokens are held by a wallet, which approves an allowance to the crowdsale. - */ -contract AllowanceCrowdsale is Crowdsale { - using SafeMath for uint256; - using SafeERC20 for IERC20; - - address private _tokenWallet; - - /** - * @dev Constructor, takes token wallet address. - * @param tokenWallet Address holding the tokens, which has approved allowance to the crowdsale - */ - constructor(address tokenWallet) internal { - require(tokenWallet != address(0)); - _tokenWallet = tokenWallet; - } - - /** - * @return the address of the wallet that will hold the tokens. - */ - function tokenWallet() public view returns(address) { - return _tokenWallet; - } - - /** - * @dev Checks the amount of tokens left in the allowance. - * @return Amount of tokens left in the allowance - */ - function remainingTokens() public view returns (uint256) { - return Math.min( - token().balanceOf(_tokenWallet), - token().allowance(_tokenWallet, this) - ); - } - - /** - * @dev Overrides parent behavior by transferring tokens from wallet. - * @param beneficiary Token purchaser - * @param tokenAmount Amount of tokens purchased - */ - function _deliverTokens( - address beneficiary, - uint256 tokenAmount - ) - internal - { - token().safeTransferFrom(_tokenWallet, beneficiary, tokenAmount); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/emission/MintedCrowdsale.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/emission/MintedCrowdsale.sol deleted file mode 100644 index 3ebea857d..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/emission/MintedCrowdsale.sol +++ /dev/null @@ -1,29 +0,0 @@ -pragma solidity ^0.4.24; - -import "../Crowdsale.sol"; -import "../../token/ERC20/ERC20Mintable.sol"; - -/** - * @title MintedCrowdsale - * @dev Extension of Crowdsale contract whose tokens are minted in each purchase. - * Token ownership should be transferred to MintedCrowdsale for minting. - */ -contract MintedCrowdsale is Crowdsale { - constructor() internal {} - - /** - * @dev Overrides delivery by minting tokens upon purchase. - * @param beneficiary Token purchaser - * @param tokenAmount Number of tokens to be minted - */ - function _deliverTokens( - address beneficiary, - uint256 tokenAmount - ) - internal - { - // Potentially dangerous assumption about the type of the token. - require( - ERC20Mintable(address(token())).mint(beneficiary, tokenAmount)); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/price/IncreasingPriceCrowdsale.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/price/IncreasingPriceCrowdsale.sol deleted file mode 100644 index c86353c0f..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/price/IncreasingPriceCrowdsale.sol +++ /dev/null @@ -1,81 +0,0 @@ -pragma solidity ^0.4.24; - -import "../validation/TimedCrowdsale.sol"; -import "../../math/SafeMath.sol"; - -/** - * @title IncreasingPriceCrowdsale - * @dev Extension of Crowdsale contract that increases the price of tokens linearly in time. - * Note that what should be provided to the constructor is the initial and final _rates_, that is, - * the amount of tokens per wei contributed. Thus, the initial rate must be greater than the final rate. - */ -contract IncreasingPriceCrowdsale is TimedCrowdsale { - using SafeMath for uint256; - - uint256 private _initialRate; - uint256 private _finalRate; - - /** - * @dev Constructor, takes initial and final rates of tokens received per wei contributed. - * @param initialRate Number of tokens a buyer gets per wei at the start of the crowdsale - * @param finalRate Number of tokens a buyer gets per wei at the end of the crowdsale - */ - constructor(uint256 initialRate, uint256 finalRate) internal { - require(finalRate > 0); - require(initialRate > finalRate); - _initialRate = initialRate; - _finalRate = finalRate; - } - - /** - * The base rate function is overridden to revert, since this crowdsale doens't use it, and - * all calls to it are a mistake. - */ - function rate() public view returns(uint256) { - revert(); - } - - /** - * @return the initial rate of the crowdsale. - */ - function initialRate() public view returns(uint256) { - return _initialRate; - } - - /** - * @return the final rate of the crowdsale. - */ - function finalRate() public view returns (uint256) { - return _finalRate; - } - - /** - * @dev Returns the rate of tokens per wei at the present time. - * Note that, as price _increases_ with time, the rate _decreases_. - * @return The number of tokens a buyer gets per wei at a given time - */ - function getCurrentRate() public view returns (uint256) { - if (!isOpen()) { - return 0; - } - - // solium-disable-next-line security/no-block-members - uint256 elapsedTime = block.timestamp.sub(openingTime()); - uint256 timeRange = closingTime().sub(openingTime()); - uint256 rateRange = _initialRate.sub(_finalRate); - return _initialRate.sub(elapsedTime.mul(rateRange).div(timeRange)); - } - - /** - * @dev Overrides parent method taking into account variable rate. - * @param weiAmount The value in wei to be converted into tokens - * @return The number of tokens _weiAmount wei will buy at present time - */ - function _getTokenAmount(uint256 weiAmount) - internal view returns (uint256) - { - uint256 currentRate = getCurrentRate(); - return currentRate.mul(weiAmount); - } - -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/validation/CappedCrowdsale.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/validation/CappedCrowdsale.sol deleted file mode 100644 index 4d9eb604d..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/validation/CappedCrowdsale.sol +++ /dev/null @@ -1,55 +0,0 @@ -pragma solidity ^0.4.24; - -import "../../math/SafeMath.sol"; -import "../Crowdsale.sol"; - -/** - * @title CappedCrowdsale - * @dev Crowdsale with a limit for total contributions. - */ -contract CappedCrowdsale is Crowdsale { - using SafeMath for uint256; - - uint256 private _cap; - - /** - * @dev Constructor, takes maximum amount of wei accepted in the crowdsale. - * @param cap Max amount of wei to be contributed - */ - constructor(uint256 cap) internal { - require(cap > 0); - _cap = cap; - } - - /** - * @return the cap of the crowdsale. - */ - function cap() public view returns(uint256) { - return _cap; - } - - /** - * @dev Checks whether the cap has been reached. - * @return Whether the cap was reached - */ - function capReached() public view returns (bool) { - return weiRaised() >= _cap; - } - - /** - * @dev Extend parent behavior requiring purchase to respect the funding cap. - * @param beneficiary Token purchaser - * @param weiAmount Amount of wei contributed - */ - function _preValidatePurchase( - address beneficiary, - uint256 weiAmount - ) - internal - view - { - super._preValidatePurchase(beneficiary, weiAmount); - require(weiRaised().add(weiAmount) <= _cap); - } - -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/validation/IndividuallyCappedCrowdsale.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/validation/IndividuallyCappedCrowdsale.sol deleted file mode 100644 index 5a5d4e317..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/validation/IndividuallyCappedCrowdsale.sol +++ /dev/null @@ -1,81 +0,0 @@ -pragma solidity ^0.4.24; - -import "../../math/SafeMath.sol"; -import "../Crowdsale.sol"; -import "../../access/roles/CapperRole.sol"; - -/** - * @title IndividuallyCappedCrowdsale - * @dev Crowdsale with per-beneficiary caps. - */ -contract IndividuallyCappedCrowdsale is Crowdsale, CapperRole { - using SafeMath for uint256; - - mapping(address => uint256) private _contributions; - mapping(address => uint256) private _caps; - - constructor() internal {} - - /** - * @dev Sets a specific beneficiary's maximum contribution. - * @param beneficiary Address to be capped - * @param cap Wei limit for individual contribution - */ - function setCap(address beneficiary, uint256 cap) external onlyCapper { - _caps[beneficiary] = cap; - } - - /** - * @dev Returns the cap of a specific beneficiary. - * @param beneficiary Address whose cap is to be checked - * @return Current cap for individual beneficiary - */ - function getCap(address beneficiary) public view returns (uint256) { - return _caps[beneficiary]; - } - - /** - * @dev Returns the amount contributed so far by a specific beneficiary. - * @param beneficiary Address of contributor - * @return Beneficiary contribution so far - */ - function getContribution(address beneficiary) - public view returns (uint256) - { - return _contributions[beneficiary]; - } - - /** - * @dev Extend parent behavior requiring purchase to respect the beneficiary's funding cap. - * @param beneficiary Token purchaser - * @param weiAmount Amount of wei contributed - */ - function _preValidatePurchase( - address beneficiary, - uint256 weiAmount - ) - internal - view - { - super._preValidatePurchase(beneficiary, weiAmount); - require( - _contributions[beneficiary].add(weiAmount) <= _caps[beneficiary]); - } - - /** - * @dev Extend parent behavior to update beneficiary contributions - * @param beneficiary Token purchaser - * @param weiAmount Amount of wei contributed - */ - function _updatePurchasingState( - address beneficiary, - uint256 weiAmount - ) - internal - { - super._updatePurchasingState(beneficiary, weiAmount); - _contributions[beneficiary] = _contributions[beneficiary].add( - weiAmount); - } - -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/validation/TimedCrowdsale.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/validation/TimedCrowdsale.sol deleted file mode 100644 index 73d6a5c0f..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/crowdsale/validation/TimedCrowdsale.sol +++ /dev/null @@ -1,85 +0,0 @@ -pragma solidity ^0.4.24; - -import "../../math/SafeMath.sol"; -import "../Crowdsale.sol"; - -/** - * @title TimedCrowdsale - * @dev Crowdsale accepting contributions only within a time frame. - */ -contract TimedCrowdsale is Crowdsale { - using SafeMath for uint256; - - uint256 private _openingTime; - uint256 private _closingTime; - - /** - * @dev Reverts if not in crowdsale time range. - */ - modifier onlyWhileOpen { - require(isOpen()); - _; - } - - /** - * @dev Constructor, takes crowdsale opening and closing times. - * @param openingTime Crowdsale opening time - * @param closingTime Crowdsale closing time - */ - constructor(uint256 openingTime, uint256 closingTime) internal { - // solium-disable-next-line security/no-block-members - require(openingTime >= block.timestamp); - require(closingTime > openingTime); - - _openingTime = openingTime; - _closingTime = closingTime; - } - - /** - * @return the crowdsale opening time. - */ - function openingTime() public view returns(uint256) { - return _openingTime; - } - - /** - * @return the crowdsale closing time. - */ - function closingTime() public view returns(uint256) { - return _closingTime; - } - - /** - * @return true if the crowdsale is open, false otherwise. - */ - function isOpen() public view returns (bool) { - // solium-disable-next-line security/no-block-members - return block.timestamp >= _openingTime && block.timestamp <= _closingTime; - } - - /** - * @dev Checks whether the period in which the crowdsale is open has already elapsed. - * @return Whether crowdsale period has elapsed - */ - function hasClosed() public view returns (bool) { - // solium-disable-next-line security/no-block-members - return block.timestamp > _closingTime; - } - - /** - * @dev Extend parent behavior requiring to be within contributing period - * @param beneficiary Token purchaser - * @param weiAmount Amount of wei contributed - */ - function _preValidatePurchase( - address beneficiary, - uint256 weiAmount - ) - internal - onlyWhileOpen - view - { - super._preValidatePurchase(beneficiary, weiAmount); - } - -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/cryptography/ECDSA.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/cryptography/ECDSA.sol deleted file mode 100644 index 71c0e41ed..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/cryptography/ECDSA.sol +++ /dev/null @@ -1,71 +0,0 @@ -pragma solidity ^0.4.24; - -/** - * @title Elliptic curve signature operations - * @dev Based on https://gist.github.com/axic/5b33912c6f61ae6fd96d6c4a47afde6d - * TODO Remove this library once solidity supports passing a signature to ecrecover. - * See https://github.com/ethereum/solidity/issues/864 - */ - -library ECDSA { - - /** - * @dev Recover signer address from a message by using their signature - * @param hash bytes32 message, the hash is the signed message. What is recovered is the signer address. - * @param signature bytes signature, the signature is generated using web3.eth.sign() - */ - function recover(bytes32 hash, bytes signature) - internal - pure - returns (address) - { - bytes32 r; - bytes32 s; - uint8 v; - - // Check the signature length - if (signature.length != 65) { - return (address(0)); - } - - // Divide the signature in r, s and v variables - // ecrecover takes the signature parameters, and the only way to get them - // currently is to use assembly. - // solium-disable-next-line security/no-inline-assembly - assembly { - r := mload(add(signature, 0x20)) - s := mload(add(signature, 0x40)) - v := byte(0, mload(add(signature, 0x60))) - } - - // Version of signature should be 27 or 28, but 0 and 1 are also possible versions - if (v < 27) { - v += 27; - } - - // If the version is correct return the signer address - if (v != 27 && v != 28) { - return (address(0)); - } else { - // solium-disable-next-line arg-overflow - return ecrecover(hash, v, r, s); - } - } - - /** - * toEthSignedMessageHash - * @dev prefix a bytes32 value with "\x19Ethereum Signed Message:" - * and hash the result - */ - function toEthSignedMessageHash(bytes32 hash) - internal - pure - returns (bytes32) - { - // 32 is the length in bytes of hash, - // enforced by the type signature above - return keccak256( - abi.encodePacked("\x19Ethereum Signed Message:\n32", hash) - ); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/cryptography/MerkleProof.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/cryptography/MerkleProof.sol deleted file mode 100644 index a0c304c57..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/cryptography/MerkleProof.sol +++ /dev/null @@ -1,42 +0,0 @@ -pragma solidity ^0.4.24; - -/** - * @title MerkleProof - * @dev Merkle proof verification based on - * https://github.com/ameensol/merkle-tree-solidity/blob/master/src/MerkleProof.sol - */ -library MerkleProof { - /** - * @dev Verifies a Merkle proof proving the existence of a leaf in a Merkle tree. Assumes that each pair of leaves - * and each pair of pre-images are sorted. - * @param proof Merkle proof containing sibling hashes on the branch from the leaf to the root of the Merkle tree - * @param root Merkle root - * @param leaf Leaf of Merkle tree - */ - function verify( - bytes32[] proof, - bytes32 root, - bytes32 leaf - ) - internal - pure - returns (bool) - { - bytes32 computedHash = leaf; - - for (uint256 i = 0; i < proof.length; i++) { - bytes32 proofElement = proof[i]; - - if (computedHash < proofElement) { - // Hash(current computed hash + current element of the proof) - computedHash = keccak256(abi.encodePacked(computedHash, proofElement)); - } else { - // Hash(current element of the proof + current computed hash) - computedHash = keccak256(abi.encodePacked(proofElement, computedHash)); - } - } - - // Check if the computed hash (root) is equal to the provided root - return computedHash == root; - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/.gitkeep b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/Counter.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/Counter.sol deleted file mode 100644 index 3557bd744..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/Counter.sol +++ /dev/null @@ -1,28 +0,0 @@ -pragma solidity ^0.4.24; - -/** - * @title Counter - * @author Matt Condon (@shrugs) - * @dev Provides an incrementing uint256 id acquired by the `Counter#next` getter. - * Use this for issuing ERC721 ids or keeping track of request ids, anything you want, really. - * - * Include with `using Counter for Counter.Counter;` - * @notice Does not allow an Id of 0, which is popularly used to signify a null state in solidity. - * Does not protect from overflows, but if you have 2^256 ids, you have other problems. - * (But actually, it's generally impossible to increment a counter this many times, energy wise - * so it's not something you have to worry about.) - */ -library Counter { - - struct Counter { - uint256 current; // default: 0 - } - - function next(Counter storage index) - internal - returns (uint256) - { - index.current += 1; - return index.current; - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/ERC1046/TokenMetadata.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/ERC1046/TokenMetadata.sol deleted file mode 100644 index 9057711d9..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/ERC1046/TokenMetadata.sol +++ /dev/null @@ -1,27 +0,0 @@ -pragma solidity ^0.4.24; - -import "../../token/ERC20/IERC20.sol"; - -/** - * @title ERC-1047 Token Metadata - * @dev See https://eips.ethereum.org/EIPS/eip-1046 - * @dev tokenURI must respond with a URI that implements https://eips.ethereum.org/EIPS/eip-1047 - * @dev TODO - update https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/token/ERC721/IERC721.sol#L17 when 1046 is finalized - */ -contract ERC20TokenMetadata is IERC20 { - function tokenURI() external view returns (string); -} - -contract ERC20WithMetadata is ERC20TokenMetadata { - string private _tokenURI; - - constructor(string tokenURI) - public - { - _tokenURI = tokenURI; - } - - function tokenURI() external view returns (string) { - return _tokenURI; - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/ERC20Migrator.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/ERC20Migrator.sol deleted file mode 100644 index 44ed16423..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/ERC20Migrator.sol +++ /dev/null @@ -1,100 +0,0 @@ -pragma solidity ^0.4.24; - -import "../token/ERC20/IERC20.sol"; -import "../token/ERC20/ERC20Mintable.sol"; -import "../token/ERC20/SafeERC20.sol"; -import "../math/Math.sol"; - -/** - * @title ERC20Migrator - * @dev This contract can be used to migrate an ERC20 token from one - * contract to another, where each token holder has to opt-in to the migration. - * To opt-in, users must approve for this contract the number of tokens they - * want to migrate. Once the allowance is set up, anyone can trigger the - * migration to the new token contract. In this way, token holders "turn in" - * their old balance and will be minted an equal amount in the new token. - * The new token contract must be mintable. For the precise interface refer to - * OpenZeppelin's ERC20Mintable, but the only functions that are needed are - * `isMinter(address)` and `mint(address, amount)`. The migrator will check - * that it is a minter for the token. - * The balance from the legacy token will be transfered to the migrator, as it - * is migrated, and remain there forever. - * Although this contract can be used in many different scenarios, the main - * motivation was to provide a way to migrate ERC20 tokens into an upgradeable - * version of it using ZeppelinOS. To read more about how this can be done - * using this implementation, please follow the official documentation site of - * ZeppelinOS: https://docs.zeppelinos.org/docs/erc20_onboarding.html - * Example of usage: - * ``` - * const migrator = await ERC20Migrator.new(legacyToken.address); - * await newToken.addMinter(migrator.address); - * await migrator.beginMigration(newToken.address); - * ``` - */ -contract ERC20Migrator { - using SafeERC20 for IERC20; - - /// Address of the old token contract - IERC20 private _legacyToken; - - /// Address of the new token contract - ERC20Mintable private _newToken; - - /** - * @param legacyToken address of the old token contract - */ - constructor(IERC20 legacyToken) public { - require(legacyToken != address(0)); - _legacyToken = legacyToken; - } - - /** - * @dev Returns the legacy token that is being migrated. - */ - function legacyToken() public view returns (IERC20) { - return _legacyToken; - } - - /** - * @dev Returns the new token to which we are migrating. - */ - function newToken() public view returns (IERC20) { - return _newToken; - } - - /** - * @dev Begins the migration by setting which is the new token that will be - * minted. This contract must be a minter for the new token. - * @param newToken the token that will be minted - */ - function beginMigration(ERC20Mintable newToken) public { - require(_newToken == address(0)); - require(newToken != address(0)); - require(newToken.isMinter(this)); - - _newToken = newToken; - } - - /** - * @dev Transfers part of an account's balance in the old token to this - * contract, and mints the same amount of new tokens for that account. - * @param account whose tokens will be migrated - * @param amount amount of tokens to be migrated - */ - function migrate(address account, uint256 amount) public { - _legacyToken.safeTransferFrom(account, this, amount); - _newToken.mint(account, amount); - } - - /** - * @dev Transfers all of an account's allowed balance in the old token to - * this contract, and mints the same amount of new tokens for that account. - * @param account whose tokens will be migrated - */ - function migrateAll(address account) public { - uint256 balance = _legacyToken.balanceOf(account); - uint256 allowance = _legacyToken.allowance(account, this); - uint256 amount = Math.min(balance, allowance); - migrate(account, amount); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/SignatureBouncer.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/SignatureBouncer.sol deleted file mode 100644 index 2cd600b35..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/SignatureBouncer.sol +++ /dev/null @@ -1,146 +0,0 @@ -pragma solidity ^0.4.24; - -import "../access/roles/SignerRole.sol"; -import "../cryptography/ECDSA.sol"; - -/** - * @title SignatureBouncer - * @author PhABC, Shrugs and aflesher - * @dev SignatureBouncer allows users to submit a signature as a permission to - * do an action. - * If the signature is from one of the authorized signer addresses, the - * signature is valid. - * Note that SignatureBouncer offers no protection against replay attacks, users - * must add this themselves! - * - * Signer addresses can be individual servers signing grants or different - * users within a decentralized club that have permission to invite other - * members. This technique is useful for whitelists and airdrops; instead of - * putting all valid addresses on-chain, simply sign a grant of the form - * keccak256(abi.encodePacked(`:contractAddress` + `:granteeAddress`)) using a - * valid signer address. - * Then restrict access to your crowdsale/whitelist/airdrop using the - * `onlyValidSignature` modifier (or implement your own using _isValidSignature). - * In addition to `onlyValidSignature`, `onlyValidSignatureAndMethod` and - * `onlyValidSignatureAndData` can be used to restrict access to only a given - * method or a given method with given parameters respectively. - * See the tests in SignatureBouncer.test.js for specific usage examples. - * - * @notice A method that uses the `onlyValidSignatureAndData` modifier must make - * the _signature parameter the "last" parameter. You cannot sign a message that - * has its own signature in it so the last 128 bytes of msg.data (which - * represents the length of the _signature data and the _signaature data itself) - * is ignored when validating. Also non fixed sized parameters make constructing - * the data in the signature much more complex. - * See https://ethereum.stackexchange.com/a/50616 for more details. - */ -contract SignatureBouncer is SignerRole { - using ECDSA for bytes32; - - // Function selectors are 4 bytes long, as documented in - // https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector - uint256 private constant _METHOD_ID_SIZE = 4; - // Signature size is 65 bytes (tightly packed v + r + s), but gets padded to 96 bytes - uint256 private constant _SIGNATURE_SIZE = 96; - - constructor() internal {} - - /** - * @dev requires that a valid signature of a signer was provided - */ - modifier onlyValidSignature(bytes signature) - { - require(_isValidSignature(msg.sender, signature)); - _; - } - - /** - * @dev requires that a valid signature with a specifed method of a signer was provided - */ - modifier onlyValidSignatureAndMethod(bytes signature) - { - require(_isValidSignatureAndMethod(msg.sender, signature)); - _; - } - - /** - * @dev requires that a valid signature with a specifed method and params of a signer was provided - */ - modifier onlyValidSignatureAndData(bytes signature) - { - require(_isValidSignatureAndData(msg.sender, signature)); - _; - } - - /** - * @dev is the signature of `this + sender` from a signer? - * @return bool - */ - function _isValidSignature(address account, bytes signature) - internal - view - returns (bool) - { - return _isValidDataHash( - keccak256(abi.encodePacked(address(this), account)), - signature - ); - } - - /** - * @dev is the signature of `this + sender + methodId` from a signer? - * @return bool - */ - function _isValidSignatureAndMethod(address account, bytes signature) - internal - view - returns (bool) - { - bytes memory data = new bytes(_METHOD_ID_SIZE); - for (uint i = 0; i < data.length; i++) { - data[i] = msg.data[i]; - } - return _isValidDataHash( - keccak256(abi.encodePacked(address(this), account, data)), - signature - ); - } - - /** - * @dev is the signature of `this + sender + methodId + params(s)` from a signer? - * @notice the signature parameter of the method being validated must be the "last" parameter - * @return bool - */ - function _isValidSignatureAndData(address account, bytes signature) - internal - view - returns (bool) - { - require(msg.data.length > _SIGNATURE_SIZE); - bytes memory data = new bytes(msg.data.length - _SIGNATURE_SIZE); - for (uint i = 0; i < data.length; i++) { - data[i] = msg.data[i]; - } - return _isValidDataHash( - keccak256(abi.encodePacked(address(this), account, data)), - signature - ); - } - - /** - * @dev internal function to convert a hash to an eth signed message - * and then recover the signature and check it against the signer role - * @return bool - */ - function _isValidDataHash(bytes32 hash, bytes signature) - internal - view - returns (bool) - { - address signer = hash - .toEthSignedMessageHash() - .recover(signature); - - return signer != address(0) && isSigner(signer); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/TokenVesting.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/TokenVesting.sol deleted file mode 100644 index 2f5fd2fdc..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/drafts/TokenVesting.sol +++ /dev/null @@ -1,175 +0,0 @@ -/* solium-disable security/no-block-members */ - -pragma solidity ^0.4.24; - -import "../token/ERC20/SafeERC20.sol"; -import "../ownership/Ownable.sol"; -import "../math/SafeMath.sol"; - -/** - * @title TokenVesting - * @dev A token holder contract that can release its token balance gradually like a - * typical vesting scheme, with a cliff and vesting period. Optionally revocable by the - * owner. - */ -contract TokenVesting is Ownable { - using SafeMath for uint256; - using SafeERC20 for IERC20; - - event TokensReleased(address token, uint256 amount); - event TokenVestingRevoked(address token); - - // beneficiary of tokens after they are released - address private _beneficiary; - - uint256 private _cliff; - uint256 private _start; - uint256 private _duration; - - bool private _revocable; - - mapping (address => uint256) private _released; - mapping (address => bool) private _revoked; - - /** - * @dev Creates a vesting contract that vests its balance of any ERC20 token to the - * beneficiary, gradually in a linear fashion until start + duration. By then all - * of the balance will have vested. - * @param beneficiary address of the beneficiary to whom vested tokens are transferred - * @param cliffDuration duration in seconds of the cliff in which tokens will begin to vest - * @param start the time (as Unix time) at which point vesting starts - * @param duration duration in seconds of the period in which the tokens will vest - * @param revocable whether the vesting is revocable or not - */ - constructor( - address beneficiary, - uint256 start, - uint256 cliffDuration, - uint256 duration, - bool revocable - ) - public - { - require(beneficiary != address(0)); - require(cliffDuration <= duration); - require(duration > 0); - require(start.add(duration) > block.timestamp); - - _beneficiary = beneficiary; - _revocable = revocable; - _duration = duration; - _cliff = start.add(cliffDuration); - _start = start; - } - - /** - * @return the beneficiary of the tokens. - */ - function beneficiary() public view returns(address) { - return _beneficiary; - } - - /** - * @return the cliff time of the token vesting. - */ - function cliff() public view returns(uint256) { - return _cliff; - } - - /** - * @return the start time of the token vesting. - */ - function start() public view returns(uint256) { - return _start; - } - - /** - * @return the duration of the token vesting. - */ - function duration() public view returns(uint256) { - return _duration; - } - - /** - * @return true if the vesting is revocable. - */ - function revocable() public view returns(bool) { - return _revocable; - } - - /** - * @return the amount of the token released. - */ - function released(address token) public view returns(uint256) { - return _released[token]; - } - - /** - * @return true if the token is revoked. - */ - function revoked(address token) public view returns(bool) { - return _revoked[token]; - } - - /** - * @notice Transfers vested tokens to beneficiary. - * @param token ERC20 token which is being vested - */ - function release(IERC20 token) public { - uint256 unreleased = _releasableAmount(token); - - require(unreleased > 0); - - _released[token] = _released[token].add(unreleased); - - token.safeTransfer(_beneficiary, unreleased); - - emit TokensReleased(token, unreleased); - } - - /** - * @notice Allows the owner to revoke the vesting. Tokens already vested - * remain in the contract, the rest are returned to the owner. - * @param token ERC20 token which is being vested - */ - function revoke(IERC20 token) public onlyOwner { - require(_revocable); - require(!_revoked[token]); - - uint256 balance = token.balanceOf(address(this)); - - uint256 unreleased = _releasableAmount(token); - uint256 refund = balance.sub(unreleased); - - _revoked[token] = true; - - token.safeTransfer(owner(), refund); - - emit TokenVestingRevoked(token); - } - - /** - * @dev Calculates the amount that has already vested but hasn't been released yet. - * @param token ERC20 token which is being vested - */ - function _releasableAmount(IERC20 token) private view returns (uint256) { - return _vestedAmount(token).sub(_released[token]); - } - - /** - * @dev Calculates the amount that has already vested. - * @param token ERC20 token which is being vested - */ - function _vestedAmount(IERC20 token) private view returns (uint256) { - uint256 currentBalance = token.balanceOf(this); - uint256 totalBalance = currentBalance.add(_released[token]); - - if (block.timestamp < _cliff) { - return 0; - } else if (block.timestamp >= _start.add(_duration) || _revoked[token]) { - return totalBalance; - } else { - return totalBalance.mul(block.timestamp.sub(_start)).div(_duration); - } - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/examples/SampleCrowdsale.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/examples/SampleCrowdsale.sol deleted file mode 100644 index d22598092..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/examples/SampleCrowdsale.sol +++ /dev/null @@ -1,57 +0,0 @@ -pragma solidity ^0.4.24; - -import "../crowdsale/validation/CappedCrowdsale.sol"; -import "../crowdsale/distribution/RefundableCrowdsale.sol"; -import "../crowdsale/emission/MintedCrowdsale.sol"; -import "../token/ERC20/ERC20Mintable.sol"; -import "../token/ERC20/ERC20Detailed.sol"; - -/** - * @title SampleCrowdsaleToken - * @dev Very simple ERC20 Token that can be minted. - * It is meant to be used in a crowdsale contract. - */ -contract SampleCrowdsaleToken is ERC20Mintable, ERC20Detailed { - constructor() public ERC20Detailed("Sample Crowdsale Token", "SCT", 18) {} -} - -/** - * @title SampleCrowdsale - * @dev This is an example of a fully fledged crowdsale. - * The way to add new features to a base crowdsale is by multiple inheritance. - * In this example we are providing following extensions: - * CappedCrowdsale - sets a max boundary for raised funds - * RefundableCrowdsale - set a min goal to be reached and returns funds if it's not met - * MintedCrowdsale - assumes the token can be minted by the crowdsale, which does so - * when receiving purchases. - * - * After adding multiple features it's good practice to run integration tests - * to ensure that subcontracts works together as intended. - */ -// XXX There doesn't seem to be a way to split this line that keeps solium -// happy. See: -// https://github.com/duaraghav8/Solium/issues/205 -// --elopio - 2018-05-10 -// solium-disable-next-line max-len -contract SampleCrowdsale is CappedCrowdsale, RefundableCrowdsale, MintedCrowdsale { - - constructor( - uint256 openingTime, - uint256 closingTime, - uint256 rate, - address wallet, - uint256 cap, - ERC20Mintable token, - uint256 goal - ) - public - Crowdsale(rate, wallet, token) - CappedCrowdsale(cap) - TimedCrowdsale(openingTime, closingTime) - RefundableCrowdsale(goal) - { - //As goal needs to be met for a successful crowdsale - //the value needs to less or equal than a cap which is limit for accepted funds - require(goal <= cap); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/examples/SimpleToken.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/examples/SimpleToken.sol deleted file mode 100644 index 8c63fdd98..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/examples/SimpleToken.sol +++ /dev/null @@ -1,26 +0,0 @@ -pragma solidity ^0.4.24; - -import "../token/ERC20/ERC20.sol"; - -/** - * @title SimpleToken - * @dev Very simple ERC20 Token example, where all tokens are pre-assigned to the creator. - * Note they can later distribute these tokens as they wish using `transfer` and other - * `ERC20` functions. - */ -contract SimpleToken is ERC20 { - - string public constant name = "SimpleToken"; - string public constant symbol = "SIM"; - uint8 public constant decimals = 18; - - uint256 public constant INITIAL_SUPPLY = 10000 * (10 ** uint256(decimals)); - - /** - * @dev Constructor that gives msg.sender all of existing tokens. - */ - constructor() public { - _mint(msg.sender, INITIAL_SUPPLY); - } - -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/introspection/ERC165.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/introspection/ERC165.sol deleted file mode 100644 index 5d083acdf..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/introspection/ERC165.sol +++ /dev/null @@ -1,53 +0,0 @@ -pragma solidity ^0.4.24; - -import "./IERC165.sol"; - -/** - * @title ERC165 - * @author Matt Condon (@shrugs) - * @dev Implements ERC165 using a lookup table. - */ -contract ERC165 is IERC165 { - - bytes4 private constant _InterfaceId_ERC165 = 0x01ffc9a7; - /** - * 0x01ffc9a7 === - * bytes4(keccak256('supportsInterface(bytes4)')) - */ - - /** - * @dev a mapping of interface id to whether or not it's supported - */ - mapping(bytes4 => bool) private _supportedInterfaces; - - /** - * @dev A contract implementing SupportsInterfaceWithLookup - * implement ERC165 itself - */ - constructor() - internal - { - _registerInterface(_InterfaceId_ERC165); - } - - /** - * @dev implement supportsInterface(bytes4) using a lookup table - */ - function supportsInterface(bytes4 interfaceId) - external - view - returns (bool) - { - return _supportedInterfaces[interfaceId]; - } - - /** - * @dev internal method for registering an interface - */ - function _registerInterface(bytes4 interfaceId) - internal - { - require(interfaceId != 0xffffffff); - _supportedInterfaces[interfaceId] = true; - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/introspection/ERC165Checker.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/introspection/ERC165Checker.sol deleted file mode 100644 index 2490b191e..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/introspection/ERC165Checker.sol +++ /dev/null @@ -1,146 +0,0 @@ -pragma solidity ^0.4.24; - -/** - * @title ERC165Checker - * @dev Use `using ERC165Checker for address`; to include this library - * https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md - */ -library ERC165Checker { - // As per the EIP-165 spec, no interface should ever match 0xffffffff - bytes4 private constant _InterfaceId_Invalid = 0xffffffff; - - bytes4 private constant _InterfaceId_ERC165 = 0x01ffc9a7; - /** - * 0x01ffc9a7 === - * bytes4(keccak256('supportsInterface(bytes4)')) - */ - - /** - * @notice Query if a contract supports ERC165 - * @param account The address of the contract to query for support of ERC165 - * @return true if the contract at account implements ERC165 - */ - function _supportsERC165(address account) - internal - view - returns (bool) - { - // Any contract that implements ERC165 must explicitly indicate support of - // InterfaceId_ERC165 and explicitly indicate non-support of InterfaceId_Invalid - return _supportsERC165Interface(account, _InterfaceId_ERC165) && - !_supportsERC165Interface(account, _InterfaceId_Invalid); - } - - /** - * @notice Query if a contract implements an interface, also checks support of ERC165 - * @param account The address of the contract to query for support of an interface - * @param interfaceId The interface identifier, as specified in ERC-165 - * @return true if the contract at account indicates support of the interface with - * identifier interfaceId, false otherwise - * @dev Interface identification is specified in ERC-165. - */ - function _supportsInterface(address account, bytes4 interfaceId) - internal - view - returns (bool) - { - // query support of both ERC165 as per the spec and support of _interfaceId - return _supportsERC165(account) && - _supportsERC165Interface(account, interfaceId); - } - - /** - * @notice Query if a contract implements interfaces, also checks support of ERC165 - * @param account The address of the contract to query for support of an interface - * @param interfaceIds A list of interface identifiers, as specified in ERC-165 - * @return true if the contract at account indicates support all interfaces in the - * interfaceIds list, false otherwise - * @dev Interface identification is specified in ERC-165. - */ - function _supportsAllInterfaces(address account, bytes4[] interfaceIds) - internal - view - returns (bool) - { - // query support of ERC165 itself - if (!_supportsERC165(account)) { - return false; - } - - // query support of each interface in _interfaceIds - for (uint256 i = 0; i < interfaceIds.length; i++) { - if (!_supportsERC165Interface(account, interfaceIds[i])) { - return false; - } - } - - // all interfaces supported - return true; - } - - /** - * @notice Query if a contract implements an interface, does not check ERC165 support - * @param account The address of the contract to query for support of an interface - * @param interfaceId The interface identifier, as specified in ERC-165 - * @return true if the contract at account indicates support of the interface with - * identifier interfaceId, false otherwise - * @dev Assumes that account contains a contract that supports ERC165, otherwise - * the behavior of this method is undefined. This precondition can be checked - * with the `supportsERC165` method in this library. - * Interface identification is specified in ERC-165. - */ - function _supportsERC165Interface(address account, bytes4 interfaceId) - private - view - returns (bool) - { - // success determines whether the staticcall succeeded and result determines - // whether the contract at account indicates support of _interfaceId - (bool success, bool result) = _callERC165SupportsInterface( - account, interfaceId); - - return (success && result); - } - - /** - * @notice Calls the function with selector 0x01ffc9a7 (ERC165) and suppresses throw - * @param account The address of the contract to query for support of an interface - * @param interfaceId The interface identifier, as specified in ERC-165 - * @return success true if the STATICCALL succeeded, false otherwise - * @return result true if the STATICCALL succeeded and the contract at account - * indicates support of the interface with identifier interfaceId, false otherwise - */ - function _callERC165SupportsInterface( - address account, - bytes4 interfaceId - ) - private - view - returns (bool success, bool result) - { - bytes memory encodedParams = abi.encodeWithSelector( - _InterfaceId_ERC165, - interfaceId - ); - - // solium-disable-next-line security/no-inline-assembly - assembly { - let encodedParams_data := add(0x20, encodedParams) - let encodedParams_size := mload(encodedParams) - - let output := mload(0x40) // Find empty storage location using "free memory pointer" - mstore(output, 0x0) - - success := staticcall( - 30000, // 30k gas - account, // To addr - encodedParams_data, - encodedParams_size, - output, - 0x20 // Outputs are 32 bytes long - ) - - result := mload(output) // Load the result - } - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/introspection/IERC165.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/introspection/IERC165.sol deleted file mode 100644 index 4e4b7bbf6..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/introspection/IERC165.sol +++ /dev/null @@ -1,19 +0,0 @@ -pragma solidity ^0.4.24; - -/** - * @title IERC165 - * @dev https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md - */ -interface IERC165 { - - /** - * @notice Query if a contract implements an interface - * @param interfaceId The interface identifier, as specified in ERC-165 - * @dev Interface identification is specified in ERC-165. This function - * uses less than 30,000 gas. - */ - function supportsInterface(bytes4 interfaceId) - external - view - returns (bool); -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/lifecycle/Pausable.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/lifecycle/Pausable.sol deleted file mode 100644 index 3703fed4b..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/lifecycle/Pausable.sol +++ /dev/null @@ -1,57 +0,0 @@ -pragma solidity ^0.4.24; - -import "../access/roles/PauserRole.sol"; - -/** - * @title Pausable - * @dev Base contract which allows children to implement an emergency stop mechanism. - */ -contract Pausable is PauserRole { - event Paused(address account); - event Unpaused(address account); - - bool private _paused; - - constructor() internal { - _paused = false; - } - - /** - * @return true if the contract is paused, false otherwise. - */ - function paused() public view returns(bool) { - return _paused; - } - - /** - * @dev Modifier to make a function callable only when the contract is not paused. - */ - modifier whenNotPaused() { - require(!_paused); - _; - } - - /** - * @dev Modifier to make a function callable only when the contract is paused. - */ - modifier whenPaused() { - require(_paused); - _; - } - - /** - * @dev called by the owner to pause, triggers stopped state - */ - function pause() public onlyPauser whenNotPaused { - _paused = true; - emit Paused(msg.sender); - } - - /** - * @dev called by the owner to unpause, returns to normal state - */ - function unpause() public onlyPauser whenPaused { - _paused = false; - emit Unpaused(msg.sender); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/math/Math.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/math/Math.sol deleted file mode 100644 index ffff83961..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/math/Math.sol +++ /dev/null @@ -1,31 +0,0 @@ -pragma solidity ^0.4.24; - -/** - * @title Math - * @dev Assorted math operations - */ -library Math { - /** - * @dev Returns the largest of two numbers. - */ - function max(uint256 a, uint256 b) internal pure returns (uint256) { - return a >= b ? a : b; - } - - /** - * @dev Returns the smallest of two numbers. - */ - function min(uint256 a, uint256 b) internal pure returns (uint256) { - return a < b ? a : b; - } - - /** - * @dev Calculates the average of two numbers. Since these are integers, - * averages of an even and odd number cannot be represented, and will be - * rounded down. - */ - function average(uint256 a, uint256 b) internal pure returns (uint256) { - // (a + b) / 2 can overflow, so we distribute - return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/math/SafeMath.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/math/SafeMath.sol deleted file mode 100644 index 97494e1f1..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/math/SafeMath.sol +++ /dev/null @@ -1,65 +0,0 @@ -pragma solidity ^0.4.24; - -/** - * @title SafeMath - * @dev Math operations with safety checks that revert on error - */ -library SafeMath { - - /** - * @dev Multiplies two numbers, reverts on overflow. - */ - function mul(uint256 a, uint256 b) internal pure returns (uint256) { - // Gas optimization: this is cheaper than requiring 'a' not being zero, but the - // benefit is lost if 'b' is also tested. - // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 - if (a == 0) { - return 0; - } - - uint256 c = a * b; - require(c / a == b); - - return c; - } - - /** - * @dev Integer division of two numbers truncating the quotient, reverts on division by zero. - */ - function div(uint256 a, uint256 b) internal pure returns (uint256) { - require(b > 0); // Solidity only automatically asserts when dividing by 0 - uint256 c = a / b; - // assert(a == b * c + a % b); // There is no case in which this doesn't hold - - return c; - } - - /** - * @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend). - */ - function sub(uint256 a, uint256 b) internal pure returns (uint256) { - require(b <= a); - uint256 c = a - b; - - return c; - } - - /** - * @dev Adds two numbers, reverts on overflow. - */ - function add(uint256 a, uint256 b) internal pure returns (uint256) { - uint256 c = a + b; - require(c >= a); - - return c; - } - - /** - * @dev Divides two numbers and returns the remainder (unsigned integer modulo), - * reverts when dividing by zero. - */ - function mod(uint256 a, uint256 b) internal pure returns (uint256) { - require(b != 0); - return a % b; - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/AddressImpl.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/AddressImpl.sol deleted file mode 100644 index e29396056..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/AddressImpl.sol +++ /dev/null @@ -1,14 +0,0 @@ -pragma solidity ^0.4.24; - -import "../utils/Address.sol"; - -contract AddressImpl { - function isContract(address account) - external - view - returns (bool) - { - return Address.isContract(account); - } - -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/AllowanceCrowdsaleImpl.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/AllowanceCrowdsaleImpl.sol deleted file mode 100644 index 5b2104e38..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/AllowanceCrowdsaleImpl.sol +++ /dev/null @@ -1,20 +0,0 @@ -pragma solidity ^0.4.24; - -import "../token/ERC20/IERC20.sol"; -import "../crowdsale/emission/AllowanceCrowdsale.sol"; - -contract AllowanceCrowdsaleImpl is AllowanceCrowdsale { - - constructor ( - uint256 rate, - address wallet, - IERC20 token, - address tokenWallet - ) - public - Crowdsale(rate, wallet, token) - AllowanceCrowdsale(tokenWallet) - { - } - -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ArraysImpl.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ArraysImpl.sol deleted file mode 100644 index 8a2b9ec51..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ArraysImpl.sol +++ /dev/null @@ -1,18 +0,0 @@ -pragma solidity ^0.4.24; - -import "../utils/Arrays.sol"; - -contract ArraysImpl { - - using Arrays for uint256[]; - - uint256[] private array; - - constructor(uint256[] _array) public { - array = _array; - } - - function findUpperBound(uint256 _element) external view returns (uint256) { - return array.findUpperBound(_element); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CappedCrowdsaleImpl.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CappedCrowdsaleImpl.sol deleted file mode 100644 index 176033b7f..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CappedCrowdsaleImpl.sol +++ /dev/null @@ -1,20 +0,0 @@ -pragma solidity ^0.4.24; - -import "../token/ERC20/IERC20.sol"; -import "../crowdsale/validation/CappedCrowdsale.sol"; - -contract CappedCrowdsaleImpl is CappedCrowdsale { - - constructor ( - uint256 rate, - address wallet, - IERC20 token, - uint256 cap - ) - public - Crowdsale(rate, wallet, token) - CappedCrowdsale(cap) - { - } - -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CapperRoleMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CapperRoleMock.sol deleted file mode 100644 index 118058f39..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CapperRoleMock.sol +++ /dev/null @@ -1,17 +0,0 @@ -pragma solidity ^0.4.24; - -import "../access/roles/CapperRole.sol"; - -contract CapperRoleMock is CapperRole { - function removeCapper(address account) public { - _removeCapper(account); - } - - function onlyCapperMock() public view onlyCapper { - } - - // Causes a compilation error if super._removeCapper is not internal - function _removeCapper(address account) internal { - super._removeCapper(account); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ConditionalEscrowMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ConditionalEscrowMock.sol deleted file mode 100644 index 3e30c21a2..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ConditionalEscrowMock.sol +++ /dev/null @@ -1,16 +0,0 @@ -pragma solidity ^0.4.24; - -import "../payment/escrow/ConditionalEscrow.sol"; - -// mock class using ConditionalEscrow -contract ConditionalEscrowMock is ConditionalEscrow { - mapping(address => bool) private _allowed; - - function setAllowed(address payee, bool allowed) public { - _allowed[payee] = allowed; - } - - function withdrawalAllowed(address payee) public view returns (bool) { - return _allowed[payee]; - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CounterImpl.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CounterImpl.sol deleted file mode 100644 index 3c958ba97..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CounterImpl.sol +++ /dev/null @@ -1,20 +0,0 @@ -pragma solidity ^0.4.24; - -import "../drafts/Counter.sol"; - -contract CounterImpl { - using Counter for Counter.Counter; - - uint256 public theId; - - // use whatever key you want to track your counters - mapping(string => Counter.Counter) private _counters; - - function doThing(string key) - public - returns (uint256) - { - theId = _counters[key].next(); - return theId; - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CrowdsaleMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CrowdsaleMock.sol deleted file mode 100644 index 834105e6a..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/CrowdsaleMock.sol +++ /dev/null @@ -1,9 +0,0 @@ -pragma solidity ^0.4.24; - -import "../crowdsale/Crowdsale.sol"; - -contract CrowdsaleMock is Crowdsale { - constructor(uint256 rate, address wallet, IERC20 token) public - Crowdsale(rate, wallet, token) { - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/DetailedERC20Mock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/DetailedERC20Mock.sol deleted file mode 100644 index eea706326..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/DetailedERC20Mock.sol +++ /dev/null @@ -1,15 +0,0 @@ -pragma solidity ^0.4.24; - -import "../token/ERC20/ERC20.sol"; -import "../token/ERC20/ERC20Detailed.sol"; - -contract ERC20DetailedMock is ERC20, ERC20Detailed { - constructor( - string name, - string symbol, - uint8 decimals - ) - ERC20Detailed(name, symbol, decimals) - public - {} -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ECDSAMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ECDSAMock.sol deleted file mode 100644 index 9f489069f..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ECDSAMock.sol +++ /dev/null @@ -1,23 +0,0 @@ -pragma solidity ^0.4.24; - -import "../cryptography/ECDSA.sol"; - -contract ECDSAMock { - using ECDSA for bytes32; - - function recover(bytes32 hash, bytes signature) - public - pure - returns (address) - { - return hash.recover(signature); - } - - function toEthSignedMessageHash(bytes32 hash) - public - pure - returns (bytes32) - { - return hash.toEthSignedMessageHash(); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165/ERC165InterfacesSupported.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165/ERC165InterfacesSupported.sol deleted file mode 100644 index e41901a32..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165/ERC165InterfacesSupported.sol +++ /dev/null @@ -1,66 +0,0 @@ -pragma solidity ^0.4.24; - -import "../../introspection/IERC165.sol"; - -/** - * https://github.com/ethereum/EIPs/blob/master/EIPS/eip-214.md#specification - * > Any attempts to make state-changing operations inside an execution instance with STATIC set to true will instead throw an exception. - * > These operations include [...], LOG0, LOG1, LOG2, [...] - * - * therefore, because this contract is staticcall'd we need to not emit events (which is how solidity-coverage works) - * solidity-coverage ignores the /mocks folder, so we duplicate its implementation here to avoid instrumenting it - */ -contract SupportsInterfaceWithLookupMock is IERC165 { - - bytes4 public constant InterfaceId_ERC165 = 0x01ffc9a7; - /** - * 0x01ffc9a7 === - * bytes4(keccak256('supportsInterface(bytes4)')) - */ - - /** - * @dev a mapping of interface id to whether or not it's supported - */ - mapping(bytes4 => bool) private _supportedInterfaces; - - /** - * @dev A contract implementing SupportsInterfaceWithLookup - * implement ERC165 itself - */ - constructor() - public - { - _registerInterface(InterfaceId_ERC165); - } - - /** - * @dev implement supportsInterface(bytes4) using a lookup table - */ - function supportsInterface(bytes4 interfaceId) - external - view - returns (bool) - { - return _supportedInterfaces[interfaceId]; - } - - /** - * @dev private method for registering an interface - */ - function _registerInterface(bytes4 interfaceId) - internal - { - require(interfaceId != 0xffffffff); - _supportedInterfaces[interfaceId] = true; - } -} - -contract ERC165InterfacesSupported is SupportsInterfaceWithLookupMock { - constructor (bytes4[] interfaceIds) - public - { - for (uint256 i = 0; i < interfaceIds.length; i++) { - _registerInterface(interfaceIds[i]); - } - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165/ERC165NotSupported.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165/ERC165NotSupported.sol deleted file mode 100644 index 156ef8e8b..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165/ERC165NotSupported.sol +++ /dev/null @@ -1,5 +0,0 @@ -pragma solidity ^0.4.24; - -contract ERC165NotSupported { - -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165CheckerMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165CheckerMock.sol deleted file mode 100644 index 559cea0d7..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165CheckerMock.sol +++ /dev/null @@ -1,31 +0,0 @@ -pragma solidity ^0.4.24; - -import "../introspection/ERC165Checker.sol"; - -contract ERC165CheckerMock { - using ERC165Checker for address; - - function supportsERC165(address account) - public - view - returns (bool) - { - return account._supportsERC165(); - } - - function supportsInterface(address account, bytes4 interfaceId) - public - view - returns (bool) - { - return account._supportsInterface(interfaceId); - } - - function supportsAllInterfaces(address account, bytes4[] interfaceIds) - public - view - returns (bool) - { - return account._supportsAllInterfaces(interfaceIds); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165Mock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165Mock.sol deleted file mode 100644 index c42ba62f2..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC165Mock.sol +++ /dev/null @@ -1,11 +0,0 @@ -pragma solidity ^0.4.24; - -import "../introspection/ERC165.sol"; - -contract ERC165Mock is ERC165 { - function registerInterface(bytes4 interfaceId) - public - { - _registerInterface(interfaceId); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20BurnableMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20BurnableMock.sol deleted file mode 100644 index 2c8b3b54a..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20BurnableMock.sol +++ /dev/null @@ -1,11 +0,0 @@ -pragma solidity ^0.4.24; - -import "../token/ERC20/ERC20Burnable.sol"; - -contract ERC20BurnableMock is ERC20Burnable { - - constructor(address initialAccount, uint256 initialBalance) public { - _mint(initialAccount, initialBalance); - } - -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20MintableMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20MintableMock.sol deleted file mode 100644 index 31384c790..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20MintableMock.sol +++ /dev/null @@ -1,7 +0,0 @@ -pragma solidity ^0.4.24; - -import "../token/ERC20/ERC20Mintable.sol"; -import "./MinterRoleMock.sol"; - -contract ERC20MintableMock is ERC20Mintable, MinterRoleMock { -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20Mock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20Mock.sol deleted file mode 100644 index ab0877653..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20Mock.sol +++ /dev/null @@ -1,24 +0,0 @@ -pragma solidity ^0.4.24; - -import "../token/ERC20/ERC20.sol"; - -// mock class using ERC20 -contract ERC20Mock is ERC20 { - - constructor(address initialAccount, uint256 initialBalance) public { - _mint(initialAccount, initialBalance); - } - - function mint(address account, uint256 amount) public { - _mint(account, amount); - } - - function burn(address account, uint256 amount) public { - _burn(account, amount); - } - - function burnFrom(address account, uint256 amount) public { - _burnFrom(account, amount); - } - -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20PausableMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20PausableMock.sol deleted file mode 100644 index c6c0fd5ed..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20PausableMock.sol +++ /dev/null @@ -1,13 +0,0 @@ -pragma solidity ^0.4.24; - -import "../token/ERC20/ERC20Pausable.sol"; -import "./PauserRoleMock.sol"; - -// mock class using ERC20Pausable -contract ERC20PausableMock is ERC20Pausable, PauserRoleMock { - - constructor(address initialAccount, uint initialBalance) public { - _mint(initialAccount, initialBalance); - } - -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20WithMetadataMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20WithMetadataMock.sol deleted file mode 100644 index ec2d122a1..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC20WithMetadataMock.sol +++ /dev/null @@ -1,11 +0,0 @@ -pragma solidity ^0.4.24; - -import "../token/ERC20/ERC20.sol"; -import "../drafts/ERC1046/TokenMetadata.sol"; - -contract ERC20WithMetadataMock is ERC20, ERC20WithMetadata { - constructor(string tokenURI) public - ERC20WithMetadata(tokenURI) - { - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721FullMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721FullMock.sol deleted file mode 100644 index 2d85e7372..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721FullMock.sol +++ /dev/null @@ -1,32 +0,0 @@ -pragma solidity ^0.4.24; - -import "../token/ERC721/ERC721Full.sol"; -import "../token/ERC721/ERC721Mintable.sol"; -import "../token/ERC721/ERC721MetadataMintable.sol"; -import "../token/ERC721/ERC721Burnable.sol"; - -/** - * @title ERC721FullMock - * This mock just provides a public mint and burn functions for testing purposes, - * and a public setter for metadata URI - */ -contract ERC721FullMock - is ERC721Full, ERC721Mintable, ERC721MetadataMintable, ERC721Burnable { - - constructor(string name, string symbol) public - ERC721Mintable() - ERC721Full(name, symbol) - {} - - function exists(uint256 tokenId) public view returns (bool) { - return _exists(tokenId); - } - - function setTokenURI(uint256 tokenId, string uri) public { - _setTokenURI(tokenId, uri); - } - - function removeTokenFrom(address from, uint256 tokenId) public { - _removeTokenFrom(from, tokenId); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721MintableBurnableImpl.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721MintableBurnableImpl.sol deleted file mode 100644 index 51d3ff4f6..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721MintableBurnableImpl.sol +++ /dev/null @@ -1,20 +0,0 @@ -pragma solidity ^0.4.24; - -import "../token/ERC721/ERC721Full.sol"; -import "../token/ERC721/ERC721Mintable.sol"; -import "../token/ERC721/ERC721MetadataMintable.sol"; -import "../token/ERC721/ERC721Burnable.sol"; - -/** - * @title ERC721MintableBurnableImpl - */ -contract ERC721MintableBurnableImpl - is ERC721Full, ERC721Mintable, ERC721MetadataMintable, ERC721Burnable { - - constructor() - ERC721Mintable() - ERC721Full("Test", "TEST") - public - { - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721Mock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721Mock.sol deleted file mode 100644 index 514d3bdbe..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721Mock.sol +++ /dev/null @@ -1,17 +0,0 @@ -pragma solidity ^0.4.24; - -import "../token/ERC721/ERC721.sol"; - -/** - * @title ERC721Mock - * This mock just provides a public mint and burn functions for testing purposes - */ -contract ERC721Mock is ERC721 { - function mint(address to, uint256 tokenId) public { - _mint(to, tokenId); - } - - function burn(uint256 tokenId) public { - _burn(ownerOf(tokenId), tokenId); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721PausableMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721PausableMock.sol deleted file mode 100644 index 9751d04cb..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721PausableMock.sol +++ /dev/null @@ -1,22 +0,0 @@ -pragma solidity ^0.4.24; - -import "../token/ERC721/ERC721Pausable.sol"; -import "./PauserRoleMock.sol"; - -/** - * @title ERC721PausableMock - * This mock just provides a public mint, burn and exists functions for testing purposes - */ -contract ERC721PausableMock is ERC721Pausable, PauserRoleMock { - function mint(address to, uint256 tokenId) public { - super._mint(to, tokenId); - } - - function burn(uint256 tokenId) public { - super._burn(ownerOf(tokenId), tokenId); - } - - function exists(uint256 tokenId) public view returns (bool) { - return super._exists(tokenId); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721ReceiverMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721ReceiverMock.sol deleted file mode 100644 index 57fb04e3a..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ERC721ReceiverMock.sol +++ /dev/null @@ -1,41 +0,0 @@ -pragma solidity ^0.4.24; - -import "../token/ERC721/IERC721Receiver.sol"; - -contract ERC721ReceiverMock is IERC721Receiver { - bytes4 private _retval; - bool private _reverts; - - event Received( - address operator, - address from, - uint256 tokenId, - bytes data, - uint256 gas - ); - - constructor(bytes4 retval, bool reverts) public { - _retval = retval; - _reverts = reverts; - } - - function onERC721Received( - address operator, - address from, - uint256 tokenId, - bytes data - ) - public - returns(bytes4) - { - require(!_reverts); - emit Received( - operator, - from, - tokenId, - data, - gasleft() // msg.gas was deprecated in solidityv0.4.21 - ); - return _retval; - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/EventEmitter.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/EventEmitter.sol deleted file mode 100644 index 71582d9f5..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/EventEmitter.sol +++ /dev/null @@ -1,62 +0,0 @@ -pragma solidity ^0.4.24; - -contract EventEmitter { - event Argumentless(); - event ShortUint(uint8 value); - event ShortInt(int8 value); - event LongUint(uint256 value); - event LongInt(int256 value); - event Address(address value); - event Boolean(bool value); - event String(string value); - event LongUintBooleanString( - uint256 uintValue, - bool booleanValue, - string stringValue - ); - - function emitArgumentless() public { - emit Argumentless(); - } - - function emitShortUint(uint8 value) public { - emit ShortUint(value); - } - - function emitShortInt(int8 value) public { - emit ShortInt(value); - } - - function emitLongUint(uint256 value) public { - emit LongUint(value); - } - - function emitLongInt(int256 value) public { - emit LongInt(value); - } - - function emitAddress(address value) public { - emit Address(value); - } - - function emitBoolean(bool value) public { - emit Boolean(value); - } - - function emitString(string value) public { - emit String(value); - } - - function emitLongUintBooleanString( - uint256 uintValue, - bool booleanValue, - string stringValue) - public { - emit LongUintBooleanString(uintValue, booleanValue, stringValue); - } - - function emitLongUintAndBoolean(uint256 uintValue, bool boolValue) public { - emit LongUint(uintValue); - emit Boolean(boolValue); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/FinalizableCrowdsaleImpl.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/FinalizableCrowdsaleImpl.sol deleted file mode 100644 index 084780b1d..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/FinalizableCrowdsaleImpl.sol +++ /dev/null @@ -1,21 +0,0 @@ -pragma solidity ^0.4.24; - -import "../token/ERC20/IERC20.sol"; -import "../crowdsale/distribution/FinalizableCrowdsale.sol"; - -contract FinalizableCrowdsaleImpl is FinalizableCrowdsale { - - constructor ( - uint256 openingTime, - uint256 closingTime, - uint256 rate, - address wallet, - IERC20 token - ) - public - Crowdsale(rate, wallet, token) - TimedCrowdsale(openingTime, closingTime) - { - } - -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/IncreasingPriceCrowdsaleImpl.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/IncreasingPriceCrowdsaleImpl.sol deleted file mode 100644 index 6f1f2e2a0..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/IncreasingPriceCrowdsaleImpl.sol +++ /dev/null @@ -1,23 +0,0 @@ -pragma solidity ^0.4.24; - -import "../crowdsale/price/IncreasingPriceCrowdsale.sol"; -import "../math/SafeMath.sol"; - -contract IncreasingPriceCrowdsaleImpl is IncreasingPriceCrowdsale { - - constructor ( - uint256 openingTime, - uint256 closingTime, - address wallet, - IERC20 token, - uint256 initialRate, - uint256 finalRate - ) - public - Crowdsale(initialRate, wallet, token) - TimedCrowdsale(openingTime, closingTime) - IncreasingPriceCrowdsale(initialRate, finalRate) - { - } - -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/IndividuallyCappedCrowdsaleImpl.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/IndividuallyCappedCrowdsaleImpl.sol deleted file mode 100644 index 1bcb95301..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/IndividuallyCappedCrowdsaleImpl.sol +++ /dev/null @@ -1,19 +0,0 @@ -pragma solidity ^0.4.24; - -import "../token/ERC20/IERC20.sol"; -import "../crowdsale/validation/IndividuallyCappedCrowdsale.sol"; -import "./CapperRoleMock.sol"; - -contract IndividuallyCappedCrowdsaleImpl - is IndividuallyCappedCrowdsale, CapperRoleMock { - - constructor( - uint256 rate, - address wallet, - IERC20 token - ) - public - Crowdsale(rate, wallet, token) - { - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MathMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MathMock.sol deleted file mode 100644 index 72f7fc204..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MathMock.sol +++ /dev/null @@ -1,17 +0,0 @@ -pragma solidity ^0.4.24; - -import "../math/Math.sol"; - -contract MathMock { - function max(uint256 a, uint256 b) public pure returns (uint256) { - return Math.max(a, b); - } - - function min(uint256 a, uint256 b) public pure returns (uint256) { - return Math.min(a, b); - } - - function average(uint256 a, uint256 b) public pure returns (uint256) { - return Math.average(a, b); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MerkleProofWrapper.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MerkleProofWrapper.sol deleted file mode 100644 index b359dc790..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MerkleProofWrapper.sol +++ /dev/null @@ -1,18 +0,0 @@ -pragma solidity ^0.4.24; - -import { MerkleProof } from "../cryptography/MerkleProof.sol"; - -contract MerkleProofWrapper { - - function verify( - bytes32[] proof, - bytes32 root, - bytes32 leaf - ) - public - pure - returns (bool) - { - return MerkleProof.verify(proof, root, leaf); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MintedCrowdsaleImpl.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MintedCrowdsaleImpl.sol deleted file mode 100644 index 518371b75..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MintedCrowdsaleImpl.sol +++ /dev/null @@ -1,18 +0,0 @@ -pragma solidity ^0.4.24; - -import "../token/ERC20/ERC20Mintable.sol"; -import "../crowdsale/emission/MintedCrowdsale.sol"; - -contract MintedCrowdsaleImpl is MintedCrowdsale { - - constructor ( - uint256 rate, - address wallet, - ERC20Mintable token - ) - public - Crowdsale(rate, wallet, token) - { - } - -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MinterRoleMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MinterRoleMock.sol deleted file mode 100644 index 45e5a4195..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/MinterRoleMock.sol +++ /dev/null @@ -1,17 +0,0 @@ -pragma solidity ^0.4.24; - -import "../access/roles/MinterRole.sol"; - -contract MinterRoleMock is MinterRole { - function removeMinter(address account) public { - _removeMinter(account); - } - - function onlyMinterMock() public view onlyMinter { - } - - // Causes a compilation error if super._removeMinter is not internal - function _removeMinter(address account) internal { - super._removeMinter(account); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/OwnableMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/OwnableMock.sol deleted file mode 100644 index e16a89012..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/OwnableMock.sol +++ /dev/null @@ -1,6 +0,0 @@ -pragma solidity ^0.4.24; - -import "../ownership/Ownable.sol"; - -contract OwnableMock is Ownable { -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PausableMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PausableMock.sol deleted file mode 100644 index 72ec843ed..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PausableMock.sol +++ /dev/null @@ -1,24 +0,0 @@ -pragma solidity ^0.4.24; - -import "../lifecycle/Pausable.sol"; -import "./PauserRoleMock.sol"; - -// mock class using Pausable -contract PausableMock is Pausable, PauserRoleMock { - bool public drasticMeasureTaken; - uint256 public count; - - constructor() public { - drasticMeasureTaken = false; - count = 0; - } - - function normalProcess() external whenNotPaused { - count++; - } - - function drasticMeasure() external whenPaused { - drasticMeasureTaken = true; - } - -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PauserRoleMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PauserRoleMock.sol deleted file mode 100644 index 267101e4a..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PauserRoleMock.sol +++ /dev/null @@ -1,17 +0,0 @@ -pragma solidity ^0.4.24; - -import "../access/roles/PauserRole.sol"; - -contract PauserRoleMock is PauserRole { - function removePauser(address account) public { - _removePauser(account); - } - - function onlyPauserMock() public view onlyPauser { - } - - // Causes a compilation error if super._removePauser is not internal - function _removePauser(address account) internal { - super._removePauser(account); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PostDeliveryCrowdsaleImpl.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PostDeliveryCrowdsaleImpl.sol deleted file mode 100644 index 98d056c66..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PostDeliveryCrowdsaleImpl.sol +++ /dev/null @@ -1,21 +0,0 @@ -pragma solidity ^0.4.24; - -import "../token/ERC20/IERC20.sol"; -import "../crowdsale/distribution/PostDeliveryCrowdsale.sol"; - -contract PostDeliveryCrowdsaleImpl is PostDeliveryCrowdsale { - - constructor ( - uint256 openingTime, - uint256 closingTime, - uint256 rate, - address wallet, - IERC20 token - ) - public - TimedCrowdsale(openingTime, closingTime) - Crowdsale(rate, wallet, token) - { - } - -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PullPaymentMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PullPaymentMock.sol deleted file mode 100644 index 63076c904..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/PullPaymentMock.sol +++ /dev/null @@ -1,15 +0,0 @@ -pragma solidity ^0.4.24; - -import "../payment/PullPayment.sol"; - -// mock class using PullPayment -contract PullPaymentMock is PullPayment { - - constructor() public payable { } - - // test helper function to call asyncTransfer - function callTransfer(address dest, uint256 amount) public { - _asyncTransfer(dest, amount); - } - -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ReentrancyAttack.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ReentrancyAttack.sol deleted file mode 100644 index 96231de27..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ReentrancyAttack.sol +++ /dev/null @@ -1,10 +0,0 @@ -pragma solidity ^0.4.24; - -contract ReentrancyAttack { - - function callSender(bytes4 data) public { - // solium-disable-next-line security/no-low-level-calls - require(msg.sender.call(abi.encodeWithSelector(data))); - } - -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ReentrancyMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ReentrancyMock.sol deleted file mode 100644 index 474ecd433..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/ReentrancyMock.sol +++ /dev/null @@ -1,44 +0,0 @@ -pragma solidity ^0.4.24; - -import "../utils/ReentrancyGuard.sol"; -import "./ReentrancyAttack.sol"; - -contract ReentrancyMock is ReentrancyGuard { - - uint256 public counter; - - constructor() public { - counter = 0; - } - - function callback() external nonReentrant { - count(); - } - - function countLocalRecursive(uint256 n) public nonReentrant { - if (n > 0) { - count(); - countLocalRecursive(n - 1); - } - } - - function countThisRecursive(uint256 n) public nonReentrant { - if (n > 0) { - count(); - // solium-disable-next-line security/no-low-level-calls - bool result = address(this).call(abi.encodeWithSignature("countThisRecursive(uint256)", n - 1)); - require(result == true); - } - } - - function countAndCall(ReentrancyAttack attacker) public nonReentrant { - count(); - bytes4 func = bytes4(keccak256("callback()")); - attacker.callSender(func); - } - - function count() private { - counter += 1; - } - -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/RefundableCrowdsaleImpl.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/RefundableCrowdsaleImpl.sol deleted file mode 100644 index a14dfbcb3..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/RefundableCrowdsaleImpl.sol +++ /dev/null @@ -1,23 +0,0 @@ -pragma solidity ^0.4.24; - -import "../token/ERC20/ERC20Mintable.sol"; -import "../crowdsale/distribution/RefundableCrowdsale.sol"; - -contract RefundableCrowdsaleImpl is RefundableCrowdsale { - - constructor ( - uint256 openingTime, - uint256 closingTime, - uint256 rate, - address wallet, - ERC20Mintable token, - uint256 goal - ) - public - Crowdsale(rate, wallet, token) - TimedCrowdsale(openingTime, closingTime) - RefundableCrowdsale(goal) - { - } - -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/RolesMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/RolesMock.sol deleted file mode 100644 index bfcee20ee..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/RolesMock.sol +++ /dev/null @@ -1,21 +0,0 @@ -pragma solidity ^0.4.24; - -import "../access/Roles.sol"; - -contract RolesMock { - using Roles for Roles.Role; - - Roles.Role private dummyRole; - - function add(address account) public { - dummyRole.add(account); - } - - function remove(address account) public { - dummyRole.remove(account); - } - - function has(address account) public view returns (bool) { - return dummyRole.has(account); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SafeERC20Helper.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SafeERC20Helper.sol deleted file mode 100644 index 7e639f86f..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SafeERC20Helper.sol +++ /dev/null @@ -1,112 +0,0 @@ -pragma solidity ^0.4.24; - -import "../token/ERC20/IERC20.sol"; -import "../token/ERC20/SafeERC20.sol"; - -contract ERC20FailingMock { - uint256 private _allowance; - - function transfer(address, uint256) public returns (bool) { - return false; - } - - function transferFrom(address, address, uint256) public returns (bool) { - return false; - } - - function approve(address, uint256) public returns (bool) { - return false; - } - - function allowance(address, address) public view returns (uint256) { - return 0; - } -} - -contract ERC20SucceedingMock { - uint256 private _allowance; - - function transfer(address, uint256) public returns (bool) { - return true; - } - - function transferFrom(address, address, uint256) public returns (bool) { - return true; - } - - function approve(address, uint256) public returns (bool) { - return true; - } - - function setAllowance(uint256 allowance_) public { - _allowance = allowance_; - } - - function allowance(address, address) public view returns (uint256) { - return _allowance; - } -} - -contract SafeERC20Helper { - using SafeERC20 for IERC20; - - IERC20 private _failing; - IERC20 private _succeeding; - - constructor() public { - _failing = IERC20(new ERC20FailingMock()); - _succeeding = IERC20(new ERC20SucceedingMock()); - } - - // Using _failing - - function doFailingTransfer() public { - _failing.safeTransfer(address(0), 0); - } - - function doFailingTransferFrom() public { - _failing.safeTransferFrom(address(0), address(0), 0); - } - - function doFailingApprove() public { - _failing.safeApprove(address(0), 0); - } - - function doFailingIncreaseAllowance() public { - _failing.safeIncreaseAllowance(address(0), 0); - } - - function doFailingDecreaseAllowance() public { - _failing.safeDecreaseAllowance(address(0), 0); - } - - // Using _succeeding - - function doSucceedingTransfer() public { - _succeeding.safeTransfer(address(0), 0); - } - - function doSucceedingTransferFrom() public { - _succeeding.safeTransferFrom(address(0), address(0), 0); - } - - function doSucceedingApprove(uint256 amount) public { - _succeeding.safeApprove(address(0), amount); - } - - function doSucceedingIncreaseAllowance(uint256 amount) public { - _succeeding.safeIncreaseAllowance(address(0), amount); - } - - function doSucceedingDecreaseAllowance(uint256 amount) public { - _succeeding.safeDecreaseAllowance(address(0), amount); - } - - function setAllowance(uint256 allowance_) public { - ERC20SucceedingMock(_succeeding).setAllowance(allowance_); - } - - function allowance() public view returns (uint256) { - return _succeeding.allowance(address(0), address(0)); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SafeMathMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SafeMathMock.sol deleted file mode 100644 index 7ddf17e9f..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SafeMathMock.sol +++ /dev/null @@ -1,26 +0,0 @@ -pragma solidity ^0.4.24; - -import "../math/SafeMath.sol"; - -contract SafeMathMock { - - function mul(uint256 a, uint256 b) public pure returns (uint256) { - return SafeMath.mul(a, b); - } - - function div(uint256 a, uint256 b) public pure returns (uint256) { - return SafeMath.div(a, b); - } - - function sub(uint256 a, uint256 b) public pure returns (uint256) { - return SafeMath.sub(a, b); - } - - function add(uint256 a, uint256 b) public pure returns (uint256) { - return SafeMath.add(a, b); - } - - function mod(uint256 a, uint256 b) public pure returns (uint256) { - return SafeMath.mod(a, b); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SecondaryMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SecondaryMock.sol deleted file mode 100644 index 268c12516..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SecondaryMock.sol +++ /dev/null @@ -1,8 +0,0 @@ -pragma solidity ^0.4.24; - -import "../ownership/Secondary.sol"; - -contract SecondaryMock is Secondary { - function onlyPrimaryMock() public view onlyPrimary { - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SignatureBouncerMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SignatureBouncerMock.sol deleted file mode 100644 index 85076eae6..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SignatureBouncerMock.sol +++ /dev/null @@ -1,73 +0,0 @@ -pragma solidity ^0.4.24; - -import "../drafts/SignatureBouncer.sol"; -import "./SignerRoleMock.sol"; - -contract SignatureBouncerMock is SignatureBouncer, SignerRoleMock { - function checkValidSignature(address account, bytes signature) - public - view - returns (bool) - { - return _isValidSignature(account, signature); - } - - function onlyWithValidSignature(bytes signature) - public - onlyValidSignature(signature) - view - { - - } - - function checkValidSignatureAndMethod(address account, bytes signature) - public - view - returns (bool) - { - return _isValidSignatureAndMethod(account, signature); - } - - function onlyWithValidSignatureAndMethod(bytes signature) - public - onlyValidSignatureAndMethod(signature) - view - { - - } - - function checkValidSignatureAndData( - address account, - bytes, - uint, - bytes signature - ) - public - view - returns (bool) - { - return _isValidSignatureAndData(account, signature); - } - - function onlyWithValidSignatureAndData(uint, bytes signature) - public - onlyValidSignatureAndData(signature) - view - { - - } - - function theWrongMethod(bytes) - public - pure - { - - } - - function tooShortMsgData() - public - onlyValidSignatureAndData("") - view - { - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SignerRoleMock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SignerRoleMock.sol deleted file mode 100644 index faf92db68..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/SignerRoleMock.sol +++ /dev/null @@ -1,17 +0,0 @@ -pragma solidity ^0.4.24; - -import "../access/roles/SignerRole.sol"; - -contract SignerRoleMock is SignerRole { - function removeSigner(address account) public { - _removeSigner(account); - } - - function onlySignerMock() public view onlySigner { - } - - // Causes a compilation error if super._removeSigner is not internal - function _removeSigner(address account) internal { - super._removeSigner(account); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/TimedCrowdsaleImpl.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/TimedCrowdsaleImpl.sol deleted file mode 100644 index f16e5eb2a..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/mocks/TimedCrowdsaleImpl.sol +++ /dev/null @@ -1,21 +0,0 @@ -pragma solidity ^0.4.24; - -import "../token/ERC20/IERC20.sol"; -import "../crowdsale/validation/TimedCrowdsale.sol"; - -contract TimedCrowdsaleImpl is TimedCrowdsale { - - constructor ( - uint256 openingTime, - uint256 closingTime, - uint256 rate, - address wallet, - IERC20 token - ) - public - Crowdsale(rate, wallet, token) - TimedCrowdsale(openingTime, closingTime) - { - } - -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/ownership/Ownable.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/ownership/Ownable.sol deleted file mode 100644 index 7b5b72102..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/ownership/Ownable.sol +++ /dev/null @@ -1,75 +0,0 @@ -pragma solidity ^0.4.24; - -/** - * @title Ownable - * @dev The Ownable contract has an owner address, and provides basic authorization control - * functions, this simplifies the implementation of "user permissions". - */ -contract Ownable { - address private _owner; - - event OwnershipTransferred( - address indexed previousOwner, - address indexed newOwner - ); - - /** - * @dev The Ownable constructor sets the original `owner` of the contract to the sender - * account. - */ - constructor() internal { - _owner = msg.sender; - emit OwnershipTransferred(address(0), _owner); - } - - /** - * @return the address of the owner. - */ - function owner() public view returns(address) { - return _owner; - } - - /** - * @dev Throws if called by any account other than the owner. - */ - modifier onlyOwner() { - require(isOwner()); - _; - } - - /** - * @return true if `msg.sender` is the owner of the contract. - */ - function isOwner() public view returns(bool) { - return msg.sender == _owner; - } - - /** - * @dev Allows the current owner to relinquish control of the contract. - * @notice Renouncing to ownership will leave the contract without an owner. - * It will not be possible to call the functions with the `onlyOwner` - * modifier anymore. - */ - function renounceOwnership() public onlyOwner { - emit OwnershipTransferred(_owner, address(0)); - _owner = address(0); - } - - /** - * @dev Allows the current owner to transfer control of the contract to a newOwner. - * @param newOwner The address to transfer ownership to. - */ - function transferOwnership(address newOwner) public onlyOwner { - _transferOwnership(newOwner); - } - - /** - * @dev Transfers control of the contract to a newOwner. - * @param newOwner The address to transfer ownership to. - */ - function _transferOwnership(address newOwner) internal { - require(newOwner != address(0)); - emit OwnershipTransferred(_owner, newOwner); - _owner = newOwner; - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/ownership/Secondary.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/ownership/Secondary.sol deleted file mode 100644 index 67d2250d5..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/ownership/Secondary.sol +++ /dev/null @@ -1,46 +0,0 @@ -pragma solidity ^0.4.24; - -/** - * @title Secondary - * @dev A Secondary contract can only be used by its primary account (the one that created it) - */ -contract Secondary { - address private _primary; - - event PrimaryTransferred( - address recipient - ); - - /** - * @dev Sets the primary account to the one that is creating the Secondary contract. - */ - constructor() internal { - _primary = msg.sender; - emit PrimaryTransferred(_primary); - } - - /** - * @dev Reverts if called from any account other than the primary. - */ - modifier onlyPrimary() { - require(msg.sender == _primary); - _; - } - - /** - * @return the address of the primary. - */ - function primary() public view returns (address) { - return _primary; - } - - /** - * @dev Transfers contract to a new primary. - * @param recipient The address of new primary. - */ - function transferPrimary(address recipient) public onlyPrimary { - require(recipient != address(0)); - _primary = recipient; - emit PrimaryTransferred(_primary); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/PaymentSplitter.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/PaymentSplitter.sol deleted file mode 100644 index 0a1b470ef..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/PaymentSplitter.sol +++ /dev/null @@ -1,116 +0,0 @@ -pragma solidity ^0.4.24; - -import "../math/SafeMath.sol"; - -/** - * @title PaymentSplitter - * @dev This contract can be used when payments need to be received by a group - * of people and split proportionately to some number of shares they own. - */ -contract PaymentSplitter { - using SafeMath for uint256; - - event PayeeAdded(address account, uint256 shares); - event PaymentReleased(address to, uint256 amount); - event PaymentReceived(address from, uint256 amount); - - uint256 private _totalShares; - uint256 private _totalReleased; - - mapping(address => uint256) private _shares; - mapping(address => uint256) private _released; - address[] private _payees; - - /** - * @dev Constructor - */ - constructor(address[] payees, uint256[] shares) public payable { - require(payees.length == shares.length); - require(payees.length > 0); - - for (uint256 i = 0; i < payees.length; i++) { - _addPayee(payees[i], shares[i]); - } - } - - /** - * @dev payable fallback - */ - function () external payable { - emit PaymentReceived(msg.sender, msg.value); - } - - /** - * @return the total shares of the contract. - */ - function totalShares() public view returns(uint256) { - return _totalShares; - } - - /** - * @return the total amount already released. - */ - function totalReleased() public view returns(uint256) { - return _totalReleased; - } - - /** - * @return the shares of an account. - */ - function shares(address account) public view returns(uint256) { - return _shares[account]; - } - - /** - * @return the amount already released to an account. - */ - function released(address account) public view returns(uint256) { - return _released[account]; - } - - /** - * @return the address of a payee. - */ - function payee(uint256 index) public view returns(address) { - return _payees[index]; - } - - /** - * @dev Release one of the payee's proportional payment. - * @param account Whose payments will be released. - */ - function release(address account) public { - require(_shares[account] > 0); - - uint256 totalReceived = address(this).balance.add(_totalReleased); - uint256 payment = totalReceived.mul( - _shares[account]).div( - _totalShares).sub( - _released[account] - ); - - require(payment != 0); - - _released[account] = _released[account].add(payment); - _totalReleased = _totalReleased.add(payment); - - account.transfer(payment); - emit PaymentReleased(account, payment); - } - - /** - * @dev Add a new payee to the contract. - * @param account The address of the payee to add. - * @param shares_ The number of shares owned by the payee. - */ - function _addPayee(address account, uint256 shares_) private { - require(account != address(0)); - require(shares_ > 0); - require(_shares[account] == 0); - - _payees.push(account); - _shares[account] = shares_; - _totalShares = _totalShares.add(shares_); - emit PayeeAdded(account, shares_); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/PullPayment.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/PullPayment.sol deleted file mode 100644 index f6d7e2c1e..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/PullPayment.sol +++ /dev/null @@ -1,41 +0,0 @@ -pragma solidity ^0.4.24; - -import "./escrow/Escrow.sol"; - -/** - * @title PullPayment - * @dev Base contract supporting async send for pull payments. Inherit from this - * contract and use _asyncTransfer instead of send or transfer. - */ -contract PullPayment { - Escrow private _escrow; - - constructor() internal { - _escrow = new Escrow(); - } - - /** - * @dev Withdraw accumulated balance. - * @param payee Whose balance will be withdrawn. - */ - function withdrawPayments(address payee) public { - _escrow.withdraw(payee); - } - - /** - * @dev Returns the credit owed to an address. - * @param dest The creditor's address. - */ - function payments(address dest) public view returns (uint256) { - return _escrow.depositsOf(dest); - } - - /** - * @dev Called by the payer to store the sent amount as credit to be pulled. - * @param dest The destination address of the funds. - * @param amount The amount to transfer. - */ - function _asyncTransfer(address dest, uint256 amount) internal { - _escrow.deposit.value(amount)(dest); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/escrow/ConditionalEscrow.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/escrow/ConditionalEscrow.sol deleted file mode 100644 index c3f63ee37..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/escrow/ConditionalEscrow.sol +++ /dev/null @@ -1,22 +0,0 @@ -pragma solidity ^0.4.24; - -import "./Escrow.sol"; - -/** - * @title ConditionalEscrow - * @dev Base abstract escrow to only allow withdrawal if a condition is met. - * @dev Intended usage: See Escrow.sol. Same usage guidelines apply here. - */ -contract ConditionalEscrow is Escrow { - /** - * @dev Returns whether an address is allowed to withdraw their funds. To be - * implemented by derived contracts. - * @param payee The destination address of the funds. - */ - function withdrawalAllowed(address payee) public view returns (bool); - - function withdraw(address payee) public { - require(withdrawalAllowed(payee)); - super.withdraw(payee); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/escrow/Escrow.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/escrow/Escrow.sol deleted file mode 100644 index b2f2a85ee..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/escrow/Escrow.sol +++ /dev/null @@ -1,54 +0,0 @@ -pragma solidity ^0.4.24; - -import "../../math/SafeMath.sol"; -import "../../ownership/Secondary.sol"; - - /** - * @title Escrow - * @dev Base escrow contract, holds funds designated for a payee until they - * withdraw them. - * @dev Intended usage: This contract (and derived escrow contracts) should be a - * standalone contract, that only interacts with the contract that instantiated - * it. That way, it is guaranteed that all Ether will be handled according to - * the Escrow rules, and there is no need to check for payable functions or - * transfers in the inheritance tree. The contract that uses the escrow as its - * payment method should be its primary, and provide public methods redirecting - * to the escrow's deposit and withdraw. - */ -contract Escrow is Secondary { - using SafeMath for uint256; - - event Deposited(address indexed payee, uint256 weiAmount); - event Withdrawn(address indexed payee, uint256 weiAmount); - - mapping(address => uint256) private _deposits; - - function depositsOf(address payee) public view returns (uint256) { - return _deposits[payee]; - } - - /** - * @dev Stores the sent amount as credit to be withdrawn. - * @param payee The destination address of the funds. - */ - function deposit(address payee) public onlyPrimary payable { - uint256 amount = msg.value; - _deposits[payee] = _deposits[payee].add(amount); - - emit Deposited(payee, amount); - } - - /** - * @dev Withdraw accumulated balance for a payee. - * @param payee The address whose funds will be withdrawn and transferred to. - */ - function withdraw(address payee) public onlyPrimary { - uint256 payment = _deposits[payee]; - - _deposits[payee] = 0; - - payee.transfer(payment); - - emit Withdrawn(payee, payment); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/escrow/RefundEscrow.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/escrow/RefundEscrow.sol deleted file mode 100644 index a776a81c8..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/payment/escrow/RefundEscrow.sol +++ /dev/null @@ -1,91 +0,0 @@ -pragma solidity ^0.4.24; - -import "./ConditionalEscrow.sol"; - -/** - * @title RefundEscrow - * @dev Escrow that holds funds for a beneficiary, deposited from multiple - * parties. - * @dev Intended usage: See Escrow.sol. Same usage guidelines apply here. - * @dev The primary account (that is, the contract that instantiates this - * contract) may deposit, close the deposit period, and allow for either - * withdrawal by the beneficiary, or refunds to the depositors. All interactions - * with RefundEscrow will be made through the primary contract. See the - * RefundableCrowdsale contract for an example of RefundEscrow’s use. - */ -contract RefundEscrow is ConditionalEscrow { - enum State { Active, Refunding, Closed } - - event RefundsClosed(); - event RefundsEnabled(); - - State private _state; - address private _beneficiary; - - /** - * @dev Constructor. - * @param beneficiary The beneficiary of the deposits. - */ - constructor(address beneficiary) public { - require(beneficiary != address(0)); - _beneficiary = beneficiary; - _state = State.Active; - } - - /** - * @return the current state of the escrow. - */ - function state() public view returns (State) { - return _state; - } - - /** - * @return the beneficiary of the escrow. - */ - function beneficiary() public view returns (address) { - return _beneficiary; - } - - /** - * @dev Stores funds that may later be refunded. - * @param refundee The address funds will be sent to if a refund occurs. - */ - function deposit(address refundee) public payable { - require(_state == State.Active); - super.deposit(refundee); - } - - /** - * @dev Allows for the beneficiary to withdraw their funds, rejecting - * further deposits. - */ - function close() public onlyPrimary { - require(_state == State.Active); - _state = State.Closed; - emit RefundsClosed(); - } - - /** - * @dev Allows for refunds to take place, rejecting further deposits. - */ - function enableRefunds() public onlyPrimary { - require(_state == State.Active); - _state = State.Refunding; - emit RefundsEnabled(); - } - - /** - * @dev Withdraws the beneficiary's funds. - */ - function beneficiaryWithdraw() public { - require(_state == State.Closed); - _beneficiary.transfer(address(this).balance); - } - - /** - * @dev Returns whether refundees can withdraw their deposits (be refunded). - */ - function withdrawalAllowed(address payee) public view returns (bool) { - return _state == State.Refunding; - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol deleted file mode 100644 index 25b2694a2..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol +++ /dev/null @@ -1,211 +0,0 @@ -pragma solidity ^0.4.24; - -import "./IERC20.sol"; -import "../../math/SafeMath.sol"; - -/** - * @title Standard ERC20 token - * - * @dev Implementation of the basic standard token. - * https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md - * Originally based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol - */ -contract ERC20 is IERC20 { - using SafeMath for uint256; - - mapping (address => uint256) private _balances; - - mapping (address => mapping (address => uint256)) private _allowed; - - uint256 private _totalSupply; - - /** - * @dev Total number of tokens in existence - */ - function totalSupply() public view returns (uint256) { - return _totalSupply; - } - - /** - * @dev Gets the balance of the specified address. - * @param owner The address to query the balance of. - * @return An uint256 representing the amount owned by the passed address. - */ - function balanceOf(address owner) public view returns (uint256) { - return _balances[owner]; - } - - /** - * @dev Function to check the amount of tokens that an owner allowed to a spender. - * @param owner address The address which owns the funds. - * @param spender address The address which will spend the funds. - * @return A uint256 specifying the amount of tokens still available for the spender. - */ - function allowance( - address owner, - address spender - ) - public - view - returns (uint256) - { - return _allowed[owner][spender]; - } - - /** - * @dev Transfer token for a specified address - * @param to The address to transfer to. - * @param value The amount to be transferred. - */ - function transfer(address to, uint256 value) public returns (bool) { - _transfer(msg.sender, to, value); - return true; - } - - /** - * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. - * Beware that changing an allowance with this method brings the risk that someone may use both the old - * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this - * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: - * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 - * @param spender The address which will spend the funds. - * @param value The amount of tokens to be spent. - */ - function approve(address spender, uint256 value) public returns (bool) { - require(spender != address(0)); - - _allowed[msg.sender][spender] = value; - emit Approval(msg.sender, spender, value); - return true; - } - - /** - * @dev Transfer tokens from one address to another - * @param from address The address which you want to send tokens from - * @param to address The address which you want to transfer to - * @param value uint256 the amount of tokens to be transferred - */ - function transferFrom( - address from, - address to, - uint256 value - ) - public - returns (bool) - { - require(value <= _allowed[from][msg.sender]); - - _allowed[from][msg.sender] = _allowed[from][msg.sender].sub(value); - _transfer(from, to, value); - return true; - } - - /** - * @dev Increase the amount of tokens that an owner allowed to a spender. - * approve should be called when allowed_[_spender] == 0. To increment - * allowed value is better to use this function to avoid 2 calls (and wait until - * the first transaction is mined) - * From MonolithDAO Token.sol - * @param spender The address which will spend the funds. - * @param addedValue The amount of tokens to increase the allowance by. - */ - function increaseAllowance( - address spender, - uint256 addedValue - ) - public - returns (bool) - { - require(spender != address(0)); - - _allowed[msg.sender][spender] = ( - _allowed[msg.sender][spender].add(addedValue)); - emit Approval(msg.sender, spender, _allowed[msg.sender][spender]); - return true; - } - - /** - * @dev Decrease the amount of tokens that an owner allowed to a spender. - * approve should be called when allowed_[_spender] == 0. To decrement - * allowed value is better to use this function to avoid 2 calls (and wait until - * the first transaction is mined) - * From MonolithDAO Token.sol - * @param spender The address which will spend the funds. - * @param subtractedValue The amount of tokens to decrease the allowance by. - */ - function decreaseAllowance( - address spender, - uint256 subtractedValue - ) - public - returns (bool) - { - require(spender != address(0)); - - _allowed[msg.sender][spender] = ( - _allowed[msg.sender][spender].sub(subtractedValue)); - emit Approval(msg.sender, spender, _allowed[msg.sender][spender]); - return true; - } - - /** - * @dev Transfer token for a specified addresses - * @param from The address to transfer from. - * @param to The address to transfer to. - * @param value The amount to be transferred. - */ - function _transfer(address from, address to, uint256 value) internal { - require(value <= _balances[from]); - require(to != address(0)); - - _balances[from] = _balances[from].sub(value); - _balances[to] = _balances[to].add(value); - emit Transfer(from, to, value); - } - - /** - * @dev Internal function that mints an amount of the token and assigns it to - * an account. This encapsulates the modification of balances such that the - * proper events are emitted. - * @param account The account that will receive the created tokens. - * @param value The amount that will be created. - */ - function _mint(address account, uint256 value) internal { - require(account != 0); - _totalSupply = _totalSupply.add(value); - _balances[account] = _balances[account].add(value); - emit Transfer(address(0), account, value); - } - - /** - * @dev Internal function that burns an amount of the token of a given - * account. - * @param account The account whose tokens will be burnt. - * @param value The amount that will be burnt. - */ - function _burn(address account, uint256 value) internal { - require(account != 0); - require(value <= _balances[account]); - - _totalSupply = _totalSupply.sub(value); - _balances[account] = _balances[account].sub(value); - emit Transfer(account, address(0), value); - } - - /** - * @dev Internal function that burns an amount of the token of a given - * account, deducting from the sender's allowance for said account. Uses the - * internal burn function. - * @param account The account whose tokens will be burnt. - * @param value The amount that will be burnt. - */ - function _burnFrom(address account, uint256 value) internal { - require(value <= _allowed[account][msg.sender]); - - // Should https://github.com/OpenZeppelin/zeppelin-solidity/issues/707 be accepted, - // this function needs to emit an event with the updated approval. - _allowed[account][msg.sender] = _allowed[account][msg.sender].sub( - value); - _burn(account, value); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol deleted file mode 100644 index ba4a2ccbe..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol +++ /dev/null @@ -1,27 +0,0 @@ -pragma solidity ^0.4.24; - -import "./ERC20.sol"; - -/** - * @title Burnable Token - * @dev Token that can be irreversibly burned (destroyed). - */ -contract ERC20Burnable is ERC20 { - - /** - * @dev Burns a specific amount of tokens. - * @param value The amount of token to be burned. - */ - function burn(uint256 value) public { - _burn(msg.sender, value); - } - - /** - * @dev Burns a specific amount of tokens from the target address and decrements allowance - * @param from address The address which you want to send tokens from - * @param value uint256 The amount of token to be burned - */ - function burnFrom(address from, uint256 value) public { - _burnFrom(from, value); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Capped.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Capped.sol deleted file mode 100644 index a80dd491c..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Capped.sol +++ /dev/null @@ -1,31 +0,0 @@ -pragma solidity ^0.4.24; - -import "./ERC20Mintable.sol"; - -/** - * @title Capped token - * @dev Mintable token with a token cap. - */ -contract ERC20Capped is ERC20Mintable { - - uint256 private _cap; - - constructor(uint256 cap) - public - { - require(cap > 0); - _cap = cap; - } - - /** - * @return the cap for the token minting. - */ - function cap() public view returns(uint256) { - return _cap; - } - - function _mint(address account, uint256 value) internal { - require(totalSupply().add(value) <= _cap); - super._mint(account, value); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol deleted file mode 100644 index 706dbfc46..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol +++ /dev/null @@ -1,42 +0,0 @@ -pragma solidity ^0.4.24; - -import "./IERC20.sol"; - -/** - * @title ERC20Detailed token - * @dev The decimals are only for visualization purposes. - * All the operations are done using the smallest and indivisible token unit, - * just as on Ethereum all the operations are done in wei. - */ -contract ERC20Detailed is IERC20 { - string private _name; - string private _symbol; - uint8 private _decimals; - - constructor(string name, string symbol, uint8 decimals) public { - _name = name; - _symbol = symbol; - _decimals = decimals; - } - - /** - * @return the name of the token. - */ - function name() public view returns(string) { - return _name; - } - - /** - * @return the symbol of the token. - */ - function symbol() public view returns(string) { - return _symbol; - } - - /** - * @return the number of decimals of the token. - */ - function decimals() public view returns(uint8) { - return _decimals; - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol deleted file mode 100644 index eb01f06e7..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol +++ /dev/null @@ -1,28 +0,0 @@ -pragma solidity ^0.4.24; - -import "./ERC20.sol"; -import "../../access/roles/MinterRole.sol"; - -/** - * @title ERC20Mintable - * @dev ERC20 minting logic - */ -contract ERC20Mintable is ERC20, MinterRole { - /** - * @dev Function to mint tokens - * @param to The address that will receive the minted tokens. - * @param value The amount of tokens to mint. - * @return A boolean that indicates if the operation was successful. - */ - function mint( - address to, - uint256 value - ) - public - onlyMinter - returns (bool) - { - _mint(to, value); - return true; - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol deleted file mode 100644 index 8e6aa881f..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol +++ /dev/null @@ -1,67 +0,0 @@ -pragma solidity ^0.4.24; - -import "./ERC20.sol"; -import "../../lifecycle/Pausable.sol"; - -/** - * @title Pausable token - * @dev ERC20 modified with pausable transfers. - **/ -contract ERC20Pausable is ERC20, Pausable { - - function transfer( - address to, - uint256 value - ) - public - whenNotPaused - returns (bool) - { - return super.transfer(to, value); - } - - function transferFrom( - address from, - address to, - uint256 value - ) - public - whenNotPaused - returns (bool) - { - return super.transferFrom(from, to, value); - } - - function approve( - address spender, - uint256 value - ) - public - whenNotPaused - returns (bool) - { - return super.approve(spender, value); - } - - function increaseAllowance( - address spender, - uint addedValue - ) - public - whenNotPaused - returns (bool success) - { - return super.increaseAllowance(spender, addedValue); - } - - function decreaseAllowance( - address spender, - uint subtractedValue - ) - public - whenNotPaused - returns (bool success) - { - return super.decreaseAllowance(spender, subtractedValue); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol deleted file mode 100644 index 37e5a447c..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol +++ /dev/null @@ -1,34 +0,0 @@ -pragma solidity ^0.4.24; - -/** - * @title ERC20 interface - * @dev see https://github.com/ethereum/EIPs/issues/20 - */ -interface IERC20 { - function totalSupply() external view returns (uint256); - - function balanceOf(address who) external view returns (uint256); - - function allowance(address owner, address spender) - external view returns (uint256); - - function transfer(address to, uint256 value) external returns (bool); - - function approve(address spender, uint256 value) - external returns (bool); - - function transferFrom(address from, address to, uint256 value) - external returns (bool); - - event Transfer( - address indexed from, - address indexed to, - uint256 value - ); - - event Approval( - address indexed owner, - address indexed spender, - uint256 value - ); -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol deleted file mode 100644 index 2774afa08..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol +++ /dev/null @@ -1,72 +0,0 @@ -pragma solidity ^0.4.24; - -import "./IERC20.sol"; -import "../../math/SafeMath.sol"; - -/** - * @title SafeERC20 - * @dev Wrappers around ERC20 operations that throw on failure. - * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, - * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. - */ -library SafeERC20 { - - using SafeMath for uint256; - - function safeTransfer( - IERC20 token, - address to, - uint256 value - ) - internal - { - require(token.transfer(to, value)); - } - - function safeTransferFrom( - IERC20 token, - address from, - address to, - uint256 value - ) - internal - { - require(token.transferFrom(from, to, value)); - } - - function safeApprove( - IERC20 token, - address spender, - uint256 value - ) - internal - { - // safeApprove should only be called when setting an initial allowance, - // or when resetting it to zero. To increase and decrease it, use - // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' - require((value == 0) || (token.allowance(msg.sender, spender) == 0)); - require(token.approve(spender, value)); - } - - function safeIncreaseAllowance( - IERC20 token, - address spender, - uint256 value - ) - internal - { - uint256 newAllowance = token.allowance(address(this), spender).add(value); - require(token.approve(spender, newAllowance)); - } - - function safeDecreaseAllowance( - IERC20 token, - address spender, - uint256 value - ) - internal - { - uint256 newAllowance = token.allowance(address(this), spender).sub(value); - require(token.approve(spender, newAllowance)); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/TokenTimelock.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/TokenTimelock.sol deleted file mode 100644 index 55903482b..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC20/TokenTimelock.sol +++ /dev/null @@ -1,69 +0,0 @@ -pragma solidity ^0.4.24; - -import "./SafeERC20.sol"; - -/** - * @title TokenTimelock - * @dev TokenTimelock is a token holder contract that will allow a - * beneficiary to extract the tokens after a given release time - */ -contract TokenTimelock { - using SafeERC20 for IERC20; - - // ERC20 basic token contract being held - IERC20 private _token; - - // beneficiary of tokens after they are released - address private _beneficiary; - - // timestamp when token release is enabled - uint256 private _releaseTime; - - constructor( - IERC20 token, - address beneficiary, - uint256 releaseTime - ) - public - { - // solium-disable-next-line security/no-block-members - require(releaseTime > block.timestamp); - _token = token; - _beneficiary = beneficiary; - _releaseTime = releaseTime; - } - - /** - * @return the token being held. - */ - function token() public view returns(IERC20) { - return _token; - } - - /** - * @return the beneficiary of the tokens. - */ - function beneficiary() public view returns(address) { - return _beneficiary; - } - - /** - * @return the time when the tokens are released. - */ - function releaseTime() public view returns(uint256) { - return _releaseTime; - } - - /** - * @notice Transfers tokens held by timelock to beneficiary. - */ - function release() public { - // solium-disable-next-line security/no-block-members - require(block.timestamp >= _releaseTime); - - uint256 amount = _token.balanceOf(address(this)); - require(amount > 0); - - _token.safeTransfer(_beneficiary, amount); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721.sol deleted file mode 100644 index ec0763b96..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721.sol +++ /dev/null @@ -1,330 +0,0 @@ -pragma solidity ^0.4.24; - -import "./IERC721.sol"; -import "./IERC721Receiver.sol"; -import "../../math/SafeMath.sol"; -import "../../utils/Address.sol"; -import "../../introspection/ERC165.sol"; - -/** - * @title ERC721 Non-Fungible Token Standard basic implementation - * @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md - */ -contract ERC721 is ERC165, IERC721 { - - using SafeMath for uint256; - using Address for address; - - // Equals to `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))` - // which can be also obtained as `IERC721Receiver(0).onERC721Received.selector` - bytes4 private constant _ERC721_RECEIVED = 0x150b7a02; - - // Mapping from token ID to owner - mapping (uint256 => address) private _tokenOwner; - - // Mapping from token ID to approved address - mapping (uint256 => address) private _tokenApprovals; - - // Mapping from owner to number of owned token - mapping (address => uint256) private _ownedTokensCount; - - // Mapping from owner to operator approvals - mapping (address => mapping (address => bool)) private _operatorApprovals; - - bytes4 private constant _InterfaceId_ERC721 = 0x80ac58cd; - /* - * 0x80ac58cd === - * bytes4(keccak256('balanceOf(address)')) ^ - * bytes4(keccak256('ownerOf(uint256)')) ^ - * bytes4(keccak256('approve(address,uint256)')) ^ - * bytes4(keccak256('getApproved(uint256)')) ^ - * bytes4(keccak256('setApprovalForAll(address,bool)')) ^ - * bytes4(keccak256('isApprovedForAll(address,address)')) ^ - * bytes4(keccak256('transferFrom(address,address,uint256)')) ^ - * bytes4(keccak256('safeTransferFrom(address,address,uint256)')) ^ - * bytes4(keccak256('safeTransferFrom(address,address,uint256,bytes)')) - */ - - constructor() - public - { - // register the supported interfaces to conform to ERC721 via ERC165 - _registerInterface(_InterfaceId_ERC721); - } - - /** - * @dev Gets the balance of the specified address - * @param owner address to query the balance of - * @return uint256 representing the amount owned by the passed address - */ - function balanceOf(address owner) public view returns (uint256) { - require(owner != address(0)); - return _ownedTokensCount[owner]; - } - - /** - * @dev Gets the owner of the specified token ID - * @param tokenId uint256 ID of the token to query the owner of - * @return owner address currently marked as the owner of the given token ID - */ - function ownerOf(uint256 tokenId) public view returns (address) { - address owner = _tokenOwner[tokenId]; - require(owner != address(0)); - return owner; - } - - /** - * @dev Approves another address to transfer the given token ID - * The zero address indicates there is no approved address. - * There can only be one approved address per token at a given time. - * Can only be called by the token owner or an approved operator. - * @param to address to be approved for the given token ID - * @param tokenId uint256 ID of the token to be approved - */ - function approve(address to, uint256 tokenId) public { - address owner = ownerOf(tokenId); - require(to != owner); - require(msg.sender == owner || isApprovedForAll(owner, msg.sender)); - - _tokenApprovals[tokenId] = to; - emit Approval(owner, to, tokenId); - } - - /** - * @dev Gets the approved address for a token ID, or zero if no address set - * Reverts if the token ID does not exist. - * @param tokenId uint256 ID of the token to query the approval of - * @return address currently approved for the given token ID - */ - function getApproved(uint256 tokenId) public view returns (address) { - require(_exists(tokenId)); - return _tokenApprovals[tokenId]; - } - - /** - * @dev Sets or unsets the approval of a given operator - * An operator is allowed to transfer all tokens of the sender on their behalf - * @param to operator address to set the approval - * @param approved representing the status of the approval to be set - */ - function setApprovalForAll(address to, bool approved) public { - require(to != msg.sender); - _operatorApprovals[msg.sender][to] = approved; - emit ApprovalForAll(msg.sender, to, approved); - } - - /** - * @dev Tells whether an operator is approved by a given owner - * @param owner owner address which you want to query the approval of - * @param operator operator address which you want to query the approval of - * @return bool whether the given operator is approved by the given owner - */ - function isApprovedForAll( - address owner, - address operator - ) - public - view - returns (bool) - { - return _operatorApprovals[owner][operator]; - } - - /** - * @dev Transfers the ownership of a given token ID to another address - * Usage of this method is discouraged, use `safeTransferFrom` whenever possible - * Requires the msg sender to be the owner, approved, or operator - * @param from current owner of the token - * @param to address to receive the ownership of the given token ID - * @param tokenId uint256 ID of the token to be transferred - */ - function transferFrom( - address from, - address to, - uint256 tokenId - ) - public - { - require(_isApprovedOrOwner(msg.sender, tokenId)); - require(to != address(0)); - - _clearApproval(from, tokenId); - _removeTokenFrom(from, tokenId); - _addTokenTo(to, tokenId); - - emit Transfer(from, to, tokenId); - } - - /** - * @dev Safely transfers the ownership of a given token ID to another address - * If the target address is a contract, it must implement `onERC721Received`, - * which is called upon a safe transfer, and return the magic value - * `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`; otherwise, - * the transfer is reverted. - * - * Requires the msg sender to be the owner, approved, or operator - * @param from current owner of the token - * @param to address to receive the ownership of the given token ID - * @param tokenId uint256 ID of the token to be transferred - */ - function safeTransferFrom( - address from, - address to, - uint256 tokenId - ) - public - { - // solium-disable-next-line arg-overflow - safeTransferFrom(from, to, tokenId, ""); - } - - /** - * @dev Safely transfers the ownership of a given token ID to another address - * If the target address is a contract, it must implement `onERC721Received`, - * which is called upon a safe transfer, and return the magic value - * `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`; otherwise, - * the transfer is reverted. - * Requires the msg sender to be the owner, approved, or operator - * @param from current owner of the token - * @param to address to receive the ownership of the given token ID - * @param tokenId uint256 ID of the token to be transferred - * @param _data bytes data to send along with a safe transfer check - */ - function safeTransferFrom( - address from, - address to, - uint256 tokenId, - bytes _data - ) - public - { - transferFrom(from, to, tokenId); - // solium-disable-next-line arg-overflow - require(_checkOnERC721Received(from, to, tokenId, _data)); - } - - /** - * @dev Returns whether the specified token exists - * @param tokenId uint256 ID of the token to query the existence of - * @return whether the token exists - */ - function _exists(uint256 tokenId) internal view returns (bool) { - address owner = _tokenOwner[tokenId]; - return owner != address(0); - } - - /** - * @dev Returns whether the given spender can transfer a given token ID - * @param spender address of the spender to query - * @param tokenId uint256 ID of the token to be transferred - * @return bool whether the msg.sender is approved for the given token ID, - * is an operator of the owner, or is the owner of the token - */ - function _isApprovedOrOwner( - address spender, - uint256 tokenId - ) - internal - view - returns (bool) - { - address owner = ownerOf(tokenId); - // Disable solium check because of - // https://github.com/duaraghav8/Solium/issues/175 - // solium-disable-next-line operator-whitespace - return ( - spender == owner || - getApproved(tokenId) == spender || - isApprovedForAll(owner, spender) - ); - } - - /** - * @dev Internal function to mint a new token - * Reverts if the given token ID already exists - * @param to The address that will own the minted token - * @param tokenId uint256 ID of the token to be minted by the msg.sender - */ - function _mint(address to, uint256 tokenId) internal { - require(to != address(0)); - _addTokenTo(to, tokenId); - emit Transfer(address(0), to, tokenId); - } - - /** - * @dev Internal function to burn a specific token - * Reverts if the token does not exist - * @param tokenId uint256 ID of the token being burned by the msg.sender - */ - function _burn(address owner, uint256 tokenId) internal { - _clearApproval(owner, tokenId); - _removeTokenFrom(owner, tokenId); - emit Transfer(owner, address(0), tokenId); - } - - /** - * @dev Internal function to add a token ID to the list of a given address - * Note that this function is left internal to make ERC721Enumerable possible, but is not - * intended to be called by custom derived contracts: in particular, it emits no Transfer event. - * @param to address representing the new owner of the given token ID - * @param tokenId uint256 ID of the token to be added to the tokens list of the given address - */ - function _addTokenTo(address to, uint256 tokenId) internal { - require(_tokenOwner[tokenId] == address(0)); - _tokenOwner[tokenId] = to; - _ownedTokensCount[to] = _ownedTokensCount[to].add(1); - } - - /** - * @dev Internal function to remove a token ID from the list of a given address - * Note that this function is left internal to make ERC721Enumerable possible, but is not - * intended to be called by custom derived contracts: in particular, it emits no Transfer event, - * and doesn't clear approvals. - * @param from address representing the previous owner of the given token ID - * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address - */ - function _removeTokenFrom(address from, uint256 tokenId) internal { - require(ownerOf(tokenId) == from); - _ownedTokensCount[from] = _ownedTokensCount[from].sub(1); - _tokenOwner[tokenId] = address(0); - } - - /** - * @dev Internal function to invoke `onERC721Received` on a target address - * The call is not executed if the target address is not a contract - * @param from address representing the previous owner of the given token ID - * @param to target address that will receive the tokens - * @param tokenId uint256 ID of the token to be transferred - * @param _data bytes optional data to send along with the call - * @return whether the call correctly returned the expected magic value - */ - function _checkOnERC721Received( - address from, - address to, - uint256 tokenId, - bytes _data - ) - internal - returns (bool) - { - if (!to.isContract()) { - return true; - } - bytes4 retval = IERC721Receiver(to).onERC721Received( - msg.sender, from, tokenId, _data); - return (retval == _ERC721_RECEIVED); - } - - /** - * @dev Private function to clear current approval of a given token ID - * Reverts if the given address is not indeed the owner of the token - * @param owner owner of the token - * @param tokenId uint256 ID of the token to be transferred - */ - function _clearApproval(address owner, uint256 tokenId) private { - require(ownerOf(tokenId) == owner); - if (_tokenApprovals[tokenId] != address(0)) { - _tokenApprovals[tokenId] = address(0); - } - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Burnable.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Burnable.sol deleted file mode 100644 index 3fc0277e5..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Burnable.sol +++ /dev/null @@ -1,12 +0,0 @@ -pragma solidity ^0.4.24; - -import "./ERC721.sol"; - -contract ERC721Burnable is ERC721 { - function burn(uint256 tokenId) - public - { - require(_isApprovedOrOwner(msg.sender, tokenId)); - _burn(ownerOf(tokenId), tokenId); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Enumerable.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Enumerable.sol deleted file mode 100644 index c85514720..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Enumerable.sol +++ /dev/null @@ -1,150 +0,0 @@ -pragma solidity ^0.4.24; - -import "./IERC721Enumerable.sol"; -import "./ERC721.sol"; -import "../../introspection/ERC165.sol"; - -contract ERC721Enumerable is ERC165, ERC721, IERC721Enumerable { - // Mapping from owner to list of owned token IDs - mapping(address => uint256[]) private _ownedTokens; - - // Mapping from token ID to index of the owner tokens list - mapping(uint256 => uint256) private _ownedTokensIndex; - - // Array with all token ids, used for enumeration - uint256[] private _allTokens; - - // Mapping from token id to position in the allTokens array - mapping(uint256 => uint256) private _allTokensIndex; - - bytes4 private constant _InterfaceId_ERC721Enumerable = 0x780e9d63; - /** - * 0x780e9d63 === - * bytes4(keccak256('totalSupply()')) ^ - * bytes4(keccak256('tokenOfOwnerByIndex(address,uint256)')) ^ - * bytes4(keccak256('tokenByIndex(uint256)')) - */ - - /** - * @dev Constructor function - */ - constructor() public { - // register the supported interface to conform to ERC721 via ERC165 - _registerInterface(_InterfaceId_ERC721Enumerable); - } - - /** - * @dev Gets the token ID at a given index of the tokens list of the requested owner - * @param owner address owning the tokens list to be accessed - * @param index uint256 representing the index to be accessed of the requested tokens list - * @return uint256 token ID at the given index of the tokens list owned by the requested address - */ - function tokenOfOwnerByIndex( - address owner, - uint256 index - ) - public - view - returns (uint256) - { - require(index < balanceOf(owner)); - return _ownedTokens[owner][index]; - } - - /** - * @dev Gets the total amount of tokens stored by the contract - * @return uint256 representing the total amount of tokens - */ - function totalSupply() public view returns (uint256) { - return _allTokens.length; - } - - /** - * @dev Gets the token ID at a given index of all the tokens in this contract - * Reverts if the index is greater or equal to the total number of tokens - * @param index uint256 representing the index to be accessed of the tokens list - * @return uint256 token ID at the given index of the tokens list - */ - function tokenByIndex(uint256 index) public view returns (uint256) { - require(index < totalSupply()); - return _allTokens[index]; - } - - /** - * @dev Internal function to add a token ID to the list of a given address - * This function is internal due to language limitations, see the note in ERC721.sol. - * It is not intended to be called by custom derived contracts: in particular, it emits no Transfer event. - * @param to address representing the new owner of the given token ID - * @param tokenId uint256 ID of the token to be added to the tokens list of the given address - */ - function _addTokenTo(address to, uint256 tokenId) internal { - super._addTokenTo(to, tokenId); - uint256 length = _ownedTokens[to].length; - _ownedTokens[to].push(tokenId); - _ownedTokensIndex[tokenId] = length; - } - - /** - * @dev Internal function to remove a token ID from the list of a given address - * This function is internal due to language limitations, see the note in ERC721.sol. - * It is not intended to be called by custom derived contracts: in particular, it emits no Transfer event, - * and doesn't clear approvals. - * @param from address representing the previous owner of the given token ID - * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address - */ - function _removeTokenFrom(address from, uint256 tokenId) internal { - super._removeTokenFrom(from, tokenId); - - // To prevent a gap in the array, we store the last token in the index of the token to delete, and - // then delete the last slot. - uint256 tokenIndex = _ownedTokensIndex[tokenId]; - uint256 lastTokenIndex = _ownedTokens[from].length.sub(1); - uint256 lastToken = _ownedTokens[from][lastTokenIndex]; - - _ownedTokens[from][tokenIndex] = lastToken; - // This also deletes the contents at the last position of the array - _ownedTokens[from].length--; - - // Note that this will handle single-element arrays. In that case, both tokenIndex and lastTokenIndex are going to - // be zero. Then we can make sure that we will remove tokenId from the ownedTokens list since we are first swapping - // the lastToken to the first position, and then dropping the element placed in the last position of the list - - _ownedTokensIndex[tokenId] = 0; - _ownedTokensIndex[lastToken] = tokenIndex; - } - - /** - * @dev Internal function to mint a new token - * Reverts if the given token ID already exists - * @param to address the beneficiary that will own the minted token - * @param tokenId uint256 ID of the token to be minted by the msg.sender - */ - function _mint(address to, uint256 tokenId) internal { - super._mint(to, tokenId); - - _allTokensIndex[tokenId] = _allTokens.length; - _allTokens.push(tokenId); - } - - /** - * @dev Internal function to burn a specific token - * Reverts if the token does not exist - * @param owner owner of the token to burn - * @param tokenId uint256 ID of the token being burned by the msg.sender - */ - function _burn(address owner, uint256 tokenId) internal { - super._burn(owner, tokenId); - - // Reorg all tokens array - uint256 tokenIndex = _allTokensIndex[tokenId]; - uint256 lastTokenIndex = _allTokens.length.sub(1); - uint256 lastToken = _allTokens[lastTokenIndex]; - - _allTokens[tokenIndex] = lastToken; - _allTokens[lastTokenIndex] = 0; - - _allTokens.length--; - _allTokensIndex[tokenId] = 0; - _allTokensIndex[lastToken] = tokenIndex; - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Full.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Full.sol deleted file mode 100644 index 293637501..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Full.sol +++ /dev/null @@ -1,18 +0,0 @@ -pragma solidity ^0.4.24; - -import "./ERC721.sol"; -import "./ERC721Enumerable.sol"; -import "./ERC721Metadata.sol"; - -/** - * @title Full ERC721 Token - * This implementation includes all the required and some optional functionality of the ERC721 standard - * Moreover, it includes approve all functionality using operator terminology - * @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md - */ -contract ERC721Full is ERC721, ERC721Enumerable, ERC721Metadata { - constructor(string name, string symbol) ERC721Metadata(name, symbol) - public - { - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Holder.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Holder.sol deleted file mode 100644 index cf0e9ce55..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Holder.sol +++ /dev/null @@ -1,17 +0,0 @@ -pragma solidity ^0.4.24; - -import "./IERC721Receiver.sol"; - -contract ERC721Holder is IERC721Receiver { - function onERC721Received( - address, - address, - uint256, - bytes - ) - public - returns(bytes4) - { - return this.onERC721Received.selector; - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Metadata.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Metadata.sol deleted file mode 100644 index bd1105188..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Metadata.sol +++ /dev/null @@ -1,87 +0,0 @@ -pragma solidity ^0.4.24; - -import "./ERC721.sol"; -import "./IERC721Metadata.sol"; -import "../../introspection/ERC165.sol"; - -contract ERC721Metadata is ERC165, ERC721, IERC721Metadata { - // Token name - string private _name; - - // Token symbol - string private _symbol; - - // Optional mapping for token URIs - mapping(uint256 => string) private _tokenURIs; - - bytes4 private constant InterfaceId_ERC721Metadata = 0x5b5e139f; - /** - * 0x5b5e139f === - * bytes4(keccak256('name()')) ^ - * bytes4(keccak256('symbol()')) ^ - * bytes4(keccak256('tokenURI(uint256)')) - */ - - /** - * @dev Constructor function - */ - constructor(string name, string symbol) public { - _name = name; - _symbol = symbol; - - // register the supported interfaces to conform to ERC721 via ERC165 - _registerInterface(InterfaceId_ERC721Metadata); - } - - /** - * @dev Gets the token name - * @return string representing the token name - */ - function name() external view returns (string) { - return _name; - } - - /** - * @dev Gets the token symbol - * @return string representing the token symbol - */ - function symbol() external view returns (string) { - return _symbol; - } - - /** - * @dev Returns an URI for a given token ID - * Throws if the token ID does not exist. May return an empty string. - * @param tokenId uint256 ID of the token to query - */ - function tokenURI(uint256 tokenId) external view returns (string) { - require(_exists(tokenId)); - return _tokenURIs[tokenId]; - } - - /** - * @dev Internal function to set the token URI for a given token - * Reverts if the token ID does not exist - * @param tokenId uint256 ID of the token to set its URI - * @param uri string URI to assign - */ - function _setTokenURI(uint256 tokenId, string uri) internal { - require(_exists(tokenId)); - _tokenURIs[tokenId] = uri; - } - - /** - * @dev Internal function to burn a specific token - * Reverts if the token does not exist - * @param owner owner of the token to burn - * @param tokenId uint256 ID of the token being burned by the msg.sender - */ - function _burn(address owner, uint256 tokenId) internal { - super._burn(owner, tokenId); - - // Clear metadata (if any) - if (bytes(_tokenURIs[tokenId]).length != 0) { - delete _tokenURIs[tokenId]; - } - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721MetadataMintable.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721MetadataMintable.sol deleted file mode 100644 index 95a9f2124..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721MetadataMintable.sol +++ /dev/null @@ -1,32 +0,0 @@ -pragma solidity ^0.4.24; - -import "./ERC721Metadata.sol"; -import "../../access/roles/MinterRole.sol"; - - -/** - * @title ERC721MetadataMintable - * @dev ERC721 minting logic with metadata - */ -contract ERC721MetadataMintable is ERC721, ERC721Metadata, MinterRole { - /** - * @dev Function to mint tokens - * @param to The address that will receive the minted tokens. - * @param tokenId The token id to mint. - * @param tokenURI The token URI of the minted token. - * @return A boolean that indicates if the operation was successful. - */ - function mintWithTokenURI( - address to, - uint256 tokenId, - string tokenURI - ) - public - onlyMinter - returns (bool) - { - _mint(to, tokenId); - _setTokenURI(tokenId, tokenURI); - return true; - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Mintable.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Mintable.sol deleted file mode 100644 index 74b7b0186..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Mintable.sol +++ /dev/null @@ -1,28 +0,0 @@ -pragma solidity ^0.4.24; - -import "./ERC721.sol"; -import "../../access/roles/MinterRole.sol"; - -/** - * @title ERC721Mintable - * @dev ERC721 minting logic - */ -contract ERC721Mintable is ERC721, MinterRole { - /** - * @dev Function to mint tokens - * @param to The address that will receive the minted tokens. - * @param tokenId The token id to mint. - * @return A boolean that indicates if the operation was successful. - */ - function mint( - address to, - uint256 tokenId - ) - public - onlyMinter - returns (bool) - { - _mint(to, tokenId); - return true; - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Pausable.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Pausable.sol deleted file mode 100644 index c66d9da1f..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/ERC721Pausable.sol +++ /dev/null @@ -1,41 +0,0 @@ -pragma solidity ^0.4.24; - -import "./ERC721.sol"; -import "../../lifecycle/Pausable.sol"; - -/** - * @title ERC721 Non-Fungible Pausable token - * @dev ERC721 modified with pausable transfers. - **/ -contract ERC721Pausable is ERC721, Pausable { - function approve( - address to, - uint256 tokenId - ) - public - whenNotPaused - { - super.approve(to, tokenId); - } - - function setApprovalForAll( - address to, - bool approved - ) - public - whenNotPaused - { - super.setApprovalForAll(to, approved); - } - - function transferFrom( - address from, - address to, - uint256 tokenId - ) - public - whenNotPaused - { - super.transferFrom(from, to, tokenId); - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721.sol deleted file mode 100644 index 24bc6a242..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721.sol +++ /dev/null @@ -1,49 +0,0 @@ -pragma solidity ^0.4.24; - -import "../../introspection/IERC165.sol"; - -/** - * @title ERC721 Non-Fungible Token Standard basic interface - * @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md - */ -contract IERC721 is IERC165 { - - event Transfer( - address indexed from, - address indexed to, - uint256 indexed tokenId - ); - event Approval( - address indexed owner, - address indexed approved, - uint256 indexed tokenId - ); - event ApprovalForAll( - address indexed owner, - address indexed operator, - bool approved - ); - - function balanceOf(address owner) public view returns (uint256 balance); - function ownerOf(uint256 tokenId) public view returns (address owner); - - function approve(address to, uint256 tokenId) public; - function getApproved(uint256 tokenId) - public view returns (address operator); - - function setApprovalForAll(address operator, bool _approved) public; - function isApprovedForAll(address owner, address operator) - public view returns (bool); - - function transferFrom(address from, address to, uint256 tokenId) public; - function safeTransferFrom(address from, address to, uint256 tokenId) - public; - - function safeTransferFrom( - address from, - address to, - uint256 tokenId, - bytes data - ) - public; -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Enumerable.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Enumerable.sol deleted file mode 100644 index b772f2507..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Enumerable.sol +++ /dev/null @@ -1,20 +0,0 @@ -pragma solidity ^0.4.24; - -import "./IERC721.sol"; - -/** - * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension - * @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md - */ -contract IERC721Enumerable is IERC721 { - function totalSupply() public view returns (uint256); - function tokenOfOwnerByIndex( - address owner, - uint256 index - ) - public - view - returns (uint256 tokenId); - - function tokenByIndex(uint256 index) public view returns (uint256); -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Full.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Full.sol deleted file mode 100644 index 90d8c21d8..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Full.sol +++ /dev/null @@ -1,12 +0,0 @@ -pragma solidity ^0.4.24; - -import "./IERC721.sol"; -import "./IERC721Enumerable.sol"; -import "./IERC721Metadata.sol"; - -/** - * @title ERC-721 Non-Fungible Token Standard, full implementation interface - * @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md - */ -contract IERC721Full is IERC721, IERC721Enumerable, IERC721Metadata { -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Metadata.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Metadata.sol deleted file mode 100644 index 15b5ae4c6..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Metadata.sol +++ /dev/null @@ -1,13 +0,0 @@ -pragma solidity ^0.4.24; - -import "./IERC721.sol"; - -/** - * @title ERC-721 Non-Fungible Token Standard, optional metadata extension - * @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md - */ -contract IERC721Metadata is IERC721 { - function name() external view returns (string); - function symbol() external view returns (string); - function tokenURI(uint256 tokenId) external view returns (string); -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol deleted file mode 100644 index e692f7e2c..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol +++ /dev/null @@ -1,31 +0,0 @@ -pragma solidity ^0.4.24; - -/** - * @title ERC721 token receiver interface - * @dev Interface for any contract that wants to support safeTransfers - * from ERC721 asset contracts. - */ -contract IERC721Receiver { - /** - * @notice Handle the receipt of an NFT - * @dev The ERC721 smart contract calls this function on the recipient - * after a `safeTransfer`. This function MUST return the function selector, - * otherwise the caller will revert the transaction. The selector to be - * returned can be obtained as `this.onERC721Received.selector`. This - * function MAY throw to revert and reject the transfer. - * Note: the ERC721 contract address is always the message sender. - * @param operator The address which called `safeTransferFrom` function - * @param from The address which previously owned the token - * @param tokenId The NFT identifier which is being transferred - * @param data Additional data with no specified format - * @return `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))` - */ - function onERC721Received( - address operator, - address from, - uint256 tokenId, - bytes data - ) - public - returns(bytes4); -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/utils/Address.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/utils/Address.sol deleted file mode 100644 index 92a43ff9c..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/utils/Address.sol +++ /dev/null @@ -1,28 +0,0 @@ -pragma solidity ^0.4.24; - -/** - * Utility library of inline functions on addresses - */ -library Address { - - /** - * Returns whether the target address is a contract - * @dev This function will return false if invoked during the constructor of a contract, - * as the code is not actually created until after the constructor finishes. - * @param account address of the account to check - * @return whether the target address is a contract - */ - function isContract(address account) internal view returns (bool) { - uint256 size; - // XXX Currently there is no better way to check if there is a contract in an address - // than to check the size of the code at that address. - // See https://ethereum.stackexchange.com/a/14016/36603 - // for more details about how this works. - // TODO Check this again before the Serenity release, because all addresses will be - // contracts then. - // solium-disable-next-line security/no-inline-assembly - assembly { size := extcodesize(account) } - return size > 0; - } - -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/utils/Arrays.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/utils/Arrays.sol deleted file mode 100644 index 6882ea995..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/utils/Arrays.sol +++ /dev/null @@ -1,56 +0,0 @@ -pragma solidity ^0.4.23; - -import "../math/Math.sol"; - - -/** - * @title Arrays - * @dev Utility library of inline array functions - */ -library Arrays { - - /** - * @dev Upper bound search function which is kind of binary search algoritm. It searches sorted - * array to find index of the element value. If element is found then returns it's index otherwise - * it returns index of first element which is grater than searched value. If searched element is - * bigger than any array element function then returns first index after last element (i.e. all - * values inside the array are smaller than the target). Complexity O(log n). - * @param array The array sorted in ascending order. - * @param element The element's value to be find. - * @return The calculated index value. Returns 0 for empty array. - */ - function findUpperBound( - uint256[] storage array, - uint256 element - ) - internal - view - returns (uint256) - { - if (array.length == 0) { - return 0; - } - - uint256 low = 0; - uint256 high = array.length; - - while (low < high) { - uint256 mid = Math.average(low, high); - - // Note that mid will always be strictly less than high (i.e. it will be a valid array index) - // because Math.average rounds down (it does integer division with truncation). - if (array[mid] > element) { - high = mid; - } else { - low = mid + 1; - } - } - - // At this point `low` is the exclusive upper bound. We will return the inclusive upper bound. - if (low > 0 && array[low - 1] == element) { - return low - 1; - } else { - return low; - } - } -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/utils/ReentrancyGuard.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/utils/ReentrancyGuard.sol deleted file mode 100644 index 7a2895da2..000000000 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/openzeppelin-solidity/contracts/utils/ReentrancyGuard.sol +++ /dev/null @@ -1,34 +0,0 @@ -pragma solidity ^0.4.24; - -/** - * @title Helps contracts guard against reentrancy attacks. - * @author Remco Bloemen , Eenae - * @dev If you mark a function `nonReentrant`, you should also - * mark it `external`. - */ -contract ReentrancyGuard { - - /// @dev counter to allow mutex lock with only one SSTORE operation - uint256 private _guardCounter; - - constructor() internal { - // The counter starts at one to prevent changing it from zero to a non-zero - // value, which is a more expensive operation. - _guardCounter = 1; - } - - /** - * @dev Prevents a contract from calling itself, directly or indirectly. - * Calling a `nonReentrant` function from another `nonReentrant` - * function is not supported. It is possible to prevent this from happening - * by making the `nonReentrant` function external, and make it call a - * `private` function that does the actual work. - */ - modifier nonReentrant() { - _guardCounter += 1; - uint256 localCounter = _guardCounter; - _; - require(localCounter == _guardCounter); - } - -} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/AdvancedAlgos.AlgoErc20Token.csproj b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/AdvancedAlgos.AlgoToken.AlgoErc20Token.csproj similarity index 75% rename from labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/AdvancedAlgos.AlgoErc20Token.csproj rename to labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/AdvancedAlgos.AlgoToken.AlgoErc20Token.csproj index bc5df3e67..f5790d550 100644 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/AdvancedAlgos.AlgoErc20Token.csproj +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/AdvancedAlgos.AlgoToken.AlgoErc20Token.csproj @@ -8,7 +8,7 @@ - + @@ -18,6 +18,7 @@ - + + diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/AlgoIntegralConverterExtensions.cs b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/AlgoIntegralConverterExtensions.cs similarity index 54% rename from labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/AlgoIntegralConverterExtensions.cs rename to labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/AlgoIntegralConverterExtensions.cs index b870cddaf..94458234c 100644 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/AlgoIntegralConverterExtensions.cs +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/AlgoIntegralConverterExtensions.cs @@ -5,11 +5,12 @@ using System.Collections.Generic; using System.Numerics; using System.Text; -namespace AdvancedAlgos.AlgoErc20Token +namespace AdvancedAlgos.AlgoToken.AlgoErc20Token { public static class AlgoIntegralConverterExtensions { public const byte TOKEN_DECIMALS = 18; + public const long MEGA_FACTOR = 1000000; public static readonly BigInteger TokenFactor = BigInteger.Pow(10, TOKEN_DECIMALS); @@ -21,5 +22,14 @@ namespace AdvancedAlgos.AlgoErc20Token public static BigInteger Algo(this in uint value) => value * TokenFactor; public static BigInteger Algo(this in long value) => value * TokenFactor; public static BigInteger Algo(this in ulong value) => value * TokenFactor; + + public static BigInteger MAlgo(this in byte value) => value * TokenFactor * MEGA_FACTOR; + public static BigInteger MAlgo(this in sbyte value) => value * TokenFactor * MEGA_FACTOR; + public static BigInteger MAlgo(this in short value) => value * TokenFactor * MEGA_FACTOR; + public static BigInteger MAlgo(this in ushort value) => value * TokenFactor * MEGA_FACTOR; + public static BigInteger MAlgo(this in int value) => value * TokenFactor * MEGA_FACTOR; + public static BigInteger MAlgo(this in uint value) => value * TokenFactor * MEGA_FACTOR; + public static BigInteger MAlgo(this in long value) => value * TokenFactor * MEGA_FACTOR; + public static BigInteger MAlgo(this in ulong value) => value * TokenFactor * MEGA_FACTOR; } } diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/AlgoTokenV1.cs b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/AlgoTokenV1.cs similarity index 55% rename from labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/AlgoTokenV1.cs rename to labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/AlgoTokenV1.cs index 1f30aa237..d61d8fc78 100644 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/AlgoTokenV1.cs +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/AlgoTokenV1.cs @@ -1,14 +1,18 @@ using System; using System.Numerics; using System.Threading.Tasks; -using AdvancedAlgos.AlgoErc20Token.EthClientExtensions; +using AdvancedAlgos.AlgoToken.Framework.Ethereum; using Nethereum.Contracts; using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; -namespace AdvancedAlgos.AlgoErc20Token +namespace AdvancedAlgos.AlgoToken.AlgoErc20Token { public class AlgoTokenV1 : Erc20Token { + public AlgoTokenV1(Web3 web3, IGasPriceProvider gasPriceProvider) : base(web3, gasPriceProvider) { } + public AlgoTokenV1(string contractAddress, Web3 web3, IGasPriceProvider gasPriceProvider) : base(contractAddress, web3, gasPriceProvider) { } + protected override string AbiResourceName => $"SmartContracts.src.bin.{nameof(AlgoTokenV1)}.abi"; protected override string BinResourceName => $"SmartContracts.src.bin.{nameof(AlgoTokenV1)}.bin"; protected override BigInteger DeploymentGasUnits => 1200000; diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/Erc20Token.cs b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/Erc20Token.cs similarity index 51% rename from labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/Erc20Token.cs rename to labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/Erc20Token.cs index 5cb42bf9d..9b4bf2dc4 100644 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/Erc20Token.cs +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/Erc20Token.cs @@ -3,20 +3,27 @@ using System.Collections.Generic; using System.Numerics; using System.Text; using System.Threading.Tasks; -using AdvancedAlgos.AlgoErc20Token.EthClientExtensions; +using AdvancedAlgos.AlgoToken.Framework.Ethereum; using Nethereum.Contracts; using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; -namespace AdvancedAlgos.AlgoErc20Token +namespace AdvancedAlgos.AlgoToken.AlgoErc20Token { public abstract class Erc20Token : SmartContract - where TContract : SmartContract, new() + where TContract : SmartContract { private Function _transfer; private Function _balanceOf; private Function _pause; private Function _unpause; + public Erc20Token(Web3 web3, IGasPriceProvider gasPriceProvider) : base(web3, gasPriceProvider) { } + public Erc20Token(string contractAddress, Web3 web3, IGasPriceProvider gasPriceProvider) : base(contractAddress, web3, gasPriceProvider) { } + + public Task DeployAsync() + => base.DeployAsync(); + protected override void Initialize(Contract contractDescriptor) { _transfer = contractDescriptor.GetFunction("transfer"); @@ -25,16 +32,16 @@ namespace AdvancedAlgos.AlgoErc20Token _unpause = contractDescriptor.GetFunction("unpause"); } - public Task TransferAsync(BigInteger gasPrice, string to, BigInteger value) => - InvokeAsync(_transfer, 900000, gasPrice, to, value); + public Task TransferAsync(string to, BigInteger value) => + InvokeAsync(_transfer, 900000, to, value); public Task BalanceOfAsync(string owner) => _balanceOf.CallAsync(owner); - public Task PauseAsync(BigInteger gasPrice) => - InvokeAsync(_pause, 900000, gasPrice); + public Task PauseAsync() => + InvokeAsync(_pause, 900000); - public Task UnpauseAsync(BigInteger gasPrice) => - InvokeAsync(_unpause, 900000, gasPrice); + public Task UnpauseAsync() => + InvokeAsync(_unpause, 900000); } } diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/.vscode/settings.json b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/.vscode/settings.json new file mode 100644 index 000000000..9dea7e6ca --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/.vscode/settings.json @@ -0,0 +1,9 @@ +{ + "solidity.soliumRules": { + "indentation": "off", + "operator-whitespace": "off", + "error-reason": "off", + "linebreak-style": "off" + }, + "solidity.packageDefaultDependenciesContractsDirectory": "" +} \ No newline at end of file diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoTokenV1.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/AlgoTokenV1.sol similarity index 63% rename from labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoTokenV1.sol rename to labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/AlgoTokenV1.sol index 0563b6d40..654d73592 100644 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoTokenV1.sol +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/AlgoTokenV1.sol @@ -1,7 +1,7 @@ -pragma solidity ^0.4.24; +pragma solidity 0.4.24; -import "./openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol"; -import "./openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol"; +import "openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol"; +import "openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol"; contract AlgoTokenV1 is ERC20, ERC20Detailed, ERC20Pausable { diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoMiner-sol-output.json b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoMiner-sol-output.json new file mode 100644 index 000000000..b86d5efa9 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoMiner-sol-output.json @@ -0,0 +1,13793 @@ +{ + "contracts": { + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoCoreTeamRole.sol": { + "AlgoCoreTeamRole": { + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isCoreTeam", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "addCoreTeam(address)": "2e6b6849", + "isCoreTeam(address)": "608d3d3d", + "renounceCoreTeam()": "d43acc79" + } + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoMiner.sol": { + "AlgoMiner": { + "abi": [ + { + "constant": false, + "inputs": [], + "name": "pauseMining", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isAlgoMiner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "startMining", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "newMinerAddress", + "type": "address" + } + ], + "name": "migrateMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addSupervisor", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "stopAndRemoveOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "resumeMining", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isCoreTeam", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getCategory", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isSupervisor", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "mine", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "deactivateMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "newOwnerAddress", + "type": "address" + } + ], + "name": "resetMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "activateMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceSupervisor", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "DAYS_PER_YEAR", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "stopMining", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "name": "minerType", + "type": "uint16" + }, + { + "name": "category", + "type": "uint8" + }, + { + "name": "ownerAddress", + "type": "address" + }, + { + "name": "tokenAddress", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50604051608080610ea08339810160409081528151602083015191830151606090930151909290610049336401000000006100c3810204565b61005b336401000000006100de810204565b6002805461ffff191661ffff959095169490941762ff000019166201000060ff949094169390930292909217630100000060b860020a0319166301000000600160a060020a03928316021790925560038054600160a060020a03191691909216179055610184565b6100db600082640100000000610c476100f682021704565b50565b6100db600182640100000000610c476100f682021704565b600160a060020a038116151561010b57600080fd5b61011e828264010000000061014d810204565b1561012857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561016457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610d0d806101936000396000f3006080604052600436106101065763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663162f986d811461010b5780631777fb4b1461012257806321b79d981461014b578063231d4e2a1461016057806329d10b6e146101815780632e6b6849146101a2578063363aa6c7146101c3578063427534a4146101d8578063608d3d3d146101ed57806380258e471461020e57806381a244591461023957806399f4b2511461025a5780639e614ca01461026f578063ada436e914610284578063b2a32cd5146102a5578063be952494146102ba578063c6846ef8146102cf578063d43acc79146102f6578063da4086791461030b575b600080fd5b34801561011757600080fd5b50610120610320565b005b34801561012e57600080fd5b50610137610386565b604080519115158252519081900360200190f35b34801561015757600080fd5b5061012061038b565b34801561016c57600080fd5b50610120600160a060020a036004351661042f565b34801561018d57600080fd5b50610120600160a060020a036004351661051b565b3480156101ae57600080fd5b50610120600160a060020a0360043516610538565b3480156101cf57600080fd5b50610120610555565b3480156101e457600080fd5b506101206105fd565b3480156101f957600080fd5b50610137600160a060020a0360043516610660565b34801561021a57600080fd5b50610223610678565b6040805160ff9092168252519081900360200190f35b34801561024557600080fd5b50610137600160a060020a0360043516610687565b34801561026657600080fd5b5061012061069a565b34801561027b57600080fd5b5061012061086c565b34801561029057600080fd5b50610120600160a060020a03600435166108c6565b3480156102b157600080fd5b5061012061095b565b3480156102c657600080fd5b50610120610a6d565b3480156102db57600080fd5b506102e4610a78565b60408051918252519081900360200190f35b34801561030257600080fd5b50610120610a7e565b34801561031757600080fd5b50610120610a87565b61032933610687565b151561033457600080fd5b60016003805460a060020a900460ff169081111561034e57fe5b1461035857600080fd5b600380546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550565b600190565b60025463010000009004600160a060020a031633146103a957600080fd5b60016003805460a060020a900460ff16908111156103c357fe5b146103cd57600080fd5b6003547501000000000000000000000000000000000000000000900460ff16156103f657600080fd5b6003805475ff00000000000000000000000000000000000000000019167501000000000000000000000000000000000000000000179055565b61043833610660565b151561044357600080fd5b60006003805460a060020a900460ff169081111561045d57fe5b1461046757600080fd5b600354604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051610518928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b1580156104d357600080fd5b505af11580156104e7573d6000803e3d6000fd5b505050506040513d60208110156104fd57600080fd5b5051600354600160a060020a0316919063ffffffff610b1416565b50565b61052433610687565b151561052f57600080fd5b61051881610bcc565b61054133610660565b151561054c57600080fd5b61051881610bdd565b61055e33610687565b151561056957600080fd5b600380805460a060020a900460ff169081111561058257fe5b141561058d57600080fd5b6003805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001775ff000000000000000000000000000000000000000000191690556002805476ffffffffffffffffffffffffffffffffffffffff00000019169055565b61060633610687565b151561061157600080fd5b60026003805460a060020a900460ff169081111561062b57fe5b1461063557600080fd5b600380546001919074ff0000000000000000000000000000000000000000191660a060020a8361037f565b6000610672818363ffffffff610bee16565b92915050565b60025462010000900460ff1690565b600061067260018363ffffffff610bee16565b60006106a533610660565b15156106b057600080fd5b60016003805460a060020a900460ff16908111156106ca57fe5b146106d457600080fd5b6003547501000000000000000000000000000000000000000000900460ff1615156106fe57600080fd5b60035460b860020a900461ffff161515610774576003805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a17905561083c565b60038054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e141561083c576003805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600454600290046004555b5060045460025460035461016d9092049161051891600160a060020a039182169163010000009091041683610b14565b61087533610660565b151561088057600080fd5b60006003805460a060020a900460ff169081111561089a57fe5b14156108a557600080fd5b6003805475ffff000000000000000000000000000000000000000019169055565b6108cf33610687565b15156108da57600080fd5b600380805460a060020a900460ff16908111156108f357fe5b146108fd57600080fd5b6003805474ff0000000000000000000000000000000000000000191660a060020a17905560028054600160a060020a039290921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b600061096633610660565b151561097157600080fd5b60006003805460a060020a900460ff169081111561098b57fe5b1461099557600080fd5b6004541515610a4657600354604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b158015610a0457600080fd5b505af1158015610a18573d6000803e3d6000fd5b505050506040513d6020811015610a2e57600080fd5b50519050801515610a3e57600080fd5b600281046004555b506003805474ff0000000000000000000000000000000000000000191660a060020a179055565b610a7633610c25565b565b61016d81565b610a7633610c36565b60025463010000009004600160a060020a03163314610aa557600080fd5b60016003805460a060020a900460ff1690811115610abf57fe5b14610ac957600080fd5b6003547501000000000000000000000000000000000000000000900460ff161515610af357600080fd5b6003805475ff00000000000000000000000000000000000000000019169055565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610b9057600080fd5b505af1158015610ba4573d6000803e3d6000fd5b505050506040513d6020811015610bba57600080fd5b50511515610bc757600080fd5b505050565b61051860018263ffffffff610c4716565b61051860008263ffffffff610c4716565b6000600160a060020a0382161515610c0557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61051860018263ffffffff610c9516565b61051860008263ffffffff610c9516565b600160a060020a0381161515610c5c57600080fd5b610c668282610bee565b15610c7057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610caa57600080fd5b610cb48282610bee565b1515610cbf57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058207b121e87532d8c1f7a6b96bd6424aeda0c92676f8aeca5bd4496952ce22529cc0029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x80 DUP1 PUSH2 0xEA0 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 SWAP1 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD SWAP2 DUP4 ADD MLOAD PUSH1 0x60 SWAP1 SWAP4 ADD MLOAD SWAP1 SWAP3 SWAP1 PUSH2 0x49 CALLER PUSH5 0x100000000 PUSH2 0xC3 DUP2 MUL DIV JUMP JUMPDEST PUSH2 0x5B CALLER PUSH5 0x100000000 PUSH2 0xDE DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH2 0xFFFF SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR PUSH3 0xFF0000 NOT AND PUSH3 0x10000 PUSH1 0xFF SWAP5 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 MUL SWAP3 SWAP1 SWAP3 OR PUSH4 0x1000000 PUSH1 0xB8 PUSH1 0x2 EXP SUB NOT AND PUSH4 0x1000000 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP3 DUP4 AND MUL OR SWAP1 SWAP3 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH2 0x184 JUMP JUMPDEST PUSH2 0xDB PUSH1 0x0 DUP3 PUSH5 0x100000000 PUSH2 0xC47 PUSH2 0xF6 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0xDB PUSH1 0x1 DUP3 PUSH5 0x100000000 PUSH2 0xC47 PUSH2 0xF6 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11E DUP3 DUP3 PUSH5 0x100000000 PUSH2 0x14D DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH2 0x128 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x164 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xD0D DUP1 PUSH2 0x193 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x106 JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x162F986D DUP2 EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0x1777FB4B EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x21B79D98 EQ PUSH2 0x14B JUMPI DUP1 PUSH4 0x231D4E2A EQ PUSH2 0x160 JUMPI DUP1 PUSH4 0x29D10B6E EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x363AA6C7 EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x427534A4 EQ PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x1ED JUMPI DUP1 PUSH4 0x80258E47 EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0x81A24459 EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x25A JUMPI DUP1 PUSH4 0x9E614CA0 EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0xADA436E9 EQ PUSH2 0x284 JUMPI DUP1 PUSH4 0xB2A32CD5 EQ PUSH2 0x2A5 JUMPI DUP1 PUSH4 0xBE952494 EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0xC6846EF8 EQ PUSH2 0x2CF JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x2F6 JUMPI DUP1 PUSH4 0xDA408679 EQ PUSH2 0x30B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x117 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x120 PUSH2 0x320 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x386 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x120 PUSH2 0x38B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x120 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x42F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x120 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x51B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x120 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x538 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x120 PUSH2 0x555 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x120 PUSH2 0x5FD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x660 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x223 PUSH2 0x678 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x245 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x687 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x266 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x120 PUSH2 0x69A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x120 PUSH2 0x86C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x290 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x120 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x8C6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x120 PUSH2 0x95B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x120 PUSH2 0xA6D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2E4 PUSH2 0xA78 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x302 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x120 PUSH2 0xA7E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x317 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x120 PUSH2 0xA87 JUMP JUMPDEST PUSH2 0x329 CALLER PUSH2 0x687 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x334 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x3 DUP1 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0x34E JUMPI INVALID JUMPDEST EQ PUSH2 0x358 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x2 SWAP2 SWAP1 PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 JUMPDEST MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0x3A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x3 DUP1 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0x3C3 JUMPI INVALID JUMPDEST EQ PUSH2 0x3CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x3F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND PUSH22 0x1000000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x438 CALLER PUSH2 0x660 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x443 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP1 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0x45D JUMPI INVALID JUMPDEST EQ PUSH2 0x467 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x518 SWAP3 DUP5 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4E7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xB14 AND JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x524 CALLER PUSH2 0x687 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x52F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x518 DUP2 PUSH2 0xBCC JUMP JUMPDEST PUSH2 0x541 CALLER PUSH2 0x660 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x54C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x518 DUP2 PUSH2 0xBDD JUMP JUMPDEST PUSH2 0x55E CALLER PUSH2 0x687 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x569 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP1 DUP1 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0x582 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x58D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH21 0x30000000000000000000000000000000000000000 OR PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE PUSH1 0x2 DUP1 SLOAD PUSH23 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x606 CALLER PUSH2 0x687 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x611 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x3 DUP1 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0x62B JUMPI INVALID JUMPDEST EQ PUSH2 0x635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 SWAP2 SWAP1 PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 PUSH2 0x37F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x672 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xBEE AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x672 PUSH1 0x1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xBEE AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6A5 CALLER PUSH2 0x660 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x6B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x3 DUP1 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0x6CA JUMPI INVALID JUMPDEST EQ PUSH2 0x6D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0x6FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH2 0xFFFF AND ISZERO ISZERO PUSH2 0x774 JUMPI PUSH1 0x3 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP2 AND PUSH23 0x100000000000000000000000000000000000000000000 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH2 0x83C JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH2 0xFFFF PUSH1 0xB8 PUSH1 0x2 EXP DUP1 DUP5 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD DUP2 AND DUP3 MUL PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE SWAP1 SWAP2 DIV AND PUSH2 0x16E EQ ISZERO PUSH2 0x83C JUMPI PUSH1 0x3 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH1 0x1 PUSH1 0xFF PUSH23 0x100000000000000000000000000000000000000000000 DUP1 DUP6 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD AND MUL PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH1 0x4 SLOAD PUSH1 0x2 SWAP1 DIV PUSH1 0x4 SSTORE JUMPDEST POP PUSH1 0x4 SLOAD PUSH1 0x2 SLOAD PUSH1 0x3 SLOAD PUSH2 0x16D SWAP1 SWAP3 DIV SWAP2 PUSH2 0x518 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 PUSH4 0x1000000 SWAP1 SWAP2 DIV AND DUP4 PUSH2 0xB14 JUMP JUMPDEST PUSH2 0x875 CALLER PUSH2 0x660 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x880 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP1 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0x89A JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x8A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH22 0xFFFF0000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x8CF CALLER PUSH2 0x687 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x8DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP1 DUP1 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0x8F3 JUMPI INVALID JUMPDEST EQ PUSH2 0x8FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP3 SWAP1 SWAP3 AND PUSH4 0x1000000 MUL PUSH23 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x966 CALLER PUSH2 0x660 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x971 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP1 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0x98B JUMPI INVALID JUMPDEST EQ PUSH2 0x995 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD ISZERO ISZERO PUSH2 0xA46 JUMPI PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA18 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO ISZERO PUSH2 0xA3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 DUP2 DIV PUSH1 0x4 SSTORE JUMPDEST POP PUSH1 0x3 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xA76 CALLER PUSH2 0xC25 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x16D DUP2 JUMP JUMPDEST PUSH2 0xA76 CALLER PUSH2 0xC36 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0xAA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x3 DUP1 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0xABF JUMPI INVALID JUMPDEST EQ PUSH2 0xAC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0xAF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBA4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xBC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x518 PUSH1 0x1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xC47 AND JUMP JUMPDEST PUSH2 0x518 PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xC47 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xC05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x518 PUSH1 0x1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xC95 AND JUMP JUMPDEST PUSH2 0x518 PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xC95 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xC5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC66 DUP3 DUP3 PUSH2 0xBEE JUMP JUMPDEST ISZERO PUSH2 0xC70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xCAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCB4 DUP3 DUP3 PUSH2 0xBEE JUMP JUMPDEST ISZERO ISZERO PUSH2 0xCBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 PUSH28 0x121E87532D8C1F7A6B96BD6424AEDA0C92676F8AECA5BD4496952CE2 0x25 0x29 0xcc STOP 0x29 ", + "sourceMap": "490:3617:1:-;;;1055:310;8:9:-1;5:2;;;30:1;27;20:12;5:2;1055:310:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;350:24:0;363:10;350:12;;;;:24;:::i;:::-;348:26:2;363:10;348:14;;;;:26;:::i;:::-;1232:10:1;:22;;-1:-1:-1;;1232:22:1;;;;;;;;;;-1:-1:-1;;1265:20:1;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1296:21:1;;-1:-1:-1;;;;;1296:21:1;;;;;;;;:6;1328:29;;-1:-1:-1;;;;;;1328:29:1;;;;;;;;490:3617;;806:96:0;865:29;:16;886:7;865:20;;;;;;:29;:::i;:::-;806:96;:::o;818:94:2:-;879:25;:12;896:7;879:16;;;;;;:25;:::i;244:167:4:-;-1:-1:-1;;;;;316:21:4;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:4;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:4;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:4;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:4;:11;:20;;;;;;;;;;;;;;;725:166::o;490:3617:1:-;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "668200", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "DAYS_PER_YEAR()": "536", + "activateMiner()": "infinite", + "addCoreTeam(address)": "infinite", + "addSupervisor(address)": "infinite", + "deactivateMiner()": "infinite", + "getCategory()": "608", + "isAlgoMiner()": "212", + "isCoreTeam(address)": "infinite", + "isSupervisor(address)": "infinite", + "migrateMiner(address)": "infinite", + "mine()": "infinite", + "pauseMining()": "infinite", + "renounceCoreTeam()": "infinite", + "renounceSupervisor()": "infinite", + "resetMiner(address)": "infinite", + "resumeMining()": "infinite", + "startMining()": "21275", + "stopAndRemoveOwnership()": "infinite", + "stopMining()": "21624" + } + }, + "methodIdentifiers": { + "DAYS_PER_YEAR()": "c6846ef8", + "activateMiner()": "b2a32cd5", + "addCoreTeam(address)": "2e6b6849", + "addSupervisor(address)": "29d10b6e", + "deactivateMiner()": "9e614ca0", + "getCategory()": "80258e47", + "isAlgoMiner()": "1777fb4b", + "isCoreTeam(address)": "608d3d3d", + "isSupervisor(address)": "81a24459", + "migrateMiner(address)": "231d4e2a", + "mine()": "99f4b251", + "pauseMining()": "162f986d", + "renounceCoreTeam()": "d43acc79", + "renounceSupervisor()": "be952494", + "resetMiner(address)": "ada436e9", + "resumeMining()": "427534a4", + "startMining()": "21b79d98", + "stopAndRemoveOwnership()": "363aa6c7", + "stopMining()": "da408679" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"pauseMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isAlgoMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"startMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newMinerAddress\",\"type\":\"address\"}],\"name\":\"migrateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopAndRemoveOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"resumeMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCategory\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSupervisor\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"deactivateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwnerAddress\",\"type\":\"address\"}],\"name\":\"resetMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"activateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DAYS_PER_YEAR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"minerType\",\"type\":\"uint16\"},{\"name\":\"category\",\"type\":\"uint8\"},{\"name\":\"ownerAddress\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoMiner.sol\":\"AlgoMiner\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0x98513c8bd78301543260967ae791ebb2a652f73fef585417f72a3097f4e1ae21\",\"urls\":[\"bzzr://a9cfa1df913c0a9ad0937d821ead954e31f7da6a462933bcfa20abe2b44ec984\"]},\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoMiner.sol\":{\"keccak256\":\"0xbcbc30316cb27f341b793f19490a9d68bab1a270dbd9c67681a1bf410a6944b5\",\"urls\":[\"bzzr://3e80f70b75884a37ba48ec93966687fb024e9c012eb297e98191245728cf882c\"]},\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoSupervisorRole.sol\":{\"keccak256\":\"0x626852f0a9f4d4f9380980d0e1149ddbd366f191fd0ccccdd05bddad48b6edb9\",\"urls\":[\"bzzr://b3e1ed4ffdbe656126a72382de3f2ecacb7005937172513a47019dbaaace7e5a\"]},\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0xb457e39e512b5475c3e70193ab0a751f6626a50417954247f0cf47c7ca15eff7\",\"urls\":[\"bzzr://3b585a4055121fee393f2b691538036c87f56556f43f0b6e851a88de7b8275e6\"]},\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoSupervisorRole.sol": { + "AlgoSupervisorRole": { + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addSupervisor", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isSupervisor", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceSupervisor", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "addSupervisor(address)": "29d10b6e", + "isSupervisor(address)": "81a24459", + "renounceSupervisor()": "be952494" + } + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/IAlgoMiner.sol": { + "IAlgoMiner": { + "abi": [ + { + "constant": true, + "inputs": [], + "name": "isAlgoMiner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getCategory", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "getCategory()": "80258e47", + "isAlgoMiner()": "1777fb4b" + } + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { + "Roles": { + "abi": [], + "devdoc": { + "methods": {}, + "title": "Roles" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820bfa74e3170abc2ace25475dc7dfb71c6416c34449905f1f30a00ec4431d9206c0029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xbf 0xa7 0x4e BALANCE PUSH17 0xABC2ACE25475DC7DFB71C6416C34449905 CALL RETURN EXP STOP 0xec DIFFICULTY BALANCE 0xd9 KECCAK256 PUSH13 0x290000000000000000000000 ", + "sourceMap": "109:784:4:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "15200", + "executionCost": "116", + "totalCost": "15316" + }, + "internal": { + "add(struct Roles.Role storage pointer,address)": "infinite", + "has(struct Roles.Role storage pointer,address)": "infinite", + "remove(struct Roles.Role storage pointer,address)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"Roles\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":\"Roles\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { + "SafeMath": { + "abi": [], + "devdoc": { + "methods": {}, + "title": "SafeMath" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a723058204094b52d7c5ef1d5aa4907b2604c65a23d27d58f9b4359f5187db6598b2799300029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 BLOCKHASH SWAP5 0xb5 0x2d PUSH29 0x5EF1D5AA4907B2604C65A23D27D58F9B4359F5187DB6598B2799300029 ", + "sourceMap": "117:1531:5:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "15200", + "executionCost": "116", + "totalCost": "15316" + }, + "internal": { + "add(uint256,uint256)": "infinite", + "div(uint256,uint256)": "infinite", + "mod(uint256,uint256)": "infinite", + "mul(uint256,uint256)": "infinite", + "sub(uint256,uint256)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"SafeMath\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol": { + "IERC20": { + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "who", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + } + ], + "devdoc": { + "methods": {}, + "title": "ERC20 interface" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol": { + "SafeERC20": { + "abi": [], + "devdoc": { + "methods": {}, + "title": "SafeERC20" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a723058207a38fb4cb6c1c093de86b1ba91e5add211165e6c76b8cc0d294ecbd35bbbeb2c0029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 PUSH27 0x38FB4CB6C1C093DE86B1BA91E5ADD211165E6C76B8CC0D294ECBD3 JUMPDEST 0xbb 0xeb 0x2c STOP 0x29 ", + "sourceMap": "353:1296:7:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "15200", + "executionCost": "116", + "totalCost": "15316" + }, + "internal": { + "safeApprove(contract IERC20,address,uint256)": "infinite", + "safeDecreaseAllowance(contract IERC20,address,uint256)": "infinite", + "safeIncreaseAllowance(contract IERC20,address,uint256)": "infinite", + "safeTransfer(contract IERC20,address,uint256)": "infinite", + "safeTransferFrom(contract IERC20,address,address,uint256)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"SafeERC20\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + } + }, + "sources": { + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoCoreTeamRole.sol": { + "ast": { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoCoreTeamRole.sol", + "exportedSymbols": { + "AlgoCoreTeamRole": [ + 86 + ] + }, + "id": 87, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:0" + }, + { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "file": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "id": 2, + "nodeType": "ImportDirective", + "scope": 87, + "sourceUnit": 677, + "src": "28:171:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 86, + "linearizedBaseContracts": [ + 86 + ], + "name": "AlgoCoreTeamRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 5, + "libraryName": { + "contractScope": null, + "id": 3, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 676, + "src": "242:5:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$676", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "236:27:0", + "typeName": { + "contractScope": null, + "id": 4, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 589, + "src": "252:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$589_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "constant": false, + "id": 7, + "name": "_coreTeamMembers", + "nodeType": "VariableDeclaration", + "scope": 86, + "src": "271:35:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$589_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 6, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 589, + "src": "271:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$589_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 15, + "nodeType": "Block", + "src": "339:43:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1032, + "src": "363:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 12, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "363:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10, + "name": "_addCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "350:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 13, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "350:24:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14, + "nodeType": "ExpressionStatement", + "src": "350:24:0" + } + ] + }, + "documentation": null, + "id": 16, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8, + "nodeType": "ParameterList", + "parameters": [], + "src": "327:2:0" + }, + "payable": false, + "returnParameters": { + "id": 9, + "nodeType": "ParameterList", + "parameters": [], + "src": "339:0:0" + }, + "scope": 86, + "src": "315:67:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 26, + "nodeType": "Block", + "src": "414:62:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 20, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1032, + "src": "444:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 21, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "444:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 19, + "name": "isCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "433:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 22, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "433:22:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 18, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "425:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 23, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "425:31:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 24, + "nodeType": "ExpressionStatement", + "src": "425:31:0" + }, + { + "id": 25, + "nodeType": "PlaceholderStatement", + "src": "467:1:0" + } + ] + }, + "documentation": null, + "id": 27, + "name": "onlyCoreTeam", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 17, + "nodeType": "ParameterList", + "parameters": [], + "src": "411:2:0" + }, + "src": "390:86:0", + "visibility": "internal" + }, + { + "body": { + "id": 39, + "nodeType": "Block", + "src": "548:55:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 36, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 29, + "src": "587:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 34, + "name": "_coreTeamMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "566:16:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$589_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 35, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 675, + "src": "566:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$589_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$589_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 37, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "566:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 33, + "id": 38, + "nodeType": "Return", + "src": "559:36:0" + } + ] + }, + "documentation": null, + "id": 40, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 30, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 29, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 40, + "src": "504:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 28, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "504:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "503:17:0" + }, + "payable": false, + "returnParameters": { + "id": 33, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 32, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 40, + "src": "542:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 31, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "542:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "541:6:0" + }, + "scope": 86, + "src": "484:119:0", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 51, + "nodeType": "Block", + "src": "669:40:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 48, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "693:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 47, + "name": "_addCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "680:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 49, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "680:21:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 50, + "nodeType": "ExpressionStatement", + "src": "680:21:0" + } + ] + }, + "documentation": null, + "id": 52, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 45, + "modifierName": { + "argumentTypes": null, + "id": 44, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "656:12:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "656:12:0" + } + ], + "name": "addCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 42, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 52, + "src": "632:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 41, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "632:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "631:17:0" + }, + "payable": false, + "returnParameters": { + "id": 46, + "nodeType": "ParameterList", + "parameters": [], + "src": "669:0:0" + }, + "scope": 86, + "src": "611:98:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 60, + "nodeType": "Block", + "src": "752:46:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 56, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1032, + "src": "779:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 57, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "779:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 55, + "name": "_removeCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "763:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 58, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "763:27:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 59, + "nodeType": "ExpressionStatement", + "src": "763:27:0" + } + ] + }, + "documentation": null, + "id": 61, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "renounceCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 53, + "nodeType": "ParameterList", + "parameters": [], + "src": "742:2:0" + }, + "payable": false, + "returnParameters": { + "id": 54, + "nodeType": "ParameterList", + "parameters": [], + "src": "752:0:0" + }, + "scope": 86, + "src": "717:81:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 72, + "nodeType": "Block", + "src": "854:48:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 69, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 63, + "src": "886:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 66, + "name": "_coreTeamMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "865:16:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$589_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 68, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 621, + "src": "865:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$589_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$589_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 70, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "865:29:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 71, + "nodeType": "ExpressionStatement", + "src": "865:29:0" + } + ] + }, + "documentation": null, + "id": 73, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_addCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 64, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 63, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 73, + "src": "828:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 62, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "828:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "827:17:0" + }, + "payable": false, + "returnParameters": { + "id": 65, + "nodeType": "ParameterList", + "parameters": [], + "src": "854:0:0" + }, + "scope": 86, + "src": "806:96:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 84, + "nodeType": "Block", + "src": "961:51:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 81, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 75, + "src": "996:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 78, + "name": "_coreTeamMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "972:16:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$589_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 80, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 652, + "src": "972:23:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$589_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$589_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 82, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "972:32:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 83, + "nodeType": "ExpressionStatement", + "src": "972:32:0" + } + ] + }, + "documentation": null, + "id": 85, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_removeCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 76, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 75, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 85, + "src": "935:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 74, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "935:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "934:17:0" + }, + "payable": false, + "returnParameters": { + "id": 77, + "nodeType": "ParameterList", + "parameters": [], + "src": "961:0:0" + }, + "scope": 86, + "src": "910:102:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 87, + "src": "203:812:0" + } + ], + "src": "0:1017:0" + }, + "id": 0 + }, + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoMiner.sol": { + "ast": { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoMiner.sol", + "exportedSymbols": { + "AlgoMiner": [ + 482 + ] + }, + "id": 483, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 88, + "literals": [ + "solidity", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:23:1" + }, + { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "id": 89, + "nodeType": "ImportDirective", + "scope": 483, + "sourceUnit": 874, + "src": "27:177:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "file": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "id": 90, + "nodeType": "ImportDirective", + "scope": 483, + "sourceUnit": 1018, + "src": "206:180:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/IAlgoMiner.sol", + "file": "./IAlgoMiner.sol", + "id": 91, + "nodeType": "ImportDirective", + "scope": 483, + "sourceUnit": 583, + "src": "390:26:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoCoreTeamRole.sol", + "file": "./AlgoCoreTeamRole.sol", + "id": 92, + "nodeType": "ImportDirective", + "scope": 483, + "sourceUnit": 87, + "src": "418:32:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoSupervisorRole.sol", + "file": "./AlgoSupervisorRole.sol", + "id": 93, + "nodeType": "ImportDirective", + "scope": 483, + "sourceUnit": 570, + "src": "452:34:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 94, + "name": "AlgoCoreTeamRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 86, + "src": "512:16:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AlgoCoreTeamRole_$86", + "typeString": "contract AlgoCoreTeamRole" + } + }, + "id": 95, + "nodeType": "InheritanceSpecifier", + "src": "512:16:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 96, + "name": "AlgoSupervisorRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 569, + "src": "530:18:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AlgoSupervisorRole_$569", + "typeString": "contract AlgoSupervisorRole" + } + }, + "id": 97, + "nodeType": "InheritanceSpecifier", + "src": "530:18:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 98, + "name": "IAlgoMiner", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 582, + "src": "550:10:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$582", + "typeString": "contract IAlgoMiner" + } + }, + "id": 99, + "nodeType": "InheritanceSpecifier", + "src": "550:10:1" + } + ], + "contractDependencies": [ + 86, + 569, + 582 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 482, + "linearizedBaseContracts": [ + 482, + 582, + 569, + 86 + ], + "name": "AlgoMiner", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 102, + "libraryName": { + "contractScope": null, + "id": 100, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1017, + "src": "574:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$1017", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "568:27:1", + "typeName": { + "contractScope": null, + "id": 101, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 873, + "src": "588:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$873", + "typeString": "contract IERC20" + } + } + }, + { + "constant": true, + "id": 105, + "name": "DAYS_PER_YEAR", + "nodeType": "VariableDeclaration", + "scope": 482, + "src": "603:43:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 103, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "603:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "333635", + "id": 104, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "643:3:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_365_by_1", + "typeString": "int_const 365" + }, + "value": "365" + }, + "visibility": "public" + }, + { + "canonicalName": "AlgoMiner.MinerState", + "id": 110, + "members": [ + { + "id": 106, + "name": "Deactivated", + "nodeType": "EnumValue", + "src": "682:11:1" + }, + { + "id": 107, + "name": "Activated", + "nodeType": "EnumValue", + "src": "704:9:1" + }, + { + "id": 108, + "name": "Suspended", + "nodeType": "EnumValue", + "src": "724:9:1" + }, + { + "id": 109, + "name": "Stopped", + "nodeType": "EnumValue", + "src": "744:7:1" + } + ], + "name": "MinerState", + "nodeType": "EnumDefinition", + "src": "655:103:1" + }, + { + "constant": false, + "id": 112, + "name": "_minerType", + "nodeType": "VariableDeclaration", + "scope": 482, + "src": "766:25:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 111, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "766:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 114, + "name": "_category", + "nodeType": "VariableDeclaration", + "scope": 482, + "src": "798:23:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 113, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "798:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 116, + "name": "_miner", + "nodeType": "VariableDeclaration", + "scope": 482, + "src": "828:22:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 115, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "828:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 118, + "name": "_token", + "nodeType": "VariableDeclaration", + "scope": 482, + "src": "857:21:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$873", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 117, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 873, + "src": "857:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$873", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 120, + "name": "_state", + "nodeType": "VariableDeclaration", + "scope": 482, + "src": "887:25:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + }, + "typeName": { + "contractScope": null, + "id": 119, + "name": "MinerState", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 110, + "src": "887:10:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 122, + "name": "_mining", + "nodeType": "VariableDeclaration", + "scope": 482, + "src": "919:20:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 121, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "919:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 124, + "name": "_currentYear", + "nodeType": "VariableDeclaration", + "scope": 482, + "src": "946:26:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 123, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "946:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 126, + "name": "_currentDay", + "nodeType": "VariableDeclaration", + "scope": 482, + "src": "979:26:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 125, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "979:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 128, + "name": "_currentYearSupply", + "nodeType": "VariableDeclaration", + "scope": 482, + "src": "1012:34:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 127, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1012:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 161, + "nodeType": "Block", + "src": "1219:146:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 143, + "name": "_minerType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 112, + "src": "1232:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 144, + "name": "minerType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "1245:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "1232:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 146, + "nodeType": "ExpressionStatement", + "src": "1232:22:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 149, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 147, + "name": "_category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 114, + "src": "1265:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 148, + "name": "category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 132, + "src": "1277:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "1265:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 150, + "nodeType": "ExpressionStatement", + "src": "1265:20:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 151, + "name": "_miner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 116, + "src": "1296:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 152, + "name": "ownerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 134, + "src": "1305:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1296:21:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 154, + "nodeType": "ExpressionStatement", + "src": "1296:21:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 155, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118, + "src": "1328:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$873", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 157, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 136, + "src": "1344:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 156, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 873, + "src": "1337:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$873_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 158, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1337:20:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$873", + "typeString": "contract IERC20" + } + }, + "src": "1328:29:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$873", + "typeString": "contract IERC20" + } + }, + "id": 160, + "nodeType": "ExpressionStatement", + "src": "1328:29:1" + } + ] + }, + "documentation": null, + "id": 162, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 139, + "modifierName": { + "argumentTypes": null, + "id": 138, + "name": "AlgoCoreTeamRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 86, + "src": "1154:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_AlgoCoreTeamRole_$86_$", + "typeString": "type(contract AlgoCoreTeamRole)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1154:18:1" + }, + { + "arguments": [], + "id": 141, + "modifierName": { + "argumentTypes": null, + "id": 140, + "name": "AlgoSupervisorRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 569, + "src": "1182:18:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_AlgoSupervisorRole_$569_$", + "typeString": "type(contract AlgoSupervisorRole)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1182:20:1" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 137, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 130, + "name": "minerType", + "nodeType": "VariableDeclaration", + "scope": 162, + "src": "1067:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 129, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1067:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 132, + "name": "category", + "nodeType": "VariableDeclaration", + "scope": 162, + "src": "1085:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 131, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1085:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 134, + "name": "ownerAddress", + "nodeType": "VariableDeclaration", + "scope": 162, + "src": "1101:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 133, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1101:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 136, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 162, + "src": "1123:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 135, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1123:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1066:78:1" + }, + "payable": false, + "returnParameters": { + "id": 142, + "nodeType": "ParameterList", + "parameters": [], + "src": "1219:0:1" + }, + "scope": 482, + "src": "1055:310:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 172, + "nodeType": "Block", + "src": "1394:60:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 165, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1032, + "src": "1413:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1413:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 167, + "name": "_miner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 116, + "src": "1427:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1413:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 164, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "1405:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1405:29:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 170, + "nodeType": "ExpressionStatement", + "src": "1405:29:1" + }, + { + "id": 171, + "nodeType": "PlaceholderStatement", + "src": "1445:1:1" + } + ] + }, + "documentation": null, + "id": 173, + "name": "onlyMiner", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 163, + "nodeType": "ParameterList", + "parameters": [], + "src": "1391:2:1" + }, + "src": "1373:81:1", + "visibility": "internal" + }, + { + "body": { + "id": 216, + "nodeType": "Block", + "src": "1511:326:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + }, + "id": 182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 179, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "1530:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 180, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 110, + "src": "1540:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$110_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 181, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Deactivated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1540:22:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "1530:32:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 178, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "1522:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1522:41:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 184, + "nodeType": "ExpressionStatement", + "src": "1522:41:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 185, + "name": "_currentYearSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 128, + "src": "1579:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 186, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1601:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1579:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 210, + "nodeType": "IfStatement", + "src": "1576:212:1", + "trueBody": { + "id": 209, + "nodeType": "Block", + "src": "1604:184:1", + "statements": [ + { + "assignments": [ + 189 + ], + "declarations": [ + { + "constant": false, + "id": 189, + "name": "currentBalance", + "nodeType": "VariableDeclaration", + "scope": 217, + "src": "1619:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 188, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1619:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 196, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 193, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1059, + "src": "1669:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AlgoMiner_$482", + "typeString": "contract AlgoMiner" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_AlgoMiner_$482", + "typeString": "contract AlgoMiner" + } + ], + "id": 192, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1661:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1661:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 190, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118, + "src": "1644:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$873", + "typeString": "contract IERC20" + } + }, + "id": 191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 818, + "src": "1644:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1644:31:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1619:56:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 198, + "name": "currentBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 189, + "src": "1700:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 199, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1718:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1700:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 197, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "1692:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1692:28:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 202, + "nodeType": "ExpressionStatement", + "src": "1692:28:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 203, + "name": "_currentYearSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 128, + "src": "1737:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 204, + "name": "currentBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 189, + "src": "1758:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 205, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1775:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "1758:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1737:39:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 208, + "nodeType": "ExpressionStatement", + "src": "1737:39:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 211, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "1800:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 212, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 110, + "src": "1809:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$110_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 213, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Activated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1809:20:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "1800:29:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "id": 215, + "nodeType": "ExpressionStatement", + "src": "1800:29:1" + } + ] + }, + "documentation": null, + "id": 217, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 176, + "modifierName": { + "argumentTypes": null, + "id": 175, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "1498:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1498:12:1" + } + ], + "name": "activateMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 174, + "nodeType": "ParameterList", + "parameters": [], + "src": "1488:2:1" + }, + "payable": false, + "returnParameters": { + "id": 177, + "nodeType": "ParameterList", + "parameters": [], + "src": "1511:0:1" + }, + "scope": 482, + "src": "1466:371:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 238, + "nodeType": "Block", + "src": "1892:138:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + }, + "id": 226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 223, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "1911:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 224, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 110, + "src": "1921:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$110_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 225, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Deactivated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1921:22:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "1911:32:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 222, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "1903:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1903:41:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 228, + "nodeType": "ExpressionStatement", + "src": "1903:41:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 229, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "1965:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 230, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 110, + "src": "1974:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$110_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 231, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Deactivated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1974:22:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "1965:31:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "id": 233, + "nodeType": "ExpressionStatement", + "src": "1965:31:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 234, + "name": "_mining", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 122, + "src": "2007:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 235, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2017:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "2007:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 237, + "nodeType": "ExpressionStatement", + "src": "2007:15:1" + } + ] + }, + "documentation": null, + "id": 239, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 220, + "modifierName": { + "argumentTypes": null, + "id": 219, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "1879:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1879:12:1" + } + ], + "name": "deactivateMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 218, + "nodeType": "ParameterList", + "parameters": [], + "src": "1869:2:1" + }, + "payable": false, + "returnParameters": { + "id": 221, + "nodeType": "ParameterList", + "parameters": [], + "src": "1892:0:1" + }, + "scope": 482, + "src": "1845:185:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 265, + "nodeType": "Block", + "src": "2105:142:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + }, + "id": 250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 247, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "2124:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 248, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 110, + "src": "2134:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$110_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 249, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Deactivated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2134:22:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "2124:32:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 246, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "2116:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 251, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2116:41:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 252, + "nodeType": "ExpressionStatement", + "src": "2116:41:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 256, + "name": "newMinerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 241, + "src": "2190:15:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 260, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1059, + "src": "2232:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AlgoMiner_$482", + "typeString": "contract AlgoMiner" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_AlgoMiner_$482", + "typeString": "contract AlgoMiner" + } + ], + "id": 259, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2224:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2224:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 257, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118, + "src": "2207:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$873", + "typeString": "contract IERC20" + } + }, + "id": 258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 818, + "src": "2207:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2207:31:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 253, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118, + "src": "2170:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$873", + "typeString": "contract IERC20" + } + }, + "id": 255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 898, + "src": "2170:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$873_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$873_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2170:69:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 264, + "nodeType": "ExpressionStatement", + "src": "2170:69:1" + } + ] + }, + "documentation": null, + "id": 266, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 244, + "modifierName": { + "argumentTypes": null, + "id": 243, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "2092:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2092:12:1" + } + ], + "name": "migrateMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 242, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 241, + "name": "newMinerAddress", + "nodeType": "VariableDeclaration", + "scope": 266, + "src": "2060:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 240, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2060:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2059:25:1" + }, + "payable": false, + "returnParameters": { + "id": 245, + "nodeType": "ParameterList", + "parameters": [], + "src": "2105:0:1" + }, + "scope": 482, + "src": "2038:209:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 283, + "nodeType": "Block", + "src": "2300:108:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + }, + "id": 275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 272, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "2319:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 273, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 110, + "src": "2329:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$110_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 274, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Activated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2329:20:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "2319:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 271, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "2311:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2311:39:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 277, + "nodeType": "ExpressionStatement", + "src": "2311:39:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 278, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "2371:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 279, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 110, + "src": "2380:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$110_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 280, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Suspended", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2380:20:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "2371:29:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "id": 282, + "nodeType": "ExpressionStatement", + "src": "2371:29:1" + } + ] + }, + "documentation": null, + "id": 284, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 269, + "modifierName": { + "argumentTypes": null, + "id": 268, + "name": "onlySupervisor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 510, + "src": "2285:14:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2285:14:1" + } + ], + "name": "pauseMining", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 267, + "nodeType": "ParameterList", + "parameters": [], + "src": "2275:2:1" + }, + "payable": false, + "returnParameters": { + "id": 270, + "nodeType": "ParameterList", + "parameters": [], + "src": "2300:0:1" + }, + "scope": 482, + "src": "2255:153:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 301, + "nodeType": "Block", + "src": "2462:100:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + }, + "id": 293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 290, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "2481:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 291, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 110, + "src": "2491:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$110_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 292, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Suspended", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2491:20:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "2481:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 289, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "2473:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2473:39:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 295, + "nodeType": "ExpressionStatement", + "src": "2473:39:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 299, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 296, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "2525:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 297, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 110, + "src": "2534:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$110_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 298, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Activated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2534:20:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "2525:29:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "id": 300, + "nodeType": "ExpressionStatement", + "src": "2525:29:1" + } + ] + }, + "documentation": null, + "id": 302, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 287, + "modifierName": { + "argumentTypes": null, + "id": 286, + "name": "onlySupervisor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 510, + "src": "2447:14:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2447:14:1" + } + ], + "name": "resumeMining", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 285, + "nodeType": "ParameterList", + "parameters": [], + "src": "2437:2:1" + }, + "payable": false, + "returnParameters": { + "id": 288, + "nodeType": "ParameterList", + "parameters": [], + "src": "2462:0:1" + }, + "scope": 482, + "src": "2416:146:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 329, + "nodeType": "Block", + "src": "2626:160:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + }, + "id": 311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 308, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "2645:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 309, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 110, + "src": "2655:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$110_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 310, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Stopped", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2655:18:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "2645:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 307, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "2637:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2637:37:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 313, + "nodeType": "ExpressionStatement", + "src": "2637:37:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 317, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 314, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "2695:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 315, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 110, + "src": "2704:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$110_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 316, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Stopped", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2704:18:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "2695:27:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "id": 318, + "nodeType": "ExpressionStatement", + "src": "2695:27:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 319, + "name": "_mining", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 122, + "src": "2733:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 320, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2743:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "2733:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 322, + "nodeType": "ExpressionStatement", + "src": "2733:15:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 323, + "name": "_miner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 116, + "src": "2759:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 325, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2776:1:1", + "subdenomination": null, + "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": 324, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2768:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 326, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2768:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2759:19:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 328, + "nodeType": "ExpressionStatement", + "src": "2759:19:1" + } + ] + }, + "documentation": null, + "id": 330, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 305, + "modifierName": { + "argumentTypes": null, + "id": 304, + "name": "onlySupervisor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 510, + "src": "2611:14:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2611:14:1" + } + ], + "name": "stopAndRemoveOwnership", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 303, + "nodeType": "ParameterList", + "parameters": [], + "src": "2601:2:1" + }, + "payable": false, + "returnParameters": { + "id": 306, + "nodeType": "ParameterList", + "parameters": [], + "src": "2626:0:1" + }, + "scope": 482, + "src": "2570:216:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 353, + "nodeType": "Block", + "src": "2861:133:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + }, + "id": 341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 338, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "2880:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 339, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 110, + "src": "2890:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$110_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 340, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Stopped", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2890:18:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "2880:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 337, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "2872:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2872:37:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 343, + "nodeType": "ExpressionStatement", + "src": "2872:37:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 344, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "2922:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 345, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 110, + "src": "2931:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$110_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 346, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Activated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2931:20:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "2922:29:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "id": 348, + "nodeType": "ExpressionStatement", + "src": "2922:29:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 349, + "name": "_miner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 116, + "src": "2962:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 350, + "name": "newOwnerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 332, + "src": "2971:15:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2962:24:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 352, + "nodeType": "ExpressionStatement", + "src": "2962:24:1" + } + ] + }, + "documentation": null, + "id": 354, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 335, + "modifierName": { + "argumentTypes": null, + "id": 334, + "name": "onlySupervisor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 510, + "src": "2846:14:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2846:14:1" + } + ], + "name": "resetMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 333, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 332, + "name": "newOwnerAddress", + "nodeType": "VariableDeclaration", + "scope": 354, + "src": "2814:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 331, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2814:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2813:25:1" + }, + "payable": false, + "returnParameters": { + "id": 336, + "nodeType": "ParameterList", + "parameters": [], + "src": "2861:0:1" + }, + "scope": 482, + "src": "2794:200:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 375, + "nodeType": "Block", + "src": "3042:121:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + }, + "id": 363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 360, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "3061:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 361, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 110, + "src": "3071:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$110_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 362, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Activated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3071:20:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "3061:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 359, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "3053:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3053:39:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 365, + "nodeType": "ExpressionStatement", + "src": "3053:39:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "3111:8:1", + "subExpression": { + "argumentTypes": null, + "id": 367, + "name": "_mining", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 122, + "src": "3112:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 366, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "3103:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 369, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3103:17:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 370, + "nodeType": "ExpressionStatement", + "src": "3103:17:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 371, + "name": "_mining", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 122, + "src": "3141:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 372, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3151:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "3141:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 374, + "nodeType": "ExpressionStatement", + "src": "3141:14:1" + } + ] + }, + "documentation": null, + "id": 376, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 357, + "modifierName": { + "argumentTypes": null, + "id": 356, + "name": "onlyMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 173, + "src": "3032:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3032:9:1" + } + ], + "name": "startMining", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 355, + "nodeType": "ParameterList", + "parameters": [], + "src": "3022:2:1" + }, + "payable": false, + "returnParameters": { + "id": 358, + "nodeType": "ParameterList", + "parameters": [], + "src": "3042:0:1" + }, + "scope": 482, + "src": "3002:161:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 396, + "nodeType": "Block", + "src": "3210:121:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + }, + "id": 385, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 382, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "3229:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 383, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 110, + "src": "3239:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$110_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 384, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Activated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3239:20:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "3229:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 381, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "3221:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3221:39:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 387, + "nodeType": "ExpressionStatement", + "src": "3221:39:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 389, + "name": "_mining", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 122, + "src": "3279:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 388, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "3271:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 390, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3271:16:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 391, + "nodeType": "ExpressionStatement", + "src": "3271:16:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 392, + "name": "_mining", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 122, + "src": "3308:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 393, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3318:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "3308:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 395, + "nodeType": "ExpressionStatement", + "src": "3308:15:1" + } + ] + }, + "documentation": null, + "id": 397, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 379, + "modifierName": { + "argumentTypes": null, + "id": 378, + "name": "onlyMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 173, + "src": "3200:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3200:9:1" + } + ], + "name": "stopMining", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 377, + "nodeType": "ParameterList", + "parameters": [], + "src": "3190:2:1" + }, + "payable": false, + "returnParameters": { + "id": 380, + "nodeType": "ParameterList", + "parameters": [], + "src": "3210:0:1" + }, + "scope": 482, + "src": "3171:160:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 464, + "nodeType": "Block", + "src": "3375:547:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + }, + "id": 406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 403, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "3394:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 404, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 110, + "src": "3404:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$110_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 405, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Activated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3404:20:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$110", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "3394:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 402, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "3386:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 407, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3386:39:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 408, + "nodeType": "ExpressionStatement", + "src": "3386:39:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 410, + "name": "_mining", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 122, + "src": "3444:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 409, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "3436:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3436:16:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 412, + "nodeType": "ExpressionStatement", + "src": "3436:16:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "id": 415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 413, + "name": "_currentDay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 126, + "src": "3468:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 414, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3483:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3468:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 449, + "nodeType": "Block", + "src": "3565:238:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3580:13:1", + "subExpression": { + "argumentTypes": null, + "id": 425, + "name": "_currentDay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 126, + "src": "3580:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 427, + "nodeType": "ExpressionStatement", + "src": "3580:13:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 433, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 428, + "name": "_currentDay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 126, + "src": "3611:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 431, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 429, + "name": "DAYS_PER_YEAR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 105, + "src": "3627:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 430, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3643:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3627:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 432, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3626:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3611:34:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 448, + "nodeType": "IfStatement", + "src": "3608:184:1", + "trueBody": { + "id": 447, + "nodeType": "Block", + "src": "3647:145:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3666:14:1", + "subExpression": { + "argumentTypes": null, + "id": 434, + "name": "_currentYear", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 124, + "src": "3666:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 436, + "nodeType": "ExpressionStatement", + "src": "3666:14:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 437, + "name": "_currentDay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 126, + "src": "3699:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 438, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3713:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3699:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 440, + "nodeType": "ExpressionStatement", + "src": "3699:15:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 445, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 441, + "name": "_currentYearSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 128, + "src": "3733:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 442, + "name": "_currentYearSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 128, + "src": "3754:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 443, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3775:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "3754:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3733:43:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 446, + "nodeType": "ExpressionStatement", + "src": "3733:43:1" + } + ] + } + } + ] + }, + "id": 450, + "nodeType": "IfStatement", + "src": "3465:338:1", + "trueBody": { + "id": 424, + "nodeType": "Block", + "src": "3486:73:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 416, + "name": "_currentYear", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 124, + "src": "3501:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 417, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3516:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3501:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 419, + "nodeType": "ExpressionStatement", + "src": "3501:16:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 420, + "name": "_currentDay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 126, + "src": "3532:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 421, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3546:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3532:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 423, + "nodeType": "ExpressionStatement", + "src": "3532:15:1" + } + ] + } + }, + { + "assignments": [ + 452 + ], + "declarations": [ + { + "constant": false, + "id": 452, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 465, + "src": "3815:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 451, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3815:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 456, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 453, + "name": "_currentYearSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 128, + "src": "3832:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 454, + "name": "DAYS_PER_YEAR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 105, + "src": "3853:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3832:34:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3815:51:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 460, + "name": "_miner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 116, + "src": "3899:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 461, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 452, + "src": "3907:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 457, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118, + "src": "3879:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$873", + "typeString": "contract IERC20" + } + }, + "id": 459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 898, + "src": "3879:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$873_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$873_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3879:35:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 463, + "nodeType": "ExpressionStatement", + "src": "3879:35:1" + } + ] + }, + "documentation": null, + "id": 465, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 400, + "modifierName": { + "argumentTypes": null, + "id": 399, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "3362:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3362:12:1" + } + ], + "name": "mine", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 398, + "nodeType": "ParameterList", + "parameters": [], + "src": "3352:2:1" + }, + "payable": false, + "returnParameters": { + "id": 401, + "nodeType": "ParameterList", + "parameters": [], + "src": "3375:0:1" + }, + "scope": 482, + "src": "3339:583:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 472, + "nodeType": "Block", + "src": "3980:30:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 470, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3998:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 469, + "id": 471, + "nodeType": "Return", + "src": "3991:11:1" + } + ] + }, + "documentation": null, + "id": 473, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isAlgoMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 466, + "nodeType": "ParameterList", + "parameters": [], + "src": "3950:2:1" + }, + "payable": false, + "returnParameters": { + "id": 469, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 468, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 473, + "src": "3974:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 467, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3974:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3973:6:1" + }, + "scope": 482, + "src": "3930:80:1", + "stateMutability": "pure", + "superFunction": 576, + "visibility": "public" + }, + { + "body": { + "id": 480, + "nodeType": "Block", + "src": "4069:35:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 478, + "name": "_category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 114, + "src": "4087:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 477, + "id": 479, + "nodeType": "Return", + "src": "4080:16:1" + } + ] + }, + "documentation": null, + "id": 481, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getCategory", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 474, + "nodeType": "ParameterList", + "parameters": [], + "src": "4038:2:1" + }, + "payable": false, + "returnParameters": { + "id": 477, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 476, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 481, + "src": "4062:5:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 475, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4062:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4061:7:1" + }, + "scope": 482, + "src": "4018:86:1", + "stateMutability": "view", + "superFunction": 581, + "visibility": "public" + } + ], + "scope": 483, + "src": "490:3617:1" + } + ], + "src": "0:4109:1" + }, + "id": 1 + }, + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoSupervisorRole.sol": { + "ast": { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoSupervisorRole.sol", + "exportedSymbols": { + "AlgoSupervisorRole": [ + 569 + ] + }, + "id": 570, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 484, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:2" + }, + { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "file": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "id": 485, + "nodeType": "ImportDirective", + "scope": 570, + "sourceUnit": 677, + "src": "28:171:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 569, + "linearizedBaseContracts": [ + 569 + ], + "name": "AlgoSupervisorRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 488, + "libraryName": { + "contractScope": null, + "id": 486, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 676, + "src": "244:5:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$676", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "238:27:2", + "typeName": { + "contractScope": null, + "id": 487, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 589, + "src": "254:10:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$589_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "constant": false, + "id": 490, + "name": "_supervisors", + "nodeType": "VariableDeclaration", + "scope": 569, + "src": "273:31:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$589_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 489, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 589, + "src": "273:10:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$589_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 498, + "nodeType": "Block", + "src": "337:45:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 494, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1032, + "src": "363:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "363:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 493, + "name": "_addSupervisor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "348:14:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 496, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "348:26:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 497, + "nodeType": "ExpressionStatement", + "src": "348:26:2" + } + ] + }, + "documentation": null, + "id": 499, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 491, + "nodeType": "ParameterList", + "parameters": [], + "src": "325:2:2" + }, + "payable": false, + "returnParameters": { + "id": 492, + "nodeType": "ParameterList", + "parameters": [], + "src": "337:0:2" + }, + "scope": 569, + "src": "313:69:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 509, + "nodeType": "Block", + "src": "416:64:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 503, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1032, + "src": "448:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "448:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 502, + "name": "isSupervisor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 523, + "src": "435:12:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "435:24:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 501, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "427:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "427:33:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 507, + "nodeType": "ExpressionStatement", + "src": "427:33:2" + }, + { + "id": 508, + "nodeType": "PlaceholderStatement", + "src": "471:1:2" + } + ] + }, + "documentation": null, + "id": 510, + "name": "onlySupervisor", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 500, + "nodeType": "ParameterList", + "parameters": [], + "src": "413:2:2" + }, + "src": "390:90:2", + "visibility": "internal" + }, + { + "body": { + "id": 522, + "nodeType": "Block", + "src": "554:51:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 519, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 512, + "src": "589:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 517, + "name": "_supervisors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 490, + "src": "572:12:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$589_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 518, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 675, + "src": "572:16:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$589_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$589_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "572:25:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 516, + "id": 521, + "nodeType": "Return", + "src": "565:32:2" + } + ] + }, + "documentation": null, + "id": 523, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isSupervisor", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 513, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 512, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 523, + "src": "510:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 511, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "510:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "509:17:2" + }, + "payable": false, + "returnParameters": { + "id": 516, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 515, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 523, + "src": "548:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 514, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "548:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "547:6:2" + }, + "scope": 569, + "src": "488:117:2", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 534, + "nodeType": "Block", + "src": "675:42:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 531, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 525, + "src": "701:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 530, + "name": "_addSupervisor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "686:14:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "686:23:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 533, + "nodeType": "ExpressionStatement", + "src": "686:23:2" + } + ] + }, + "documentation": null, + "id": 535, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 528, + "modifierName": { + "argumentTypes": null, + "id": 527, + "name": "onlySupervisor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 510, + "src": "660:14:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "660:14:2" + } + ], + "name": "addSupervisor", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 526, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 525, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 535, + "src": "636:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 524, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "636:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "635:17:2" + }, + "payable": false, + "returnParameters": { + "id": 529, + "nodeType": "ParameterList", + "parameters": [], + "src": "675:0:2" + }, + "scope": 569, + "src": "613:104:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 543, + "nodeType": "Block", + "src": "762:48:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 539, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1032, + "src": "791:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 540, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "791:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 538, + "name": "_removeSupervisor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 568, + "src": "773:17:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "773:29:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 542, + "nodeType": "ExpressionStatement", + "src": "773:29:2" + } + ] + }, + "documentation": null, + "id": 544, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "renounceSupervisor", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 536, + "nodeType": "ParameterList", + "parameters": [], + "src": "752:2:2" + }, + "payable": false, + "returnParameters": { + "id": 537, + "nodeType": "ParameterList", + "parameters": [], + "src": "762:0:2" + }, + "scope": 569, + "src": "725:85:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 555, + "nodeType": "Block", + "src": "868:44:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 552, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 546, + "src": "896:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 549, + "name": "_supervisors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 490, + "src": "879:12:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$589_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 551, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 621, + "src": "879:16:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$589_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$589_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "879:25:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 554, + "nodeType": "ExpressionStatement", + "src": "879:25:2" + } + ] + }, + "documentation": null, + "id": 556, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_addSupervisor", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 547, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 546, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 556, + "src": "842:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 545, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "842:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "841:17:2" + }, + "payable": false, + "returnParameters": { + "id": 548, + "nodeType": "ParameterList", + "parameters": [], + "src": "868:0:2" + }, + "scope": 569, + "src": "818:94:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 567, + "nodeType": "Block", + "src": "973:47:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 564, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 558, + "src": "1004:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 561, + "name": "_supervisors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 490, + "src": "984:12:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$589_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 563, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 652, + "src": "984:19:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$589_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$589_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 565, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "984:28:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 566, + "nodeType": "ExpressionStatement", + "src": "984:28:2" + } + ] + }, + "documentation": null, + "id": 568, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_removeSupervisor", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 559, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 558, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 568, + "src": "947:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 557, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "947:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "946:17:2" + }, + "payable": false, + "returnParameters": { + "id": 560, + "nodeType": "ParameterList", + "parameters": [], + "src": "973:0:2" + }, + "scope": 569, + "src": "920:100:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 570, + "src": "203:820:2" + } + ], + "src": "0:1025:2" + }, + "id": 2 + }, + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/IAlgoMiner.sol": { + "ast": { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/IAlgoMiner.sol", + "exportedSymbols": { + "IAlgoMiner": [ + 582 + ] + }, + "id": 583, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 571, + "literals": [ + "solidity", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:23:3" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": false, + "id": 582, + "linearizedBaseContracts": [ + 582 + ], + "name": "IAlgoMiner", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 576, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isAlgoMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 572, + "nodeType": "ParameterList", + "parameters": [], + "src": "74:2:3" + }, + "payable": false, + "returnParameters": { + "id": 575, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 574, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 576, + "src": "98:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 573, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "98:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "97:6:3" + }, + "scope": 582, + "src": "54:50:3", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 581, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getCategory", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 577, + "nodeType": "ParameterList", + "parameters": [], + "src": "130:2:3" + }, + "payable": false, + "returnParameters": { + "id": 580, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 579, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 581, + "src": "154:5:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 578, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "154:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "153:7:3" + }, + "scope": 582, + "src": "110:51:3", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 583, + "src": "27:137:3" + } + ], + "src": "0:164:3" + }, + "id": 3 + }, + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { + "ast": { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "exportedSymbols": { + "Roles": [ + 676 + ] + }, + "id": 677, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 584, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:4" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", + "fullyImplemented": true, + "id": 676, + "linearizedBaseContracts": [ + 676 + ], + "name": "Roles", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "Roles.Role", + "id": 589, + "members": [ + { + "constant": false, + "id": 588, + "name": "bearer", + "nodeType": "VariableDeclaration", + "scope": 589, + "src": "145:32:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 587, + "keyType": { + "id": 585, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "154:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "145:25:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 586, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "165:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Role", + "nodeType": "StructDefinition", + "scope": 676, + "src": "127:55:4", + "visibility": "public" + }, + { + "body": { + "id": 620, + "nodeType": "Block", + "src": "302:109:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 597, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "316:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 599, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "335:1:4", + "subdenomination": null, + "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": 598, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "327:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 600, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "327:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "316:21:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 596, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "308:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "308:30:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 603, + "nodeType": "ExpressionStatement", + "src": "308:30:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "352:19:4", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 606, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 591, + "src": "357:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$589_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 607, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "363:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$589_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 605, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 675, + "src": "353:3:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$589_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "353:18:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 604, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "344:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "344:28:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 611, + "nodeType": "ExpressionStatement", + "src": "344:28:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 612, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 591, + "src": "379:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$589_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 615, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 588, + "src": "379:11:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 616, + "indexExpression": { + "argumentTypes": null, + "id": 614, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "391:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "379:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 617, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "402:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "379:27:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 619, + "nodeType": "ExpressionStatement", + "src": "379:27:4" + } + ] + }, + "documentation": "@dev give an account access to this role", + "id": 621, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 594, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 591, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 621, + "src": "257:17:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$589_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 590, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 589, + "src": "257:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$589_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 593, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 621, + "src": "276:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 592, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "276:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "256:36:4" + }, + "payable": false, + "returnParameters": { + "id": 595, + "nodeType": "ParameterList", + "parameters": [], + "src": "302:0:4" + }, + "scope": 676, + "src": "244:167:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 651, + "nodeType": "Block", + "src": "538:109:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 629, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 625, + "src": "552:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 631, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "571:1:4", + "subdenomination": null, + "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": 630, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "563:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 632, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "563:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "552:21:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 628, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "544:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "544:30:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 635, + "nodeType": "ExpressionStatement", + "src": "544:30:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 638, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 623, + "src": "592:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$589_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 639, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 625, + "src": "598:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$589_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 637, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 675, + "src": "588:3:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$589_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 640, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "588:18:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 636, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "580:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "580:27:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 642, + "nodeType": "ExpressionStatement", + "src": "580:27:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 643, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 623, + "src": "614:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$589_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 646, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 588, + "src": "614:11:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 647, + "indexExpression": { + "argumentTypes": null, + "id": 645, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 625, + "src": "626:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "614:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 648, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "637:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "614:28:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 650, + "nodeType": "ExpressionStatement", + "src": "614:28:4" + } + ] + }, + "documentation": "@dev remove an account's access to this role", + "id": 652, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "remove", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 626, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 623, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 652, + "src": "493:17:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$589_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 622, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 589, + "src": "493:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$589_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 625, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 652, + "src": "512:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 624, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "512:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "492:36:4" + }, + "payable": false, + "returnParameters": { + "id": 627, + "nodeType": "ParameterList", + "parameters": [], + "src": "538:0:4" + }, + "scope": 676, + "src": "477:170:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 674, + "nodeType": "Block", + "src": "817:74:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 662, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 656, + "src": "831:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 664, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "850:1:4", + "subdenomination": null, + "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": 663, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "842:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 665, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "842:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "831:21:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 661, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "823:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "823:30:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 668, + "nodeType": "ExpressionStatement", + "src": "823:30:4" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 669, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 654, + "src": "866:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$589_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 670, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 588, + "src": "866:11:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 672, + "indexExpression": { + "argumentTypes": null, + "id": 671, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 656, + "src": "878:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "866:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 660, + "id": 673, + "nodeType": "Return", + "src": "859:27:4" + } + ] + }, + "documentation": "@dev check if an account has this role\n@return bool", + "id": 675, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "has", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 657, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 654, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "738:17:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$589_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 653, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 589, + "src": "738:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$589_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 656, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "757:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 655, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "757:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "737:36:4" + }, + "payable": false, + "returnParameters": { + "id": 660, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 659, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "809:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 658, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "809:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "808:6:4" + }, + "scope": 676, + "src": "725:166:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 677, + "src": "109:784:4" + } + ], + "src": "0:894:4" + }, + "id": 4 + }, + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { + "ast": { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", + "exportedSymbols": { + "SafeMath": [ + 804 + ] + }, + "id": 805, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 678, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:5" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", + "fullyImplemented": true, + "id": 804, + "linearizedBaseContracts": [ + 804 + ], + "name": "SafeMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 710, + "nodeType": "Block", + "src": "271:314:5", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 687, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 680, + "src": "486:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 688, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "491:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "486:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 693, + "nodeType": "IfStatement", + "src": "482:35:5", + "trueBody": { + "id": 692, + "nodeType": "Block", + "src": "494:23:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 690, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "509:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 686, + "id": 691, + "nodeType": "Return", + "src": "502:8:5" + } + ] + } + }, + { + "assignments": [ + 695 + ], + "declarations": [ + { + "constant": false, + "id": 695, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 711, + "src": "523:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 694, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "523:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 699, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 696, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 680, + "src": "535:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 697, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 682, + "src": "539:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "535:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "523:17:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 701, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 695, + "src": "554:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 702, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 680, + "src": "558:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "554:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 704, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 682, + "src": "563:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "554:10:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 700, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "546:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "546:19:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 707, + "nodeType": "ExpressionStatement", + "src": "546:19:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 708, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 695, + "src": "579:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 686, + "id": 709, + "nodeType": "Return", + "src": "572:8:5" + } + ] + }, + "documentation": "@dev Multiplies two numbers, reverts on overflow.", + "id": 711, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "mul", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 683, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 680, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 711, + "src": "217:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 679, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "217:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 682, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 711, + "src": "228:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 681, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "228:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "216:22:5" + }, + "payable": false, + "returnParameters": { + "id": 686, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 685, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 711, + "src": "262:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 684, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "262:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "261:9:5" + }, + "scope": 804, + "src": "204:381:5", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 734, + "nodeType": "Block", + "src": "762:203:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 723, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 721, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 715, + "src": "776:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 722, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "780:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "776:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 720, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "768:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "768:14:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 725, + "nodeType": "ExpressionStatement", + "src": "768:14:5" + }, + { + "assignments": [ + 727 + ], + "declarations": [ + { + "constant": false, + "id": 727, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 735, + "src": "846:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 726, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "846:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 731, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 728, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 713, + "src": "858:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 729, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 715, + "src": "862:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "858:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "846:17:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 732, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 727, + "src": "959:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 719, + "id": 733, + "nodeType": "Return", + "src": "952:8:5" + } + ] + }, + "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", + "id": 735, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 716, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 713, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 735, + "src": "708:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 712, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "708:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 715, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 735, + "src": "719:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 714, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "719:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "707:22:5" + }, + "payable": false, + "returnParameters": { + "id": 719, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 718, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 735, + "src": "753:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 717, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "753:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "752:9:5" + }, + "scope": 804, + "src": "695:270:5", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 758, + "nodeType": "Block", + "src": "1145:64:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 745, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 739, + "src": "1159:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 746, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 737, + "src": "1164:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1159:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 744, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "1151:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1151:15:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 749, + "nodeType": "ExpressionStatement", + "src": "1151:15:5" + }, + { + "assignments": [ + 751 + ], + "declarations": [ + { + "constant": false, + "id": 751, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 759, + "src": "1172:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 750, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1172:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 755, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 752, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 737, + "src": "1184:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 753, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 739, + "src": "1188:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1184:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1172:17:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 756, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 751, + "src": "1203:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 743, + "id": 757, + "nodeType": "Return", + "src": "1196:8:5" + } + ] + }, + "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", + "id": 759, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 740, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 737, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 759, + "src": "1091:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 736, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1091:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 739, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 759, + "src": "1102:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 738, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1102:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1090:22:5" + }, + "payable": false, + "returnParameters": { + "id": 743, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 742, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 759, + "src": "1136:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 741, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1136:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1135:9:5" + }, + "scope": 804, + "src": "1078:131:5", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 782, + "nodeType": "Block", + "src": "1339:64:5", + "statements": [ + { + "assignments": [ + 769 + ], + "declarations": [ + { + "constant": false, + "id": 769, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 783, + "src": "1345:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 768, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1345:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 773, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 772, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 770, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 761, + "src": "1357:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 771, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 763, + "src": "1361:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1357:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1345:17:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 777, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 775, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 769, + "src": "1376:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 776, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 761, + "src": "1381:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1376:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 774, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "1368:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1368:15:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 779, + "nodeType": "ExpressionStatement", + "src": "1368:15:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 780, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 769, + "src": "1397:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 767, + "id": 781, + "nodeType": "Return", + "src": "1390:8:5" + } + ] + }, + "documentation": "@dev Adds two numbers, reverts on overflow.", + "id": 783, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 764, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 761, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 783, + "src": "1285:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 760, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1285:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 763, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 783, + "src": "1296:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 762, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1296:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1284:22:5" + }, + "payable": false, + "returnParameters": { + "id": 767, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 766, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 783, + "src": "1330:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 765, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1330:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1329:9:5" + }, + "scope": 804, + "src": "1272:131:5", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 802, + "nodeType": "Block", + "src": "1602:44:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 793, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 787, + "src": "1616:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 794, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1621:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1616:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 792, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "1608:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1608:15:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 797, + "nodeType": "ExpressionStatement", + "src": "1608:15:5" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 800, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 798, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 785, + "src": "1636:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "id": 799, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 787, + "src": "1640:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1636:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 791, + "id": 801, + "nodeType": "Return", + "src": "1629:12:5" + } + ] + }, + "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", + "id": 803, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "mod", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 788, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 785, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 803, + "src": "1548:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 784, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1548:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 787, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 803, + "src": "1559:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 786, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1559:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1547:22:5" + }, + "payable": false, + "returnParameters": { + "id": 791, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 790, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 803, + "src": "1593:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 789, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1593:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1592:9:5" + }, + "scope": 804, + "src": "1535:111:5", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 805, + "src": "117:1531:5" + } + ], + "src": "0:1649:5" + }, + "id": 5 + }, + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol": { + "ast": { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "exportedSymbols": { + "IERC20": [ + 873 + ] + }, + "id": 874, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 806, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:6" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", + "fullyImplemented": false, + "id": 873, + "linearizedBaseContracts": [ + 873 + ], + "name": "IERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 811, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 807, + "nodeType": "ParameterList", + "parameters": [], + "src": "156:2:6" + }, + "payable": false, + "returnParameters": { + "id": 810, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 809, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 811, + "src": "182:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 808, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "182:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "181:9:6" + }, + "scope": 873, + "src": "136:55:6", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 818, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 814, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 813, + "name": "who", + "nodeType": "VariableDeclaration", + "scope": 818, + "src": "214:11:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 812, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "214:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "213:13:6" + }, + "payable": false, + "returnParameters": { + "id": 817, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 816, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 818, + "src": "250:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 815, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "250:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "249:9:6" + }, + "scope": 873, + "src": "195:64:6", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 827, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 823, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 820, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 827, + "src": "282:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 819, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "282:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 822, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 827, + "src": "297:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 821, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "297:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "281:32:6" + }, + "payable": false, + "returnParameters": { + "id": 826, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 825, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 827, + "src": "341:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 824, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "341:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "340:9:6" + }, + "scope": 873, + "src": "263:87:6", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 836, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 832, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 829, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 836, + "src": "372:10:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 828, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "372:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 831, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 836, + "src": "384:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 830, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "384:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "371:27:6" + }, + "payable": false, + "returnParameters": { + "id": 835, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 834, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 836, + "src": "417:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 833, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "417:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "416:6:6" + }, + "scope": 873, + "src": "354:69:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 845, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 841, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 838, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 845, + "src": "444:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 837, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "444:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 840, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 845, + "src": "461:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 839, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "461:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "443:32:6" + }, + "payable": false, + "returnParameters": { + "id": 844, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 843, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 845, + "src": "498:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 842, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "498:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "497:6:6" + }, + "scope": 873, + "src": "427:77:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 856, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 852, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 847, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 856, + "src": "530:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 846, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "530:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 849, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 856, + "src": "544:10:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 848, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "544:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 851, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 856, + "src": "556:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 850, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "556:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "529:41:6" + }, + "payable": false, + "returnParameters": { + "id": 855, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 854, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 856, + "src": "593:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 853, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "593:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "592:6:6" + }, + "scope": 873, + "src": "508:91:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": null, + "id": 864, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 863, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 858, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "623:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 857, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "623:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 860, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "649:18:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 859, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "649:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 862, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "673:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 861, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "673:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "617:73:6" + }, + "src": "603:88:6" + }, + { + "anonymous": false, + "documentation": null, + "id": 872, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 871, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 866, + "indexed": true, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 872, + "src": "715:21:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 865, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "715:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 868, + "indexed": true, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 872, + "src": "742:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 867, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "742:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 870, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 872, + "src": "771:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 869, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "771:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "709:79:6" + }, + "src": "695:94:6" + } + ], + "scope": 874, + "src": "115:676:6" + } + ], + "src": "0:792:6" + }, + "id": 6 + }, + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol": { + "ast": { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "exportedSymbols": { + "SafeERC20": [ + 1017 + ] + }, + "id": 1018, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 875, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:7" + }, + { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 876, + "nodeType": "ImportDirective", + "scope": 1018, + "sourceUnit": 874, + "src": "26:22:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 877, + "nodeType": "ImportDirective", + "scope": 1018, + "sourceUnit": 805, + "src": "49:33:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.", + "fullyImplemented": true, + "id": 1017, + "linearizedBaseContracts": [ + 1017 + ], + "name": "SafeERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 880, + "libraryName": { + "contractScope": null, + "id": 878, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 804, + "src": "382:8:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$804", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "376:27:7", + "typeName": { + "id": 879, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "395:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "body": { + "id": 897, + "nodeType": "Block", + "src": "501:45:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 892, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 884, + "src": "530:2:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 893, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 886, + "src": "534:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 890, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 882, + "src": "515:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$873", + "typeString": "contract IERC20" + } + }, + "id": 891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 836, + "src": "515:14:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 894, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "515:25:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 889, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "507:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "507:34:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 896, + "nodeType": "ExpressionStatement", + "src": "507:34:7" + } + ] + }, + "documentation": null, + "id": 898, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeTransfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 887, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 882, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 898, + "src": "434:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$873", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 881, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 873, + "src": "434:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$873", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 884, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 898, + "src": "452:10:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 883, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "452:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 886, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 898, + "src": "468:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 885, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "468:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "428:57:7" + }, + "payable": false, + "returnParameters": { + "id": 888, + "nodeType": "ParameterList", + "parameters": [], + "src": "501:0:7" + }, + "scope": 1017, + "src": "407:139:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 918, + "nodeType": "Block", + "src": "666:55:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 912, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 902, + "src": "699:4:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 913, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 904, + "src": "705:2:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 914, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 906, + "src": "709:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 910, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 900, + "src": "680:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$873", + "typeString": "contract IERC20" + } + }, + "id": 911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 856, + "src": "680:18:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "680:35:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 909, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "672:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 916, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "672:44:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 917, + "nodeType": "ExpressionStatement", + "src": "672:44:7" + } + ] + }, + "documentation": null, + "id": 919, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 907, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 900, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 919, + "src": "581:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$873", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 899, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 873, + "src": "581:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$873", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 902, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 919, + "src": "599:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 901, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "599:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 904, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 919, + "src": "617:10:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 903, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "617:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 906, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 919, + "src": "633:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 905, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "633:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "575:75:7" + }, + "payable": false, + "returnParameters": { + "id": 908, + "nodeType": "ParameterList", + "parameters": [], + "src": "666:0:7" + }, + "scope": 1017, + "src": "550:171:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 953, + "nodeType": "Block", + "src": "823:330:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 942, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 929, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 925, + "src": "1045:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 930, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1054:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1045:10:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 932, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1044:12:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 940, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 935, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1032, + "src": "1077:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 936, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1077:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 937, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 923, + "src": "1089:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 933, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 921, + "src": "1061:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$873", + "typeString": "contract IERC20" + } + }, + "id": 934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 827, + "src": "1061:15:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 938, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1061:36:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 939, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1101:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1061:41:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 941, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1060:43:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1044:59:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 928, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "1036:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 943, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1036:68:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 944, + "nodeType": "ExpressionStatement", + "src": "1036:68:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 948, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 923, + "src": "1132:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 949, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 925, + "src": "1141:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 946, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 921, + "src": "1118:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$873", + "typeString": "contract IERC20" + } + }, + "id": 947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 845, + "src": "1118:13:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1118:29:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 945, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "1110:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1110:38:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 952, + "nodeType": "ExpressionStatement", + "src": "1110:38:7" + } + ] + }, + "documentation": null, + "id": 954, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeApprove", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 926, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 921, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 954, + "src": "751:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$873", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 920, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 873, + "src": "751:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$873", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 923, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 954, + "src": "769:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 922, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "769:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 925, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 954, + "src": "790:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 924, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "790:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "745:62:7" + }, + "payable": false, + "returnParameters": { + "id": 927, + "nodeType": "ParameterList", + "parameters": [], + "src": "823:0:7" + }, + "scope": 1017, + "src": "725:428:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 984, + "nodeType": "Block", + "src": "1265:135:7", + "statements": [ + { + "assignments": [ + 964 + ], + "declarations": [ + { + "constant": false, + "id": 964, + "name": "newAllowance", + "nodeType": "VariableDeclaration", + "scope": 985, + "src": "1271:20:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 963, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1271:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 975, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 973, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 960, + "src": "1338:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 968, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1053, + "src": "1318:4:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$1017", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$1017", + "typeString": "library SafeERC20" + } + ], + "id": 967, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1310:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1310:13:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 970, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 958, + "src": "1325:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 965, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 956, + "src": "1294:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$873", + "typeString": "contract IERC20" + } + }, + "id": 966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 827, + "src": "1294:15:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1294:39:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 783, + "src": "1294:43:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1294:50:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1271:73:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 979, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 958, + "src": "1372:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 980, + "name": "newAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 964, + "src": "1381:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 977, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 956, + "src": "1358:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$873", + "typeString": "contract IERC20" + } + }, + "id": 978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 845, + "src": "1358:13:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1358:36:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 976, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "1350:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1350:45:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 983, + "nodeType": "ExpressionStatement", + "src": "1350:45:7" + } + ] + }, + "documentation": null, + "id": 985, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeIncreaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 961, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 956, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 985, + "src": "1193:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$873", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 955, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 873, + "src": "1193:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$873", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 958, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 985, + "src": "1211:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 957, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1211:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 960, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 985, + "src": "1232:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 959, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1232:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1187:62:7" + }, + "payable": false, + "returnParameters": { + "id": 962, + "nodeType": "ParameterList", + "parameters": [], + "src": "1265:0:7" + }, + "scope": 1017, + "src": "1157:243:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1015, + "nodeType": "Block", + "src": "1512:135:7", + "statements": [ + { + "assignments": [ + 995 + ], + "declarations": [ + { + "constant": false, + "id": 995, + "name": "newAllowance", + "nodeType": "VariableDeclaration", + "scope": 1016, + "src": "1518:20:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 994, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1518:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1006, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1004, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 991, + "src": "1585:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 999, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1053, + "src": "1565:4:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$1017", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$1017", + "typeString": "library SafeERC20" + } + ], + "id": 998, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1557:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1000, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1557:13:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1001, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 989, + "src": "1572:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 996, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 987, + "src": "1541:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$873", + "typeString": "contract IERC20" + } + }, + "id": 997, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 827, + "src": "1541:15:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 1002, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1541:39:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1003, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 759, + "src": "1541:43:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1005, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1541:50:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1518:73:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1010, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 989, + "src": "1619:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1011, + "name": "newAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 995, + "src": "1628:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1008, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 987, + "src": "1605:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$873", + "typeString": "contract IERC20" + } + }, + "id": 1009, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 845, + "src": "1605:13:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1605:36:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1007, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1035, + 1036 + ], + "referencedDeclaration": 1035, + "src": "1597:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1597:45:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1014, + "nodeType": "ExpressionStatement", + "src": "1597:45:7" + } + ] + }, + "documentation": null, + "id": 1016, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeDecreaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 992, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 987, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1016, + "src": "1440:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$873", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 986, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 873, + "src": "1440:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$873", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 989, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1016, + "src": "1458:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 988, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1458:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 991, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1016, + "src": "1479:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 990, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1479:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1434:62:7" + }, + "payable": false, + "returnParameters": { + "id": 993, + "nodeType": "ParameterList", + "parameters": [], + "src": "1512:0:7" + }, + "scope": 1017, + "src": "1404:243:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 1018, + "src": "353:1296:7" + } + ], + "src": "0:1650:7" + }, + "id": 7 + } + } +} \ No newline at end of file diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoMiner.abi b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoMiner.abi new file mode 100644 index 000000000..ce944c245 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoMiner.abi @@ -0,0 +1 @@ +[{"constant":false,"inputs":[],"name":"pauseMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isAlgoMiner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[],"name":"startMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMinerAddress","type":"address"}],"name":"migrateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"stopAndRemoveOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"resumeMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCategory","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSupervisor","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"mine","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deactivateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwnerAddress","type":"address"}],"name":"resetMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"activateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"DAYS_PER_YEAR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"stopMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"minerType","type":"uint16"},{"name":"category","type":"uint8"},{"name":"ownerAddress","type":"address"},{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoMiner.bin b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoMiner.bin new file mode 100644 index 000000000..b27ef5f2c --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoMiner.bin @@ -0,0 +1 @@ +608060405234801561001057600080fd5b50604051608080610ea08339810160409081528151602083015191830151606090930151909290610049336401000000006100c3810204565b61005b336401000000006100de810204565b6002805461ffff191661ffff959095169490941762ff000019166201000060ff949094169390930292909217630100000060b860020a0319166301000000600160a060020a03928316021790925560038054600160a060020a03191691909216179055610184565b6100db600082640100000000610c476100f682021704565b50565b6100db600182640100000000610c476100f682021704565b600160a060020a038116151561010b57600080fd5b61011e828264010000000061014d810204565b1561012857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561016457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610d0d806101936000396000f3006080604052600436106101065763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663162f986d811461010b5780631777fb4b1461012257806321b79d981461014b578063231d4e2a1461016057806329d10b6e146101815780632e6b6849146101a2578063363aa6c7146101c3578063427534a4146101d8578063608d3d3d146101ed57806380258e471461020e57806381a244591461023957806399f4b2511461025a5780639e614ca01461026f578063ada436e914610284578063b2a32cd5146102a5578063be952494146102ba578063c6846ef8146102cf578063d43acc79146102f6578063da4086791461030b575b600080fd5b34801561011757600080fd5b50610120610320565b005b34801561012e57600080fd5b50610137610386565b604080519115158252519081900360200190f35b34801561015757600080fd5b5061012061038b565b34801561016c57600080fd5b50610120600160a060020a036004351661042f565b34801561018d57600080fd5b50610120600160a060020a036004351661051b565b3480156101ae57600080fd5b50610120600160a060020a0360043516610538565b3480156101cf57600080fd5b50610120610555565b3480156101e457600080fd5b506101206105fd565b3480156101f957600080fd5b50610137600160a060020a0360043516610660565b34801561021a57600080fd5b50610223610678565b6040805160ff9092168252519081900360200190f35b34801561024557600080fd5b50610137600160a060020a0360043516610687565b34801561026657600080fd5b5061012061069a565b34801561027b57600080fd5b5061012061086c565b34801561029057600080fd5b50610120600160a060020a03600435166108c6565b3480156102b157600080fd5b5061012061095b565b3480156102c657600080fd5b50610120610a6d565b3480156102db57600080fd5b506102e4610a78565b60408051918252519081900360200190f35b34801561030257600080fd5b50610120610a7e565b34801561031757600080fd5b50610120610a87565b61032933610687565b151561033457600080fd5b60016003805460a060020a900460ff169081111561034e57fe5b1461035857600080fd5b600380546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550565b600190565b60025463010000009004600160a060020a031633146103a957600080fd5b60016003805460a060020a900460ff16908111156103c357fe5b146103cd57600080fd5b6003547501000000000000000000000000000000000000000000900460ff16156103f657600080fd5b6003805475ff00000000000000000000000000000000000000000019167501000000000000000000000000000000000000000000179055565b61043833610660565b151561044357600080fd5b60006003805460a060020a900460ff169081111561045d57fe5b1461046757600080fd5b600354604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051610518928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b1580156104d357600080fd5b505af11580156104e7573d6000803e3d6000fd5b505050506040513d60208110156104fd57600080fd5b5051600354600160a060020a0316919063ffffffff610b1416565b50565b61052433610687565b151561052f57600080fd5b61051881610bcc565b61054133610660565b151561054c57600080fd5b61051881610bdd565b61055e33610687565b151561056957600080fd5b600380805460a060020a900460ff169081111561058257fe5b141561058d57600080fd5b6003805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001775ff000000000000000000000000000000000000000000191690556002805476ffffffffffffffffffffffffffffffffffffffff00000019169055565b61060633610687565b151561061157600080fd5b60026003805460a060020a900460ff169081111561062b57fe5b1461063557600080fd5b600380546001919074ff0000000000000000000000000000000000000000191660a060020a8361037f565b6000610672818363ffffffff610bee16565b92915050565b60025462010000900460ff1690565b600061067260018363ffffffff610bee16565b60006106a533610660565b15156106b057600080fd5b60016003805460a060020a900460ff16908111156106ca57fe5b146106d457600080fd5b6003547501000000000000000000000000000000000000000000900460ff1615156106fe57600080fd5b60035460b860020a900461ffff161515610774576003805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a17905561083c565b60038054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e141561083c576003805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600454600290046004555b5060045460025460035461016d9092049161051891600160a060020a039182169163010000009091041683610b14565b61087533610660565b151561088057600080fd5b60006003805460a060020a900460ff169081111561089a57fe5b14156108a557600080fd5b6003805475ffff000000000000000000000000000000000000000019169055565b6108cf33610687565b15156108da57600080fd5b600380805460a060020a900460ff16908111156108f357fe5b146108fd57600080fd5b6003805474ff0000000000000000000000000000000000000000191660a060020a17905560028054600160a060020a039290921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b600061096633610660565b151561097157600080fd5b60006003805460a060020a900460ff169081111561098b57fe5b1461099557600080fd5b6004541515610a4657600354604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b158015610a0457600080fd5b505af1158015610a18573d6000803e3d6000fd5b505050506040513d6020811015610a2e57600080fd5b50519050801515610a3e57600080fd5b600281046004555b506003805474ff0000000000000000000000000000000000000000191660a060020a179055565b610a7633610c25565b565b61016d81565b610a7633610c36565b60025463010000009004600160a060020a03163314610aa557600080fd5b60016003805460a060020a900460ff1690811115610abf57fe5b14610ac957600080fd5b6003547501000000000000000000000000000000000000000000900460ff161515610af357600080fd5b6003805475ff00000000000000000000000000000000000000000019169055565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610b9057600080fd5b505af1158015610ba4573d6000803e3d6000fd5b505050506040513d6020811015610bba57600080fd5b50511515610bc757600080fd5b505050565b61051860018263ffffffff610c4716565b61051860008263ffffffff610c4716565b6000600160a060020a0382161515610c0557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61051860018263ffffffff610c9516565b61051860008263ffffffff610c9516565b600160a060020a0381161515610c5c57600080fd5b610c668282610bee565b15610c7057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610caa57600080fd5b610cb48282610bee565b1515610cbf57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058207b121e87532d8c1f7a6b96bd6424aeda0c92676f8aeca5bd4496952ce22529cc0029 \ No newline at end of file diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoMiner.json b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoMiner.json new file mode 100644 index 000000000..33bd2c2b7 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoMiner.json @@ -0,0 +1,303 @@ +{ + "abi": [ + { + "constant": false, + "inputs": [], + "name": "pauseMining", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isAlgoMiner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "startMining", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "newMinerAddress", + "type": "address" + } + ], + "name": "migrateMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addSupervisor", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "stopAndRemoveOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "resumeMining", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isCoreTeam", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getCategory", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isSupervisor", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "mine", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "deactivateMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "newOwnerAddress", + "type": "address" + } + ], + "name": "resetMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "activateMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceSupervisor", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "DAYS_PER_YEAR", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "stopMining", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "name": "minerType", + "type": "uint16" + }, + { + "name": "category", + "type": "uint8" + }, + { + "name": "ownerAddress", + "type": "address" + }, + { + "name": "tokenAddress", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "bytecode": "608060405234801561001057600080fd5b50604051608080610ea08339810160409081528151602083015191830151606090930151909290610049336401000000006100c3810204565b61005b336401000000006100de810204565b6002805461ffff191661ffff959095169490941762ff000019166201000060ff949094169390930292909217630100000060b860020a0319166301000000600160a060020a03928316021790925560038054600160a060020a03191691909216179055610184565b6100db600082640100000000610c476100f682021704565b50565b6100db600182640100000000610c476100f682021704565b600160a060020a038116151561010b57600080fd5b61011e828264010000000061014d810204565b1561012857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561016457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610d0d806101936000396000f3006080604052600436106101065763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663162f986d811461010b5780631777fb4b1461012257806321b79d981461014b578063231d4e2a1461016057806329d10b6e146101815780632e6b6849146101a2578063363aa6c7146101c3578063427534a4146101d8578063608d3d3d146101ed57806380258e471461020e57806381a244591461023957806399f4b2511461025a5780639e614ca01461026f578063ada436e914610284578063b2a32cd5146102a5578063be952494146102ba578063c6846ef8146102cf578063d43acc79146102f6578063da4086791461030b575b600080fd5b34801561011757600080fd5b50610120610320565b005b34801561012e57600080fd5b50610137610386565b604080519115158252519081900360200190f35b34801561015757600080fd5b5061012061038b565b34801561016c57600080fd5b50610120600160a060020a036004351661042f565b34801561018d57600080fd5b50610120600160a060020a036004351661051b565b3480156101ae57600080fd5b50610120600160a060020a0360043516610538565b3480156101cf57600080fd5b50610120610555565b3480156101e457600080fd5b506101206105fd565b3480156101f957600080fd5b50610137600160a060020a0360043516610660565b34801561021a57600080fd5b50610223610678565b6040805160ff9092168252519081900360200190f35b34801561024557600080fd5b50610137600160a060020a0360043516610687565b34801561026657600080fd5b5061012061069a565b34801561027b57600080fd5b5061012061086c565b34801561029057600080fd5b50610120600160a060020a03600435166108c6565b3480156102b157600080fd5b5061012061095b565b3480156102c657600080fd5b50610120610a6d565b3480156102db57600080fd5b506102e4610a78565b60408051918252519081900360200190f35b34801561030257600080fd5b50610120610a7e565b34801561031757600080fd5b50610120610a87565b61032933610687565b151561033457600080fd5b60016003805460a060020a900460ff169081111561034e57fe5b1461035857600080fd5b600380546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550565b600190565b60025463010000009004600160a060020a031633146103a957600080fd5b60016003805460a060020a900460ff16908111156103c357fe5b146103cd57600080fd5b6003547501000000000000000000000000000000000000000000900460ff16156103f657600080fd5b6003805475ff00000000000000000000000000000000000000000019167501000000000000000000000000000000000000000000179055565b61043833610660565b151561044357600080fd5b60006003805460a060020a900460ff169081111561045d57fe5b1461046757600080fd5b600354604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051610518928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b1580156104d357600080fd5b505af11580156104e7573d6000803e3d6000fd5b505050506040513d60208110156104fd57600080fd5b5051600354600160a060020a0316919063ffffffff610b1416565b50565b61052433610687565b151561052f57600080fd5b61051881610bcc565b61054133610660565b151561054c57600080fd5b61051881610bdd565b61055e33610687565b151561056957600080fd5b600380805460a060020a900460ff169081111561058257fe5b141561058d57600080fd5b6003805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001775ff000000000000000000000000000000000000000000191690556002805476ffffffffffffffffffffffffffffffffffffffff00000019169055565b61060633610687565b151561061157600080fd5b60026003805460a060020a900460ff169081111561062b57fe5b1461063557600080fd5b600380546001919074ff0000000000000000000000000000000000000000191660a060020a8361037f565b6000610672818363ffffffff610bee16565b92915050565b60025462010000900460ff1690565b600061067260018363ffffffff610bee16565b60006106a533610660565b15156106b057600080fd5b60016003805460a060020a900460ff16908111156106ca57fe5b146106d457600080fd5b6003547501000000000000000000000000000000000000000000900460ff1615156106fe57600080fd5b60035460b860020a900461ffff161515610774576003805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a17905561083c565b60038054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e141561083c576003805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600454600290046004555b5060045460025460035461016d9092049161051891600160a060020a039182169163010000009091041683610b14565b61087533610660565b151561088057600080fd5b60006003805460a060020a900460ff169081111561089a57fe5b14156108a557600080fd5b6003805475ffff000000000000000000000000000000000000000019169055565b6108cf33610687565b15156108da57600080fd5b600380805460a060020a900460ff16908111156108f357fe5b146108fd57600080fd5b6003805474ff0000000000000000000000000000000000000000191660a060020a17905560028054600160a060020a039290921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b600061096633610660565b151561097157600080fd5b60006003805460a060020a900460ff169081111561098b57fe5b1461099557600080fd5b6004541515610a4657600354604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b158015610a0457600080fd5b505af1158015610a18573d6000803e3d6000fd5b505050506040513d6020811015610a2e57600080fd5b50519050801515610a3e57600080fd5b600281046004555b506003805474ff0000000000000000000000000000000000000000191660a060020a179055565b610a7633610c25565b565b61016d81565b610a7633610c36565b60025463010000009004600160a060020a03163314610aa557600080fd5b60016003805460a060020a900460ff1690811115610abf57fe5b14610ac957600080fd5b6003547501000000000000000000000000000000000000000000900460ff161515610af357600080fd5b6003805475ff00000000000000000000000000000000000000000019169055565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610b9057600080fd5b505af1158015610ba4573d6000803e3d6000fd5b505050506040513d6020811015610bba57600080fd5b50511515610bc757600080fd5b505050565b61051860018263ffffffff610c4716565b61051860008263ffffffff610c4716565b6000600160a060020a0382161515610c0557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61051860018263ffffffff610c9516565b61051860008263ffffffff610c9516565b600160a060020a0381161515610c5c57600080fd5b610c668282610bee565b15610c7057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610caa57600080fd5b610cb48282610bee565b1515610cbf57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058207b121e87532d8c1f7a6b96bd6424aeda0c92676f8aeca5bd4496952ce22529cc0029", + "functionHashes": { + "DAYS_PER_YEAR()": "c6846ef8", + "activateMiner()": "b2a32cd5", + "addCoreTeam(address)": "2e6b6849", + "addSupervisor(address)": "29d10b6e", + "deactivateMiner()": "9e614ca0", + "getCategory()": "80258e47", + "isAlgoMiner()": "1777fb4b", + "isCoreTeam(address)": "608d3d3d", + "isSupervisor(address)": "81a24459", + "migrateMiner(address)": "231d4e2a", + "mine()": "99f4b251", + "pauseMining()": "162f986d", + "renounceCoreTeam()": "d43acc79", + "renounceSupervisor()": "be952494", + "resetMiner(address)": "ada436e9", + "resumeMining()": "427534a4", + "startMining()": "21b79d98", + "stopAndRemoveOwnership()": "363aa6c7", + "stopMining()": "da408679" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "668200", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "DAYS_PER_YEAR()": "536", + "activateMiner()": "infinite", + "addCoreTeam(address)": "infinite", + "addSupervisor(address)": "infinite", + "deactivateMiner()": "infinite", + "getCategory()": "608", + "isAlgoMiner()": "212", + "isCoreTeam(address)": "infinite", + "isSupervisor(address)": "infinite", + "migrateMiner(address)": "infinite", + "mine()": "infinite", + "pauseMining()": "infinite", + "renounceCoreTeam()": "infinite", + "renounceSupervisor()": "infinite", + "resetMiner(address)": "infinite", + "resumeMining()": "infinite", + "startMining()": "21275", + "stopAndRemoveOwnership()": "infinite", + "stopMining()": "21624" + } + } +} \ No newline at end of file diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoPool-sol-output.json b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoPool-sol-output.json new file mode 100644 index 000000000..f92d8fff4 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoPool-sol-output.json @@ -0,0 +1,10176 @@ +{ + "contracts": { + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoCoreTeamRole.sol": { + "AlgoCoreTeamRole": { + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isCoreTeam", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "addCoreTeam(address)": "2e6b6849", + "isCoreTeam(address)": "608d3d3d", + "renounceCoreTeam()": "d43acc79" + } + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoPool.sol": { + "AlgoPool": { + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "minerAddress", + "type": "address" + } + ], + "name": "trasferToMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "TOKEN_FACTOR", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "CAT_4_VALUE", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "CAT_1_VALUE", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "CAT_3_VALUE", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isCoreTeam", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "CAT_0_VALUE", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "CAT_5_VALUE", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "CAT_2_VALUE", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "name": "poolType", + "type": "uint16" + }, + { + "name": "tokenAddress", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b5060405160408061076083398101604052805160209091015161003b33640100000000610077810204565b60018054600160a060020a0390921662010000026201000060b060020a031961ffff90941661ffff199093169290921792909216179055610120565b61008f60008264010000000061056b61009282021704565b50565b600160a060020a03811615156100a757600080fd5b6100ba82826401000000006100e9810204565b156100c457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561010057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106318061012f6000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632296f4c7811461009a57806325109e8b146100bd5780632e6b6849146100e4578063455acbcd14610105578063492fba841461011a57806349dc9ed01461012f578063608d3d3d146101445780639fc3c98314610179578063a89febb21461018e578063aed6183f146101a3578063d43acc79146101b8575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a03600435166101cd565b005b3480156100c957600080fd5b506100d26103cc565b60408051918252519081900360200190f35b3480156100f057600080fd5b506100bb600160a060020a03600435166103d8565b34801561011157600080fd5b506100d26103f8565b34801561012657600080fd5b506100d2610407565b34801561013b57600080fd5b506100d2610415565b34801561015057600080fd5b50610165600160a060020a0360043516610424565b604080519115158252519081900360200190f35b34801561018557600080fd5b506100d261043c565b34801561019a57600080fd5b506100d261044a565b3480156101af57600080fd5b506100d2610459565b3480156101c457600080fd5b506100bb610468565b60008060006101db33610424565b15156101e657600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561022757600080fd5b505af115801561023b573d6000803e3d6000fd5b505050506040513d602081101561025157600080fd5b5051151561025e57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561029c57600080fd5b505af11580156102b0573d6000803e3d6000fd5b505050506040513d60208110156102c657600080fd5b50519150600060ff8316108015906102e2575060058260ff1611155b15156102ed57600080fd5b50600060ff8216151561030b575069152d02c7e14af680000061039c565b8160ff1660011415610328575069d3c21bcecceda100000061039c565b8160ff166002141561034657506a01a784379d99db4200000061039c565b8160ff166003141561036457506a027b46536c66c8e300000061039c565b8160ff166004141561038257506a034f086f3b33b68400000061039c565b8160ff166005141561039c57506a0422ca8b0a00a4250000005b600081116103a957600080fd5b6001546103c690620100009004600160a060020a03168583610473565b50505050565b670de0b6b3a764000081565b6103e133610424565b15156103ec57600080fd5b6103f581610512565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b6000610436818363ffffffff61052316565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b6104713361055a565b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156104d657600080fd5b505af11580156104ea573d6000803e3d6000fd5b505050506040513d602081101561050057600080fd5b5051151561050d57600080fd5b505050565b6103f560008263ffffffff61056b16565b6000600160a060020a038216151561053a57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6103f560008263ffffffff6105b916565b600160a060020a038116151561058057600080fd5b61058a8282610523565b1561059457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a03811615156105ce57600080fd5b6105d88282610523565b15156105e357600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820f296b4ffb64dca2d6eb3a2164312cba487eba728c8b0729ef90193efdf3b0b3d0029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 PUSH2 0x760 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH2 0x3B CALLER PUSH5 0x100000000 PUSH2 0x77 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND PUSH3 0x10000 MUL PUSH3 0x10000 PUSH1 0xB0 PUSH1 0x2 EXP SUB NOT PUSH2 0xFFFF SWAP1 SWAP5 AND PUSH2 0xFFFF NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH2 0x120 JUMP JUMPDEST PUSH2 0x8F PUSH1 0x0 DUP3 PUSH5 0x100000000 PUSH2 0x56B PUSH2 0x92 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBA DUP3 DUP3 PUSH5 0x100000000 PUSH2 0xE9 DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH2 0xC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x631 DUP1 PUSH2 0x12F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x95 JUMPI PUSH4 0xFFFFFFFF PUSH1 0xE0 PUSH1 0x2 EXP PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x2296F4C7 DUP2 EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0x25109E8B EQ PUSH2 0xBD JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x455ACBCD EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x492FBA84 EQ PUSH2 0x11A JUMPI DUP1 PUSH4 0x49DC9ED0 EQ PUSH2 0x12F JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x9FC3C983 EQ PUSH2 0x179 JUMPI DUP1 PUSH4 0xA89FEBB2 EQ PUSH2 0x18E JUMPI DUP1 PUSH4 0xAED6183F EQ PUSH2 0x1A3 JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x1B8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x1CD JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x3CC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x3D8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x111 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x3F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x126 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x407 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x415 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x424 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x43C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x44A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x459 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH2 0x468 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1DB CALLER PUSH2 0x424 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 SWAP3 POP DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x227 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x23B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x251 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x25E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP PUSH1 0x0 PUSH1 0xFF DUP4 AND LT DUP1 ISZERO SWAP1 PUSH2 0x2E2 JUMPI POP PUSH1 0x5 DUP3 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0x2ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0xFF DUP3 AND ISZERO ISZERO PUSH2 0x30B JUMPI POP PUSH10 0x152D02C7E14AF6800000 PUSH2 0x39C JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x328 JUMPI POP PUSH10 0xD3C21BCECCEDA1000000 PUSH2 0x39C JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x346 JUMPI POP PUSH11 0x1A784379D99DB42000000 PUSH2 0x39C JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x364 JUMPI POP PUSH11 0x27B46536C66C8E3000000 PUSH2 0x39C JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x382 JUMPI POP PUSH11 0x34F086F3B33B684000000 PUSH2 0x39C JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x39C JUMPI POP PUSH11 0x422CA8B0A00A425000000 JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x3A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x3C6 SWAP1 PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP6 DUP4 PUSH2 0x473 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH2 0x3E1 CALLER PUSH2 0x424 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x3EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3F5 DUP2 PUSH2 0x512 JUMP JUMPDEST POP JUMP JUMPDEST PUSH11 0x34F086F3B33B684000000 DUP2 JUMP JUMPDEST PUSH10 0xD3C21BCECCEDA1000000 DUP2 JUMP JUMPDEST PUSH11 0x27B46536C66C8E3000000 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x436 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x523 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH10 0x152D02C7E14AF6800000 DUP2 JUMP JUMPDEST PUSH11 0x422CA8B0A00A425000000 DUP2 JUMP JUMPDEST PUSH11 0x1A784379D99DB42000000 DUP2 JUMP JUMPDEST PUSH2 0x471 CALLER PUSH2 0x55A JUMP JUMPDEST JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x500 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x50D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x3F5 PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x56B AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x53A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x3F5 PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x5B9 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x580 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x58A DUP3 DUP3 PUSH2 0x523 JUMP JUMPDEST ISZERO PUSH2 0x594 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x5CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5D8 DUP3 DUP3 PUSH2 0x523 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x5E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 CALLCODE SWAP7 0xb4 SELFDESTRUCT 0xb6 0x4d 0xca 0x2d PUSH15 0xB3A2164312CBA487EBA728C8B0729E 0xf9 ADD SWAP4 0xef 0xdf EXTCODESIZE SIGNEXTEND RETURNDATASIZE STOP 0x29 ", + "sourceMap": "454:1691:1:-;;;1077:174;8:9:-1;5:2;;;30:1;27;20:12;5:2;1077:174:1;;;;;;;;;;;;;;;;;;;350:24:0;363:10;350:12;;;;:24;:::i;:::-;1183:9:1;:20;;-1:-1:-1;;;;;1214:29:1;;;;;-1:-1:-1;;;;;;1183:20:1;;;;-1:-1:-1;;1183:20:1;;;;;;;1214:29;;;;;;;454:1691;;806:96:0;865:29;:16;886:7;865:20;;;;;;:29;:::i;:::-;806:96;:::o;244:167:3:-;-1:-1:-1;;;;;316:21:3;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:3;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:3;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:3;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:3;:11;:20;;;;;;;;;;;;;;;725:166::o;454:1691:1:-;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "317000", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "CAT_0_VALUE()": "401", + "CAT_1_VALUE()": "335", + "CAT_2_VALUE()": "445", + "CAT_3_VALUE()": "357", + "CAT_4_VALUE()": "313", + "CAT_5_VALUE()": "423", + "TOKEN_FACTOR()": "269", + "addCoreTeam(address)": "infinite", + "isCoreTeam(address)": "infinite", + "renounceCoreTeam()": "infinite", + "trasferToMiner(address)": "infinite" + } + }, + "methodIdentifiers": { + "CAT_0_VALUE()": "9fc3c983", + "CAT_1_VALUE()": "492fba84", + "CAT_2_VALUE()": "aed6183f", + "CAT_3_VALUE()": "49dc9ed0", + "CAT_4_VALUE()": "455acbcd", + "CAT_5_VALUE()": "a89febb2", + "TOKEN_FACTOR()": "25109e8b", + "addCoreTeam(address)": "2e6b6849", + "isCoreTeam(address)": "608d3d3d", + "renounceCoreTeam()": "d43acc79", + "trasferToMiner(address)": "2296f4c7" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"trasferToMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"TOKEN_FACTOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_4_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_1_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_3_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_0_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_5_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_2_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"poolType\",\"type\":\"uint16\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoPool.sol\":\"AlgoPool\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0x98513c8bd78301543260967ae791ebb2a652f73fef585417f72a3097f4e1ae21\",\"urls\":[\"bzzr://a9cfa1df913c0a9ad0937d821ead954e31f7da6a462933bcfa20abe2b44ec984\"]},\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoPool.sol\":{\"keccak256\":\"0xe9776836589d57d2294c261fbeefaac9b146ad2ea4c06995ce258abc1cd44bee\",\"urls\":[\"bzzr://d8fc6e549c0eb65e15d6f14cf317dbd8a736804709bd1e443922c1c97b873aa0\"]},\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0xb457e39e512b5475c3e70193ab0a751f6626a50417954247f0cf47c7ca15eff7\",\"urls\":[\"bzzr://3b585a4055121fee393f2b691538036c87f56556f43f0b6e851a88de7b8275e6\"]},\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/IAlgoMiner.sol": { + "IAlgoMiner": { + "abi": [ + { + "constant": true, + "inputs": [], + "name": "isAlgoMiner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getCategory", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "getCategory()": "80258e47", + "isAlgoMiner()": "1777fb4b" + } + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { + "Roles": { + "abi": [], + "devdoc": { + "methods": {}, + "title": "Roles" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820bfa74e3170abc2ace25475dc7dfb71c6416c34449905f1f30a00ec4431d9206c0029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xbf 0xa7 0x4e BALANCE PUSH17 0xABC2ACE25475DC7DFB71C6416C34449905 CALL RETURN EXP STOP 0xec DIFFICULTY BALANCE 0xd9 KECCAK256 PUSH13 0x290000000000000000000000 ", + "sourceMap": "109:784:3:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "15200", + "executionCost": "116", + "totalCost": "15316" + }, + "internal": { + "add(struct Roles.Role storage pointer,address)": "infinite", + "has(struct Roles.Role storage pointer,address)": "infinite", + "remove(struct Roles.Role storage pointer,address)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"Roles\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":\"Roles\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { + "SafeMath": { + "abi": [], + "devdoc": { + "methods": {}, + "title": "SafeMath" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a723058204094b52d7c5ef1d5aa4907b2604c65a23d27d58f9b4359f5187db6598b2799300029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 BLOCKHASH SWAP5 0xb5 0x2d PUSH29 0x5EF1D5AA4907B2604C65A23D27D58F9B4359F5187DB6598B2799300029 ", + "sourceMap": "117:1531:4:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "15200", + "executionCost": "116", + "totalCost": "15316" + }, + "internal": { + "add(uint256,uint256)": "infinite", + "div(uint256,uint256)": "infinite", + "mod(uint256,uint256)": "infinite", + "mul(uint256,uint256)": "infinite", + "sub(uint256,uint256)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"SafeMath\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol": { + "IERC20": { + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "who", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + } + ], + "devdoc": { + "methods": {}, + "title": "ERC20 interface" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol": { + "SafeERC20": { + "abi": [], + "devdoc": { + "methods": {}, + "title": "SafeERC20" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a723058207a38fb4cb6c1c093de86b1ba91e5add211165e6c76b8cc0d294ecbd35bbbeb2c0029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 PUSH27 0x38FB4CB6C1C093DE86B1BA91E5ADD211165E6C76B8CC0D294ECBD3 JUMPDEST 0xbb 0xeb 0x2c STOP 0x29 ", + "sourceMap": "353:1296:6:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "15200", + "executionCost": "116", + "totalCost": "15316" + }, + "internal": { + "safeApprove(contract IERC20,address,uint256)": "infinite", + "safeDecreaseAllowance(contract IERC20,address,uint256)": "infinite", + "safeIncreaseAllowance(contract IERC20,address,uint256)": "infinite", + "safeTransfer(contract IERC20,address,uint256)": "infinite", + "safeTransferFrom(contract IERC20,address,address,uint256)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"SafeERC20\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + } + }, + "sources": { + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoCoreTeamRole.sol": { + "ast": { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoCoreTeamRole.sol", + "exportedSymbols": { + "AlgoCoreTeamRole": [ + 86 + ] + }, + "id": 87, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:0" + }, + { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "file": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "id": 2, + "nodeType": "ImportDirective", + "scope": 87, + "sourceUnit": 382, + "src": "28:171:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 86, + "linearizedBaseContracts": [ + 86 + ], + "name": "AlgoCoreTeamRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 5, + "libraryName": { + "contractScope": null, + "id": 3, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 381, + "src": "242:5:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$381", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "236:27:0", + "typeName": { + "contractScope": null, + "id": 4, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 294, + "src": "252:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "constant": false, + "id": 7, + "name": "_coreTeamMembers", + "nodeType": "VariableDeclaration", + "scope": 86, + "src": "271:35:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 6, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 294, + "src": "271:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 15, + "nodeType": "Block", + "src": "339:43:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 737, + "src": "363:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 12, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "363:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10, + "name": "_addCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "350:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 13, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "350:24:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14, + "nodeType": "ExpressionStatement", + "src": "350:24:0" + } + ] + }, + "documentation": null, + "id": 16, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8, + "nodeType": "ParameterList", + "parameters": [], + "src": "327:2:0" + }, + "payable": false, + "returnParameters": { + "id": 9, + "nodeType": "ParameterList", + "parameters": [], + "src": "339:0:0" + }, + "scope": 86, + "src": "315:67:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 26, + "nodeType": "Block", + "src": "414:62:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 20, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 737, + "src": "444:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 21, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "444:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 19, + "name": "isCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "433:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 22, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "433:22:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 18, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "425:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 23, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "425:31:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 24, + "nodeType": "ExpressionStatement", + "src": "425:31:0" + }, + { + "id": 25, + "nodeType": "PlaceholderStatement", + "src": "467:1:0" + } + ] + }, + "documentation": null, + "id": 27, + "name": "onlyCoreTeam", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 17, + "nodeType": "ParameterList", + "parameters": [], + "src": "411:2:0" + }, + "src": "390:86:0", + "visibility": "internal" + }, + { + "body": { + "id": 39, + "nodeType": "Block", + "src": "548:55:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 36, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 29, + "src": "587:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 34, + "name": "_coreTeamMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "566:16:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 35, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 380, + "src": "566:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$294_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$294_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 37, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "566:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 33, + "id": 38, + "nodeType": "Return", + "src": "559:36:0" + } + ] + }, + "documentation": null, + "id": 40, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 30, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 29, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 40, + "src": "504:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 28, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "504:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "503:17:0" + }, + "payable": false, + "returnParameters": { + "id": 33, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 32, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 40, + "src": "542:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 31, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "542:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "541:6:0" + }, + "scope": 86, + "src": "484:119:0", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 51, + "nodeType": "Block", + "src": "669:40:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 48, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "693:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 47, + "name": "_addCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "680:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 49, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "680:21:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 50, + "nodeType": "ExpressionStatement", + "src": "680:21:0" + } + ] + }, + "documentation": null, + "id": 52, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 45, + "modifierName": { + "argumentTypes": null, + "id": 44, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "656:12:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "656:12:0" + } + ], + "name": "addCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 42, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 52, + "src": "632:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 41, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "632:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "631:17:0" + }, + "payable": false, + "returnParameters": { + "id": 46, + "nodeType": "ParameterList", + "parameters": [], + "src": "669:0:0" + }, + "scope": 86, + "src": "611:98:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 60, + "nodeType": "Block", + "src": "752:46:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 56, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 737, + "src": "779:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 57, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "779:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 55, + "name": "_removeCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "763:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 58, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "763:27:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 59, + "nodeType": "ExpressionStatement", + "src": "763:27:0" + } + ] + }, + "documentation": null, + "id": 61, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "renounceCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 53, + "nodeType": "ParameterList", + "parameters": [], + "src": "742:2:0" + }, + "payable": false, + "returnParameters": { + "id": 54, + "nodeType": "ParameterList", + "parameters": [], + "src": "752:0:0" + }, + "scope": 86, + "src": "717:81:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 72, + "nodeType": "Block", + "src": "854:48:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 69, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 63, + "src": "886:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 66, + "name": "_coreTeamMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "865:16:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 68, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 326, + "src": "865:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$294_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$294_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 70, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "865:29:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 71, + "nodeType": "ExpressionStatement", + "src": "865:29:0" + } + ] + }, + "documentation": null, + "id": 73, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_addCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 64, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 63, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 73, + "src": "828:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 62, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "828:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "827:17:0" + }, + "payable": false, + "returnParameters": { + "id": 65, + "nodeType": "ParameterList", + "parameters": [], + "src": "854:0:0" + }, + "scope": 86, + "src": "806:96:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 84, + "nodeType": "Block", + "src": "961:51:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 81, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 75, + "src": "996:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 78, + "name": "_coreTeamMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "972:16:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 80, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 357, + "src": "972:23:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$294_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$294_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 82, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "972:32:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 83, + "nodeType": "ExpressionStatement", + "src": "972:32:0" + } + ] + }, + "documentation": null, + "id": 85, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_removeCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 76, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 75, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 85, + "src": "935:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 74, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "935:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "934:17:0" + }, + "payable": false, + "returnParameters": { + "id": 77, + "nodeType": "ParameterList", + "parameters": [], + "src": "961:0:0" + }, + "scope": 86, + "src": "910:102:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 87, + "src": "203:812:0" + } + ], + "src": "0:1017:0" + }, + "id": 0 + }, + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoPool.sol": { + "ast": { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoPool.sol", + "exportedSymbols": { + "AlgoPool": [ + 274 + ] + }, + "id": 275, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 88, + "literals": [ + "solidity", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:23:1" + }, + { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "id": 89, + "nodeType": "ImportDirective", + "scope": 275, + "sourceUnit": 579, + "src": "27:177:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "file": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "id": 90, + "nodeType": "ImportDirective", + "scope": 275, + "sourceUnit": 723, + "src": "206:180:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/IAlgoMiner.sol", + "file": "./IAlgoMiner.sol", + "id": 91, + "nodeType": "ImportDirective", + "scope": 275, + "sourceUnit": 288, + "src": "390:26:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/AlgoCoreTeamRole.sol", + "file": "./AlgoCoreTeamRole.sol", + "id": 92, + "nodeType": "ImportDirective", + "scope": 275, + "sourceUnit": 87, + "src": "418:32:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 93, + "name": "AlgoCoreTeamRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 86, + "src": "475:16:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AlgoCoreTeamRole_$86", + "typeString": "contract AlgoCoreTeamRole" + } + }, + "id": 94, + "nodeType": "InheritanceSpecifier", + "src": "475:16:1" + } + ], + "contractDependencies": [ + 86 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 274, + "linearizedBaseContracts": [ + 274, + 86 + ], + "name": "AlgoPool", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 97, + "libraryName": { + "contractScope": null, + "id": 95, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 722, + "src": "505:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$722", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "499:27:1", + "typeName": { + "contractScope": null, + "id": 96, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 578, + "src": "519:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + } + }, + { + "constant": true, + "id": 104, + "name": "TOKEN_FACTOR", + "nodeType": "VariableDeclaration", + "scope": 274, + "src": "534:56:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 98, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "534:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 103, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 99, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "573:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "3138", + "id": 101, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "587:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + } + ], + "id": 100, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "579:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint256" + }, + "id": 102, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "579:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "573:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": true, + "id": 109, + "name": "CAT_0_VALUE", + "nodeType": "VariableDeclaration", + "scope": 274, + "src": "597:59:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 105, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "597:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 108, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "313030303030", + "id": 106, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "635:6:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_100000_by_1", + "typeString": "int_const 100000" + }, + "value": "100000" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 107, + "name": "TOKEN_FACTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "644:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "635:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": true, + "id": 114, + "name": "CAT_1_VALUE", + "nodeType": "VariableDeclaration", + "scope": 274, + "src": "663:60:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 110, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "663:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 113, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "31303030303030", + "id": 111, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "701:7:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1000000" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 112, + "name": "TOKEN_FACTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "711:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "701:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": true, + "id": 121, + "name": "CAT_2_VALUE", + "nodeType": "VariableDeclaration", + "scope": 274, + "src": "730:64:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 115, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "730:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 120, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_2000000_by_1", + "typeString": "int_const 2000000" + }, + "id": 118, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 116, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "768:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31303030303030", + "id": 117, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "772:7:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1000000" + }, + "src": "768:11:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_2000000_by_1", + "typeString": "int_const 2000000" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 119, + "name": "TOKEN_FACTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "782:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "768:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": true, + "id": 128, + "name": "CAT_3_VALUE", + "nodeType": "VariableDeclaration", + "scope": 274, + "src": "801:64:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 122, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "801:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 127, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_3000000_by_1", + "typeString": "int_const 3000000" + }, + "id": 125, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "33", + "id": 123, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "839:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31303030303030", + "id": 124, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "843:7:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1000000" + }, + "src": "839:11:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_3000000_by_1", + "typeString": "int_const 3000000" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 126, + "name": "TOKEN_FACTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "853:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "839:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": true, + "id": 135, + "name": "CAT_4_VALUE", + "nodeType": "VariableDeclaration", + "scope": 274, + "src": "872:64:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 129, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "872:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 134, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_4000000_by_1", + "typeString": "int_const 4000000" + }, + "id": 132, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "34", + "id": 130, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "910:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31303030303030", + "id": 131, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "914:7:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1000000" + }, + "src": "910:11:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_4000000_by_1", + "typeString": "int_const 4000000" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 133, + "name": "TOKEN_FACTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "924:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "910:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": true, + "id": 142, + "name": "CAT_5_VALUE", + "nodeType": "VariableDeclaration", + "scope": 274, + "src": "943:64:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 136, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "943:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 141, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_5000000_by_1", + "typeString": "int_const 5000000" + }, + "id": 139, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "35", + "id": 137, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "981:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31303030303030", + "id": 138, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "985:7:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1000000" + }, + "src": "981:11:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_5000000_by_1", + "typeString": "int_const 5000000" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 140, + "name": "TOKEN_FACTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "995:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "981:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "id": 144, + "name": "_poolType", + "nodeType": "VariableDeclaration", + "scope": 274, + "src": "1016:24:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 143, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1016:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 146, + "name": "_token", + "nodeType": "VariableDeclaration", + "scope": 274, + "src": "1047:21:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 145, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 578, + "src": "1047:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 165, + "nodeType": "Block", + "src": "1172:79:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 157, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 155, + "name": "_poolType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 144, + "src": "1183:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 156, + "name": "poolType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 148, + "src": "1195:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "1183:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 158, + "nodeType": "ExpressionStatement", + "src": "1183:20:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 159, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 146, + "src": "1214:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 161, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 150, + "src": "1230:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 160, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 578, + "src": "1223:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$578_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1223:20:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "src": "1214:29:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "id": 164, + "nodeType": "ExpressionStatement", + "src": "1214:29:1" + } + ] + }, + "documentation": null, + "id": 166, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 153, + "modifierName": { + "argumentTypes": null, + "id": 152, + "name": "AlgoCoreTeamRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 86, + "src": "1137:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_AlgoCoreTeamRole_$86_$", + "typeString": "type(contract AlgoCoreTeamRole)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1137:18:1" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 151, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 148, + "name": "poolType", + "nodeType": "VariableDeclaration", + "scope": 166, + "src": "1089:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 147, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1089:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 150, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 166, + "src": "1106:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 149, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1106:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1088:39:1" + }, + "payable": false, + "returnParameters": { + "id": 154, + "nodeType": "ParameterList", + "parameters": [], + "src": "1172:0:1" + }, + "scope": 274, + "src": "1077:174:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 272, + "nodeType": "Block", + "src": "1325:817:1", + "statements": [ + { + "assignments": [ + 174 + ], + "declarations": [ + { + "constant": false, + "id": 174, + "name": "algoMiner", + "nodeType": "VariableDeclaration", + "scope": 273, + "src": "1336:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$287", + "typeString": "contract IAlgoMiner" + }, + "typeName": { + "contractScope": null, + "id": 173, + "name": "IAlgoMiner", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 287, + "src": "1336:10:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$287", + "typeString": "contract IAlgoMiner" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 178, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 176, + "name": "minerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 168, + "src": "1370:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 175, + "name": "IAlgoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 287, + "src": "1359:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$287_$", + "typeString": "type(contract IAlgoMiner)" + } + }, + "id": 177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1359:24:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$287", + "typeString": "contract IAlgoMiner" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1336:47:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 180, + "name": "algoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 174, + "src": "1412:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$287", + "typeString": "contract IAlgoMiner" + } + }, + "id": 181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isAlgoMiner", + "nodeType": "MemberAccess", + "referencedDeclaration": 281, + "src": "1412:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_pure$__$returns$_t_bool_$", + "typeString": "function () pure external returns (bool)" + } + }, + "id": 182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1412:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 179, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "1404:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1404:32:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 184, + "nodeType": "ExpressionStatement", + "src": "1404:32:1" + }, + { + "assignments": [ + 186 + ], + "declarations": [ + { + "constant": false, + "id": 186, + "name": "minerCategory", + "nodeType": "VariableDeclaration", + "scope": 273, + "src": "1457:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 185, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1457:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 190, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 187, + "name": "algoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 174, + "src": "1479:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$287", + "typeString": "contract IAlgoMiner" + } + }, + "id": 188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getCategory", + "nodeType": "MemberAccess", + "referencedDeclaration": 286, + "src": "1479:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", + "typeString": "function () view external returns (uint8)" + } + }, + "id": 189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1479:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1457:45:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 192, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 186, + "src": "1523:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 193, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1540:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1523:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 195, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 186, + "src": "1545:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "35", + "id": 196, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1562:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "src": "1545:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1523:40:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 191, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "1515:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1515:49:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 200, + "nodeType": "ExpressionStatement", + "src": "1515:49:1" + }, + { + "assignments": [ + 202 + ], + "declarations": [ + { + "constant": false, + "id": 202, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 273, + "src": "1577:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 201, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1577:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 204, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 203, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1593:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1577:17:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 205, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 186, + "src": "1610:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 206, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1627:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1610:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 213, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 186, + "src": "1685:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 214, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1702:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1685:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 221, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 186, + "src": "1760:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 222, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1777:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "1760:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 229, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 186, + "src": "1835:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "33", + "id": 230, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1852:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "src": "1835:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 237, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 186, + "src": "1910:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "34", + "id": 238, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1927:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "1910:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 245, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 186, + "src": "1985:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "35", + "id": 246, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2002:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "src": "1985:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 253, + "nodeType": "IfStatement", + "src": "1982:69:1", + "trueBody": { + "id": 252, + "nodeType": "Block", + "src": "2005:46:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 248, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "2020:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 249, + "name": "CAT_5_VALUE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 142, + "src": "2028:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2020:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 251, + "nodeType": "ExpressionStatement", + "src": "2020:19:1" + } + ] + } + }, + "id": 254, + "nodeType": "IfStatement", + "src": "1907:144:1", + "trueBody": { + "id": 244, + "nodeType": "Block", + "src": "1930:46:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 240, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "1945:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 241, + "name": "CAT_4_VALUE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 135, + "src": "1953:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1945:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 243, + "nodeType": "ExpressionStatement", + "src": "1945:19:1" + } + ] + } + }, + "id": 255, + "nodeType": "IfStatement", + "src": "1832:219:1", + "trueBody": { + "id": 236, + "nodeType": "Block", + "src": "1855:46:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 232, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "1870:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 233, + "name": "CAT_3_VALUE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 128, + "src": "1878:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1870:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 235, + "nodeType": "ExpressionStatement", + "src": "1870:19:1" + } + ] + } + }, + "id": 256, + "nodeType": "IfStatement", + "src": "1757:294:1", + "trueBody": { + "id": 228, + "nodeType": "Block", + "src": "1780:46:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 224, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "1795:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 225, + "name": "CAT_2_VALUE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 121, + "src": "1803:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1795:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 227, + "nodeType": "ExpressionStatement", + "src": "1795:19:1" + } + ] + } + }, + "id": 257, + "nodeType": "IfStatement", + "src": "1682:369:1", + "trueBody": { + "id": 220, + "nodeType": "Block", + "src": "1705:46:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 216, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "1720:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 217, + "name": "CAT_1_VALUE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 114, + "src": "1728:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1720:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 219, + "nodeType": "ExpressionStatement", + "src": "1720:19:1" + } + ] + } + }, + "id": 258, + "nodeType": "IfStatement", + "src": "1607:444:1", + "trueBody": { + "id": 212, + "nodeType": "Block", + "src": "1630:46:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 208, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "1645:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 209, + "name": "CAT_0_VALUE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 109, + "src": "1653:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1645:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 211, + "nodeType": "ExpressionStatement", + "src": "1645:19:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 260, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "2071:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 261, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2079:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2071:9:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 259, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "2063:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2063:18:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 264, + "nodeType": "ExpressionStatement", + "src": "2063:18:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 268, + "name": "minerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 168, + "src": "2114:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 269, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "2128:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 265, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 146, + "src": "2094:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "id": 267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 603, + "src": "2094:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$578_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$578_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2094:40:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 271, + "nodeType": "ExpressionStatement", + "src": "2094:40:1" + } + ] + }, + "documentation": null, + "id": 273, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 171, + "modifierName": { + "argumentTypes": null, + "id": 170, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "1312:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1312:12:1" + } + ], + "name": "trasferToMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 169, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 168, + "name": "minerAddress", + "nodeType": "VariableDeclaration", + "scope": 273, + "src": "1283:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 167, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1283:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1282:22:1" + }, + "payable": false, + "returnParameters": { + "id": 172, + "nodeType": "ParameterList", + "parameters": [], + "src": "1325:0:1" + }, + "scope": 274, + "src": "1259:883:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 275, + "src": "454:1691:1" + } + ], + "src": "0:2147:1" + }, + "id": 1 + }, + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/IAlgoMiner.sol": { + "ast": { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/IAlgoMiner.sol", + "exportedSymbols": { + "IAlgoMiner": [ + 287 + ] + }, + "id": 288, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 276, + "literals": [ + "solidity", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:23:2" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": false, + "id": 287, + "linearizedBaseContracts": [ + 287 + ], + "name": "IAlgoMiner", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 281, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isAlgoMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 277, + "nodeType": "ParameterList", + "parameters": [], + "src": "74:2:2" + }, + "payable": false, + "returnParameters": { + "id": 280, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 279, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 281, + "src": "98:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 278, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "98:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "97:6:2" + }, + "scope": 287, + "src": "54:50:2", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 286, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getCategory", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 282, + "nodeType": "ParameterList", + "parameters": [], + "src": "130:2:2" + }, + "payable": false, + "returnParameters": { + "id": 285, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 284, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 286, + "src": "154:5:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 283, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "154:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "153:7:2" + }, + "scope": 287, + "src": "110:51:2", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 288, + "src": "27:137:2" + } + ], + "src": "0:164:2" + }, + "id": 2 + }, + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { + "ast": { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "exportedSymbols": { + "Roles": [ + 381 + ] + }, + "id": 382, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 289, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:3" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", + "fullyImplemented": true, + "id": 381, + "linearizedBaseContracts": [ + 381 + ], + "name": "Roles", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "Roles.Role", + "id": 294, + "members": [ + { + "constant": false, + "id": 293, + "name": "bearer", + "nodeType": "VariableDeclaration", + "scope": 294, + "src": "145:32:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 292, + "keyType": { + "id": 290, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "154:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "145:25:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 291, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "165:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Role", + "nodeType": "StructDefinition", + "scope": 381, + "src": "127:55:3", + "visibility": "public" + }, + { + "body": { + "id": 325, + "nodeType": "Block", + "src": "302:109:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 302, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 298, + "src": "316:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 304, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "335:1:3", + "subdenomination": null, + "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": 303, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "327:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 305, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "327:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "316:21:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 301, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "308:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 307, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "308:30:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 308, + "nodeType": "ExpressionStatement", + "src": "308:30:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "352:19:3", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 311, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 296, + "src": "357:4:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 312, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 298, + "src": "363:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 310, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 380, + "src": "353:3:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$294_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "353:18:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 309, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "344:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "344:28:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 316, + "nodeType": "ExpressionStatement", + "src": "344:28:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 317, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 296, + "src": "379:4:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 320, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "379:11:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 321, + "indexExpression": { + "argumentTypes": null, + "id": 319, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 298, + "src": "391:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "379:20:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 322, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "402:4:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "379:27:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 324, + "nodeType": "ExpressionStatement", + "src": "379:27:3" + } + ] + }, + "documentation": "@dev give an account access to this role", + "id": 326, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 299, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 296, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 326, + "src": "257:17:3", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 295, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 294, + "src": "257:4:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 298, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 326, + "src": "276:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 297, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "276:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "256:36:3" + }, + "payable": false, + "returnParameters": { + "id": 300, + "nodeType": "ParameterList", + "parameters": [], + "src": "302:0:3" + }, + "scope": 381, + "src": "244:167:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 356, + "nodeType": "Block", + "src": "538:109:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 334, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "552:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 336, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "571:1:3", + "subdenomination": null, + "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": 335, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "563:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "563:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "552:21:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 333, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "544:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "544:30:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 340, + "nodeType": "ExpressionStatement", + "src": "544:30:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 343, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 328, + "src": "592:4:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 344, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "598:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 342, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 380, + "src": "588:3:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$294_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "588:18:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 341, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "580:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "580:27:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 347, + "nodeType": "ExpressionStatement", + "src": "580:27:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 348, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 328, + "src": "614:4:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 351, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "614:11:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 352, + "indexExpression": { + "argumentTypes": null, + "id": 350, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "626:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "614:20:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "637:5:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "614:28:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 355, + "nodeType": "ExpressionStatement", + "src": "614:28:3" + } + ] + }, + "documentation": "@dev remove an account's access to this role", + "id": 357, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "remove", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 331, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 328, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 357, + "src": "493:17:3", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 327, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 294, + "src": "493:4:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 330, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 357, + "src": "512:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 329, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "512:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "492:36:3" + }, + "payable": false, + "returnParameters": { + "id": 332, + "nodeType": "ParameterList", + "parameters": [], + "src": "538:0:3" + }, + "scope": 381, + "src": "477:170:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 379, + "nodeType": "Block", + "src": "817:74:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 367, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 361, + "src": "831:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 369, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "850:1:3", + "subdenomination": null, + "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": 368, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "842:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 370, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "842:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "831:21:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 366, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "823:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "823:30:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 373, + "nodeType": "ExpressionStatement", + "src": "823:30:3" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 374, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 359, + "src": "866:4:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 375, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "866:11:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 377, + "indexExpression": { + "argumentTypes": null, + "id": 376, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 361, + "src": "878:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "866:20:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 365, + "id": 378, + "nodeType": "Return", + "src": "859:27:3" + } + ] + }, + "documentation": "@dev check if an account has this role\n@return bool", + "id": 380, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "has", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 362, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 359, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 380, + "src": "738:17:3", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 358, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 294, + "src": "738:4:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 361, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 380, + "src": "757:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 360, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "757:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "737:36:3" + }, + "payable": false, + "returnParameters": { + "id": 365, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 364, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 380, + "src": "809:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 363, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "809:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "808:6:3" + }, + "scope": 381, + "src": "725:166:3", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 382, + "src": "109:784:3" + } + ], + "src": "0:894:3" + }, + "id": 3 + }, + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { + "ast": { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", + "exportedSymbols": { + "SafeMath": [ + 509 + ] + }, + "id": 510, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 383, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:4" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", + "fullyImplemented": true, + "id": 509, + "linearizedBaseContracts": [ + 509 + ], + "name": "SafeMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 415, + "nodeType": "Block", + "src": "271:314:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 392, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "486:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 393, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "491:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "486:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 398, + "nodeType": "IfStatement", + "src": "482:35:4", + "trueBody": { + "id": 397, + "nodeType": "Block", + "src": "494:23:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 395, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "509:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 391, + "id": 396, + "nodeType": "Return", + "src": "502:8:4" + } + ] + } + }, + { + "assignments": [ + 400 + ], + "declarations": [ + { + "constant": false, + "id": 400, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 416, + "src": "523:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 399, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "523:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 404, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 401, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "535:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 402, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "539:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "535:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "523:17:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 406, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 400, + "src": "554:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 407, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "558:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "554:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 409, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "563:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "554:10:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 405, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "546:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "546:19:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 412, + "nodeType": "ExpressionStatement", + "src": "546:19:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 413, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 400, + "src": "579:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 391, + "id": 414, + "nodeType": "Return", + "src": "572:8:4" + } + ] + }, + "documentation": "@dev Multiplies two numbers, reverts on overflow.", + "id": 416, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "mul", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 385, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 416, + "src": "217:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 384, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "217:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 387, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 416, + "src": "228:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 386, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "228:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "216:22:4" + }, + "payable": false, + "returnParameters": { + "id": 391, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 390, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 416, + "src": "262:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 389, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "262:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "261:9:4" + }, + "scope": 509, + "src": "204:381:4", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 439, + "nodeType": "Block", + "src": "762:203:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 426, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 420, + "src": "776:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 427, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "780:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "776:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 425, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "768:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "768:14:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 430, + "nodeType": "ExpressionStatement", + "src": "768:14:4" + }, + { + "assignments": [ + 432 + ], + "declarations": [ + { + "constant": false, + "id": 432, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 440, + "src": "846:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 431, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "846:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 436, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 433, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 418, + "src": "858:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 434, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 420, + "src": "862:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "858:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "846:17:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 437, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 432, + "src": "959:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 424, + "id": 438, + "nodeType": "Return", + "src": "952:8:4" + } + ] + }, + "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", + "id": 440, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 421, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 418, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 440, + "src": "708:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 417, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "708:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 420, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 440, + "src": "719:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 419, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "719:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "707:22:4" + }, + "payable": false, + "returnParameters": { + "id": 424, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 423, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 440, + "src": "753:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 422, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "753:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "752:9:4" + }, + "scope": 509, + "src": "695:270:4", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 463, + "nodeType": "Block", + "src": "1145:64:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 450, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "1159:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 451, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 442, + "src": "1164:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1159:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 449, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "1151:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1151:15:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 454, + "nodeType": "ExpressionStatement", + "src": "1151:15:4" + }, + { + "assignments": [ + 456 + ], + "declarations": [ + { + "constant": false, + "id": 456, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 464, + "src": "1172:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 455, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1172:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 460, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 457, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 442, + "src": "1184:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 458, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "1188:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1184:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1172:17:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 461, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 456, + "src": "1203:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 448, + "id": 462, + "nodeType": "Return", + "src": "1196:8:4" + } + ] + }, + "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", + "id": 464, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 445, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 442, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 464, + "src": "1091:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 441, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1091:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 444, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 464, + "src": "1102:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 443, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1102:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1090:22:4" + }, + "payable": false, + "returnParameters": { + "id": 448, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 447, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 464, + "src": "1136:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 446, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1136:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1135:9:4" + }, + "scope": 509, + "src": "1078:131:4", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 487, + "nodeType": "Block", + "src": "1339:64:4", + "statements": [ + { + "assignments": [ + 474 + ], + "declarations": [ + { + "constant": false, + "id": 474, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 488, + "src": "1345:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 473, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1345:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 478, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 475, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 466, + "src": "1357:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 476, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 468, + "src": "1361:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1357:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1345:17:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 480, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 474, + "src": "1376:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 481, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 466, + "src": "1381:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1376:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 479, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "1368:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1368:15:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 484, + "nodeType": "ExpressionStatement", + "src": "1368:15:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 485, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 474, + "src": "1397:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 472, + "id": 486, + "nodeType": "Return", + "src": "1390:8:4" + } + ] + }, + "documentation": "@dev Adds two numbers, reverts on overflow.", + "id": 488, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 469, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 466, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 488, + "src": "1285:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 465, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1285:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 468, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 488, + "src": "1296:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 467, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1296:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1284:22:4" + }, + "payable": false, + "returnParameters": { + "id": 472, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 471, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 488, + "src": "1330:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 470, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1330:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1329:9:4" + }, + "scope": 509, + "src": "1272:131:4", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 507, + "nodeType": "Block", + "src": "1602:44:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 498, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 492, + "src": "1616:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 499, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1621:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1616:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 497, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "1608:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1608:15:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 502, + "nodeType": "ExpressionStatement", + "src": "1608:15:4" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 503, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 490, + "src": "1636:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "id": 504, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 492, + "src": "1640:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1636:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 496, + "id": 506, + "nodeType": "Return", + "src": "1629:12:4" + } + ] + }, + "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", + "id": 508, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "mod", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 493, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 490, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 508, + "src": "1548:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 489, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1548:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 492, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 508, + "src": "1559:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 491, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1559:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1547:22:4" + }, + "payable": false, + "returnParameters": { + "id": 496, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 495, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 508, + "src": "1593:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 494, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1593:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1592:9:4" + }, + "scope": 509, + "src": "1535:111:4", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 510, + "src": "117:1531:4" + } + ], + "src": "0:1649:4" + }, + "id": 4 + }, + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol": { + "ast": { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "exportedSymbols": { + "IERC20": [ + 578 + ] + }, + "id": 579, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 511, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:5" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", + "fullyImplemented": false, + "id": 578, + "linearizedBaseContracts": [ + 578 + ], + "name": "IERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 516, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 512, + "nodeType": "ParameterList", + "parameters": [], + "src": "156:2:5" + }, + "payable": false, + "returnParameters": { + "id": 515, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 514, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 516, + "src": "182:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 513, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "182:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "181:9:5" + }, + "scope": 578, + "src": "136:55:5", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 523, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 519, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 518, + "name": "who", + "nodeType": "VariableDeclaration", + "scope": 523, + "src": "214:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 517, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "214:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "213:13:5" + }, + "payable": false, + "returnParameters": { + "id": 522, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 521, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 523, + "src": "250:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 520, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "250:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "249:9:5" + }, + "scope": 578, + "src": "195:64:5", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 532, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 528, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 525, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 532, + "src": "282:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 524, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "282:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 527, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 532, + "src": "297:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 526, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "297:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "281:32:5" + }, + "payable": false, + "returnParameters": { + "id": 531, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 530, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 532, + "src": "341:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 529, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "341:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "340:9:5" + }, + "scope": 578, + "src": "263:87:5", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 541, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 537, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 534, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 541, + "src": "372:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 533, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "372:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 536, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 541, + "src": "384:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 535, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "384:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "371:27:5" + }, + "payable": false, + "returnParameters": { + "id": 540, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 539, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 541, + "src": "417:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 538, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "417:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "416:6:5" + }, + "scope": 578, + "src": "354:69:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 550, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 546, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 543, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 550, + "src": "444:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 542, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "444:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 545, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 550, + "src": "461:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 544, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "461:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "443:32:5" + }, + "payable": false, + "returnParameters": { + "id": 549, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 548, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 550, + "src": "498:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 547, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "498:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "497:6:5" + }, + "scope": 578, + "src": "427:77:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 561, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 557, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 552, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 561, + "src": "530:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 551, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "530:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 554, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 561, + "src": "544:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 553, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "544:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 556, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 561, + "src": "556:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 555, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "556:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "529:41:5" + }, + "payable": false, + "returnParameters": { + "id": 560, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 559, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 561, + "src": "593:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 558, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "593:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "592:6:5" + }, + "scope": 578, + "src": "508:91:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": null, + "id": 569, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 568, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 563, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 569, + "src": "623:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 562, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "623:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 565, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 569, + "src": "649:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 564, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "649:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 567, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 569, + "src": "673:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 566, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "673:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "617:73:5" + }, + "src": "603:88:5" + }, + { + "anonymous": false, + "documentation": null, + "id": 577, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 576, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 571, + "indexed": true, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 577, + "src": "715:21:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 570, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "715:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 573, + "indexed": true, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 577, + "src": "742:23:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 572, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "742:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 575, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 577, + "src": "771:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 574, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "771:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "709:79:5" + }, + "src": "695:94:5" + } + ], + "scope": 579, + "src": "115:676:5" + } + ], + "src": "0:792:5" + }, + "id": 5 + }, + "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol": { + "ast": { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "exportedSymbols": { + "SafeERC20": [ + 722 + ] + }, + "id": 723, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 580, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:6" + }, + { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 581, + "nodeType": "ImportDirective", + "scope": 723, + "sourceUnit": 579, + "src": "26:22:6", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/Sabra/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 582, + "nodeType": "ImportDirective", + "scope": 723, + "sourceUnit": 510, + "src": "49:33:6", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.", + "fullyImplemented": true, + "id": 722, + "linearizedBaseContracts": [ + 722 + ], + "name": "SafeERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 585, + "libraryName": { + "contractScope": null, + "id": 583, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 509, + "src": "382:8:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$509", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "376:27:6", + "typeName": { + "id": 584, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "395:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "body": { + "id": 602, + "nodeType": "Block", + "src": "501:45:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 597, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 589, + "src": "530:2:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 598, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 591, + "src": "534:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 595, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 587, + "src": "515:5:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "id": 596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 541, + "src": "515:14:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "515:25:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 594, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "507:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "507:34:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 601, + "nodeType": "ExpressionStatement", + "src": "507:34:6" + } + ] + }, + "documentation": null, + "id": 603, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeTransfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 592, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 587, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 603, + "src": "434:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 586, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 578, + "src": "434:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 589, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 603, + "src": "452:10:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 588, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "452:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 591, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 603, + "src": "468:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 590, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "468:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "428:57:6" + }, + "payable": false, + "returnParameters": { + "id": 593, + "nodeType": "ParameterList", + "parameters": [], + "src": "501:0:6" + }, + "scope": 722, + "src": "407:139:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 623, + "nodeType": "Block", + "src": "666:55:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 617, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 607, + "src": "699:4:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 618, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 609, + "src": "705:2:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 619, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 611, + "src": "709:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 615, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 605, + "src": "680:5:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "id": 616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 561, + "src": "680:18:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "680:35:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 614, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "672:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "672:44:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 622, + "nodeType": "ExpressionStatement", + "src": "672:44:6" + } + ] + }, + "documentation": null, + "id": 624, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 612, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 605, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 624, + "src": "581:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 604, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 578, + "src": "581:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 607, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 624, + "src": "599:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 606, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "599:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 609, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 624, + "src": "617:10:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 608, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "617:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 611, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 624, + "src": "633:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 610, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "633:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "575:75:6" + }, + "payable": false, + "returnParameters": { + "id": 613, + "nodeType": "ParameterList", + "parameters": [], + "src": "666:0:6" + }, + "scope": 722, + "src": "550:171:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 658, + "nodeType": "Block", + "src": "823:330:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 634, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 630, + "src": "1045:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 635, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1054:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1045:10:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 637, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1044:12:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 640, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 737, + "src": "1077:3:6", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1077:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 642, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 628, + "src": "1089:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 638, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 626, + "src": "1061:5:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "id": 639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 532, + "src": "1061:15:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1061:36:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 644, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1101:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1061:41:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 646, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1060:43:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1044:59:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 633, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "1036:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1036:68:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 649, + "nodeType": "ExpressionStatement", + "src": "1036:68:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 653, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 628, + "src": "1132:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 654, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 630, + "src": "1141:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 651, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 626, + "src": "1118:5:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "id": 652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 550, + "src": "1118:13:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1118:29:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 650, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "1110:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1110:38:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 657, + "nodeType": "ExpressionStatement", + "src": "1110:38:6" + } + ] + }, + "documentation": null, + "id": 659, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeApprove", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 631, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 626, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 659, + "src": "751:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 625, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 578, + "src": "751:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 628, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 659, + "src": "769:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 627, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "769:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 630, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 659, + "src": "790:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 629, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "790:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "745:62:6" + }, + "payable": false, + "returnParameters": { + "id": 632, + "nodeType": "ParameterList", + "parameters": [], + "src": "823:0:6" + }, + "scope": 722, + "src": "725:428:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 689, + "nodeType": "Block", + "src": "1265:135:6", + "statements": [ + { + "assignments": [ + 669 + ], + "declarations": [ + { + "constant": false, + "id": 669, + "name": "newAllowance", + "nodeType": "VariableDeclaration", + "scope": 690, + "src": "1271:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 668, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1271:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 680, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 678, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 665, + "src": "1338:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 673, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 758, + "src": "1318:4:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$722", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$722", + "typeString": "library SafeERC20" + } + ], + "id": 672, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1310:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1310:13:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 675, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 663, + "src": "1325:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 670, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 661, + "src": "1294:5:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "id": 671, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 532, + "src": "1294:15:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1294:39:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 488, + "src": "1294:43:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 679, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1294:50:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1271:73:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 684, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 663, + "src": "1372:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 685, + "name": "newAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 669, + "src": "1381:12:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 682, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 661, + "src": "1358:5:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "id": 683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 550, + "src": "1358:13:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 686, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1358:36:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 681, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "1350:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1350:45:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 688, + "nodeType": "ExpressionStatement", + "src": "1350:45:6" + } + ] + }, + "documentation": null, + "id": 690, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeIncreaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 666, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 661, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 690, + "src": "1193:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 660, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 578, + "src": "1193:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 663, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 690, + "src": "1211:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 662, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1211:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 665, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 690, + "src": "1232:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 664, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1232:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1187:62:6" + }, + "payable": false, + "returnParameters": { + "id": 667, + "nodeType": "ParameterList", + "parameters": [], + "src": "1265:0:6" + }, + "scope": 722, + "src": "1157:243:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 720, + "nodeType": "Block", + "src": "1512:135:6", + "statements": [ + { + "assignments": [ + 700 + ], + "declarations": [ + { + "constant": false, + "id": 700, + "name": "newAllowance", + "nodeType": "VariableDeclaration", + "scope": 721, + "src": "1518:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 699, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1518:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 711, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 709, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "1585:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 704, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 758, + "src": "1565:4:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$722", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$722", + "typeString": "library SafeERC20" + } + ], + "id": 703, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1557:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1557:13:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 706, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 694, + "src": "1572:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 701, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 692, + "src": "1541:5:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "id": 702, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 532, + "src": "1541:15:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 707, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1541:39:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 464, + "src": "1541:43:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1541:50:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1518:73:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 715, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 694, + "src": "1619:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 716, + "name": "newAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 700, + "src": "1628:12:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 713, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 692, + "src": "1605:5:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "id": 714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 550, + "src": "1605:13:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1605:36:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 712, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "1597:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1597:45:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 719, + "nodeType": "ExpressionStatement", + "src": "1597:45:6" + } + ] + }, + "documentation": null, + "id": 721, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeDecreaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 697, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 692, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 721, + "src": "1440:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 691, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 578, + "src": "1440:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 694, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 721, + "src": "1458:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 693, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1458:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 696, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 721, + "src": "1479:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 695, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1479:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1434:62:6" + }, + "payable": false, + "returnParameters": { + "id": 698, + "nodeType": "ParameterList", + "parameters": [], + "src": "1512:0:6" + }, + "scope": 722, + "src": "1404:243:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 723, + "src": "353:1296:6" + } + ], + "src": "0:1650:6" + }, + "id": 6 + } + } +} \ No newline at end of file diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoPool.abi b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoPool.abi new file mode 100644 index 000000000..38dd233d4 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoPool.abi @@ -0,0 +1 @@ +[{"constant":false,"inputs":[{"name":"minerAddress","type":"address"}],"name":"trasferToMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_FACTOR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"CAT_4_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_1_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_3_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_0_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_5_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_2_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"poolType","type":"uint16"},{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoPool.bin b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoPool.bin new file mode 100644 index 000000000..4bb8a74af --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoPool.bin @@ -0,0 +1 @@ +608060405234801561001057600080fd5b5060405160408061076083398101604052805160209091015161003b33640100000000610077810204565b60018054600160a060020a0390921662010000026201000060b060020a031961ffff90941661ffff199093169290921792909216179055610120565b61008f60008264010000000061056b61009282021704565b50565b600160a060020a03811615156100a757600080fd5b6100ba82826401000000006100e9810204565b156100c457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561010057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106318061012f6000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632296f4c7811461009a57806325109e8b146100bd5780632e6b6849146100e4578063455acbcd14610105578063492fba841461011a57806349dc9ed01461012f578063608d3d3d146101445780639fc3c98314610179578063a89febb21461018e578063aed6183f146101a3578063d43acc79146101b8575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a03600435166101cd565b005b3480156100c957600080fd5b506100d26103cc565b60408051918252519081900360200190f35b3480156100f057600080fd5b506100bb600160a060020a03600435166103d8565b34801561011157600080fd5b506100d26103f8565b34801561012657600080fd5b506100d2610407565b34801561013b57600080fd5b506100d2610415565b34801561015057600080fd5b50610165600160a060020a0360043516610424565b604080519115158252519081900360200190f35b34801561018557600080fd5b506100d261043c565b34801561019a57600080fd5b506100d261044a565b3480156101af57600080fd5b506100d2610459565b3480156101c457600080fd5b506100bb610468565b60008060006101db33610424565b15156101e657600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561022757600080fd5b505af115801561023b573d6000803e3d6000fd5b505050506040513d602081101561025157600080fd5b5051151561025e57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561029c57600080fd5b505af11580156102b0573d6000803e3d6000fd5b505050506040513d60208110156102c657600080fd5b50519150600060ff8316108015906102e2575060058260ff1611155b15156102ed57600080fd5b50600060ff8216151561030b575069152d02c7e14af680000061039c565b8160ff1660011415610328575069d3c21bcecceda100000061039c565b8160ff166002141561034657506a01a784379d99db4200000061039c565b8160ff166003141561036457506a027b46536c66c8e300000061039c565b8160ff166004141561038257506a034f086f3b33b68400000061039c565b8160ff166005141561039c57506a0422ca8b0a00a4250000005b600081116103a957600080fd5b6001546103c690620100009004600160a060020a03168583610473565b50505050565b670de0b6b3a764000081565b6103e133610424565b15156103ec57600080fd5b6103f581610512565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b6000610436818363ffffffff61052316565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b6104713361055a565b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156104d657600080fd5b505af11580156104ea573d6000803e3d6000fd5b505050506040513d602081101561050057600080fd5b5051151561050d57600080fd5b505050565b6103f560008263ffffffff61056b16565b6000600160a060020a038216151561053a57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6103f560008263ffffffff6105b916565b600160a060020a038116151561058057600080fd5b61058a8282610523565b1561059457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a03811615156105ce57600080fd5b6105d88282610523565b15156105e357600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820f296b4ffb64dca2d6eb3a2164312cba487eba728c8b0729ef90193efdf3b0b3d0029 \ No newline at end of file diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoPool.json b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoPool.json new file mode 100644 index 000000000..39b79f14d --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoPool.json @@ -0,0 +1,207 @@ +{ + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "minerAddress", + "type": "address" + } + ], + "name": "trasferToMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "TOKEN_FACTOR", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "CAT_4_VALUE", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "CAT_1_VALUE", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "CAT_3_VALUE", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isCoreTeam", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "CAT_0_VALUE", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "CAT_5_VALUE", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "CAT_2_VALUE", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "name": "poolType", + "type": "uint16" + }, + { + "name": "tokenAddress", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "bytecode": "608060405234801561001057600080fd5b5060405160408061076083398101604052805160209091015161003b33640100000000610077810204565b60018054600160a060020a0390921662010000026201000060b060020a031961ffff90941661ffff199093169290921792909216179055610120565b61008f60008264010000000061056b61009282021704565b50565b600160a060020a03811615156100a757600080fd5b6100ba82826401000000006100e9810204565b156100c457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561010057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106318061012f6000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632296f4c7811461009a57806325109e8b146100bd5780632e6b6849146100e4578063455acbcd14610105578063492fba841461011a57806349dc9ed01461012f578063608d3d3d146101445780639fc3c98314610179578063a89febb21461018e578063aed6183f146101a3578063d43acc79146101b8575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a03600435166101cd565b005b3480156100c957600080fd5b506100d26103cc565b60408051918252519081900360200190f35b3480156100f057600080fd5b506100bb600160a060020a03600435166103d8565b34801561011157600080fd5b506100d26103f8565b34801561012657600080fd5b506100d2610407565b34801561013b57600080fd5b506100d2610415565b34801561015057600080fd5b50610165600160a060020a0360043516610424565b604080519115158252519081900360200190f35b34801561018557600080fd5b506100d261043c565b34801561019a57600080fd5b506100d261044a565b3480156101af57600080fd5b506100d2610459565b3480156101c457600080fd5b506100bb610468565b60008060006101db33610424565b15156101e657600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561022757600080fd5b505af115801561023b573d6000803e3d6000fd5b505050506040513d602081101561025157600080fd5b5051151561025e57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561029c57600080fd5b505af11580156102b0573d6000803e3d6000fd5b505050506040513d60208110156102c657600080fd5b50519150600060ff8316108015906102e2575060058260ff1611155b15156102ed57600080fd5b50600060ff8216151561030b575069152d02c7e14af680000061039c565b8160ff1660011415610328575069d3c21bcecceda100000061039c565b8160ff166002141561034657506a01a784379d99db4200000061039c565b8160ff166003141561036457506a027b46536c66c8e300000061039c565b8160ff166004141561038257506a034f086f3b33b68400000061039c565b8160ff166005141561039c57506a0422ca8b0a00a4250000005b600081116103a957600080fd5b6001546103c690620100009004600160a060020a03168583610473565b50505050565b670de0b6b3a764000081565b6103e133610424565b15156103ec57600080fd5b6103f581610512565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b6000610436818363ffffffff61052316565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b6104713361055a565b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156104d657600080fd5b505af11580156104ea573d6000803e3d6000fd5b505050506040513d602081101561050057600080fd5b5051151561050d57600080fd5b505050565b6103f560008263ffffffff61056b16565b6000600160a060020a038216151561053a57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6103f560008263ffffffff6105b916565b600160a060020a038116151561058057600080fd5b61058a8282610523565b1561059457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a03811615156105ce57600080fd5b6105d88282610523565b15156105e357600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820f296b4ffb64dca2d6eb3a2164312cba487eba728c8b0729ef90193efdf3b0b3d0029", + "functionHashes": { + "CAT_0_VALUE()": "9fc3c983", + "CAT_1_VALUE()": "492fba84", + "CAT_2_VALUE()": "aed6183f", + "CAT_3_VALUE()": "49dc9ed0", + "CAT_4_VALUE()": "455acbcd", + "CAT_5_VALUE()": "a89febb2", + "TOKEN_FACTOR()": "25109e8b", + "addCoreTeam(address)": "2e6b6849", + "isCoreTeam(address)": "608d3d3d", + "renounceCoreTeam()": "d43acc79", + "trasferToMiner(address)": "2296f4c7" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "317000", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "CAT_0_VALUE()": "401", + "CAT_1_VALUE()": "335", + "CAT_2_VALUE()": "445", + "CAT_3_VALUE()": "357", + "CAT_4_VALUE()": "313", + "CAT_5_VALUE()": "423", + "TOKEN_FACTOR()": "269", + "addCoreTeam(address)": "infinite", + "isCoreTeam(address)": "infinite", + "renounceCoreTeam()": "infinite", + "trasferToMiner(address)": "infinite" + } + } +} \ No newline at end of file diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1-sol-output.json b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1-sol-output.json new file mode 100644 index 000000000..0f9d5373d --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1-sol-output.json @@ -0,0 +1,16419 @@ +{ + "contracts": { + "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/AlgoTokenV1.sol": { + "AlgoTokenV1": { + "abi": [ + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "INITIAL_SUPPLY", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "unpause", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isPauser", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "paused", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renouncePauser", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addPauser", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "pause", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "PauserAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "PauserRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + } + ], + "devdoc": { + "methods": { + "allowance(address,address)": { + "details": "Function to check the amount of tokens that an owner allowed to a spender.", + "params": { + "owner": "address The address which owns the funds.", + "spender": "address The address which will spend the funds." + }, + "return": "A uint256 specifying the amount of tokens still available for the spender." + }, + "balanceOf(address)": { + "details": "Gets the balance of the specified address.", + "params": { + "owner": "The address to query the balance of." + }, + "return": "An uint256 representing the amount owned by the passed address." + }, + "decimals()": { + "return": "the number of decimals of the token." + }, + "name()": { + "return": "the name of the token." + }, + "pause()": { + "details": "called by the owner to pause, triggers stopped state" + }, + "paused()": { + "return": "true if the contract is paused, false otherwise." + }, + "symbol()": { + "return": "the symbol of the token." + }, + "totalSupply()": { + "details": "Total number of tokens in existence" + }, + "unpause()": { + "details": "called by the owner to unpause, returns to normal state" + } + } + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "60806040523480156200001157600080fd5b50604080518082018252600581527f416c676f7300000000000000000000000000000000000000000000000000000060208083019182528351808501909452600484527f414c474f00000000000000000000000000000000000000000000000000000000908401528151919291601291620000909160039190620002c1565b508151620000a6906004906020850190620002c1565b506005805460ff191660ff9290921691909117905550620000d290503364010000000062000103810204565b6007805460ff19169055620000fd336b033b2e3c9fd0803ce800000064010000000062000155810204565b62000366565b6200011e60068264010000000062000b226200021482021704565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b600160a060020a03821615156200016b57600080fd5b60025462000188908264010000000062000ac46200026f82021704565b600255600160a060020a038216600090815260208190526040902054620001be908264010000000062000ac46200026f82021704565b600160a060020a0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600160a060020a03811615156200022a57600080fd5b6200023f828264010000000062000289810204565b156200024a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000828201838110156200028257600080fd5b9392505050565b6000600160a060020a0382161515620002a157600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200030457805160ff191683800117855562000334565b8280016001018555821562000334579182015b828111156200033457825182559160200191906001019062000317565b506200034292915062000346565b5090565b6200036391905b808211156200034257600081556001016200034d565b90565b610b9c80620003766000396000f3006080604052600436106100fb5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610100578063095ea7b31461018a57806318160ddd146101c257806323b872dd146101e95780632ff2e9dc14610213578063313ce5671461022857806339509351146102535780633f4ba83a1461027757806346fbf68e1461028e5780635c975abb146102af5780636ef8d66d146102c457806370a08231146102d957806382dc1ec4146102fa5780638456cb591461031b57806395d89b4114610330578063a457c2d714610345578063a9059cbb14610369578063dd62ed3e1461038d575b600080fd5b34801561010c57600080fd5b506101156103b4565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014f578181015183820152602001610137565b50505050905090810190601f16801561017c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561019657600080fd5b506101ae600160a060020a036004351660243561044a565b604080519115158252519081900360200190f35b3480156101ce57600080fd5b506101d761046e565b60408051918252519081900360200190f35b3480156101f557600080fd5b506101ae600160a060020a0360043581169060243516604435610474565b34801561021f57600080fd5b506101d761049a565b34801561023457600080fd5b5061023d6104aa565b6040805160ff9092168252519081900360200190f35b34801561025f57600080fd5b506101ae600160a060020a03600435166024356104b3565b34801561028357600080fd5b5061028c6104d0565b005b34801561029a57600080fd5b506101ae600160a060020a0360043516610534565b3480156102bb57600080fd5b506101ae61054d565b3480156102d057600080fd5b5061028c610556565b3480156102e557600080fd5b506101d7600160a060020a0360043516610561565b34801561030657600080fd5b5061028c600160a060020a036004351661057c565b34801561032757600080fd5b5061028c61059c565b34801561033c57600080fd5b50610115610602565b34801561035157600080fd5b506101ae600160a060020a0360043516602435610663565b34801561037557600080fd5b506101ae600160a060020a0360043516602435610680565b34801561039957600080fd5b506101d7600160a060020a036004358116906024351661069d565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104405780601f1061041557610100808354040283529160200191610440565b820191906000526020600020905b81548152906001019060200180831161042357829003601f168201915b5050505050905090565b60075460009060ff161561045d57600080fd5b61046783836106c8565b9392505050565b60025490565b60075460009060ff161561048757600080fd5b610492848484610746565b949350505050565b6b033b2e3c9fd0803ce800000081565b60055460ff1690565b60075460009060ff16156104c657600080fd5b61046783836107e3565b6104d933610534565b15156104e457600080fd5b60075460ff1615156104f557600080fd5b6007805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b600061054760068363ffffffff61089316565b92915050565b60075460ff1690565b61055f336108ca565b565b600160a060020a031660009081526020819052604090205490565b61058533610534565b151561059057600080fd5b61059981610912565b50565b6105a533610534565b15156105b057600080fd5b60075460ff16156105c057600080fd5b6007805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104405780601f1061041557610100808354040283529160200191610440565b60075460009060ff161561067657600080fd5b610467838361095a565b60075460009060ff161561069357600080fd5b61046783836109a5565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b6000600160a060020a03831615156106df57600080fd5b336000818152600160209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b600160a060020a038316600090815260016020908152604080832033845290915281205482111561077657600080fd5b600160a060020a03841660009081526001602090815260408083203384529091529020546107aa908363ffffffff6109bb16565b600160a060020a03851660009081526001602090815260408083203384529091529020556107d98484846109d2565b5060019392505050565b6000600160a060020a03831615156107fa57600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461082e908363ffffffff610ac416565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b6000600160a060020a03821615156108aa57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6108db60068263ffffffff610ad616565b604051600160a060020a038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b61092360068263ffffffff610b2216565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6000600160a060020a038316151561097157600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461082e908363ffffffff6109bb16565b60006109b23384846109d2565b50600192915050565b600080838311156109cb57600080fd5b5050900390565b600160a060020a0383166000908152602081905260409020548111156109f757600080fd5b600160a060020a0382161515610a0c57600080fd5b600160a060020a038316600090815260208190526040902054610a35908263ffffffff6109bb16565b600160a060020a038085166000908152602081905260408082209390935590841681522054610a6a908263ffffffff610ac416565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282018381101561046757600080fd5b600160a060020a0381161515610aeb57600080fd5b610af58282610893565b1515610b0057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a0381161515610b3757600080fd5b610b418282610893565b15610b4b57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191660011790555600a165627a7a7230582061a190b3074a6fa0ab1f995699a75a855141c91dd51eb835ef565d0c7739360d0029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x5 DUP2 MSTORE PUSH32 0x416C676F73000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE DUP4 MLOAD DUP1 DUP6 ADD SWAP1 SWAP5 MSTORE PUSH1 0x4 DUP5 MSTORE PUSH32 0x414C474F00000000000000000000000000000000000000000000000000000000 SWAP1 DUP5 ADD MSTORE DUP2 MLOAD SWAP2 SWAP3 SWAP2 PUSH1 0x12 SWAP2 PUSH3 0x90 SWAP2 PUSH1 0x3 SWAP2 SWAP1 PUSH3 0x2C1 JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0xA6 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x2C1 JUMP JUMPDEST POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0xD2 SWAP1 POP CALLER PUSH5 0x100000000 PUSH3 0x103 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH3 0xFD CALLER PUSH12 0x33B2E3C9FD0803CE8000000 PUSH5 0x100000000 PUSH3 0x155 DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x366 JUMP JUMPDEST PUSH3 0x11E PUSH1 0x6 DUP3 PUSH5 0x100000000 PUSH3 0xB22 PUSH3 0x214 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND SWAP1 PUSH32 0x6719D08C1888103BEA251A4ED56406BD0C3E69723C8A1686E017E7BBE159B6F8 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x16B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH3 0x188 SWAP1 DUP3 PUSH5 0x100000000 PUSH3 0xAC4 PUSH3 0x26F DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH3 0x1BE SWAP1 DUP3 PUSH5 0x100000000 PUSH3 0xAC4 PUSH3 0x26F DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH3 0x22A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x23F DUP3 DUP3 PUSH5 0x100000000 PUSH3 0x289 DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH3 0x24A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH3 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x304 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x334 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x334 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x334 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x317 JUMP JUMPDEST POP PUSH3 0x342 SWAP3 SWAP2 POP PUSH3 0x346 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0x363 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x342 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x34D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB9C DUP1 PUSH3 0x376 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xFB JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x6FDDE03 DUP2 EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1E9 JUMPI DUP1 PUSH4 0x2FF2E9DC EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x228 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x277 JUMPI DUP1 PUSH4 0x46FBF68E EQ PUSH2 0x28E JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x2AF JUMPI DUP1 PUSH4 0x6EF8D66D EQ PUSH2 0x2C4 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2D9 JUMPI DUP1 PUSH4 0x82DC1EC4 EQ PUSH2 0x2FA JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x31B JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x330 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x345 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x369 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x38D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x115 PUSH2 0x3B4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x14F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x137 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x17C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x44A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D7 PUSH2 0x46E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH1 0x44 CALLDATALOAD PUSH2 0x474 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D7 PUSH2 0x49A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x234 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23D PUSH2 0x4AA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x4B3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x4D0 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x534 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH2 0x54D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x556 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D7 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x561 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x306 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x57C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x59C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x115 PUSH2 0x602 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x351 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x663 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x375 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x680 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D7 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH2 0x69D JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x440 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x415 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x440 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x423 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x467 DUP4 DUP4 PUSH2 0x6C8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x487 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x492 DUP5 DUP5 DUP5 PUSH2 0x746 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH12 0x33B2E3C9FD0803CE8000000 DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x467 DUP4 DUP4 PUSH2 0x7E3 JUMP JUMPDEST PUSH2 0x4D9 CALLER PUSH2 0x534 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x4E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH2 0x4F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x547 PUSH1 0x6 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x893 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x55F CALLER PUSH2 0x8CA JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x585 CALLER PUSH2 0x534 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x590 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x599 DUP2 PUSH2 0x912 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x5A5 CALLER PUSH2 0x534 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x5B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x5C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x440 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x415 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x440 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x676 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x467 DUP4 DUP4 PUSH2 0x95A JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x693 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x467 DUP4 DUP4 PUSH2 0x9A5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH2 0x6DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP9 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP7 SWAP1 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x776 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x7AA SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x9BB AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE PUSH2 0x7D9 DUP5 DUP5 DUP5 PUSH2 0x9D2 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH2 0x7FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x82E SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xAC4 AND JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP10 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP1 MLOAD SWAP5 DUP6 MSTORE MLOAD SWAP2 SWAP4 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x8AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x8DB PUSH1 0x6 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xAD6 AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND SWAP1 PUSH32 0xCD265EBAF09DF2871CC7BD4133404A235BA12EFF2041BB89D9C714A2621C7C7E SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x923 PUSH1 0x6 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xB22 AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND SWAP1 PUSH32 0x6719D08C1888103BEA251A4ED56406BD0C3E69723C8A1686E017E7BBE159B6F8 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH2 0x971 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x82E SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x9BB AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9B2 CALLER DUP5 DUP5 PUSH2 0x9D2 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 GT ISZERO PUSH2 0x9CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x9F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xA0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xA35 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x9BB AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xA6A SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xAC4 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x467 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xAEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAF5 DUP3 DUP3 PUSH2 0x893 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xB00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xB37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB41 DUP3 DUP3 PUSH2 0x893 JUMP JUMPDEST ISZERO PUSH2 0xB4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 PUSH2 0xA190 0xb3 SMOD 0x4a PUSH16 0xA0AB1F995699A75A855141C91DD51EB8 CALLDATALOAD 0xef JUMP 0x5d 0xc PUSH24 0x39360D002900000000000000000000000000000000000000 ", + "sourceMap": "409:310:0:-;;;560:156;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;398:134:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;467:12;;398:134;;;639:2:0;;467:12:6;;:5;;398:134;467:12;:::i;:::-;-1:-1:-1;485:16:6;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;507:9:6;:20;;-1:-1:-1;;507:20:6;;;;;;;;;;;;-1:-1:-1;260:22:2;;-1:-1:-1;271:10:2;260;;;;:22;:::i;:::-;340:7:3;:15;;-1:-1:-1;;340:15:3;;;675:33:0;681:10;519:32;675:5;;;;:33;:::i;:::-;409:310;;629:108:2;681:20;:7;693;681:11;;;;;;:20;:::i;:::-;712;;-1:-1:-1;;;;;712:20:2;;;;;;;;629:108;:::o;5541:235:5:-;-1:-1:-1;;;;;5611:12:5;;;;5603:21;;;;;;5645:12;;:23;;5662:5;5645:16;;;;;;:23;:::i;:::-;5630:12;:38;-1:-1:-1;;;;;5695:18:5;;:9;:18;;;;;;;;;;;:29;;5718:5;5695:22;;;;;;:29;:::i;:::-;-1:-1:-1;;;;;5674:18:5;;:9;:18;;;;;;;;;;;:50;;;;5735:36;;;;;;;5674:18;;:9;;5735:36;;;;;;;;;;5541:235;;:::o;244:167:1:-;-1:-1:-1;;;;;316:21:1;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:1;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:1;402:4;379:27;;;244:167::o;1272:131:4:-;1330:7;1357:5;;;1376:6;;;;1368:15;;;;;;1397:1;1272:131;-1:-1:-1;;;1272:131:4:o;725:166:1:-;809:4;-1:-1:-1;;;;;831:21:1;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:1;:11;:20;;;;;;;;;;;;;;;725:166::o;409:310:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;409:310:0;;;-1:-1:-1;409:310:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "594400", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "INITIAL_SUPPLY()": "272", + "addPauser(address)": "infinite", + "allowance(address,address)": "1082", + "approve(address,uint256)": "22732", + "balanceOf(address)": "851", + "decimals()": "509", + "decreaseAllowance(address,uint256)": "infinite", + "increaseAllowance(address,uint256)": "infinite", + "isPauser(address)": "infinite", + "name()": "infinite", + "pause()": "infinite", + "paused()": "594", + "renouncePauser()": "infinite", + "symbol()": "infinite", + "totalSupply()": "428", + "transfer(address,uint256)": "infinite", + "transferFrom(address,address,uint256)": "infinite", + "unpause()": "infinite" + } + }, + "methodIdentifiers": { + "INITIAL_SUPPLY()": "2ff2e9dc", + "addPauser(address)": "82dc1ec4", + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decimals()": "313ce567", + "decreaseAllowance(address,uint256)": "a457c2d7", + "increaseAllowance(address,uint256)": "39509351", + "isPauser(address)": "46fbf68e", + "name()": "06fdde03", + "pause()": "8456cb59", + "paused()": "5c975abb", + "renouncePauser()": "6ef8d66d", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd", + "unpause()": "3f4ba83a" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"INITIAL_SUPPLY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPauser\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renouncePauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addPauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"allowance(address,address)\":{\"details\":\"Function to check the amount of tokens that an owner allowed to a spender.\",\"params\":{\"owner\":\"address The address which owns the funds.\",\"spender\":\"address The address which will spend the funds.\"},\"return\":\"A uint256 specifying the amount of tokens still available for the spender.\"},\"balanceOf(address)\":{\"details\":\"Gets the balance of the specified address.\",\"params\":{\"owner\":\"The address to query the balance of.\"},\"return\":\"An uint256 representing the amount owned by the passed address.\"},\"decimals()\":{\"return\":\"the number of decimals of the token.\"},\"name()\":{\"return\":\"the name of the token.\"},\"pause()\":{\"details\":\"called by the owner to pause, triggers stopped state\"},\"paused()\":{\"return\":\"true if the contract is paused, false otherwise.\"},\"symbol()\":{\"return\":\"the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Total number of tokens in existence\"},\"unpause()\":{\"details\":\"called by the owner to unpause, returns to normal state\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/AlgoTokenV1.sol\":\"AlgoTokenV1\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/AlgoTokenV1.sol\":{\"keccak256\":\"0xa3ca532ba89cd9078218c7a33002166565007a192a01ab562dda1b4f64cfde7a\",\"urls\":[\"bzzr://b6dfc4d2318bf62ca3e6e8c65884e5d9bb7bf98667168794f65b4d8090f3ea75\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/roles/PauserRole.sol\":{\"keccak256\":\"0x9c483b37c788ed1f3ce0c29934e5c41b9e84ff954380c04bffdf42c1e215a1a8\",\"urls\":[\"bzzr://1727e08315c67d0203510d5d50e645c80a569df7964715eddaec10bf90d70bab\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/lifecycle/Pausable.sol\":{\"keccak256\":\"0x9cb69bde8cc3efdd07a2c372e78b664e961f505b3e4195ee27f06b358ffef996\",\"urls\":[\"bzzr://13da310cd2989e27357c2912085af0f1925047070f48be175c6b7e2b0299084f\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xaa2cf35177f37a9af9c975a973c813c5520be56ccee3a39b6c9883d4781cd072\",\"urls\":[\"bzzr://2244d517ff73299ad9b6c9dcb7d0788e5e452d8b1624d3027c1fb152135de8f4\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol\":{\"keccak256\":\"0xafff01f07c0aca08e5db86a0f35bcf40cbd0a5da06aeeb9964b06c0bac507866\",\"urls\":[\"bzzr://40bb6c5e5b0c7b20f56eb7bd662e2dbd295f3b8f5f0cbb23cbe5114590110729\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol\":{\"keccak256\":\"0x34ae26a75fc5dd5d3d283d0d95a080212e81734a5cab7be187778e74224d57d1\",\"urls\":[\"bzzr://8ed5c93c550934720a33a387f8272b252b5aa8c5e0e4c6e21d5e92c662632bbb\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { + "Roles": { + "abi": [], + "devdoc": { + "methods": {}, + "title": "Roles" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a723058209944a978f76fff24cc87208ce7f37ff326fbfd8cd7d603831a39790f896d15bc0029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 SWAP10 DIFFICULTY 0xa9 PUSH25 0xF76FFF24CC87208CE7F37FF326FBFD8CD7D603831A39790F89 PUSH14 0x15BC002900000000000000000000 ", + "sourceMap": "109:784:1:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "15200", + "executionCost": "116", + "totalCost": "15316" + }, + "internal": { + "add(struct Roles.Role storage pointer,address)": "infinite", + "has(struct Roles.Role storage pointer,address)": "infinite", + "remove(struct Roles.Role storage pointer,address)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"Roles\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":\"Roles\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/roles/PauserRole.sol": { + "PauserRole": { + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isPauser", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renouncePauser", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addPauser", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "PauserAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "PauserRemoved", + "type": "event" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "addPauser(address)": "82dc1ec4", + "isPauser(address)": "46fbf68e", + "renouncePauser()": "6ef8d66d" + } + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/lifecycle/Pausable.sol": { + "Pausable": { + "abi": [ + { + "constant": false, + "inputs": [], + "name": "unpause", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isPauser", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "paused", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renouncePauser", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addPauser", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "pause", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "PauserAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "PauserRemoved", + "type": "event" + } + ], + "devdoc": { + "methods": { + "pause()": { + "details": "called by the owner to pause, triggers stopped state" + }, + "paused()": { + "return": "true if the contract is paused, false otherwise." + }, + "unpause()": { + "details": "called by the owner to unpause, returns to normal state" + } + }, + "title": "Pausable" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "addPauser(address)": "82dc1ec4", + "isPauser(address)": "46fbf68e", + "pause()": "8456cb59", + "paused()": "5c975abb", + "renouncePauser()": "6ef8d66d", + "unpause()": "3f4ba83a" + } + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { + "SafeMath": { + "abi": [], + "devdoc": { + "methods": {}, + "title": "SafeMath" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a7230582058bb1a821f73a50e8c797d9d6c3c6d4818e97d5b10d4a35f2486f49dbe5d83fb0029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 PC 0xbb BYTE DUP3 0x1f PUSH20 0xA50E8C797D9D6C3C6D4818E97D5B10D4A35F2486 DELEGATECALL SWAP14 0xbe 0x5d DUP4 CREATE2 STOP 0x29 ", + "sourceMap": "117:1531:4:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "15200", + "executionCost": "116", + "totalCost": "15316" + }, + "internal": { + "add(uint256,uint256)": "infinite", + "div(uint256,uint256)": "infinite", + "mod(uint256,uint256)": "infinite", + "mul(uint256,uint256)": "infinite", + "sub(uint256,uint256)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"SafeMath\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol": { + "ERC20": { + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + } + ], + "devdoc": { + "methods": { + "allowance(address,address)": { + "details": "Function to check the amount of tokens that an owner allowed to a spender.", + "params": { + "owner": "address The address which owns the funds.", + "spender": "address The address which will spend the funds." + }, + "return": "A uint256 specifying the amount of tokens still available for the spender." + }, + "approve(address,uint256)": { + "details": "Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729", + "params": { + "spender": "The address which will spend the funds.", + "value": "The amount of tokens to be spent." + } + }, + "balanceOf(address)": { + "details": "Gets the balance of the specified address.", + "params": { + "owner": "The address to query the balance of." + }, + "return": "An uint256 representing the amount owned by the passed address." + }, + "decreaseAllowance(address,uint256)": { + "details": "Decrease the amount of tokens that an owner allowed to a spender. approve should be called when allowed_[_spender] == 0. To decrement allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol", + "params": { + "spender": "The address which will spend the funds.", + "subtractedValue": "The amount of tokens to decrease the allowance by." + } + }, + "increaseAllowance(address,uint256)": { + "details": "Increase the amount of tokens that an owner allowed to a spender. approve should be called when allowed_[_spender] == 0. To increment allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol", + "params": { + "addedValue": "The amount of tokens to increase the allowance by.", + "spender": "The address which will spend the funds." + } + }, + "totalSupply()": { + "details": "Total number of tokens in existence" + }, + "transfer(address,uint256)": { + "details": "Transfer token for a specified address", + "params": { + "to": "The address to transfer to.", + "value": "The amount to be transferred." + } + }, + "transferFrom(address,address,uint256)": { + "details": "Transfer tokens from one address to another", + "params": { + "from": "address The address which you want to send tokens from", + "to": "address The address which you want to transfer to", + "value": "uint256 the amount of tokens to be transferred" + } + } + }, + "title": "Standard ERC20 token" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50610595806100206000396000f30060806040526004361061008d5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663095ea7b3811461009257806318160ddd146100ca57806323b872dd146100f1578063395093511461011b57806370a082311461013f578063a457c2d714610160578063a9059cbb14610184578063dd62ed3e146101a8575b600080fd5b34801561009e57600080fd5b506100b6600160a060020a03600435166024356101cf565b604080519115158252519081900360200190f35b3480156100d657600080fd5b506100df61024d565b60408051918252519081900360200190f35b3480156100fd57600080fd5b506100b6600160a060020a0360043581169060243516604435610253565b34801561012757600080fd5b506100b6600160a060020a03600435166024356102f0565b34801561014b57600080fd5b506100df600160a060020a03600435166103a0565b34801561016c57600080fd5b506100b6600160a060020a03600435166024356103bb565b34801561019057600080fd5b506100b6600160a060020a0360043516602435610406565b3480156101b457600080fd5b506100df600160a060020a036004358116906024351661041c565b6000600160a060020a03831615156101e657600080fd5b336000818152600160209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b60025490565b600160a060020a038316600090815260016020908152604080832033845290915281205482111561028357600080fd5b600160a060020a03841660009081526001602090815260408083203384529091529020546102b7908363ffffffff61044716565b600160a060020a03851660009081526001602090815260408083203384529091529020556102e684848461045e565b5060019392505050565b6000600160a060020a038316151561030757600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461033b908363ffffffff61055016565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a031660009081526020819052604090205490565b6000600160a060020a03831615156103d257600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461033b908363ffffffff61044716565b600061041333848461045e565b50600192915050565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b6000808383111561045757600080fd5b5050900390565b600160a060020a03831660009081526020819052604090205481111561048357600080fd5b600160a060020a038216151561049857600080fd5b600160a060020a0383166000908152602081905260409020546104c1908263ffffffff61044716565b600160a060020a0380851660009081526020819052604080822093909355908416815220546104f6908263ffffffff61055016565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282018381101561056257600080fd5b93925050505600a165627a7a72305820083071c6150a8cecebb9b0a032aec2e16a0aaadc7643557277a17d1e163e573d0029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x595 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x8D JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x95EA7B3 DUP2 EQ PUSH2 0x92 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xCA JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xF1 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x11B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x160 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x184 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1A8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB6 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x1CF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xDF PUSH2 0x24D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB6 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH1 0x44 CALLDATALOAD PUSH2 0x253 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x127 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB6 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x2F0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xDF PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x3A0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB6 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x3BB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB6 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x406 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xDF PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH2 0x41C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH2 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP9 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP7 SWAP1 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x2B7 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x447 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE PUSH2 0x2E6 DUP5 DUP5 DUP5 PUSH2 0x45E JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x33B SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x550 AND JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP10 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP1 MLOAD SWAP5 DUP6 MSTORE MLOAD SWAP2 SWAP4 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH2 0x3D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x33B SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x447 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x413 CALLER DUP5 DUP5 PUSH2 0x45E JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 GT ISZERO PUSH2 0x457 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x483 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x4C1 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x447 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x4F6 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x550 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x562 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 ADDMOD ADDRESS PUSH18 0xC6150A8CECEBB9B0A032AEC2E16A0AAADC76 NUMBER SSTORE PUSH19 0x77A17D1E163E573D0029000000000000000000 ", + "sourceMap": "369:6595:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;369:6595:5;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "285800", + "executionCost": "324", + "totalCost": "286124" + }, + "external": { + "allowance(address,address)": "862", + "approve(address,uint256)": "22436", + "balanceOf(address)": "697", + "decreaseAllowance(address,uint256)": "infinite", + "increaseAllowance(address,uint256)": "infinite", + "totalSupply()": "406", + "transfer(address,uint256)": "infinite", + "transferFrom(address,address,uint256)": "infinite" + }, + "internal": { + "_burn(address,uint256)": "infinite", + "_burnFrom(address,uint256)": "infinite", + "_mint(address,uint256)": "infinite", + "_transfer(address,address,uint256)": "infinite" + } + }, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decreaseAllowance(address,uint256)": "a457c2d7", + "increaseAllowance(address,uint256)": "39509351", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"allowance(address,address)\":{\"details\":\"Function to check the amount of tokens that an owner allowed to a spender.\",\"params\":{\"owner\":\"address The address which owns the funds.\",\"spender\":\"address The address which will spend the funds.\"},\"return\":\"A uint256 specifying the amount of tokens still available for the spender.\"},\"approve(address,uint256)\":{\"details\":\"Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\",\"params\":{\"spender\":\"The address which will spend the funds.\",\"value\":\"The amount of tokens to be spent.\"}},\"balanceOf(address)\":{\"details\":\"Gets the balance of the specified address.\",\"params\":{\"owner\":\"The address to query the balance of.\"},\"return\":\"An uint256 representing the amount owned by the passed address.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Decrease the amount of tokens that an owner allowed to a spender. approve should be called when allowed_[_spender] == 0. To decrement allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol\",\"params\":{\"spender\":\"The address which will spend the funds.\",\"subtractedValue\":\"The amount of tokens to decrease the allowance by.\"}},\"increaseAllowance(address,uint256)\":{\"details\":\"Increase the amount of tokens that an owner allowed to a spender. approve should be called when allowed_[_spender] == 0. To increment allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol\",\"params\":{\"addedValue\":\"The amount of tokens to increase the allowance by.\",\"spender\":\"The address which will spend the funds.\"}},\"totalSupply()\":{\"details\":\"Total number of tokens in existence\"},\"transfer(address,uint256)\":{\"details\":\"Transfer token for a specified address\",\"params\":{\"to\":\"The address to transfer to.\",\"value\":\"The amount to be transferred.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfer tokens from one address to another\",\"params\":{\"from\":\"address The address which you want to send tokens from\",\"to\":\"address The address which you want to transfer to\",\"value\":\"uint256 the amount of tokens to be transferred\"}}},\"title\":\"Standard ERC20 token\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xaa2cf35177f37a9af9c975a973c813c5520be56ccee3a39b6c9883d4781cd072\",\"urls\":[\"bzzr://2244d517ff73299ad9b6c9dcb7d0788e5e452d8b1624d3027c1fb152135de8f4\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol": { + "ERC20Detailed": { + "abi": [ + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "who", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "name": "name", + "type": "string" + }, + { + "name": "symbol", + "type": "string" + }, + { + "name": "decimals", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + } + ], + "devdoc": { + "methods": { + "decimals()": { + "return": "the number of decimals of the token." + }, + "name()": { + "return": "the name of the token." + }, + "symbol()": { + "return": "the symbol of the token." + } + }, + "title": "ERC20Detailed token" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decimals()": "313ce567", + "name()": "06fdde03", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol": { + "ERC20Pausable": { + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "unpause", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isPauser", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "paused", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renouncePauser", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addPauser", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "pause", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "PauserAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "PauserRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + } + ], + "devdoc": { + "methods": { + "allowance(address,address)": { + "details": "Function to check the amount of tokens that an owner allowed to a spender.", + "params": { + "owner": "address The address which owns the funds.", + "spender": "address The address which will spend the funds." + }, + "return": "A uint256 specifying the amount of tokens still available for the spender." + }, + "balanceOf(address)": { + "details": "Gets the balance of the specified address.", + "params": { + "owner": "The address to query the balance of." + }, + "return": "An uint256 representing the amount owned by the passed address." + }, + "pause()": { + "details": "called by the owner to pause, triggers stopped state" + }, + "paused()": { + "return": "true if the contract is paused, false otherwise." + }, + "totalSupply()": { + "details": "Total number of tokens in existence" + }, + "unpause()": { + "details": "called by the owner to unpause, returns to normal state" + } + }, + "title": "Pausable token" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "608060405261001633640100000000610025810204565b6004805460ff19169055610102565b61003d60038264010000000061090761007482021704565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b600160a060020a038116151561008957600080fd5b61009c82826401000000006100cb810204565b156100a657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156100e257600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610981806101116000396000f3006080604052600436106100cf5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663095ea7b381146100d457806318160ddd1461010c57806323b872dd14610133578063395093511461015d5780633f4ba83a1461018157806346fbf68e146101985780635c975abb146101b95780636ef8d66d146101ce57806370a08231146101e357806382dc1ec4146102045780638456cb5914610225578063a457c2d71461023a578063a9059cbb1461025e578063dd62ed3e14610282575b600080fd5b3480156100e057600080fd5b506100f8600160a060020a03600435166024356102a9565b604080519115158252519081900360200190f35b34801561011857600080fd5b506101216102cd565b60408051918252519081900360200190f35b34801561013f57600080fd5b506100f8600160a060020a03600435811690602435166044356102d3565b34801561016957600080fd5b506100f8600160a060020a03600435166024356102f9565b34801561018d57600080fd5b50610196610316565b005b3480156101a457600080fd5b506100f8600160a060020a036004351661037a565b3480156101c557600080fd5b506100f8610393565b3480156101da57600080fd5b5061019661039c565b3480156101ef57600080fd5b50610121600160a060020a03600435166103a7565b34801561021057600080fd5b50610196600160a060020a03600435166103c2565b34801561023157600080fd5b506101966103e2565b34801561024657600080fd5b506100f8600160a060020a0360043516602435610448565b34801561026a57600080fd5b506100f8600160a060020a0360043516602435610465565b34801561028e57600080fd5b50610121600160a060020a0360043581169060243516610482565b60045460009060ff16156102bc57600080fd5b6102c683836104ad565b9392505050565b60025490565b60045460009060ff16156102e657600080fd5b6102f184848461052b565b949350505050565b60045460009060ff161561030c57600080fd5b6102c683836105c8565b61031f3361037a565b151561032a57600080fd5b60045460ff16151561033b57600080fd5b6004805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b600061038d60038363ffffffff61067816565b92915050565b60045460ff1690565b6103a5336106af565b565b600160a060020a031660009081526020819052604090205490565b6103cb3361037a565b15156103d657600080fd5b6103df816106f7565b50565b6103eb3361037a565b15156103f657600080fd5b60045460ff161561040657600080fd5b6004805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b60045460009060ff161561045b57600080fd5b6102c6838361073f565b60045460009060ff161561047857600080fd5b6102c6838361078a565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b6000600160a060020a03831615156104c457600080fd5b336000818152600160209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b600160a060020a038316600090815260016020908152604080832033845290915281205482111561055b57600080fd5b600160a060020a038416600090815260016020908152604080832033845290915290205461058f908363ffffffff6107a016565b600160a060020a03851660009081526001602090815260408083203384529091529020556105be8484846107b7565b5060019392505050565b6000600160a060020a03831615156105df57600080fd5b336000908152600160209081526040808320600160a060020a0387168452909152902054610613908363ffffffff6108a916565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b6000600160a060020a038216151561068f57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106c060038263ffffffff6108bb16565b604051600160a060020a038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b61070860038263ffffffff61090716565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6000600160a060020a038316151561075657600080fd5b336000908152600160209081526040808320600160a060020a0387168452909152902054610613908363ffffffff6107a016565b60006107973384846107b7565b50600192915050565b600080838311156107b057600080fd5b5050900390565b600160a060020a0383166000908152602081905260409020548111156107dc57600080fd5b600160a060020a03821615156107f157600080fd5b600160a060020a03831660009081526020819052604090205461081a908263ffffffff6107a016565b600160a060020a03808516600090815260208190526040808220939093559084168152205461084f908263ffffffff6108a916565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828201838110156102c657600080fd5b600160a060020a03811615156108d057600080fd5b6108da8282610678565b15156108e557600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a038116151561091c57600080fd5b6109268282610678565b1561093057600080fd5b600160a060020a0316600090815260209190915260409020805460ff191660011790555600a165627a7a72305820ec68135419984dd2cdc693df9167b633b80c03b7d2dd774f775b3d32098439b90029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH2 0x16 CALLER PUSH5 0x100000000 PUSH2 0x25 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH2 0x102 JUMP JUMPDEST PUSH2 0x3D PUSH1 0x3 DUP3 PUSH5 0x100000000 PUSH2 0x907 PUSH2 0x74 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND SWAP1 PUSH32 0x6719D08C1888103BEA251A4ED56406BD0C3E69723C8A1686E017E7BBE159B6F8 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9C DUP3 DUP3 PUSH5 0x100000000 PUSH2 0xCB DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH2 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x981 DUP1 PUSH2 0x111 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x95EA7B3 DUP2 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x133 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0x46FBF68E EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x1B9 JUMPI DUP1 PUSH4 0x6EF8D66D EQ PUSH2 0x1CE JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1E3 JUMPI DUP1 PUSH4 0x82DC1EC4 EQ PUSH2 0x204 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x225 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x23A JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x25E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x282 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF8 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x2A9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x121 PUSH2 0x2CD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF8 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH1 0x44 CALLDATALOAD PUSH2 0x2D3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF8 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x2F9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x196 PUSH2 0x316 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF8 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x37A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF8 PUSH2 0x393 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x196 PUSH2 0x39C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x121 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x3A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x210 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x196 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x3C2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x231 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x196 PUSH2 0x3E2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x246 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF8 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x448 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF8 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x465 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x121 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH2 0x482 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x2BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C6 DUP4 DUP4 PUSH2 0x4AD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x2E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2F1 DUP5 DUP5 DUP5 PUSH2 0x52B JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x30C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C6 DUP4 DUP4 PUSH2 0x5C8 JUMP JUMPDEST PUSH2 0x31F CALLER PUSH2 0x37A JUMP JUMPDEST ISZERO ISZERO PUSH2 0x32A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH2 0x33B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38D PUSH1 0x3 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x678 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x3A5 CALLER PUSH2 0x6AF JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x3CB CALLER PUSH2 0x37A JUMP JUMPDEST ISZERO ISZERO PUSH2 0x3D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3DF DUP2 PUSH2 0x6F7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x3EB CALLER PUSH2 0x37A JUMP JUMPDEST ISZERO ISZERO PUSH2 0x3F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x45B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C6 DUP4 DUP4 PUSH2 0x73F JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C6 DUP4 DUP4 PUSH2 0x78A JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH2 0x4C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP9 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP7 SWAP1 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x58F SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x7A0 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE PUSH2 0x5BE DUP5 DUP5 DUP5 PUSH2 0x7B7 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH2 0x5DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x613 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x8A9 AND JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP10 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP1 MLOAD SWAP5 DUP6 MSTORE MLOAD SWAP2 SWAP4 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x68F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x6C0 PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x8BB AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND SWAP1 PUSH32 0xCD265EBAF09DF2871CC7BD4133404A235BA12EFF2041BB89D9C714A2621C7C7E SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x708 PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x907 AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND SWAP1 PUSH32 0x6719D08C1888103BEA251A4ED56406BD0C3E69723C8A1686E017E7BBE159B6F8 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH2 0x756 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x613 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x7A0 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x797 CALLER DUP5 DUP5 PUSH2 0x7B7 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 GT ISZERO PUSH2 0x7B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x7DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x7F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x81A SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x7A0 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x84F SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x8A9 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x2C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x8D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8DA DUP3 DUP3 PUSH2 0x678 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x8E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x91C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x926 DUP3 DUP3 PUSH2 0x678 JUMP JUMPDEST ISZERO PUSH2 0x930 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xec PUSH9 0x135419984DD2CDC693 0xdf SWAP2 PUSH8 0xB633B80C03B7D2DD PUSH24 0x4F775B3D32098439B9002900000000000000000000000000 ", + "sourceMap": "170:951:7:-;;;260:22:2;271:10;260;;;;:22;:::i;:::-;340:7:3;:15;;-1:-1:-1;;340:15:3;;;170:951:7;;629:108:2;681:20;:7;693;681:11;;;;;;:20;:::i;:::-;712;;-1:-1:-1;;;;;712:20:2;;;;;;;;629:108;:::o;244:167:1:-;-1:-1:-1;;;;;316:21:1;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:1;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:1;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:1;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:1;:11;:20;;;;;;;;;;;;;;;725:166::o;170:951:7:-;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "486600", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "addPauser(address)": "infinite", + "allowance(address,address)": "994", + "approve(address,uint256)": "22710", + "balanceOf(address)": "785", + "decreaseAllowance(address,uint256)": "infinite", + "increaseAllowance(address,uint256)": "infinite", + "isPauser(address)": "infinite", + "pause()": "infinite", + "paused()": "528", + "renouncePauser()": "infinite", + "totalSupply()": "406", + "transfer(address,uint256)": "infinite", + "transferFrom(address,address,uint256)": "infinite", + "unpause()": "infinite" + } + }, + "methodIdentifiers": { + "addPauser(address)": "82dc1ec4", + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decreaseAllowance(address,uint256)": "a457c2d7", + "increaseAllowance(address,uint256)": "39509351", + "isPauser(address)": "46fbf68e", + "pause()": "8456cb59", + "paused()": "5c975abb", + "renouncePauser()": "6ef8d66d", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd", + "unpause()": "3f4ba83a" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPauser\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renouncePauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addPauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"allowance(address,address)\":{\"details\":\"Function to check the amount of tokens that an owner allowed to a spender.\",\"params\":{\"owner\":\"address The address which owns the funds.\",\"spender\":\"address The address which will spend the funds.\"},\"return\":\"A uint256 specifying the amount of tokens still available for the spender.\"},\"balanceOf(address)\":{\"details\":\"Gets the balance of the specified address.\",\"params\":{\"owner\":\"The address to query the balance of.\"},\"return\":\"An uint256 representing the amount owned by the passed address.\"},\"pause()\":{\"details\":\"called by the owner to pause, triggers stopped state\"},\"paused()\":{\"return\":\"true if the contract is paused, false otherwise.\"},\"totalSupply()\":{\"details\":\"Total number of tokens in existence\"},\"unpause()\":{\"details\":\"called by the owner to unpause, returns to normal state\"}},\"title\":\"Pausable token\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol\":\"ERC20Pausable\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/roles/PauserRole.sol\":{\"keccak256\":\"0x9c483b37c788ed1f3ce0c29934e5c41b9e84ff954380c04bffdf42c1e215a1a8\",\"urls\":[\"bzzr://1727e08315c67d0203510d5d50e645c80a569df7964715eddaec10bf90d70bab\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/lifecycle/Pausable.sol\":{\"keccak256\":\"0x9cb69bde8cc3efdd07a2c372e78b664e961f505b3e4195ee27f06b358ffef996\",\"urls\":[\"bzzr://13da310cd2989e27357c2912085af0f1925047070f48be175c6b7e2b0299084f\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xaa2cf35177f37a9af9c975a973c813c5520be56ccee3a39b6c9883d4781cd072\",\"urls\":[\"bzzr://2244d517ff73299ad9b6c9dcb7d0788e5e452d8b1624d3027c1fb152135de8f4\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol\":{\"keccak256\":\"0x34ae26a75fc5dd5d3d283d0d95a080212e81734a5cab7be187778e74224d57d1\",\"urls\":[\"bzzr://8ed5c93c550934720a33a387f8272b252b5aa8c5e0e4c6e21d5e92c662632bbb\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol": { + "IERC20": { + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "who", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + } + ], + "devdoc": { + "methods": {}, + "title": "ERC20 interface" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + } + }, + "sources": { + "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/AlgoTokenV1.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/AlgoTokenV1.sol", + "exportedSymbols": { + "AlgoTokenV1": [ + 37 + ] + }, + "id": 38, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:23:0" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol", + "id": 2, + "nodeType": "ImportDirective", + "scope": 38, + "sourceUnit": 948, + "src": "27:188:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol", + "id": 3, + "nodeType": "ImportDirective", + "scope": 38, + "sourceUnit": 1050, + "src": "217:188:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4, + "name": "ERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 889, + "src": "433:5:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$889", + "typeString": "contract ERC20" + } + }, + "id": 5, + "nodeType": "InheritanceSpecifier", + "src": "433:5:0" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6, + "name": "ERC20Detailed", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 947, + "src": "440:13:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Detailed_$947", + "typeString": "contract ERC20Detailed" + } + }, + "id": 7, + "nodeType": "InheritanceSpecifier", + "src": "440:13:0" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 8, + "name": "ERC20Pausable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1049, + "src": "455:13:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Pausable_$1049", + "typeString": "contract ERC20Pausable" + } + }, + "id": 9, + "nodeType": "InheritanceSpecifier", + "src": "455:13:0" + } + ], + "contractDependencies": [ + 234, + 317, + 889, + 947, + 1049, + 1118 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 37, + "linearizedBaseContracts": [ + 37, + 1049, + 317, + 234, + 947, + 889, + 1118 + ], + "name": "AlgoTokenV1", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 19, + "name": "INITIAL_SUPPLY", + "nodeType": "VariableDeclaration", + "scope": 37, + "src": "478:73:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "478:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 18, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "31303030303030303030", + "id": 11, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "519:10:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000000_by_1", + "typeString": "int_const 1000000000" + }, + "value": "1000000000" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 16, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 12, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "533:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "3138", + "id": 14, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "547:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + } + ], + "id": 13, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "539:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint256" + }, + "id": 15, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "539:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "533:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 17, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "532:19:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "519:32:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "body": { + "id": 35, + "nodeType": "Block", + "src": "664:52:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 30, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "681:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 31, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "681:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 32, + "name": "INITIAL_SUPPLY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 19, + "src": "693:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 29, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 799, + "src": "675:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 33, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "675:33:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 34, + "nodeType": "ExpressionStatement", + "src": "675:33:0" + } + ] + }, + "documentation": null, + "id": 36, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 22, + "modifierName": { + "argumentTypes": null, + "id": 21, + "name": "ERC20Pausable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1049, + "src": "583:13:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Pausable_$1049_$", + "typeString": "type(contract ERC20Pausable)" + } + }, + "nodeType": "ModifierInvocation", + "src": "583:15:0" + }, + { + "arguments": [ + { + "argumentTypes": null, + "hexValue": "416c676f73", + "id": 24, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "622:7:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f431b25e990e179f4656b6db11d387ab1d3ba961e80647281b655f4c6f523207", + "typeString": "literal_string \"Algos\"" + }, + "value": "Algos" + }, + { + "argumentTypes": null, + "hexValue": "414c474f", + "id": 25, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "631:6:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fef8132823c3ac25abf2126d6030ba0dd95564834b498fa7005f7c43e8b10551", + "typeString": "literal_string \"ALGO\"" + }, + "value": "ALGO" + }, + { + "argumentTypes": null, + "hexValue": "3138", + "id": 26, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "639:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + } + ], + "id": 27, + "modifierName": { + "argumentTypes": null, + "id": 23, + "name": "ERC20Detailed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 947, + "src": "608:13:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Detailed_$947_$", + "typeString": "type(contract ERC20Detailed)" + } + }, + "nodeType": "ModifierInvocation", + "src": "608:34:0" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 20, + "nodeType": "ParameterList", + "parameters": [], + "src": "571:2:0" + }, + "payable": false, + "returnParameters": { + "id": 28, + "nodeType": "ParameterList", + "parameters": [], + "src": "664:0:0" + }, + "scope": 37, + "src": "560:156:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 38, + "src": "409:310:0" + } + ], + "src": "0:721:0" + }, + "id": 0 + }, + "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "exportedSymbols": { + "Roles": [ + 131 + ] + }, + "id": 132, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 39, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:1" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", + "fullyImplemented": true, + "id": 131, + "linearizedBaseContracts": [ + 131 + ], + "name": "Roles", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "Roles.Role", + "id": 44, + "members": [ + { + "constant": false, + "id": 43, + "name": "bearer", + "nodeType": "VariableDeclaration", + "scope": 44, + "src": "145:32:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 42, + "keyType": { + "id": 40, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "154:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "145:25:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 41, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "165:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Role", + "nodeType": "StructDefinition", + "scope": 131, + "src": "127:55:1", + "visibility": "public" + }, + { + "body": { + "id": 75, + "nodeType": "Block", + "src": "302:109:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 56, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 52, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "316:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 54, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "335:1:1", + "subdenomination": null, + "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": 53, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "327:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 55, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "327:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "316:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 51, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1136, + 1137 + ], + "referencedDeclaration": 1136, + "src": "308:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 57, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "308:30:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58, + "nodeType": "ExpressionStatement", + "src": "308:30:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 64, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "352:19:1", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 61, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "357:4:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$44_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 62, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "363:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$44_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 60, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "353:3:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$44_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 63, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "353:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 59, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1136, + 1137 + ], + "referencedDeclaration": 1136, + "src": "344:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 65, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "344:28:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 66, + "nodeType": "ExpressionStatement", + "src": "344:28:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 73, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 67, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "379:4:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$44_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 70, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 43, + "src": "379:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 71, + "indexExpression": { + "argumentTypes": null, + "id": 69, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "391:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "379:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 72, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "402:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "379:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 74, + "nodeType": "ExpressionStatement", + "src": "379:27:1" + } + ] + }, + "documentation": "@dev give an account access to this role", + "id": 76, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 49, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 46, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 76, + "src": "257:17:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$44_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 45, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 44, + "src": "257:4:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$44_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 48, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 76, + "src": "276:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 47, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "276:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "256:36:1" + }, + "payable": false, + "returnParameters": { + "id": 50, + "nodeType": "ParameterList", + "parameters": [], + "src": "302:0:1" + }, + "scope": 131, + "src": "244:167:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 106, + "nodeType": "Block", + "src": "538:109:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 88, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 84, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 80, + "src": "552:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 86, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "571:1:1", + "subdenomination": null, + "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": 85, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "563:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 87, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "563:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "552:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 83, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1136, + 1137 + ], + "referencedDeclaration": 1136, + "src": "544:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 89, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "544:30:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 90, + "nodeType": "ExpressionStatement", + "src": "544:30:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 93, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 78, + "src": "592:4:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$44_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 94, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 80, + "src": "598:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$44_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 92, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "588:3:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$44_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 95, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "588:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 91, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1136, + 1137 + ], + "referencedDeclaration": 1136, + "src": "580:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 96, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "580:27:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 97, + "nodeType": "ExpressionStatement", + "src": "580:27:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 98, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 78, + "src": "614:4:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$44_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 101, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 43, + "src": "614:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 102, + "indexExpression": { + "argumentTypes": null, + "id": 100, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 80, + "src": "626:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "614:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 103, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "637:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "614:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 105, + "nodeType": "ExpressionStatement", + "src": "614:28:1" + } + ] + }, + "documentation": "@dev remove an account's access to this role", + "id": 107, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "remove", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 81, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 78, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 107, + "src": "493:17:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$44_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 77, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 44, + "src": "493:4:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$44_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 80, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 107, + "src": "512:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 79, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "512:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "492:36:1" + }, + "payable": false, + "returnParameters": { + "id": 82, + "nodeType": "ParameterList", + "parameters": [], + "src": "538:0:1" + }, + "scope": 131, + "src": "477:170:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 129, + "nodeType": "Block", + "src": "817:74:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 117, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 111, + "src": "831:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 119, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "850:1:1", + "subdenomination": null, + "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": 118, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "842:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 120, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "842:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "831:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 116, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1136, + 1137 + ], + "referencedDeclaration": 1136, + "src": "823:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "823:30:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 123, + "nodeType": "ExpressionStatement", + "src": "823:30:1" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 124, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 109, + "src": "866:4:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$44_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 125, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 43, + "src": "866:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 127, + "indexExpression": { + "argumentTypes": null, + "id": 126, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 111, + "src": "878:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "866:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 115, + "id": 128, + "nodeType": "Return", + "src": "859:27:1" + } + ] + }, + "documentation": "@dev check if an account has this role\n@return bool", + "id": 130, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "has", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 112, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 109, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 130, + "src": "738:17:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$44_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 108, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 44, + "src": "738:4:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$44_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 111, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 130, + "src": "757:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 110, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "757:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "737:36:1" + }, + "payable": false, + "returnParameters": { + "id": 115, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 114, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 130, + "src": "809:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 113, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "809:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "808:6:1" + }, + "scope": 131, + "src": "725:166:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 132, + "src": "109:784:1" + } + ], + "src": "0:894:1" + }, + "id": 1 + }, + "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/roles/PauserRole.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/roles/PauserRole.sol", + "exportedSymbols": { + "PauserRole": [ + 234 + ] + }, + "id": 235, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 133, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:2" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "file": "../Roles.sol", + "id": 134, + "nodeType": "ImportDirective", + "scope": 235, + "sourceUnit": 132, + "src": "26:22:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 234, + "linearizedBaseContracts": [ + 234 + ], + "name": "PauserRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 137, + "libraryName": { + "contractScope": null, + "id": 135, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 131, + "src": "80:5:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$131", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "74:27:2", + "typeName": { + "contractScope": null, + "id": 136, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 44, + "src": "90:10:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$44_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 141, + "name": "PauserAdded", + "nodeType": "EventDefinition", + "parameters": { + "id": 140, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 139, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 141, + "src": "123:23:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 138, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "123:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "122:25:2" + }, + "src": "105:43:2" + }, + { + "anonymous": false, + "documentation": null, + "id": 145, + "name": "PauserRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 144, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 143, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 145, + "src": "171:23:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 142, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "171:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "170:25:2" + }, + "src": "151:45:2" + }, + { + "constant": false, + "id": 147, + "name": "pausers", + "nodeType": "VariableDeclaration", + "scope": 234, + "src": "200:26:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$44_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 146, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 44, + "src": "200:10:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$44_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 155, + "nodeType": "Block", + "src": "254:33:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 151, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "271:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "271:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 150, + "name": "_addPauser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 217, + "src": "260:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "260:22:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 154, + "nodeType": "ExpressionStatement", + "src": "260:22:2" + } + ] + }, + "documentation": null, + "id": 156, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 148, + "nodeType": "ParameterList", + "parameters": [], + "src": "242:2:2" + }, + "payable": false, + "returnParameters": { + "id": 149, + "nodeType": "ParameterList", + "parameters": [], + "src": "254:0:2" + }, + "scope": 234, + "src": "231:56:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 166, + "nodeType": "Block", + "src": "313:47:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 160, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "336:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "336:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 159, + "name": "isPauser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 180, + "src": "327:8:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "327:20:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 158, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1136, + 1137 + ], + "referencedDeclaration": 1136, + "src": "319:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "319:29:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 164, + "nodeType": "ExpressionStatement", + "src": "319:29:2" + }, + { + "id": 165, + "nodeType": "PlaceholderStatement", + "src": "354:1:2" + } + ] + }, + "documentation": null, + "id": 167, + "name": "onlyPauser", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 157, + "nodeType": "ParameterList", + "parameters": [], + "src": "310:2:2" + }, + "src": "291:69:2", + "visibility": "internal" + }, + { + "body": { + "id": 179, + "nodeType": "Block", + "src": "426:38:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 176, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "451:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 174, + "name": "pausers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 147, + "src": "439:7:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$44_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 175, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 130, + "src": "439:11:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$44_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$44_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "439:20:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 173, + "id": 178, + "nodeType": "Return", + "src": "432:27:2" + } + ] + }, + "documentation": null, + "id": 180, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isPauser", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 170, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 169, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "382:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 168, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "382:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "381:17:2" + }, + "payable": false, + "returnParameters": { + "id": 173, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 172, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "420:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 171, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "420:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "419:6:2" + }, + "scope": 234, + "src": "364:100:2", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 191, + "nodeType": "Block", + "src": "522:30:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 188, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 182, + "src": "539:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 187, + "name": "_addPauser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 217, + "src": "528:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "528:19:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 190, + "nodeType": "ExpressionStatement", + "src": "528:19:2" + } + ] + }, + "documentation": null, + "id": 192, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 185, + "modifierName": { + "argumentTypes": null, + "id": 184, + "name": "onlyPauser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "511:10:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "511:10:2" + } + ], + "name": "addPauser", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 183, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 182, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 192, + "src": "487:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 181, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "487:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "486:17:2" + }, + "payable": false, + "returnParameters": { + "id": 186, + "nodeType": "ParameterList", + "parameters": [], + "src": "522:0:2" + }, + "scope": 234, + "src": "468:84:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 200, + "nodeType": "Block", + "src": "589:36:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 196, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "609:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "609:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 195, + "name": "_removePauser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 233, + "src": "595:13:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "595:25:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 199, + "nodeType": "ExpressionStatement", + "src": "595:25:2" + } + ] + }, + "documentation": null, + "id": 201, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "renouncePauser", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 193, + "nodeType": "ParameterList", + "parameters": [], + "src": "579:2:2" + }, + "payable": false, + "returnParameters": { + "id": 194, + "nodeType": "ParameterList", + "parameters": [], + "src": "589:0:2" + }, + "scope": 234, + "src": "556:69:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 216, + "nodeType": "Block", + "src": "675:62:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 209, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 203, + "src": "693:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 206, + "name": "pausers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 147, + "src": "681:7:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$44_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 208, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 76, + "src": "681:11:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$44_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$44_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "681:20:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 211, + "nodeType": "ExpressionStatement", + "src": "681:20:2" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 213, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 203, + "src": "724:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 212, + "name": "PauserAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 141, + "src": "712:11:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "712:20:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 215, + "nodeType": "EmitStatement", + "src": "707:25:2" + } + ] + }, + "documentation": null, + "id": 217, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_addPauser", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 204, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 203, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 217, + "src": "649:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 202, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "649:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "648:17:2" + }, + "payable": false, + "returnParameters": { + "id": 205, + "nodeType": "ParameterList", + "parameters": [], + "src": "675:0:2" + }, + "scope": 234, + "src": "629:108:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 232, + "nodeType": "Block", + "src": "790:67:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 225, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 219, + "src": "811:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 222, + "name": "pausers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 147, + "src": "796:7:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$44_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 224, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 107, + "src": "796:14:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$44_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$44_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "796:23:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 227, + "nodeType": "ExpressionStatement", + "src": "796:23:2" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 229, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 219, + "src": "844:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 228, + "name": "PauserRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "830:13:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "830:22:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 231, + "nodeType": "EmitStatement", + "src": "825:27:2" + } + ] + }, + "documentation": null, + "id": 233, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_removePauser", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 220, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 219, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 233, + "src": "764:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 218, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "764:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "763:17:2" + }, + "payable": false, + "returnParameters": { + "id": 221, + "nodeType": "ParameterList", + "parameters": [], + "src": "790:0:2" + }, + "scope": 234, + "src": "741:116:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 235, + "src": "50:809:2" + } + ], + "src": "0:860:2" + }, + "id": 2 + }, + "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/lifecycle/Pausable.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/lifecycle/Pausable.sol", + "exportedSymbols": { + "Pausable": [ + 317 + ] + }, + "id": 318, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 236, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:3" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/roles/PauserRole.sol", + "file": "../access/roles/PauserRole.sol", + "id": 237, + "nodeType": "ImportDirective", + "scope": 318, + "sourceUnit": 235, + "src": "26:40:3", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 238, + "name": "PauserRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 234, + "src": "202:10:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PauserRole_$234", + "typeString": "contract PauserRole" + } + }, + "id": 239, + "nodeType": "InheritanceSpecifier", + "src": "202:10:3" + } + ], + "contractDependencies": [ + 234 + ], + "contractKind": "contract", + "documentation": "@title Pausable\n@dev Base contract which allows children to implement an emergency stop mechanism.", + "fullyImplemented": true, + "id": 317, + "linearizedBaseContracts": [ + 317, + 234 + ], + "name": "Pausable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": null, + "id": 243, + "name": "Paused", + "nodeType": "EventDefinition", + "parameters": { + "id": 242, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 241, + "indexed": false, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 243, + "src": "230:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 240, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "230:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "229:17:3" + }, + "src": "217:30:3" + }, + { + "anonymous": false, + "documentation": null, + "id": 247, + "name": "Unpaused", + "nodeType": "EventDefinition", + "parameters": { + "id": 246, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 245, + "indexed": false, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 247, + "src": "265:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 244, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "265:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "264:17:3" + }, + "src": "250:32:3" + }, + { + "constant": false, + "id": 249, + "name": "_paused", + "nodeType": "VariableDeclaration", + "scope": 317, + "src": "286:20:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 248, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "286:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 256, + "nodeType": "Block", + "src": "334:26:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 254, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 252, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 249, + "src": "340:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 253, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "350:5:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "340:15:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 255, + "nodeType": "ExpressionStatement", + "src": "340:15:3" + } + ] + }, + "documentation": null, + "id": 257, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 250, + "nodeType": "ParameterList", + "parameters": [], + "src": "322:2:3" + }, + "payable": false, + "returnParameters": { + "id": 251, + "nodeType": "ParameterList", + "parameters": [], + "src": "334:0:3" + }, + "scope": 317, + "src": "311:49:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 264, + "nodeType": "Block", + "src": "482:25:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 262, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 249, + "src": "495:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 261, + "id": 263, + "nodeType": "Return", + "src": "488:14:3" + } + ] + }, + "documentation": "@return true if the contract is paused, false otherwise.", + "id": 265, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "paused", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 258, + "nodeType": "ParameterList", + "parameters": [], + "src": "453:2:3" + }, + "payable": false, + "returnParameters": { + "id": 261, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 260, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 265, + "src": "476:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 259, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "476:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "475:6:3" + }, + "scope": 317, + "src": "438:69:3", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 273, + "nodeType": "Block", + "src": "633:35:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "647:8:3", + "subExpression": { + "argumentTypes": null, + "id": 268, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 249, + "src": "648:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 267, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1136, + 1137 + ], + "referencedDeclaration": 1136, + "src": "639:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "639:17:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 271, + "nodeType": "ExpressionStatement", + "src": "639:17:3" + }, + { + "id": 272, + "nodeType": "PlaceholderStatement", + "src": "662:1:3" + } + ] + }, + "documentation": "@dev Modifier to make a function callable only when the contract is not paused.", + "id": 274, + "name": "whenNotPaused", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 266, + "nodeType": "ParameterList", + "parameters": [], + "src": "630:2:3" + }, + "src": "608:60:3", + "visibility": "internal" + }, + { + "body": { + "id": 281, + "nodeType": "Block", + "src": "787:34:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 277, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 249, + "src": "801:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 276, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1136, + 1137 + ], + "referencedDeclaration": 1136, + "src": "793:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "793:16:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 279, + "nodeType": "ExpressionStatement", + "src": "793:16:3" + }, + { + "id": 280, + "nodeType": "PlaceholderStatement", + "src": "815:1:3" + } + ] + }, + "documentation": "@dev Modifier to make a function callable only when the contract is paused.", + "id": 282, + "name": "whenPaused", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 275, + "nodeType": "ParameterList", + "parameters": [], + "src": "784:2:3" + }, + "src": "765:56:3", + "visibility": "internal" + }, + { + "body": { + "id": 298, + "nodeType": "Block", + "src": "949:54:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 289, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 249, + "src": "955:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 290, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "965:4:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "955:14:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 292, + "nodeType": "ExpressionStatement", + "src": "955:14:3" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 294, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "987:3:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "987:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 293, + "name": "Paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 243, + "src": "980:6:3", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "980:18:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 297, + "nodeType": "EmitStatement", + "src": "975:23:3" + } + ] + }, + "documentation": "@dev called by the owner to pause, triggers stopped state", + "id": 299, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 285, + "modifierName": { + "argumentTypes": null, + "id": 284, + "name": "onlyPauser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "924:10:3", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "924:10:3" + }, + { + "arguments": null, + "id": 287, + "modifierName": { + "argumentTypes": null, + "id": 286, + "name": "whenNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "935:13:3", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "935:13:3" + } + ], + "name": "pause", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 283, + "nodeType": "ParameterList", + "parameters": [], + "src": "914:2:3" + }, + "payable": false, + "returnParameters": { + "id": 288, + "nodeType": "ParameterList", + "parameters": [], + "src": "949:0:3" + }, + "scope": 317, + "src": "900:103:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 315, + "nodeType": "Block", + "src": "1133:57:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 306, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 249, + "src": "1139:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 307, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1149:5:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "1139:15:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 309, + "nodeType": "ExpressionStatement", + "src": "1139:15:3" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 311, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "1174:3:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1174:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 310, + "name": "Unpaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 247, + "src": "1165:8:3", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1165:20:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 314, + "nodeType": "EmitStatement", + "src": "1160:25:3" + } + ] + }, + "documentation": "@dev called by the owner to unpause, returns to normal state", + "id": 316, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 302, + "modifierName": { + "argumentTypes": null, + "id": 301, + "name": "onlyPauser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "1111:10:3", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1111:10:3" + }, + { + "arguments": null, + "id": 304, + "modifierName": { + "argumentTypes": null, + "id": 303, + "name": "whenPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 282, + "src": "1122:10:3", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1122:10:3" + } + ], + "name": "unpause", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 300, + "nodeType": "ParameterList", + "parameters": [], + "src": "1101:2:3" + }, + "payable": false, + "returnParameters": { + "id": 305, + "nodeType": "ParameterList", + "parameters": [], + "src": "1133:0:3" + }, + "scope": 317, + "src": "1085:105:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 318, + "src": "181:1011:3" + } + ], + "src": "0:1193:3" + }, + "id": 3 + }, + "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", + "exportedSymbols": { + "SafeMath": [ + 445 + ] + }, + "id": 446, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 319, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:4" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", + "fullyImplemented": true, + "id": 445, + "linearizedBaseContracts": [ + 445 + ], + "name": "SafeMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 351, + "nodeType": "Block", + "src": "271:314:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 328, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 321, + "src": "486:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 329, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "491:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "486:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 334, + "nodeType": "IfStatement", + "src": "482:35:4", + "trueBody": { + "id": 333, + "nodeType": "Block", + "src": "494:23:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 331, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "509:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 327, + "id": 332, + "nodeType": "Return", + "src": "502:8:4" + } + ] + } + }, + { + "assignments": [ + 336 + ], + "declarations": [ + { + "constant": false, + "id": 336, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 352, + "src": "523:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 335, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "523:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 340, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 337, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 321, + "src": "535:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 338, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 323, + "src": "539:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "535:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "523:17:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 342, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 336, + "src": "554:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 343, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 321, + "src": "558:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "554:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 345, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 323, + "src": "563:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "554:10:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 341, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1136, + 1137 + ], + "referencedDeclaration": 1136, + "src": "546:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "546:19:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 348, + "nodeType": "ExpressionStatement", + "src": "546:19:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 349, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 336, + "src": "579:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 327, + "id": 350, + "nodeType": "Return", + "src": "572:8:4" + } + ] + }, + "documentation": "@dev Multiplies two numbers, reverts on overflow.", + "id": 352, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "mul", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 324, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 321, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 352, + "src": "217:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 320, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "217:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 323, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 352, + "src": "228:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 322, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "228:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "216:22:4" + }, + "payable": false, + "returnParameters": { + "id": 327, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 326, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 352, + "src": "262:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 325, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "262:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "261:9:4" + }, + "scope": 445, + "src": "204:381:4", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 375, + "nodeType": "Block", + "src": "762:203:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 362, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 356, + "src": "776:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 363, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "780:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "776:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 361, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1136, + 1137 + ], + "referencedDeclaration": 1136, + "src": "768:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "768:14:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 366, + "nodeType": "ExpressionStatement", + "src": "768:14:4" + }, + { + "assignments": [ + 368 + ], + "declarations": [ + { + "constant": false, + "id": 368, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 376, + "src": "846:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 367, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "846:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 372, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 369, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 354, + "src": "858:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 370, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 356, + "src": "862:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "858:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "846:17:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 373, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 368, + "src": "959:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 360, + "id": 374, + "nodeType": "Return", + "src": "952:8:4" + } + ] + }, + "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", + "id": 376, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 357, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 354, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 376, + "src": "708:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 353, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "708:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 356, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 376, + "src": "719:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 355, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "719:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "707:22:4" + }, + "payable": false, + "returnParameters": { + "id": 360, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 359, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 376, + "src": "753:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 358, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "753:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "752:9:4" + }, + "scope": 445, + "src": "695:270:4", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 399, + "nodeType": "Block", + "src": "1145:64:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 386, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 380, + "src": "1159:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 387, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 378, + "src": "1164:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1159:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 385, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1136, + 1137 + ], + "referencedDeclaration": 1136, + "src": "1151:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1151:15:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 390, + "nodeType": "ExpressionStatement", + "src": "1151:15:4" + }, + { + "assignments": [ + 392 + ], + "declarations": [ + { + "constant": false, + "id": 392, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 400, + "src": "1172:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 391, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1172:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 396, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 393, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 378, + "src": "1184:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 394, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 380, + "src": "1188:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1184:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1172:17:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 397, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 392, + "src": "1203:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 384, + "id": 398, + "nodeType": "Return", + "src": "1196:8:4" + } + ] + }, + "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", + "id": 400, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 381, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 378, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 400, + "src": "1091:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 377, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1091:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 380, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 400, + "src": "1102:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 379, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1102:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1090:22:4" + }, + "payable": false, + "returnParameters": { + "id": 384, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 383, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 400, + "src": "1136:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 382, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1136:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1135:9:4" + }, + "scope": 445, + "src": "1078:131:4", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 423, + "nodeType": "Block", + "src": "1339:64:4", + "statements": [ + { + "assignments": [ + 410 + ], + "declarations": [ + { + "constant": false, + "id": 410, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 424, + "src": "1345:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 409, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1345:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 414, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 411, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 402, + "src": "1357:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 412, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 404, + "src": "1361:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1357:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1345:17:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 416, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 410, + "src": "1376:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 417, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 402, + "src": "1381:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1376:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 415, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1136, + 1137 + ], + "referencedDeclaration": 1136, + "src": "1368:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 419, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1368:15:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 420, + "nodeType": "ExpressionStatement", + "src": "1368:15:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 421, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 410, + "src": "1397:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 408, + "id": 422, + "nodeType": "Return", + "src": "1390:8:4" + } + ] + }, + "documentation": "@dev Adds two numbers, reverts on overflow.", + "id": 424, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 405, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 402, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 424, + "src": "1285:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 401, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1285:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 404, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 424, + "src": "1296:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 403, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1296:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1284:22:4" + }, + "payable": false, + "returnParameters": { + "id": 408, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 407, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 424, + "src": "1330:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 406, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1330:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1329:9:4" + }, + "scope": 445, + "src": "1272:131:4", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 443, + "nodeType": "Block", + "src": "1602:44:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 434, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 428, + "src": "1616:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 435, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1621:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1616:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 433, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1136, + 1137 + ], + "referencedDeclaration": 1136, + "src": "1608:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1608:15:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 438, + "nodeType": "ExpressionStatement", + "src": "1608:15:4" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 439, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 426, + "src": "1636:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "id": 440, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 428, + "src": "1640:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1636:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 432, + "id": 442, + "nodeType": "Return", + "src": "1629:12:4" + } + ] + }, + "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", + "id": 444, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "mod", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 429, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 426, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 444, + "src": "1548:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 425, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1548:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 428, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 444, + "src": "1559:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 427, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1559:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1547:22:4" + }, + "payable": false, + "returnParameters": { + "id": 432, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 431, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 444, + "src": "1593:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 430, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1593:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1592:9:4" + }, + "scope": 445, + "src": "1535:111:4", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 446, + "src": "117:1531:4" + } + ], + "src": "0:1649:4" + }, + "id": 4 + }, + "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", + "exportedSymbols": { + "ERC20": [ + 889 + ] + }, + "id": 890, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 447, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:5" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 448, + "nodeType": "ImportDirective", + "scope": 890, + "sourceUnit": 1119, + "src": "26:22:5", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 449, + "nodeType": "ImportDirective", + "scope": 890, + "sourceUnit": 446, + "src": "49:33:5", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 450, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1118, + "src": "387:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1118", + "typeString": "contract IERC20" + } + }, + "id": 451, + "nodeType": "InheritanceSpecifier", + "src": "387:6:5" + } + ], + "contractDependencies": [ + 1118 + ], + "contractKind": "contract", + "documentation": "@title Standard ERC20 token\n * @dev Implementation of the basic standard token.\nhttps://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md\nOriginally based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol", + "fullyImplemented": true, + "id": 889, + "linearizedBaseContracts": [ + 889, + 1118 + ], + "name": "ERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 454, + "libraryName": { + "contractScope": null, + "id": 452, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 445, + "src": "404:8:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$445", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "398:27:5", + "typeName": { + "id": 453, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "417:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 458, + "name": "_balances", + "nodeType": "VariableDeclaration", + "scope": 889, + "src": "429:46:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 457, + "keyType": { + "id": 455, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "438:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "429:28:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 456, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "449:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 464, + "name": "_allowed", + "nodeType": "VariableDeclaration", + "scope": 889, + "src": "480:66:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 463, + "keyType": { + "id": 459, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "489:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "480:49:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 462, + "keyType": { + "id": 460, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "509:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "500:28:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 461, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "520:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 466, + "name": "_totalSupply", + "nodeType": "VariableDeclaration", + "scope": 889, + "src": "551:28:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 465, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "551:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 473, + "nodeType": "Block", + "src": "693:30:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 471, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 466, + "src": "706:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 470, + "id": 472, + "nodeType": "Return", + "src": "699:19:5" + } + ] + }, + "documentation": "@dev Total number of tokens in existence", + "id": 474, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 467, + "nodeType": "ParameterList", + "parameters": [], + "src": "660:2:5" + }, + "payable": false, + "returnParameters": { + "id": 470, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 469, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 474, + "src": "684:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 468, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "684:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "683:9:5" + }, + "scope": 889, + "src": "640:83:5", + "stateMutability": "view", + "superFunction": 1056, + "visibility": "public" + }, + { + "body": { + "id": 485, + "nodeType": "Block", + "src": "984:34:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 481, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "997:9:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 483, + "indexExpression": { + "argumentTypes": null, + "id": 482, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 476, + "src": "1007:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "997:16:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 480, + "id": 484, + "nodeType": "Return", + "src": "990:23:5" + } + ] + }, + "documentation": "@dev Gets the balance of the specified address.\n@param owner The address to query the balance of.\n@return An uint256 representing the amount owned by the passed address.", + "id": 486, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 477, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 476, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 486, + "src": "939:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 475, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "939:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "938:15:5" + }, + "payable": false, + "returnParameters": { + "id": 480, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 479, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 486, + "src": "975:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 478, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "975:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "974:9:5" + }, + "scope": 889, + "src": "920:98:5", + "stateMutability": "view", + "superFunction": 1063, + "visibility": "public" + }, + { + "body": { + "id": 501, + "nodeType": "Block", + "src": "1443:42:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 495, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "1456:8:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 497, + "indexExpression": { + "argumentTypes": null, + "id": 496, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 488, + "src": "1465:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1456:15:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 499, + "indexExpression": { + "argumentTypes": null, + "id": 498, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 490, + "src": "1472:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1456:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 494, + "id": 500, + "nodeType": "Return", + "src": "1449:31:5" + } + ] + }, + "documentation": "@dev Function to check the amount of tokens that an owner allowed to a spender.\n@param owner address The address which owns the funds.\n@param spender address The address which will spend the funds.\n@return A uint256 specifying the amount of tokens still available for the spender.", + "id": 502, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 491, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 488, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 502, + "src": "1359:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 487, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1359:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 490, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 502, + "src": "1378:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 489, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1378:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1353:45:5" + }, + "payable": false, + "returnParameters": { + "id": 494, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 493, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 502, + "src": "1432:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 492, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1432:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1431:9:5" + }, + "scope": 889, + "src": "1335:150:5", + "stateMutability": "view", + "superFunction": 1072, + "visibility": "public" + }, + { + "body": { + "id": 520, + "nodeType": "Block", + "src": "1704:60:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 512, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "1720:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1720:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 514, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 504, + "src": "1732:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 515, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 506, + "src": "1736:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 511, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 759, + "src": "1710:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 516, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1710:32:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 517, + "nodeType": "ExpressionStatement", + "src": "1710:32:5" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 518, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1755:4:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 510, + "id": 519, + "nodeType": "Return", + "src": "1748:11:5" + } + ] + }, + "documentation": "@dev Transfer token for a specified address\n@param to The address to transfer to.\n@param value The amount to be transferred.", + "id": 521, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 507, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 504, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 521, + "src": "1655:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 503, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1655:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 506, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 521, + "src": "1667:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 505, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1667:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1654:27:5" + }, + "payable": false, + "returnParameters": { + "id": 510, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 509, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 521, + "src": "1698:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 508, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1698:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1697:6:5" + }, + "scope": 889, + "src": "1637:127:5", + "stateMutability": "nonpayable", + "superFunction": 1081, + "visibility": "public" + }, + { + "body": { + "id": 556, + "nodeType": "Block", + "src": "2451:149:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 531, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 523, + "src": "2465:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 533, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2484:1:5", + "subdenomination": null, + "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": 532, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2476:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 534, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2476:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2465:21:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 530, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1136, + 1137 + ], + "referencedDeclaration": 1136, + "src": "2457:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2457:30:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 537, + "nodeType": "ExpressionStatement", + "src": "2457:30:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 538, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "2494:8:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 542, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 539, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "2503:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 540, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2503:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2494:20:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 543, + "indexExpression": { + "argumentTypes": null, + "id": 541, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 523, + "src": "2515:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2494:29:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 544, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 525, + "src": "2526:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2494:37:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 546, + "nodeType": "ExpressionStatement", + "src": "2494:37:5" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 548, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "2551:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2551:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 550, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 523, + "src": "2563:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 551, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 525, + "src": "2572:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 547, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1117, + "src": "2542:8:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2542:36:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 553, + "nodeType": "EmitStatement", + "src": "2537:41:5" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 554, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2591:4:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 529, + "id": 555, + "nodeType": "Return", + "src": "2584:11:5" + } + ] + }, + "documentation": "@dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.\nBeware that changing an allowance with this method brings the risk that someone may use both the old\nand the new allowance by unfortunate transaction ordering. One possible solution to mitigate this\nrace condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:\nhttps://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n@param spender The address which will spend the funds.\n@param value The amount of tokens to be spent.", + "id": 557, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 526, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 523, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 557, + "src": "2397:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 522, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2397:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 525, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 557, + "src": "2414:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 524, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2414:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2396:32:5" + }, + "payable": false, + "returnParameters": { + "id": 529, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 528, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 557, + "src": "2445:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 527, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2445:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2444:6:5" + }, + "scope": 889, + "src": "2380:220:5", + "stateMutability": "nonpayable", + "superFunction": 1090, + "visibility": "public" + }, + { + "body": { + "id": 604, + "nodeType": "Block", + "src": "2983:177:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 569, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "2997:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 570, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "3006:8:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 572, + "indexExpression": { + "argumentTypes": null, + "id": 571, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "3015:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3006:14:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 575, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 573, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "3021:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3021:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3006:26:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2997:35:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 568, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1136, + 1137 + ], + "referencedDeclaration": 1136, + "src": "2989:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2989:44:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 578, + "nodeType": "ExpressionStatement", + "src": "2989:44:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 594, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 579, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "3040:8:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 583, + "indexExpression": { + "argumentTypes": null, + "id": 580, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "3049:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3040:14:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 584, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 581, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "3055:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3055:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3040:26:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 592, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "3100:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 585, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "3069:8:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 587, + "indexExpression": { + "argumentTypes": null, + "id": 586, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "3078:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3069:14:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 590, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 588, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "3084:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3084:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3069:26:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 591, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 400, + "src": "3069:30:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 593, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3069:37:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3040:66:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 595, + "nodeType": "ExpressionStatement", + "src": "3040:66:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 597, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "3122:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 598, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 561, + "src": "3128:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 599, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "3132:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 596, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 759, + "src": "3112:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3112:26:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 601, + "nodeType": "ExpressionStatement", + "src": "3112:26:5" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 602, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3151:4:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 567, + "id": 603, + "nodeType": "Return", + "src": "3144:11:5" + } + ] + }, + "documentation": "@dev Transfer tokens from one address to another\n@param from address The address which you want to send tokens from\n@param to address The address which you want to transfer to\n@param value uint256 the amount of tokens to be transferred", + "id": 605, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 564, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 559, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 605, + "src": "2899:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 558, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2899:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 561, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 605, + "src": "2917:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 560, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2917:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 563, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 605, + "src": "2933:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 562, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2933:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2893:57:5" + }, + "payable": false, + "returnParameters": { + "id": 567, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 566, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 605, + "src": "2975:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 565, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2975:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2974:6:5" + }, + "scope": 889, + "src": "2872:288:5", + "stateMutability": "nonpayable", + "superFunction": 1101, + "visibility": "public" + }, + { + "body": { + "id": 654, + "nodeType": "Block", + "src": "3719:222:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 615, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 607, + "src": "3733:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 617, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3752:1:5", + "subdenomination": null, + "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": 616, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3744:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 618, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3744:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3733:21:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 614, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1136, + 1137 + ], + "referencedDeclaration": 1136, + "src": "3725:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3725:30:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 621, + "nodeType": "ExpressionStatement", + "src": "3725:30:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 622, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "3762:8:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 626, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 623, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "3771:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3771:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3762:20:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 627, + "indexExpression": { + "argumentTypes": null, + "id": 625, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 607, + "src": "3783:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3762:29:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 635, + "name": "addedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 609, + "src": "3836:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 628, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "3802:8:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 631, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 629, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "3811:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3811:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3802:20:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 633, + "indexExpression": { + "argumentTypes": null, + "id": 632, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 607, + "src": "3823:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3802:29:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 424, + "src": "3802:33:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3802:45:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 637, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3794:54:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3762:86:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 639, + "nodeType": "ExpressionStatement", + "src": "3762:86:5" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 641, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "3868:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3868:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 643, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 607, + "src": "3880:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 644, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "3889:8:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 647, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 645, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "3898:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3898:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3889:20:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 649, + "indexExpression": { + "argumentTypes": null, + "id": 648, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 607, + "src": "3910:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3889:29:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 640, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1117, + "src": "3859:8:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 650, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3859:60:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 651, + "nodeType": "EmitStatement", + "src": "3854:65:5" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 652, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3932:4:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 613, + "id": 653, + "nodeType": "Return", + "src": "3925:11:5" + } + ] + }, + "documentation": "@dev Increase the amount of tokens that an owner allowed to a spender.\napprove should be called when allowed_[_spender] == 0. To increment\nallowed value is better to use this function to avoid 2 calls (and wait until\nthe first transaction is mined)\nFrom MonolithDAO Token.sol\n@param spender The address which will spend the funds.\n@param addedValue The amount of tokens to increase the allowance by.", + "id": 655, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "increaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 610, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 607, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 655, + "src": "3643:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 606, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3643:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 609, + "name": "addedValue", + "nodeType": "VariableDeclaration", + "scope": 655, + "src": "3664:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 608, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3664:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3637:49:5" + }, + "payable": false, + "returnParameters": { + "id": 613, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 612, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 655, + "src": "3711:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 611, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3711:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3710:6:5" + }, + "scope": 889, + "src": "3611:330:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 704, + "nodeType": "Block", + "src": "4510:227:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 665, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 657, + "src": "4524:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 667, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4543:1:5", + "subdenomination": null, + "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": 666, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4535:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 668, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4535:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4524:21:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 664, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1136, + 1137 + ], + "referencedDeclaration": 1136, + "src": "4516:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4516:30:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 671, + "nodeType": "ExpressionStatement", + "src": "4516:30:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 672, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "4553:8:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 676, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 673, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "4562:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4562:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4553:20:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 677, + "indexExpression": { + "argumentTypes": null, + "id": 675, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 657, + "src": "4574:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4553:29:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 685, + "name": "subtractedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 659, + "src": "4627:15:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 678, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "4593:8:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 681, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 679, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "4602:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4602:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4593:20:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 683, + "indexExpression": { + "argumentTypes": null, + "id": 682, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 657, + "src": "4614:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4593:29:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 684, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 400, + "src": "4593:33:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 686, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4593:50:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 687, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4585:59:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4553:91:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 689, + "nodeType": "ExpressionStatement", + "src": "4553:91:5" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 691, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "4664:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4664:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 693, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 657, + "src": "4676:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 694, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "4685:8:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 697, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 695, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "4694:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 696, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4694:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4685:20:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 699, + "indexExpression": { + "argumentTypes": null, + "id": 698, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 657, + "src": "4706:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4685:29:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 690, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1117, + "src": "4655:8:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4655:60:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 701, + "nodeType": "EmitStatement", + "src": "4650:65:5" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 702, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4728:4:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 663, + "id": 703, + "nodeType": "Return", + "src": "4721:11:5" + } + ] + }, + "documentation": "@dev Decrease the amount of tokens that an owner allowed to a spender.\napprove should be called when allowed_[_spender] == 0. To decrement\nallowed value is better to use this function to avoid 2 calls (and wait until\nthe first transaction is mined)\nFrom MonolithDAO Token.sol\n@param spender The address which will spend the funds.\n@param subtractedValue The amount of tokens to decrease the allowance by.", + "id": 705, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "decreaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 660, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 657, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 705, + "src": "4429:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 656, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4429:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 659, + "name": "subtractedValue", + "nodeType": "VariableDeclaration", + "scope": 705, + "src": "4450:23:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 658, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4450:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4423:54:5" + }, + "payable": false, + "returnParameters": { + "id": 663, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 662, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 705, + "src": "4502:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 661, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4502:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4501:6:5" + }, + "scope": 889, + "src": "4397:340:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 758, + "nodeType": "Block", + "src": "5006:208:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 719, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 715, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 711, + "src": "5020:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 716, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "5029:9:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 718, + "indexExpression": { + "argumentTypes": null, + "id": 717, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 707, + "src": "5039:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5029:15:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5020:24:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 714, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1136, + 1137 + ], + "referencedDeclaration": 1136, + "src": "5012:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5012:33:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 721, + "nodeType": "ExpressionStatement", + "src": "5012:33:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 723, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 709, + "src": "5059:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 725, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5073:1:5", + "subdenomination": null, + "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": 724, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5065:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 726, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5065:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5059:16:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 722, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1136, + 1137 + ], + "referencedDeclaration": 1136, + "src": "5051:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5051:25:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 729, + "nodeType": "ExpressionStatement", + "src": "5051:25:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 730, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "5083:9:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 732, + "indexExpression": { + "argumentTypes": null, + "id": 731, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 707, + "src": "5093:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5083:15:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 737, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 711, + "src": "5121:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 733, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "5101:9:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 735, + "indexExpression": { + "argumentTypes": null, + "id": 734, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 707, + "src": "5111:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5101:15:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 736, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 400, + "src": "5101:19:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 738, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5101:26:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5083:44:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 740, + "nodeType": "ExpressionStatement", + "src": "5083:44:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 741, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "5133:9:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 743, + "indexExpression": { + "argumentTypes": null, + "id": 742, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 709, + "src": "5143:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5133:13:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 748, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 711, + "src": "5167:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 744, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "5149:9:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 746, + "indexExpression": { + "argumentTypes": null, + "id": 745, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 709, + "src": "5159:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5149:13:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 424, + "src": "5149:17:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5149:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5133:40:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 751, + "nodeType": "ExpressionStatement", + "src": "5133:40:5" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 753, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 707, + "src": "5193:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 754, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 709, + "src": "5199:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 755, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 711, + "src": "5203:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 752, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1109, + "src": "5184:8:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5184:25:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 757, + "nodeType": "EmitStatement", + "src": "5179:30:5" + } + ] + }, + "documentation": "@dev Transfer token for a specified addresses\n@param from The address to transfer from.\n@param to The address to transfer to.\n@param value The amount to be transferred.", + "id": 759, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 712, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 707, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 759, + "src": "4956:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 706, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4956:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 709, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 759, + "src": "4970:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 708, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4970:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 711, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 759, + "src": "4982:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 710, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4982:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4955:41:5" + }, + "payable": false, + "returnParameters": { + "id": 713, + "nodeType": "ParameterList", + "parameters": [], + "src": "5006:0:5" + }, + "scope": 889, + "src": "4937:277:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 798, + "nodeType": "Block", + "src": "5597:179:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 767, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 761, + "src": "5611:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 768, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5622:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5611:12:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 766, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1136, + 1137 + ], + "referencedDeclaration": 1136, + "src": "5603:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5603:21:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 771, + "nodeType": "ExpressionStatement", + "src": "5603:21:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 777, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 772, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 466, + "src": "5630:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 775, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 763, + "src": "5662:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 773, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 466, + "src": "5645:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 774, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 424, + "src": "5645:16:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5645:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5630:38:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 778, + "nodeType": "ExpressionStatement", + "src": "5630:38:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 779, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "5674:9:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 781, + "indexExpression": { + "argumentTypes": null, + "id": 780, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 761, + "src": "5684:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5674:18:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 786, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 763, + "src": "5718:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 782, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "5695:9:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 784, + "indexExpression": { + "argumentTypes": null, + "id": 783, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 761, + "src": "5705:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5695:18:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 424, + "src": "5695:22:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 787, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5695:29:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5674:50:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 789, + "nodeType": "ExpressionStatement", + "src": "5674:50:5" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 792, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5752:1:5", + "subdenomination": null, + "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": 791, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5744:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 793, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5744:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 794, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 761, + "src": "5756:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 795, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 763, + "src": "5765:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 790, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1109, + "src": "5735:8:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5735:36:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 797, + "nodeType": "EmitStatement", + "src": "5730:41:5" + } + ] + }, + "documentation": "@dev Internal function that mints an amount of the token and assigns it to\nan account. This encapsulates the modification of balances such that the\nproper events are emitted.\n@param account The account that will receive the created tokens.\n@param value The amount that will be created.", + "id": 799, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_mint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 764, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 761, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 799, + "src": "5556:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 760, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5556:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 763, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 799, + "src": "5573:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 762, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5573:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5555:32:5" + }, + "payable": false, + "returnParameters": { + "id": 765, + "nodeType": "ParameterList", + "parameters": [], + "src": "5597:0:5" + }, + "scope": 889, + "src": "5541:235:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 846, + "nodeType": "Block", + "src": "6044:222:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 807, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "6058:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 808, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6069:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6058:12:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 806, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1136, + 1137 + ], + "referencedDeclaration": 1136, + "src": "6050:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 810, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6050:21:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 811, + "nodeType": "ExpressionStatement", + "src": "6050:21:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 813, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "6085:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 814, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "6094:9:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 816, + "indexExpression": { + "argumentTypes": null, + "id": 815, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "6104:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6094:18:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6085:27:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 812, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1136, + 1137 + ], + "referencedDeclaration": 1136, + "src": "6077:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6077:36:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 819, + "nodeType": "ExpressionStatement", + "src": "6077:36:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 825, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 820, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 466, + "src": "6120:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 823, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "6152:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 821, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 466, + "src": "6135:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 400, + "src": "6135:16:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6135:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6120:38:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 826, + "nodeType": "ExpressionStatement", + "src": "6120:38:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 827, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "6164:9:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 829, + "indexExpression": { + "argumentTypes": null, + "id": 828, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "6174:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6164:18:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 834, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "6208:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 830, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "6185:9:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 832, + "indexExpression": { + "argumentTypes": null, + "id": 831, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "6195:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6185:18:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 400, + "src": "6185:22:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6185:29:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6164:50:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 837, + "nodeType": "ExpressionStatement", + "src": "6164:50:5" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 839, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "6234:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 841, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6251:1:5", + "subdenomination": null, + "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": 840, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6243:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 842, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6243:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 843, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "6255:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 838, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1109, + "src": "6225:8:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 844, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6225:36:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 845, + "nodeType": "EmitStatement", + "src": "6220:41:5" + } + ] + }, + "documentation": "@dev Internal function that burns an amount of the token of a given\naccount.\n@param account The account whose tokens will be burnt.\n@param value The amount that will be burnt.", + "id": 847, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_burn", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 804, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 801, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 847, + "src": "6003:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 800, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6003:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 803, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 847, + "src": "6020:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 802, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6020:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6002:32:5" + }, + "payable": false, + "returnParameters": { + "id": 805, + "nodeType": "ParameterList", + "parameters": [], + "src": "6044:0:5" + }, + "scope": 889, + "src": "5988:278:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 887, + "nodeType": "Block", + "src": "6632:330:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 855, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 851, + "src": "6646:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 856, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "6655:8:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 858, + "indexExpression": { + "argumentTypes": null, + "id": 857, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 849, + "src": "6664:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6655:17:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 861, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 859, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "6673:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6673:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6655:29:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6646:38:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 854, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1136, + 1137 + ], + "referencedDeclaration": 1136, + "src": "6638:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6638:47:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 864, + "nodeType": "ExpressionStatement", + "src": "6638:47:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 880, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 865, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "6851:8:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 869, + "indexExpression": { + "argumentTypes": null, + "id": 866, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 849, + "src": "6860:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6851:17:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 870, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 867, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "6869:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6869:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6851:29:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 878, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 851, + "src": "6924:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 871, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "6883:8:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 873, + "indexExpression": { + "argumentTypes": null, + "id": 872, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 849, + "src": "6892:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6883:17:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 876, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 874, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "6901:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6901:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6883:29:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 877, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 400, + "src": "6883:33:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6883:47:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6851:79:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 881, + "nodeType": "ExpressionStatement", + "src": "6851:79:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 883, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 849, + "src": "6942:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 884, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 851, + "src": "6951:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 882, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 847, + "src": "6936:5:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6936:21:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 886, + "nodeType": "ExpressionStatement", + "src": "6936:21:5" + } + ] + }, + "documentation": "@dev Internal function that burns an amount of the token of a given\naccount, deducting from the sender's allowance for said account. Uses the\ninternal burn function.\n@param account The account whose tokens will be burnt.\n@param value The amount that will be burnt.", + "id": 888, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_burnFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 852, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 849, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 888, + "src": "6591:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 848, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6591:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 851, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 888, + "src": "6608:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 850, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6608:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6590:32:5" + }, + "payable": false, + "returnParameters": { + "id": 853, + "nodeType": "ParameterList", + "parameters": [], + "src": "6632:0:5" + }, + "scope": 889, + "src": "6572:390:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 890, + "src": "369:6595:5" + } + ], + "src": "0:6965:5" + }, + "id": 5 + }, + "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol", + "exportedSymbols": { + "ERC20Detailed": [ + 947 + ] + }, + "id": 948, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 891, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:6" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 892, + "nodeType": "ImportDirective", + "scope": 948, + "sourceUnit": 1119, + "src": "26:22:6", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 893, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1118, + "src": "309:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1118", + "typeString": "contract IERC20" + } + }, + "id": 894, + "nodeType": "InheritanceSpecifier", + "src": "309:6:6" + } + ], + "contractDependencies": [ + 1118 + ], + "contractKind": "contract", + "documentation": "@title ERC20Detailed token\n@dev The decimals are only for visualization purposes.\nAll the operations are done using the smallest and indivisible token unit,\njust as on Ethereum all the operations are done in wei.", + "fullyImplemented": false, + "id": 947, + "linearizedBaseContracts": [ + 947, + 1118 + ], + "name": "ERC20Detailed", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 896, + "name": "_name", + "nodeType": "VariableDeclaration", + "scope": 947, + "src": "320:20:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 895, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "320:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 898, + "name": "_symbol", + "nodeType": "VariableDeclaration", + "scope": 947, + "src": "344:22:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 897, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "344:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 900, + "name": "_decimals", + "nodeType": "VariableDeclaration", + "scope": 947, + "src": "370:23:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 899, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "370:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 921, + "nodeType": "Block", + "src": "461:71:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 909, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 896, + "src": "467:5:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 910, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 902, + "src": "475:4:6", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "467:12:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 912, + "nodeType": "ExpressionStatement", + "src": "467:12:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 913, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 898, + "src": "485:7:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 914, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 904, + "src": "495:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "485:16:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 916, + "nodeType": "ExpressionStatement", + "src": "485:16:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 919, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 917, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 900, + "src": "507:9:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 918, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 906, + "src": "519:8:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "507:20:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 920, + "nodeType": "ExpressionStatement", + "src": "507:20:6" + } + ] + }, + "documentation": null, + "id": 922, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 907, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 902, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 922, + "src": "410:11:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 901, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "410:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 904, + "name": "symbol", + "nodeType": "VariableDeclaration", + "scope": 922, + "src": "423:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 903, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "423:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 906, + "name": "decimals", + "nodeType": "VariableDeclaration", + "scope": 922, + "src": "438:14:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 905, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "438:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "409:44:6" + }, + "payable": false, + "returnParameters": { + "id": 908, + "nodeType": "ParameterList", + "parameters": [], + "src": "461:0:6" + }, + "scope": 947, + "src": "398:134:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 929, + "nodeType": "Block", + "src": "628:23:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 927, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 896, + "src": "641:5:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 926, + "id": 928, + "nodeType": "Return", + "src": "634:12:6" + } + ] + }, + "documentation": "@return the name of the token.", + "id": 930, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "name", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 923, + "nodeType": "ParameterList", + "parameters": [], + "src": "597:2:6" + }, + "payable": false, + "returnParameters": { + "id": 926, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 925, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 930, + "src": "620:6:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 924, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "620:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "619:8:6" + }, + "scope": 947, + "src": "584:67:6", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 937, + "nodeType": "Block", + "src": "751:25:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 935, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 898, + "src": "764:7:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 934, + "id": 936, + "nodeType": "Return", + "src": "757:14:6" + } + ] + }, + "documentation": "@return the symbol of the token.", + "id": 938, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "symbol", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 931, + "nodeType": "ParameterList", + "parameters": [], + "src": "720:2:6" + }, + "payable": false, + "returnParameters": { + "id": 934, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 933, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 938, + "src": "743:6:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 932, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "743:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "742:8:6" + }, + "scope": 947, + "src": "705:71:6", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 945, + "nodeType": "Block", + "src": "889:27:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 943, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 900, + "src": "902:9:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 942, + "id": 944, + "nodeType": "Return", + "src": "895:16:6" + } + ] + }, + "documentation": "@return the number of decimals of the token.", + "id": 946, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "decimals", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 939, + "nodeType": "ParameterList", + "parameters": [], + "src": "859:2:6" + }, + "payable": false, + "returnParameters": { + "id": 942, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 941, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 946, + "src": "882:5:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 940, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "882:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "881:7:6" + }, + "scope": 947, + "src": "842:74:6", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 948, + "src": "283:635:6" + } + ], + "src": "0:919:6" + }, + "id": 6 + }, + "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol", + "exportedSymbols": { + "ERC20Pausable": [ + 1049 + ] + }, + "id": 1050, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 949, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:7" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", + "file": "./ERC20.sol", + "id": 950, + "nodeType": "ImportDirective", + "scope": 1050, + "sourceUnit": 890, + "src": "26:21:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/lifecycle/Pausable.sol", + "file": "../../lifecycle/Pausable.sol", + "id": 951, + "nodeType": "ImportDirective", + "scope": 1050, + "sourceUnit": 318, + "src": "48:38:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 952, + "name": "ERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 889, + "src": "196:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$889", + "typeString": "contract ERC20" + } + }, + "id": 953, + "nodeType": "InheritanceSpecifier", + "src": "196:5:7" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 954, + "name": "Pausable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 317, + "src": "203:8:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Pausable_$317", + "typeString": "contract Pausable" + } + }, + "id": 955, + "nodeType": "InheritanceSpecifier", + "src": "203:8:7" + } + ], + "contractDependencies": [ + 234, + 317, + 889, + 1118 + ], + "contractKind": "contract", + "documentation": "@title Pausable token\n@dev ERC20 modified with pausable transfers.*", + "fullyImplemented": true, + "id": 1049, + "linearizedBaseContracts": [ + 1049, + 317, + 234, + 889, + 1118 + ], + "name": "ERC20Pausable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 972, + "nodeType": "Block", + "src": "324:43:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 968, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 957, + "src": "352:2:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 969, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 959, + "src": "356:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 966, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1161, + "src": "337:5:7", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC20Pausable_$1049", + "typeString": "contract super ERC20Pausable" + } + }, + "id": 967, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 521, + "src": "337:14:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "337:25:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 965, + "id": 971, + "nodeType": "Return", + "src": "330:32:7" + } + ] + }, + "documentation": null, + "id": 973, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 962, + "modifierName": { + "argumentTypes": null, + "id": 961, + "name": "whenNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "289:13:7", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "289:13:7" + } + ], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 960, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 957, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 973, + "src": "240:10:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 956, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "240:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 959, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 973, + "src": "256:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 958, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "256:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "234:39:7" + }, + "payable": false, + "returnParameters": { + "id": 965, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 964, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 973, + "src": "316:4:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 963, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "316:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "315:6:7" + }, + "scope": 1049, + "src": "217:150:7", + "stateMutability": "nonpayable", + "superFunction": 521, + "visibility": "public" + }, + { + "body": { + "id": 993, + "nodeType": "Block", + "src": "500:53:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 988, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 975, + "src": "532:4:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 989, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 977, + "src": "538:2:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 990, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 979, + "src": "542:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 986, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1161, + "src": "513:5:7", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC20Pausable_$1049", + "typeString": "contract super ERC20Pausable" + } + }, + "id": 987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 605, + "src": "513:18:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) returns (bool)" + } + }, + "id": 991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "513:35:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 985, + "id": 992, + "nodeType": "Return", + "src": "506:42:7" + } + ] + }, + "documentation": null, + "id": 994, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 982, + "modifierName": { + "argumentTypes": null, + "id": 981, + "name": "whenNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "465:13:7", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "465:13:7" + } + ], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 980, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 975, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 994, + "src": "398:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 974, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "398:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 977, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 994, + "src": "416:10:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 976, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "416:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 979, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 994, + "src": "432:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 978, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "432:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "392:57:7" + }, + "payable": false, + "returnParameters": { + "id": 985, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 984, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 994, + "src": "492:4:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 983, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "492:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "491:6:7" + }, + "scope": 1049, + "src": "371:182:7", + "stateMutability": "nonpayable", + "superFunction": 605, + "visibility": "public" + }, + { + "body": { + "id": 1011, + "nodeType": "Block", + "src": "668:47:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1007, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 996, + "src": "695:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1008, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 998, + "src": "704:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1005, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1161, + "src": "681:5:7", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC20Pausable_$1049", + "typeString": "contract super ERC20Pausable" + } + }, + "id": 1006, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 557, + "src": "681:13:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 1009, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "681:29:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1004, + "id": 1010, + "nodeType": "Return", + "src": "674:36:7" + } + ] + }, + "documentation": null, + "id": 1012, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 1001, + "modifierName": { + "argumentTypes": null, + "id": 1000, + "name": "whenNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "633:13:7", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "633:13:7" + } + ], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 999, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 996, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1012, + "src": "579:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 995, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "579:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 998, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1012, + "src": "600:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 997, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "600:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "573:44:7" + }, + "payable": false, + "returnParameters": { + "id": 1004, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1003, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1012, + "src": "660:4:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1002, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "660:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "659:6:7" + }, + "scope": 1049, + "src": "557:158:7", + "stateMutability": "nonpayable", + "superFunction": 557, + "visibility": "public" + }, + { + "body": { + "id": 1029, + "nodeType": "Block", + "src": "850:62:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1025, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1014, + "src": "887:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1026, + "name": "addedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1016, + "src": "896:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1023, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1161, + "src": "863:5:7", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC20Pausable_$1049", + "typeString": "contract super ERC20Pausable" + } + }, + "id": 1024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "increaseAllowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 655, + "src": "863:23:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 1027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "863:44:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1022, + "id": 1028, + "nodeType": "Return", + "src": "856:51:7" + } + ] + }, + "documentation": null, + "id": 1030, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 1019, + "modifierName": { + "argumentTypes": null, + "id": 1018, + "name": "whenNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "807:13:7", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "807:13:7" + } + ], + "name": "increaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1017, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1014, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1030, + "src": "751:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1013, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "751:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1016, + "name": "addedValue", + "nodeType": "VariableDeclaration", + "scope": 1030, + "src": "772:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1015, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "772:4:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "745:46:7" + }, + "payable": false, + "returnParameters": { + "id": 1022, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1021, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1030, + "src": "834:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1020, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "834:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "833:14:7" + }, + "scope": 1049, + "src": "719:193:7", + "stateMutability": "nonpayable", + "superFunction": 655, + "visibility": "public" + }, + { + "body": { + "id": 1047, + "nodeType": "Block", + "src": "1052:67:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1043, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1032, + "src": "1089:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1044, + "name": "subtractedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1034, + "src": "1098:15:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1041, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1161, + "src": "1065:5:7", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC20Pausable_$1049", + "typeString": "contract super ERC20Pausable" + } + }, + "id": 1042, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "decreaseAllowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 705, + "src": "1065:23:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 1045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1065:49:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1040, + "id": 1046, + "nodeType": "Return", + "src": "1058:56:7" + } + ] + }, + "documentation": null, + "id": 1048, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 1037, + "modifierName": { + "argumentTypes": null, + "id": 1036, + "name": "whenNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "1009:13:7", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1009:13:7" + } + ], + "name": "decreaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1035, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1032, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1048, + "src": "948:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1031, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "948:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1034, + "name": "subtractedValue", + "nodeType": "VariableDeclaration", + "scope": 1048, + "src": "969:20:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1033, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "969:4:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "942:51:7" + }, + "payable": false, + "returnParameters": { + "id": 1040, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1039, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1048, + "src": "1036:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1038, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1036:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1035:14:7" + }, + "scope": 1049, + "src": "916:203:7", + "stateMutability": "nonpayable", + "superFunction": 705, + "visibility": "public" + } + ], + "scope": 1050, + "src": "170:951:7" + } + ], + "src": "0:1122:7" + }, + "id": 7 + }, + "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "exportedSymbols": { + "IERC20": [ + 1118 + ] + }, + "id": 1119, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1051, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:8" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", + "fullyImplemented": false, + "id": 1118, + "linearizedBaseContracts": [ + 1118 + ], + "name": "IERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 1056, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1052, + "nodeType": "ParameterList", + "parameters": [], + "src": "156:2:8" + }, + "payable": false, + "returnParameters": { + "id": 1055, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1054, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1056, + "src": "182:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1053, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "182:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "181:9:8" + }, + "scope": 1118, + "src": "136:55:8", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1063, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1059, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1058, + "name": "who", + "nodeType": "VariableDeclaration", + "scope": 1063, + "src": "214:11:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1057, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "214:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "213:13:8" + }, + "payable": false, + "returnParameters": { + "id": 1062, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1061, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1063, + "src": "250:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1060, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "250:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "249:9:8" + }, + "scope": 1118, + "src": "195:64:8", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1072, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1068, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1065, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1072, + "src": "282:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1064, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "282:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1067, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1072, + "src": "297:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1066, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "297:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "281:32:8" + }, + "payable": false, + "returnParameters": { + "id": 1071, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1070, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1072, + "src": "341:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1069, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "341:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "340:9:8" + }, + "scope": 1118, + "src": "263:87:8", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1081, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1077, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1074, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1081, + "src": "372:10:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1073, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "372:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1076, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1081, + "src": "384:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1075, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "384:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "371:27:8" + }, + "payable": false, + "returnParameters": { + "id": 1080, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1079, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1081, + "src": "417:4:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1078, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "417:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "416:6:8" + }, + "scope": 1118, + "src": "354:69:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1090, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1086, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1083, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1090, + "src": "444:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1082, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "444:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1085, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1090, + "src": "461:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1084, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "461:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "443:32:8" + }, + "payable": false, + "returnParameters": { + "id": 1089, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1088, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1090, + "src": "498:4:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1087, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "498:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "497:6:8" + }, + "scope": 1118, + "src": "427:77:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1101, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1097, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1092, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 1101, + "src": "530:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1091, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "530:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1094, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1101, + "src": "544:10:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1093, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "544:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1096, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1101, + "src": "556:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1095, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "556:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "529:41:8" + }, + "payable": false, + "returnParameters": { + "id": 1100, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1099, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1101, + "src": "593:4:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1098, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "593:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "592:6:8" + }, + "scope": 1118, + "src": "508:91:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": null, + "id": 1109, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 1108, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1103, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 1109, + "src": "623:20:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1102, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "623:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1105, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1109, + "src": "649:18:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1104, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "649:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1107, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1109, + "src": "673:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1106, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "673:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "617:73:8" + }, + "src": "603:88:8" + }, + { + "anonymous": false, + "documentation": null, + "id": 1117, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 1116, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1111, + "indexed": true, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1117, + "src": "715:21:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1110, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "715:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1113, + "indexed": true, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1117, + "src": "742:23:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1112, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "742:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1115, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1117, + "src": "771:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1114, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "771:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "709:79:8" + }, + "src": "695:94:8" + } + ], + "scope": 1119, + "src": "115:676:8" + } + ], + "src": "0:792:8" + }, + "id": 8 + } + } +} \ No newline at end of file diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.abi b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.abi similarity index 100% rename from labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.abi rename to labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.abi diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.bin b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.bin similarity index 98% rename from labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.bin rename to labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.bin index 12c6b6a7a..a78738611 100644 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.bin +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b50604080518082018252600581527f416c676f7300000000000000000000000000000000000000000000000000000060208083019182528351808501909452600484527f414c474f00000000000000000000000000000000000000000000000000000000908401528151919291601291620000909160039190620002c1565b508151620000a6906004906020850190620002c1565b506005805460ff191660ff9290921691909117905550620000d290503364010000000062000103810204565b6007805460ff19169055620000fd336b033b2e3c9fd0803ce800000064010000000062000155810204565b62000366565b6200011e60068264010000000062000b226200021482021704565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b600160a060020a03821615156200016b57600080fd5b60025462000188908264010000000062000ac46200026f82021704565b600255600160a060020a038216600090815260208190526040902054620001be908264010000000062000ac46200026f82021704565b600160a060020a0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600160a060020a03811615156200022a57600080fd5b6200023f828264010000000062000289810204565b156200024a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000828201838110156200028257600080fd5b9392505050565b6000600160a060020a0382161515620002a157600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200030457805160ff191683800117855562000334565b8280016001018555821562000334579182015b828111156200033457825182559160200191906001019062000317565b506200034292915062000346565b5090565b6200036391905b808211156200034257600081556001016200034d565b90565b610b9c80620003766000396000f3006080604052600436106100fb5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610100578063095ea7b31461018a57806318160ddd146101c257806323b872dd146101e95780632ff2e9dc14610213578063313ce5671461022857806339509351146102535780633f4ba83a1461027757806346fbf68e1461028e5780635c975abb146102af5780636ef8d66d146102c457806370a08231146102d957806382dc1ec4146102fa5780638456cb591461031b57806395d89b4114610330578063a457c2d714610345578063a9059cbb14610369578063dd62ed3e1461038d575b600080fd5b34801561010c57600080fd5b506101156103b4565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014f578181015183820152602001610137565b50505050905090810190601f16801561017c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561019657600080fd5b506101ae600160a060020a036004351660243561044a565b604080519115158252519081900360200190f35b3480156101ce57600080fd5b506101d761046e565b60408051918252519081900360200190f35b3480156101f557600080fd5b506101ae600160a060020a0360043581169060243516604435610474565b34801561021f57600080fd5b506101d761049a565b34801561023457600080fd5b5061023d6104aa565b6040805160ff9092168252519081900360200190f35b34801561025f57600080fd5b506101ae600160a060020a03600435166024356104b3565b34801561028357600080fd5b5061028c6104d0565b005b34801561029a57600080fd5b506101ae600160a060020a0360043516610534565b3480156102bb57600080fd5b506101ae61054d565b3480156102d057600080fd5b5061028c610556565b3480156102e557600080fd5b506101d7600160a060020a0360043516610561565b34801561030657600080fd5b5061028c600160a060020a036004351661057c565b34801561032757600080fd5b5061028c61059c565b34801561033c57600080fd5b50610115610602565b34801561035157600080fd5b506101ae600160a060020a0360043516602435610663565b34801561037557600080fd5b506101ae600160a060020a0360043516602435610680565b34801561039957600080fd5b506101d7600160a060020a036004358116906024351661069d565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104405780601f1061041557610100808354040283529160200191610440565b820191906000526020600020905b81548152906001019060200180831161042357829003601f168201915b5050505050905090565b60075460009060ff161561045d57600080fd5b61046783836106c8565b9392505050565b60025490565b60075460009060ff161561048757600080fd5b610492848484610746565b949350505050565b6b033b2e3c9fd0803ce800000081565b60055460ff1690565b60075460009060ff16156104c657600080fd5b61046783836107e3565b6104d933610534565b15156104e457600080fd5b60075460ff1615156104f557600080fd5b6007805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b600061054760068363ffffffff61089316565b92915050565b60075460ff1690565b61055f336108ca565b565b600160a060020a031660009081526020819052604090205490565b61058533610534565b151561059057600080fd5b61059981610912565b50565b6105a533610534565b15156105b057600080fd5b60075460ff16156105c057600080fd5b6007805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104405780601f1061041557610100808354040283529160200191610440565b60075460009060ff161561067657600080fd5b610467838361095a565b60075460009060ff161561069357600080fd5b61046783836109a5565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b6000600160a060020a03831615156106df57600080fd5b336000818152600160209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b600160a060020a038316600090815260016020908152604080832033845290915281205482111561077657600080fd5b600160a060020a03841660009081526001602090815260408083203384529091529020546107aa908363ffffffff6109bb16565b600160a060020a03851660009081526001602090815260408083203384529091529020556107d98484846109d2565b5060019392505050565b6000600160a060020a03831615156107fa57600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461082e908363ffffffff610ac416565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b6000600160a060020a03821615156108aa57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6108db60068263ffffffff610ad616565b604051600160a060020a038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b61092360068263ffffffff610b2216565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6000600160a060020a038316151561097157600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461082e908363ffffffff6109bb16565b60006109b23384846109d2565b50600192915050565b600080838311156109cb57600080fd5b5050900390565b600160a060020a0383166000908152602081905260409020548111156109f757600080fd5b600160a060020a0382161515610a0c57600080fd5b600160a060020a038316600090815260208190526040902054610a35908263ffffffff6109bb16565b600160a060020a038085166000908152602081905260408082209390935590841681522054610a6a908263ffffffff610ac416565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282018381101561046757600080fd5b600160a060020a0381161515610aeb57600080fd5b610af58282610893565b1515610b0057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a0381161515610b3757600080fd5b610b418282610893565b15610b4b57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191660011790555600a165627a7a723058202dd18facb88fce52397143655484bd6bb04ca8578eb8c0779511f9e8d97c55f20029 \ No newline at end of file +60806040523480156200001157600080fd5b50604080518082018252600581527f416c676f7300000000000000000000000000000000000000000000000000000060208083019182528351808501909452600484527f414c474f00000000000000000000000000000000000000000000000000000000908401528151919291601291620000909160039190620002c1565b508151620000a6906004906020850190620002c1565b506005805460ff191660ff9290921691909117905550620000d290503364010000000062000103810204565b6007805460ff19169055620000fd336b033b2e3c9fd0803ce800000064010000000062000155810204565b62000366565b6200011e60068264010000000062000b226200021482021704565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b600160a060020a03821615156200016b57600080fd5b60025462000188908264010000000062000ac46200026f82021704565b600255600160a060020a038216600090815260208190526040902054620001be908264010000000062000ac46200026f82021704565b600160a060020a0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600160a060020a03811615156200022a57600080fd5b6200023f828264010000000062000289810204565b156200024a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000828201838110156200028257600080fd5b9392505050565b6000600160a060020a0382161515620002a157600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200030457805160ff191683800117855562000334565b8280016001018555821562000334579182015b828111156200033457825182559160200191906001019062000317565b506200034292915062000346565b5090565b6200036391905b808211156200034257600081556001016200034d565b90565b610b9c80620003766000396000f3006080604052600436106100fb5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610100578063095ea7b31461018a57806318160ddd146101c257806323b872dd146101e95780632ff2e9dc14610213578063313ce5671461022857806339509351146102535780633f4ba83a1461027757806346fbf68e1461028e5780635c975abb146102af5780636ef8d66d146102c457806370a08231146102d957806382dc1ec4146102fa5780638456cb591461031b57806395d89b4114610330578063a457c2d714610345578063a9059cbb14610369578063dd62ed3e1461038d575b600080fd5b34801561010c57600080fd5b506101156103b4565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014f578181015183820152602001610137565b50505050905090810190601f16801561017c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561019657600080fd5b506101ae600160a060020a036004351660243561044a565b604080519115158252519081900360200190f35b3480156101ce57600080fd5b506101d761046e565b60408051918252519081900360200190f35b3480156101f557600080fd5b506101ae600160a060020a0360043581169060243516604435610474565b34801561021f57600080fd5b506101d761049a565b34801561023457600080fd5b5061023d6104aa565b6040805160ff9092168252519081900360200190f35b34801561025f57600080fd5b506101ae600160a060020a03600435166024356104b3565b34801561028357600080fd5b5061028c6104d0565b005b34801561029a57600080fd5b506101ae600160a060020a0360043516610534565b3480156102bb57600080fd5b506101ae61054d565b3480156102d057600080fd5b5061028c610556565b3480156102e557600080fd5b506101d7600160a060020a0360043516610561565b34801561030657600080fd5b5061028c600160a060020a036004351661057c565b34801561032757600080fd5b5061028c61059c565b34801561033c57600080fd5b50610115610602565b34801561035157600080fd5b506101ae600160a060020a0360043516602435610663565b34801561037557600080fd5b506101ae600160a060020a0360043516602435610680565b34801561039957600080fd5b506101d7600160a060020a036004358116906024351661069d565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104405780601f1061041557610100808354040283529160200191610440565b820191906000526020600020905b81548152906001019060200180831161042357829003601f168201915b5050505050905090565b60075460009060ff161561045d57600080fd5b61046783836106c8565b9392505050565b60025490565b60075460009060ff161561048757600080fd5b610492848484610746565b949350505050565b6b033b2e3c9fd0803ce800000081565b60055460ff1690565b60075460009060ff16156104c657600080fd5b61046783836107e3565b6104d933610534565b15156104e457600080fd5b60075460ff1615156104f557600080fd5b6007805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b600061054760068363ffffffff61089316565b92915050565b60075460ff1690565b61055f336108ca565b565b600160a060020a031660009081526020819052604090205490565b61058533610534565b151561059057600080fd5b61059981610912565b50565b6105a533610534565b15156105b057600080fd5b60075460ff16156105c057600080fd5b6007805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104405780601f1061041557610100808354040283529160200191610440565b60075460009060ff161561067657600080fd5b610467838361095a565b60075460009060ff161561069357600080fd5b61046783836109a5565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b6000600160a060020a03831615156106df57600080fd5b336000818152600160209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b600160a060020a038316600090815260016020908152604080832033845290915281205482111561077657600080fd5b600160a060020a03841660009081526001602090815260408083203384529091529020546107aa908363ffffffff6109bb16565b600160a060020a03851660009081526001602090815260408083203384529091529020556107d98484846109d2565b5060019392505050565b6000600160a060020a03831615156107fa57600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461082e908363ffffffff610ac416565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b6000600160a060020a03821615156108aa57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6108db60068263ffffffff610ad616565b604051600160a060020a038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b61092360068263ffffffff610b2216565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6000600160a060020a038316151561097157600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461082e908363ffffffff6109bb16565b60006109b23384846109d2565b50600192915050565b600080838311156109cb57600080fd5b5050900390565b600160a060020a0383166000908152602081905260409020548111156109f757600080fd5b600160a060020a0382161515610a0c57600080fd5b600160a060020a038316600090815260208190526040902054610a35908263ffffffff6109bb16565b600160a060020a038085166000908152602081905260408082209390935590841681522054610a6a908263ffffffff610ac416565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282018381101561046757600080fd5b600160a060020a0381161515610aeb57600080fd5b610af58282610893565b1515610b0057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a0381161515610b3757600080fd5b610b418282610893565b15610b4b57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191660011790555600a165627a7a7230582061a190b3074a6fa0ab1f995699a75a855141c91dd51eb835ef565d0c7739360d0029 \ No newline at end of file diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.json b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.json new file mode 100644 index 000000000..35d25c374 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.json @@ -0,0 +1,455 @@ +{ + "abi": [ + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "INITIAL_SUPPLY", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "unpause", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isPauser", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "paused", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renouncePauser", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addPauser", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "pause", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "PauserAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "PauserRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + } + ], + "bytecode": "60806040523480156200001157600080fd5b50604080518082018252600581527f416c676f7300000000000000000000000000000000000000000000000000000060208083019182528351808501909452600484527f414c474f00000000000000000000000000000000000000000000000000000000908401528151919291601291620000909160039190620002c1565b508151620000a6906004906020850190620002c1565b506005805460ff191660ff9290921691909117905550620000d290503364010000000062000103810204565b6007805460ff19169055620000fd336b033b2e3c9fd0803ce800000064010000000062000155810204565b62000366565b6200011e60068264010000000062000b226200021482021704565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b600160a060020a03821615156200016b57600080fd5b60025462000188908264010000000062000ac46200026f82021704565b600255600160a060020a038216600090815260208190526040902054620001be908264010000000062000ac46200026f82021704565b600160a060020a0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600160a060020a03811615156200022a57600080fd5b6200023f828264010000000062000289810204565b156200024a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000828201838110156200028257600080fd5b9392505050565b6000600160a060020a0382161515620002a157600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200030457805160ff191683800117855562000334565b8280016001018555821562000334579182015b828111156200033457825182559160200191906001019062000317565b506200034292915062000346565b5090565b6200036391905b808211156200034257600081556001016200034d565b90565b610b9c80620003766000396000f3006080604052600436106100fb5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610100578063095ea7b31461018a57806318160ddd146101c257806323b872dd146101e95780632ff2e9dc14610213578063313ce5671461022857806339509351146102535780633f4ba83a1461027757806346fbf68e1461028e5780635c975abb146102af5780636ef8d66d146102c457806370a08231146102d957806382dc1ec4146102fa5780638456cb591461031b57806395d89b4114610330578063a457c2d714610345578063a9059cbb14610369578063dd62ed3e1461038d575b600080fd5b34801561010c57600080fd5b506101156103b4565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014f578181015183820152602001610137565b50505050905090810190601f16801561017c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561019657600080fd5b506101ae600160a060020a036004351660243561044a565b604080519115158252519081900360200190f35b3480156101ce57600080fd5b506101d761046e565b60408051918252519081900360200190f35b3480156101f557600080fd5b506101ae600160a060020a0360043581169060243516604435610474565b34801561021f57600080fd5b506101d761049a565b34801561023457600080fd5b5061023d6104aa565b6040805160ff9092168252519081900360200190f35b34801561025f57600080fd5b506101ae600160a060020a03600435166024356104b3565b34801561028357600080fd5b5061028c6104d0565b005b34801561029a57600080fd5b506101ae600160a060020a0360043516610534565b3480156102bb57600080fd5b506101ae61054d565b3480156102d057600080fd5b5061028c610556565b3480156102e557600080fd5b506101d7600160a060020a0360043516610561565b34801561030657600080fd5b5061028c600160a060020a036004351661057c565b34801561032757600080fd5b5061028c61059c565b34801561033c57600080fd5b50610115610602565b34801561035157600080fd5b506101ae600160a060020a0360043516602435610663565b34801561037557600080fd5b506101ae600160a060020a0360043516602435610680565b34801561039957600080fd5b506101d7600160a060020a036004358116906024351661069d565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104405780601f1061041557610100808354040283529160200191610440565b820191906000526020600020905b81548152906001019060200180831161042357829003601f168201915b5050505050905090565b60075460009060ff161561045d57600080fd5b61046783836106c8565b9392505050565b60025490565b60075460009060ff161561048757600080fd5b610492848484610746565b949350505050565b6b033b2e3c9fd0803ce800000081565b60055460ff1690565b60075460009060ff16156104c657600080fd5b61046783836107e3565b6104d933610534565b15156104e457600080fd5b60075460ff1615156104f557600080fd5b6007805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b600061054760068363ffffffff61089316565b92915050565b60075460ff1690565b61055f336108ca565b565b600160a060020a031660009081526020819052604090205490565b61058533610534565b151561059057600080fd5b61059981610912565b50565b6105a533610534565b15156105b057600080fd5b60075460ff16156105c057600080fd5b6007805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104405780601f1061041557610100808354040283529160200191610440565b60075460009060ff161561067657600080fd5b610467838361095a565b60075460009060ff161561069357600080fd5b61046783836109a5565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b6000600160a060020a03831615156106df57600080fd5b336000818152600160209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b600160a060020a038316600090815260016020908152604080832033845290915281205482111561077657600080fd5b600160a060020a03841660009081526001602090815260408083203384529091529020546107aa908363ffffffff6109bb16565b600160a060020a03851660009081526001602090815260408083203384529091529020556107d98484846109d2565b5060019392505050565b6000600160a060020a03831615156107fa57600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461082e908363ffffffff610ac416565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b6000600160a060020a03821615156108aa57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6108db60068263ffffffff610ad616565b604051600160a060020a038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b61092360068263ffffffff610b2216565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6000600160a060020a038316151561097157600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461082e908363ffffffff6109bb16565b60006109b23384846109d2565b50600192915050565b600080838311156109cb57600080fd5b5050900390565b600160a060020a0383166000908152602081905260409020548111156109f757600080fd5b600160a060020a0382161515610a0c57600080fd5b600160a060020a038316600090815260208190526040902054610a35908263ffffffff6109bb16565b600160a060020a038085166000908152602081905260408082209390935590841681522054610a6a908263ffffffff610ac416565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282018381101561046757600080fd5b600160a060020a0381161515610aeb57600080fd5b610af58282610893565b1515610b0057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a0381161515610b3757600080fd5b610b418282610893565b15610b4b57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191660011790555600a165627a7a7230582061a190b3074a6fa0ab1f995699a75a855141c91dd51eb835ef565d0c7739360d0029", + "functionHashes": { + "INITIAL_SUPPLY()": "2ff2e9dc", + "addPauser(address)": "82dc1ec4", + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decimals()": "313ce567", + "decreaseAllowance(address,uint256)": "a457c2d7", + "increaseAllowance(address,uint256)": "39509351", + "isPauser(address)": "46fbf68e", + "name()": "06fdde03", + "pause()": "8456cb59", + "paused()": "5c975abb", + "renouncePauser()": "6ef8d66d", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd", + "unpause()": "3f4ba83a" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "594400", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "INITIAL_SUPPLY()": "272", + "addPauser(address)": "infinite", + "allowance(address,address)": "1082", + "approve(address,uint256)": "22732", + "balanceOf(address)": "851", + "decimals()": "509", + "decreaseAllowance(address,uint256)": "infinite", + "increaseAllowance(address,uint256)": "infinite", + "isPauser(address)": "infinite", + "name()": "infinite", + "pause()": "infinite", + "paused()": "594", + "renouncePauser()": "infinite", + "symbol()": "infinite", + "totalSupply()": "428", + "transfer(address,uint256)": "infinite", + "transferFrom(address,address,uint256)": "infinite", + "unpause()": "infinite" + } + } +} \ No newline at end of file diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/package-lock.json b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/package-lock.json new file mode 100644 index 000000000..4273dd66c --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/package-lock.json @@ -0,0 +1,495 @@ +{ + "name": "algo-erc20-token", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "fs-extra": { + "version": "0.30.0", + "resolved": "http://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "http://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "requires": { + "graceful-fs": "^4.1.9" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "^1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "openzeppelin-solidity": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/openzeppelin-solidity/-/openzeppelin-solidity-2.0.0.tgz", + "integrity": "sha512-SolpxQFArtiYnlSNg3dZ9sz0WVlKtPqSOcJkXRllaZp4+Lpfqz3vxF0yoh7g75TszKPyadqoJmU7+GM/vwh9SA==" + }, + "os-locale": { + "version": "1.4.0", + "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "requires": { + "lcid": "^1.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "^2.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-from-string": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", + "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "requires": { + "glob": "^7.0.5" + } + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "solc": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.24.tgz", + "integrity": "sha512-2xd7Cf1HeVwrIb6Bu1cwY2/TaLRodrppCq3l7rhLimFQgmxptXhTC3+/wesVLpB09F1A2kZgvbMOgH7wvhFnBQ==", + "requires": { + "fs-extra": "^0.30.0", + "memorystream": "^0.3.1", + "require-from-string": "^1.1.0", + "semver": "^5.3.0", + "yargs": "^4.7.1" + } + }, + "spdx-correct": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz", + "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz", + "integrity": "sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg==" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" + }, + "window-size": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", + "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=" + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yargs": { + "version": "4.8.1", + "resolved": "http://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", + "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", + "requires": { + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "lodash.assign": "^4.0.3", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.1", + "which-module": "^1.0.0", + "window-size": "^0.2.0", + "y18n": "^3.2.1", + "yargs-parser": "^2.4.1" + } + }, + "yargs-parser": { + "version": "2.4.1", + "resolved": "http://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", + "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", + "requires": { + "camelcase": "^3.0.0", + "lodash.assign": "^4.0.6" + } + } + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/package.json b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/package.json new file mode 100644 index 000000000..2d72520d7 --- /dev/null +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/package.json @@ -0,0 +1,15 @@ +{ + "name": "algo-erc20-token", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "openzeppelin-solidity": "^2.0.0", + "solc": "^0.4.24" + } +} diff --git a/labs/algo-erc20-token/test/AdvancedAlgos.AlgoErc20Token.IntegrationTests/AlgoTokenV1Tests.cs b/labs/algo-erc20-token/test/AdvancedAlgos.AlgoErc20Token.IntegrationTests/AlgoTokenV1Tests.cs deleted file mode 100644 index ec61b0cc6..000000000 --- a/labs/algo-erc20-token/test/AdvancedAlgos.AlgoErc20Token.IntegrationTests/AlgoTokenV1Tests.cs +++ /dev/null @@ -1,74 +0,0 @@ -using System; -using System.Numerics; -using System.Threading.Tasks; -using AdvancedAlgos.AlgoErc20Token.EthClientExtensions; -using AdvancedAlgos.AlgoErc20Token.EthClientExtensions.Exceptions; -using Nethereum.Web3; -using Nethereum.Web3.Accounts; -using Xunit; - -namespace AdvancedAlgos.AlgoErc20Token.IntegrationTests -{ - public class AlgoTokenV1Tests - { - private const long INITIAL_SUPPLY = 1000000000; - private const byte TOKEN_DECIMALS = 18; - - private static BigInteger _tokenFactor = BigInteger.Pow(10, TOKEN_DECIMALS); - - [Fact] - public async Task DeployContractAndTransferTokensTest() - { - EthNetwork.UseGethTestNet(); - - var account1 = new Account(EthNetwork.Instance.PrefundedPrivateKey); - var account2 = EthAccountFactory.Create(); - - var web3 = new Web3(account1, EthNetwork.Instance.Url); - - var contract = new AlgoTokenV1(); - - await contract.DeployAsync(web3, EthNetwork.Instance.GasPrice); - - Assert.Equal(INITIAL_SUPPLY.Algo(), await contract.BalanceOfAsync(account1.Address)); - - await contract.TransferAsync(EthNetwork.Instance.GasPrice, account2.Address, 2.Algo()); - - Assert.Equal(2.Algo(), await contract.BalanceOfAsync(account2.Address)); - } - - [Fact] - public async Task PausableFeatureTest() - { - EthNetwork.UseGethTestNet(); - - var account1 = new Account(EthNetwork.Instance.PrefundedPrivateKey); - var account2 = EthAccountFactory.Create(); - - var web3 = new Web3(account1, EthNetwork.Instance.Url); - - var contract = new AlgoTokenV1(); - - await contract.DeployAsync(web3, EthNetwork.Instance.GasPrice); - - await contract.TransferAsync(EthNetwork.Instance.GasPrice, account2.Address, 2.Algo()); - - Assert.Equal(2.Algo(), await contract.BalanceOfAsync(account2.Address)); - - await contract.PauseAsync(EthNetwork.Instance.GasPrice); - - await Assert.ThrowsAsync( - () => contract.TransferAsync(EthNetwork.Instance.GasPrice, account2.Address, 2.Algo())); - - Assert.Equal(2.Algo(), await contract.BalanceOfAsync(account2.Address)); - - await contract.UnpauseAsync(EthNetwork.Instance.GasPrice); - - Assert.Equal(2.Algo(), await contract.BalanceOfAsync(account2.Address)); - - await contract.TransferAsync(EthNetwork.Instance.GasPrice, account2.Address, 2.Algo()); - - Assert.Equal(4.Algo(), await contract.BalanceOfAsync(account2.Address)); - } - } -} diff --git a/labs/algo-erc20-token/test/AdvancedAlgos.AlgoErc20Token.IntegrationTests/AdvancedAlgos.AlgoErc20Token.IntegrationTests.csproj b/labs/algo-erc20-token/test/AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests/AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests.csproj similarity index 54% rename from labs/algo-erc20-token/test/AdvancedAlgos.AlgoErc20Token.IntegrationTests/AdvancedAlgos.AlgoErc20Token.IntegrationTests.csproj rename to labs/algo-erc20-token/test/AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests/AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests.csproj index b7afbca3b..a32a8a284 100644 --- a/labs/algo-erc20-token/test/AdvancedAlgos.AlgoErc20Token.IntegrationTests/AdvancedAlgos.AlgoErc20Token.IntegrationTests.csproj +++ b/labs/algo-erc20-token/test/AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests/AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests.csproj @@ -2,8 +2,8 @@ netcoreapp2.1 - false latest + false @@ -14,7 +14,9 @@ - + + + diff --git a/labs/algo-erc20-token/test/AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests/AlgoTokenV1Tests.cs b/labs/algo-erc20-token/test/AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests/AlgoTokenV1Tests.cs new file mode 100644 index 000000000..f19264bde --- /dev/null +++ b/labs/algo-erc20-token/test/AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests/AlgoTokenV1Tests.cs @@ -0,0 +1,73 @@ +using System; +using System.Numerics; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.Framework.Ethereum; +using AdvancedAlgos.AlgoToken.Framework.Ethereum.Exceptions; +using AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest; +using Nethereum.Web3; +using Nethereum.Web3.Accounts; +using Xunit; + +namespace AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests +{ + public class AlgoTokenV1Tests + { + private const long INITIAL_SUPPLY = 1000000000; + + [Fact] + public async Task DeployContractAndTransferTokensTest() + { + EthNetwork.UseGanacheTestNet(); + + var account1 = new Account(EthNetwork.Instance.PrefundedPrivateKey); + var account2 = EthAccountFactory.Create(); + + // Create the ERC20 token... + var contract = new AlgoTokenV1(EthNetwork.Instance.GetWeb3(account1), EthNetwork.Instance.GasPriceProvider); + await contract.DeployAsync(); + + // Ensure that the initial supply is allocated to the owner... + Assert.Equal(INITIAL_SUPPLY.Algo(), await contract.BalanceOfAsync(account1.Address)); + + // Perform a transfer... + await contract.TransferAsync(account2.Address, 2.Algo()); + + // Ensure the receiver got the tokens... + Assert.Equal(2.Algo(), await contract.BalanceOfAsync(account2.Address)); + } + + [Fact] + public async Task PausableFeatureTest() + { + EthNetwork.UseGanacheTestNet(); + + var account1 = new Account(EthNetwork.Instance.PrefundedPrivateKey); + var account2 = EthAccountFactory.Create(); + + // Create the ERC20 token... + var contract = new AlgoTokenV1(EthNetwork.Instance.GetWeb3(account1), EthNetwork.Instance.GasPriceProvider); + await contract.DeployAsync(); + + // Perform a transfer and check the result... + await contract.TransferAsync(account2.Address, 2.Algo()); + Assert.Equal(2.Algo(), await contract.BalanceOfAsync(account2.Address)); + + // Pause the contract... + await contract.PauseAsync(); + + // Ensure the contract cannot be used while is in paused state... + await Assert.ThrowsAsync( + () => contract.TransferAsync(account2.Address, 2.Algo())); + + // Ensure the balance was not modified... + Assert.Equal(2.Algo(), await contract.BalanceOfAsync(account2.Address)); + + // Unpause the contract... + await contract.UnpauseAsync(); + + // Try a new transfer and ensure it succeeded... + await contract.TransferAsync(account2.Address, 2.Algo()); + Assert.Equal(4.Algo(), await contract.BalanceOfAsync(account2.Address)); + } + } +} diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.csproj b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.csproj new file mode 100644 index 000000000..fcd5029c3 --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.csproj @@ -0,0 +1,24 @@ + + + + netcoreapp2.1 + latest + + + + + + + + + + + + + + + + + + + diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoMiner.cs b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoMiner.cs new file mode 100644 index 000000000..e128472b4 --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoMiner.cs @@ -0,0 +1,97 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.Framework.Ethereum; +using Nethereum.Contracts; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution +{ + public class AlgoMiner : SmartContract + { + private Function _activateMiner; + private Function _deactivateMiner; + private Function _migrateMiner; + private Function _pauseMining; + private Function _resumeMining; + private Function _stopAndRemoveOwnership; + private Function _resetMiner; + private Function _startMining; + private Function _stopMining; + private Function _mine; + + private Function _addSystem; + private Function _addCoreTeam; + private Function _addSupervisor; + + public AlgoMiner(Web3 web3, IGasPriceProvider gasPriceProvider) : base(web3, gasPriceProvider) { } + public AlgoMiner(string contractAddress, Web3 web3, IGasPriceProvider gasPriceProvider) : base(contractAddress, web3, gasPriceProvider) { } + + protected override string AbiResourceName => $"SmartContracts.src.bin.{nameof(AlgoMiner)}.abi"; + protected override string BinResourceName => $"SmartContracts.src.bin.{nameof(AlgoMiner)}.bin"; + protected override BigInteger DeploymentGasUnits => 1200000; + + public Task DeployAsync(ushort minerType, byte category, string ownerAddress, string tokenAddress) + => base.DeployAsync(minerType, category, ownerAddress, tokenAddress); + + protected override void Initialize(Contract contractDescriptor) + { + _activateMiner = contractDescriptor.GetFunction("activateMiner"); + _deactivateMiner = contractDescriptor.GetFunction("deactivateMiner"); + _migrateMiner = contractDescriptor.GetFunction("migrateMiner"); + _pauseMining = contractDescriptor.GetFunction("pauseMining"); + _resumeMining = contractDescriptor.GetFunction("resumeMining"); + _stopAndRemoveOwnership = contractDescriptor.GetFunction("stopAndRemoveOwnership"); + _resetMiner = contractDescriptor.GetFunction("resetMiner"); + _startMining = contractDescriptor.GetFunction("startMining"); + _stopMining = contractDescriptor.GetFunction("stopMining"); + _mine = contractDescriptor.GetFunction("mine"); + + _addSystem = contractDescriptor.GetFunction("addSystem"); + _addCoreTeam = contractDescriptor.GetFunction("addCoreTeam"); + _addSupervisor = contractDescriptor.GetFunction("addSupervisor"); + } + + public Task ActivateMinerAsync() => + InvokeAsync(_activateMiner, 900000); + + public Task DeactivateMinerAsync() => + InvokeAsync(_deactivateMiner, 900000); + + public Task MigrateMinerAsync(string newMinerAddress) => + InvokeAsync(_migrateMiner, 900000, newMinerAddress); + + public Task PauseMiningAsync() => + InvokeAsync(_pauseMining, 900000); + + public Task ResumeMiningAsync() => + InvokeAsync(_resumeMining, 900000); + + public Task StopAndRemoveOwnershipAsync() => + InvokeAsync(_stopAndRemoveOwnership, 900000); + + public Task ResetMinerAsync(string newOwnerAddress) => + InvokeAsync(_resetMiner, 900000, newOwnerAddress); + + public Task StartMiningAsync() => + InvokeAsync(_startMining, 900000); + + public Task StopMiningAsync() => + InvokeAsync(_stopMining, 900000); + + public Task MineAsync() => + InvokeAsync(_mine, 900000); + + public Task AddSystemAsync(string account) => + InvokeAsync(_addSystem, 900000, account); + + public Task AddCoreTeamAsync(string account) => + InvokeAsync(_addCoreTeam, 900000, account); + + public Task AddSupervisorAsync(string account) => + InvokeAsync(_addSupervisor, 900000, account); + } +} diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoPool.cs b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoPool.cs new file mode 100644 index 000000000..2e6d95c61 --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoPool.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.Framework.Ethereum; +using Nethereum.Contracts; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution +{ + public class AlgoPool : SmartContract + { + private Function _trasferToMiner; + + public AlgoPool(Web3 web3, IGasPriceProvider gasPriceProvider) : base(web3, gasPriceProvider) { } + public AlgoPool(string contractAddress, Web3 web3, IGasPriceProvider gasPriceProvider) : base(contractAddress, web3, gasPriceProvider) { } + + protected override string AbiResourceName => $"SmartContracts.src.bin.{nameof(AlgoPool)}.abi"; + protected override string BinResourceName => $"SmartContracts.src.bin.{nameof(AlgoPool)}.bin"; + protected override BigInteger DeploymentGasUnits => 1200000; + + public Task DeployAsync(ushort poolType, string tokenAddress) + => base.DeployAsync(poolType, tokenAddress); + + protected override void Initialize(Contract contractDescriptor) + { + _trasferToMiner = contractDescriptor.GetFunction("trasferToMiner"); + } + + public Task TrasferToMinerAsync(string minerAddress) => + InvokeAsync(_trasferToMiner, 900000, minerAddress); + } +} diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/.vscode/settings.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/.vscode/settings.json new file mode 100644 index 000000000..9dea7e6ca --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/.vscode/settings.json @@ -0,0 +1,9 @@ +{ + "solidity.soliumRules": { + "indentation": "off", + "operator-whitespace": "off", + "error-reason": "off", + "linebreak-style": "off" + }, + "solidity.packageDefaultDependenciesContractsDirectory": "" +} \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol new file mode 100644 index 000000000..7c147587d --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol @@ -0,0 +1,38 @@ +pragma solidity ^0.4.24; + +import "openzeppelin-solidity/contracts/access/Roles.sol"; + +contract AlgoCoreTeamRole { + using Roles for Roles.Role; + + Roles.Role private _coreTeamMembers; + + constructor () internal { + _addCoreTeam(msg.sender); + } + + modifier onlyCoreTeam() { + require(isCoreTeam(msg.sender)); + _; + } + + function isCoreTeam(address account) public view returns (bool) { + return _coreTeamMembers.has(account); + } + + function addCoreTeam(address account) public onlyCoreTeam { + _addCoreTeam(account); + } + + function renounceCoreTeam() public { + _removeCoreTeam(msg.sender); + } + + function _addCoreTeam(address account) internal { + _coreTeamMembers.add(account); + } + + function _removeCoreTeam(address account) internal { + _coreTeamMembers.remove(account); + } +} diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol new file mode 100644 index 000000000..69263a732 --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol @@ -0,0 +1,147 @@ +pragma solidity 0.4.24; + +import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol"; +import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol"; + +import "./IAlgoMiner.sol"; +import "./AlgoSystemRole.sol"; +import "./AlgoCoreTeamRole.sol"; +import "./AlgoSupervisorRole.sol"; + +contract AlgoMiner is AlgoSystemRole, AlgoCoreTeamRole, AlgoSupervisorRole, IAlgoMiner { + using SafeERC20 for IERC20; + + uint256 public constant DAYS_PER_YEAR = 365; + + enum MinerState { + Deactivated, + Activated, + Suspended, + Stopped + } + + uint16 private _minerType; + uint8 private _category; + address private _miner; + IERC20 private _token; + + MinerState private _state; + bool private _mining; + uint8 private _currentYear; + uint16 private _currentDay; + uint256 private _currentYearSupply; + + constructor(uint16 minerType, uint8 category, address ownerAddress, address tokenAddress) + AlgoSystemRole() + AlgoCoreTeamRole() + AlgoSupervisorRole() + public { + + _minerType = minerType; + _category = category; + _miner = ownerAddress; + _token = IERC20(tokenAddress); + } + + modifier onlyMiner() { + require(msg.sender == _miner); + _; + } + + function activateMiner() public onlyCoreTeam { + require(_state == MinerState.Deactivated); + + if(_currentYearSupply == 0) { + uint256 currentBalance = _token.balanceOf(address(this)); + + require(currentBalance != 0); + + _currentYearSupply = currentBalance / 2; + } + + _state = MinerState.Activated; + } + + function deactivateMiner() public onlyCoreTeam { + require(_state != MinerState.Deactivated); + + _state = MinerState.Deactivated; + _mining = false; + } + + function migrateMiner(address newMinerAddress) public onlyCoreTeam { + require(_state == MinerState.Deactivated); + + _token.safeTransfer(newMinerAddress, _token.balanceOf(address(this))); + } + + function pauseMining() public onlySupervisor { + require(_state == MinerState.Activated); + + _state = MinerState.Suspended; + } + + function resumeMining() public onlySupervisor { + require(_state == MinerState.Suspended); + + _state = MinerState.Activated; + } + + function stopAndRemoveOwnership() public onlySupervisor { + require(_state != MinerState.Stopped); + + _state = MinerState.Stopped; + _mining = false; + _miner = address(0); + } + + function resetMiner(address newOwnerAddress) public onlySupervisor { + require(_state == MinerState.Stopped); + + _state = MinerState.Activated; + _miner = newOwnerAddress; + } + + function startMining() public onlyMiner { + require(_state == MinerState.Activated); + require(!_mining); + + _mining = true; + } + + function stopMining() public onlyMiner { + require(_state == MinerState.Activated); + require(_mining); + + _mining = false; + } + + function mine() public onlySystem { + require(_state == MinerState.Activated); + require(_mining); + + if(_currentDay == 0) { + _currentYear = 1; + _currentDay = 1; + } else { + _currentDay++; + if(_currentDay == (DAYS_PER_YEAR + 1)) { + _currentYear++; + _currentDay = 1; + _currentYearSupply = _currentYearSupply / 2; + } + } + + uint256 tokens = _currentYearSupply / DAYS_PER_YEAR; + + _token.safeTransfer(_miner, tokens); + } + + function isAlgoMiner() public pure returns (bool) { + return true; + } + + function getCategory() public view returns (uint8) { + return _category; + } +} diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol new file mode 100644 index 000000000..2ac21b48f --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol @@ -0,0 +1,59 @@ +pragma solidity 0.4.24; + +import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol"; +import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol"; + +import "./IAlgoMiner.sol"; +import "./AlgoCoreTeamRole.sol"; + +contract AlgoPool is AlgoCoreTeamRole { + using SafeERC20 for IERC20; + + uint256 public constant TOKEN_FACTOR = 10 ** uint256(18); + uint256 public constant CAT_0_VALUE = 100000 * TOKEN_FACTOR; + uint256 public constant CAT_1_VALUE = 1000000 * TOKEN_FACTOR; + uint256 public constant CAT_2_VALUE = 2 * 1000000 * TOKEN_FACTOR; + uint256 public constant CAT_3_VALUE = 3 * 1000000 * TOKEN_FACTOR; + uint256 public constant CAT_4_VALUE = 4 * 1000000 * TOKEN_FACTOR; + uint256 public constant CAT_5_VALUE = 5 * 1000000 * TOKEN_FACTOR; + + uint16 private _poolType; + IERC20 private _token; + + constructor(uint16 poolType, address tokenAddress) + AlgoCoreTeamRole() + public { + _poolType = poolType; + _token = IERC20(tokenAddress); + } + + function trasferToMiner(address minerAddress) public onlyCoreTeam { + IAlgoMiner algoMiner = IAlgoMiner(minerAddress); + + require(algoMiner.isAlgoMiner()); + + uint8 minerCategory = algoMiner.getCategory(); + + require(minerCategory >= 0 && minerCategory <= 5); + + uint256 value = 0; + + if(minerCategory == 0) { + value = CAT_0_VALUE; + } else if(minerCategory == 1) { + value = CAT_1_VALUE; + } else if(minerCategory == 2) { + value = CAT_2_VALUE; + } else if(minerCategory == 3) { + value = CAT_3_VALUE; + } else if(minerCategory == 4) { + value = CAT_4_VALUE; + } else if(minerCategory == 5) { + value = CAT_5_VALUE; + } + + require(value > 0); + + _token.safeTransfer(minerAddress, value); + } +} diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol new file mode 100644 index 000000000..5e6d5d7c1 --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol @@ -0,0 +1,38 @@ +pragma solidity ^0.4.24; + +import "openzeppelin-solidity/contracts/access/Roles.sol"; + +contract AlgoSupervisorRole { + using Roles for Roles.Role; + + Roles.Role private _supervisors; + + constructor () internal { + _addSupervisor(msg.sender); + } + + modifier onlySupervisor() { + require(isSupervisor(msg.sender)); + _; + } + + function isSupervisor(address account) public view returns (bool) { + return _supervisors.has(account); + } + + function addSupervisor(address account) public onlySupervisor { + _addSupervisor(account); + } + + function renounceSupervisor() public { + _removeSupervisor(msg.sender); + } + + function _addSupervisor(address account) internal { + _supervisors.add(account); + } + + function _removeSupervisor(address account) internal { + _supervisors.remove(account); + } +} diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol new file mode 100644 index 000000000..5cf39703c --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol @@ -0,0 +1,38 @@ +pragma solidity ^0.4.24; + +import "openzeppelin-solidity/contracts/access/Roles.sol"; + +contract AlgoSystemRole { + using Roles for Roles.Role; + + Roles.Role private _systemMembers; + + constructor () internal { + _addSystem(msg.sender); + } + + modifier onlySystem() { + require(isSystem(msg.sender)); + _; + } + + function isSystem(address account) public view returns (bool) { + return _systemMembers.has(account); + } + + function addSystem(address account) public onlySystem { + _addSystem(account); + } + + function renounceSystem() public { + _removeSystem(msg.sender); + } + + function _addSystem(address account) internal { + _systemMembers.add(account); + } + + function _removeSystem(address account) internal { + _systemMembers.remove(account); + } +} diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol new file mode 100644 index 000000000..cc98a0c6a --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol @@ -0,0 +1,6 @@ +pragma solidity 0.4.24; + +contract IAlgoMiner { + function isAlgoMiner() public pure returns (bool); + function getCategory() public view returns (uint8); +} \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json new file mode 100644 index 000000000..55865265d --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json @@ -0,0 +1,14983 @@ +{ + "contracts": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol": { + "AlgoCoreTeamRole": { + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isCoreTeam", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "addCoreTeam(address)": "2e6b6849", + "isCoreTeam(address)": "608d3d3d", + "renounceCoreTeam()": "d43acc79" + } + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol": { + "AlgoMiner": { + "abi": [ + { + "constant": false, + "inputs": [], + "name": "pauseMining", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isAlgoMiner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "startMining", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "newMinerAddress", + "type": "address" + } + ], + "name": "migrateMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addSupervisor", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isSystem", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "stopAndRemoveOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "resumeMining", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isCoreTeam", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addSystem", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getCategory", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isSupervisor", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "mine", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "deactivateMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "newOwnerAddress", + "type": "address" + } + ], + "name": "resetMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "activateMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceSupervisor", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "DAYS_PER_YEAR", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "stopMining", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceSystem", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "name": "minerType", + "type": "uint16" + }, + { + "name": "category", + "type": "uint8" + }, + { + "name": "ownerAddress", + "type": "address" + }, + { + "name": "tokenAddress", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "60806040523480156200001157600080fd5b5060405160808062000fb883398101604090815281516020830151918301516060909301519092906200004d33640100000000620000de810204565b6200006133640100000000620000fc810204565b620000753364010000000062000117810204565b6003805461ffff191661ffff959095169490941762ff000019166201000060ff949094169390930292909217630100000060b860020a0319166301000000600160a060020a03928316021790925560048054600160a060020a03191691909216179055620001c5565b620000f960008264010000000062000d1d6200013282021704565b50565b620000f960018264010000000062000d1d6200013282021704565b620000f960028264010000000062000d1d6200013282021704565b600160a060020a03811615156200014857600080fd5b6200015d82826401000000006200018d810204565b156200016857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001a557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610de380620001d56000396000f3006080604052600436106101275763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663162f986d811461012c5780631777fb4b1461014357806321b79d981461016c578063231d4e2a1461018157806329d10b6e146101a25780632e6b6849146101c357806334cdcf26146101e4578063363aa6c714610205578063427534a41461021a578063608d3d3d1461022f57806374be75921461025057806380258e471461027157806381a244591461029c57806399f4b251146102bd5780639e614ca0146102d2578063ada436e9146102e7578063b2a32cd514610308578063be9524941461031d578063c6846ef814610332578063d43acc7914610359578063da4086791461036e578063e9d6185914610383575b600080fd5b34801561013857600080fd5b50610141610398565b005b34801561014f57600080fd5b506101586103fe565b604080519115158252519081900360200190f35b34801561017857600080fd5b50610141610403565b34801561018d57600080fd5b50610141600160a060020a03600435166104a7565b3480156101ae57600080fd5b50610141600160a060020a0360043516610593565b3480156101cf57600080fd5b50610141600160a060020a03600435166105b0565b3480156101f057600080fd5b50610158600160a060020a03600435166105cd565b34801561021157600080fd5b506101416105e5565b34801561022657600080fd5b5061014161068e565b34801561023b57600080fd5b50610158600160a060020a03600435166106f1565b34801561025c57600080fd5b50610141600160a060020a0360043516610704565b34801561027d57600080fd5b50610286610721565b6040805160ff9092168252519081900360200190f35b3480156102a857600080fd5b50610158600160a060020a0360043516610730565b3480156102c957600080fd5b50610141610743565b3480156102de57600080fd5b50610141610915565b3480156102f357600080fd5b50610141600160a060020a036004351661096f565b34801561031457600080fd5b50610141610a05565b34801561032957600080fd5b50610141610b18565b34801561033e57600080fd5b50610347610b23565b60408051918252519081900360200190f35b34801561036557600080fd5b50610141610b29565b34801561037a57600080fd5b50610141610b32565b34801561038f57600080fd5b50610141610bbf565b6103a133610730565b15156103ac57600080fd5b600160045460a060020a900460ff1660038111156103c657fe5b146103d057600080fd5b600480546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550565b600190565b60035463010000009004600160a060020a0316331461042157600080fd5b600160045460a060020a900460ff16600381111561043b57fe5b1461044557600080fd5b6004547501000000000000000000000000000000000000000000900460ff161561046e57600080fd5b6004805475ff00000000000000000000000000000000000000000019167501000000000000000000000000000000000000000000179055565b6104b0336106f1565b15156104bb57600080fd5b600060045460a060020a900460ff1660038111156104d557fe5b146104df57600080fd5b60048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251610590928492600160a060020a0316916370a08231916024808201926020929091908290030181600087803b15801561054b57600080fd5b505af115801561055f573d6000803e3d6000fd5b505050506040513d602081101561057557600080fd5b5051600454600160a060020a0316919063ffffffff610bc816565b50565b61059c33610730565b15156105a757600080fd5b61059081610c80565b6105b9336106f1565b15156105c457600080fd5b61059081610c91565b60006105df818363ffffffff610ca216565b92915050565b6105ee33610730565b15156105f957600080fd5b600360045460a060020a900460ff16600381111561061357fe5b141561061e57600080fd5b6004805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001775ff000000000000000000000000000000000000000000191690556003805476ffffffffffffffffffffffffffffffffffffffff00000019169055565b61069733610730565b15156106a257600080fd5b600260045460a060020a900460ff1660038111156106bc57fe5b146106c657600080fd5b600480546001919074ff0000000000000000000000000000000000000000191660a060020a836103f7565b60006105df60018363ffffffff610ca216565b61070d336105cd565b151561071857600080fd5b61059081610cd9565b60035462010000900460ff1690565b60006105df60028363ffffffff610ca216565b600061074e336105cd565b151561075957600080fd5b600160045460a060020a900460ff16600381111561077357fe5b1461077d57600080fd5b6004547501000000000000000000000000000000000000000000900460ff1615156107a757600080fd5b60045460b860020a900461ffff16151561081d576004805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a1790556108e5565b60048054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e14156108e5576004805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600554600290046005555b5060055460035460045461016d9092049161059091600160a060020a039182169163010000009091041683610bc8565b61091e336106f1565b151561092957600080fd5b600060045460a060020a900460ff16600381111561094357fe5b141561094e57600080fd5b6004805475ffff000000000000000000000000000000000000000019169055565b61097833610730565b151561098357600080fd5b600360045460a060020a900460ff16600381111561099d57fe5b146109a757600080fd5b6004805474ff0000000000000000000000000000000000000000191660a060020a17905560038054600160a060020a039290921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b6000610a10336106f1565b1515610a1b57600080fd5b600060045460a060020a900460ff166003811115610a3557fe5b14610a3f57600080fd5b6005541515610af15760048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251600160a060020a03909116916370a082319160248083019260209291908290030181600087803b158015610aaf57600080fd5b505af1158015610ac3573d6000803e3d6000fd5b505050506040513d6020811015610ad957600080fd5b50519050801515610ae957600080fd5b600281046005555b506004805474ff0000000000000000000000000000000000000000191660a060020a179055565b610b2133610cea565b565b61016d81565b610b2133610cfb565b60035463010000009004600160a060020a03163314610b5057600080fd5b600160045460a060020a900460ff166003811115610b6a57fe5b14610b7457600080fd5b6004547501000000000000000000000000000000000000000000900460ff161515610b9e57600080fd5b6004805475ff00000000000000000000000000000000000000000019169055565b610b2133610d0c565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610c4457600080fd5b505af1158015610c58573d6000803e3d6000fd5b505050506040513d6020811015610c6e57600080fd5b50511515610c7b57600080fd5b505050565b61059060028263ffffffff610d1d16565b61059060018263ffffffff610d1d16565b6000600160a060020a0382161515610cb957600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61059060008263ffffffff610d1d16565b61059060028263ffffffff610d6b16565b61059060018263ffffffff610d6b16565b61059060008263ffffffff610d6b16565b600160a060020a0381161515610d3257600080fd5b610d3c8282610ca2565b15610d4657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610d8057600080fd5b610d8a8282610ca2565b1515610d9557600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820346733bed0f72b16c5bb967042b5930d38e536cc6adf26f0a2b6cc22aaa8069d0029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x80 DUP1 PUSH3 0xFB8 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 SWAP1 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD SWAP2 DUP4 ADD MLOAD PUSH1 0x60 SWAP1 SWAP4 ADD MLOAD SWAP1 SWAP3 SWAP1 PUSH3 0x4D CALLER PUSH5 0x100000000 PUSH3 0xDE DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x61 CALLER PUSH5 0x100000000 PUSH3 0xFC DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x75 CALLER PUSH5 0x100000000 PUSH3 0x117 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH2 0xFFFF SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR PUSH3 0xFF0000 NOT AND PUSH3 0x10000 PUSH1 0xFF SWAP5 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 MUL SWAP3 SWAP1 SWAP3 OR PUSH4 0x1000000 PUSH1 0xB8 PUSH1 0x2 EXP SUB NOT AND PUSH4 0x1000000 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP3 DUP4 AND MUL OR SWAP1 SWAP3 SSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH3 0x1C5 JUMP JUMPDEST PUSH3 0xF9 PUSH1 0x0 DUP3 PUSH5 0x100000000 PUSH3 0xD1D PUSH3 0x132 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0xF9 PUSH1 0x1 DUP3 PUSH5 0x100000000 PUSH3 0xD1D PUSH3 0x132 DUP3 MUL OR DIV JUMP JUMPDEST PUSH3 0xF9 PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH3 0xD1D PUSH3 0x132 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH3 0x148 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x15D DUP3 DUP3 PUSH5 0x100000000 PUSH3 0x18D DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH3 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x1A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xDE3 DUP1 PUSH3 0x1D5 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x127 JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x162F986D DUP2 EQ PUSH2 0x12C JUMPI DUP1 PUSH4 0x1777FB4B EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x21B79D98 EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x231D4E2A EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0x29D10B6E EQ PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x34CDCF26 EQ PUSH2 0x1E4 JUMPI DUP1 PUSH4 0x363AA6C7 EQ PUSH2 0x205 JUMPI DUP1 PUSH4 0x427534A4 EQ PUSH2 0x21A JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x22F JUMPI DUP1 PUSH4 0x74BE7592 EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0x80258E47 EQ PUSH2 0x271 JUMPI DUP1 PUSH4 0x81A24459 EQ PUSH2 0x29C JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x2BD JUMPI DUP1 PUSH4 0x9E614CA0 EQ PUSH2 0x2D2 JUMPI DUP1 PUSH4 0xADA436E9 EQ PUSH2 0x2E7 JUMPI DUP1 PUSH4 0xB2A32CD5 EQ PUSH2 0x308 JUMPI DUP1 PUSH4 0xBE952494 EQ PUSH2 0x31D JUMPI DUP1 PUSH4 0xC6846EF8 EQ PUSH2 0x332 JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x359 JUMPI DUP1 PUSH4 0xDA408679 EQ PUSH2 0x36E JUMPI DUP1 PUSH4 0xE9D61859 EQ PUSH2 0x383 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x138 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0x398 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x14F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x3FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0x403 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x4A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x593 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x5B0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x5CD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x211 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0x5E5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x226 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0x68E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x6F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x704 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x286 PUSH2 0x721 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x730 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0x743 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0x915 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x96F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0xA05 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x329 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0xB18 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x347 PUSH2 0xB23 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x365 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0xB29 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0xB32 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x38F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0xBBF JUMP JUMPDEST PUSH2 0x3A1 CALLER PUSH2 0x730 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x3AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3C6 JUMPI INVALID JUMPDEST EQ PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x2 SWAP2 SWAP1 PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 JUMPDEST MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0x421 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x43B JUMPI INVALID JUMPDEST EQ PUSH2 0x445 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x46E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND PUSH22 0x1000000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x4B0 CALLER PUSH2 0x6F1 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x4BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4D5 JUMPI INVALID JUMPDEST EQ PUSH2 0x4DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x590 SWAP3 DUP5 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x54B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x55F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x575 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xBC8 AND JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x59C CALLER PUSH2 0x730 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x5A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x590 DUP2 PUSH2 0xC80 JUMP JUMPDEST PUSH2 0x5B9 CALLER PUSH2 0x6F1 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x5C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x590 DUP2 PUSH2 0xC91 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DF DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xCA2 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x5EE CALLER PUSH2 0x730 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x5F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x613 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x61E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH21 0x30000000000000000000000000000000000000000 OR PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH23 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x697 CALLER PUSH2 0x730 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x6A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x6BC JUMPI INVALID JUMPDEST EQ PUSH2 0x6C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 SWAP2 SWAP1 PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 PUSH2 0x3F7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DF PUSH1 0x1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xCA2 AND JUMP JUMPDEST PUSH2 0x70D CALLER PUSH2 0x5CD JUMP JUMPDEST ISZERO ISZERO PUSH2 0x718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x590 DUP2 PUSH2 0xCD9 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DF PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xCA2 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x74E CALLER PUSH2 0x5CD JUMP JUMPDEST ISZERO ISZERO PUSH2 0x759 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x773 JUMPI INVALID JUMPDEST EQ PUSH2 0x77D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0x7A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH2 0xFFFF AND ISZERO ISZERO PUSH2 0x81D JUMPI PUSH1 0x4 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP2 AND PUSH23 0x100000000000000000000000000000000000000000000 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH2 0x8E5 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH2 0xFFFF PUSH1 0xB8 PUSH1 0x2 EXP DUP1 DUP5 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD DUP2 AND DUP3 MUL PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE SWAP1 SWAP2 DIV AND PUSH2 0x16E EQ ISZERO PUSH2 0x8E5 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH1 0x1 PUSH1 0xFF PUSH23 0x100000000000000000000000000000000000000000000 DUP1 DUP6 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD AND MUL PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH1 0x5 SLOAD PUSH1 0x2 SWAP1 DIV PUSH1 0x5 SSTORE JUMPDEST POP PUSH1 0x5 SLOAD PUSH1 0x3 SLOAD PUSH1 0x4 SLOAD PUSH2 0x16D SWAP1 SWAP3 DIV SWAP2 PUSH2 0x590 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 PUSH4 0x1000000 SWAP1 SWAP2 DIV AND DUP4 PUSH2 0xBC8 JUMP JUMPDEST PUSH2 0x91E CALLER PUSH2 0x6F1 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x929 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x943 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x94E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH22 0xFFFF0000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x978 CALLER PUSH2 0x730 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x983 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x99D JUMPI INVALID JUMPDEST EQ PUSH2 0x9A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP3 SWAP1 SWAP3 AND PUSH4 0x1000000 MUL PUSH23 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA10 CALLER PUSH2 0x6F1 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xA1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA35 JUMPI INVALID JUMPDEST EQ PUSH2 0xA3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD ISZERO ISZERO PUSH2 0xAF1 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAC3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO ISZERO PUSH2 0xAE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 DUP2 DIV PUSH1 0x5 SSTORE JUMPDEST POP PUSH1 0x4 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xB21 CALLER PUSH2 0xCEA JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x16D DUP2 JUMP JUMPDEST PUSH2 0xB21 CALLER PUSH2 0xCFB JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0xB50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xB6A JUMPI INVALID JUMPDEST EQ PUSH2 0xB74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0xB9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xB21 CALLER PUSH2 0xD0C JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC58 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xC7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x590 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD1D AND JUMP JUMPDEST PUSH2 0x590 PUSH1 0x1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD1D AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xCB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x590 PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD1D AND JUMP JUMPDEST PUSH2 0x590 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD6B AND JUMP JUMPDEST PUSH2 0x590 PUSH1 0x1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD6B AND JUMP JUMPDEST PUSH2 0x590 PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD6B AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xD32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD3C DUP3 DUP3 PUSH2 0xCA2 JUMP JUMPDEST ISZERO PUSH2 0xD46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xD80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD8A DUP3 DUP3 PUSH2 0xCA2 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xD95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 CALLVALUE PUSH8 0x33BED0F72B16C5BB SWAP7 PUSH17 0x42B5930D38E536CC6ADF26F0A2B6CC22AA 0xa8 MOD SWAP14 STOP 0x29 ", + "sourceMap": "558:3657:1:-;;;1139:336;8:9:-1;5:2;;;30:1;27;20:12;5:2;1139:336:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;364:22:3;375:10;364;;;;:22;:::i;:::-;368:24:0;381:10;368:12;;;;:24;:::i;:::-;366:26:2;381:10;366:14;;;;:26;:::i;:::-;1342:10:1;:22;;-1:-1:-1;;1342:22:1;;;;;;;;;;-1:-1:-1;;1375:20:1;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1406:21:1;;-1:-1:-1;;;;;1406:21:1;;;;;;;;1438:6;:29;;-1:-1:-1;;;;;;1438:29:1;;;;;;;;558:3657;;800:92:3;857:27;:14;876:7;857:18;;;;;;:27;:::i;:::-;800:92;:::o;824:96:0:-;883:29;:16;904:7;883:20;;;;;;:29;:::i;836:94:2:-;897:25;:12;914:7;897:16;;;;;;:25;:::i;244:167:5:-;-1:-1:-1;;;;;316:21:5;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:5;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:5;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:5;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:5;:11;:20;;;;;;;;;;;;;;;725:166::o;558:3657:1:-;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "711000", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "DAYS_PER_YEAR()": "580", + "activateMiner()": "infinite", + "addCoreTeam(address)": "infinite", + "addSupervisor(address)": "infinite", + "addSystem(address)": "infinite", + "deactivateMiner()": "infinite", + "getCategory()": "652", + "isAlgoMiner()": "212", + "isCoreTeam(address)": "infinite", + "isSupervisor(address)": "infinite", + "isSystem(address)": "infinite", + "migrateMiner(address)": "infinite", + "mine()": "infinite", + "pauseMining()": "infinite", + "renounceCoreTeam()": "infinite", + "renounceSupervisor()": "infinite", + "renounceSystem()": "infinite", + "resetMiner(address)": "infinite", + "resumeMining()": "infinite", + "startMining()": "21272", + "stopAndRemoveOwnership()": "infinite", + "stopMining()": "21665" + } + }, + "methodIdentifiers": { + "DAYS_PER_YEAR()": "c6846ef8", + "activateMiner()": "b2a32cd5", + "addCoreTeam(address)": "2e6b6849", + "addSupervisor(address)": "29d10b6e", + "addSystem(address)": "74be7592", + "deactivateMiner()": "9e614ca0", + "getCategory()": "80258e47", + "isAlgoMiner()": "1777fb4b", + "isCoreTeam(address)": "608d3d3d", + "isSupervisor(address)": "81a24459", + "isSystem(address)": "34cdcf26", + "migrateMiner(address)": "231d4e2a", + "mine()": "99f4b251", + "pauseMining()": "162f986d", + "renounceCoreTeam()": "d43acc79", + "renounceSupervisor()": "be952494", + "renounceSystem()": "e9d61859", + "resetMiner(address)": "ada436e9", + "resumeMining()": "427534a4", + "startMining()": "21b79d98", + "stopAndRemoveOwnership()": "363aa6c7", + "stopMining()": "da408679" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"pauseMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isAlgoMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"startMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newMinerAddress\",\"type\":\"address\"}],\"name\":\"migrateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSystem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopAndRemoveOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"resumeMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCategory\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSupervisor\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"deactivateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwnerAddress\",\"type\":\"address\"}],\"name\":\"resetMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"activateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DAYS_PER_YEAR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"minerType\",\"type\":\"uint16\"},{\"name\":\"category\",\"type\":\"uint8\"},{\"name\":\"ownerAddress\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":\"AlgoMiner\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":{\"keccak256\":\"0xe5a1ae438e7d54f613a381816bda4959884722adfbf3976f99b7d7d35b5377c3\",\"urls\":[\"bzzr://e96b24515fcb5324ccbabb61424fbc290ace1636afa28f479a1e666bb06abc42\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol\":{\"keccak256\":\"0x20955eaf60f79f885c941d97e208320c9e0bc1f05b8121342f8187f9a39fd46b\",\"urls\":[\"bzzr://8e30e53aa0322307873f8c0a4fc3c58b7562a0fde92a0921a52bdef4e129ec4b\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol\":{\"keccak256\":\"0x6fffe504e6805d95ca42269cc995a3de9401a12bc037068b056c186ce8569d8d\",\"urls\":[\"bzzr://a0923a2d2b1e4992f552ce49638b19d6d8328950c1d5dc1395f0d625daf21c68\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0xb457e39e512b5475c3e70193ab0a751f6626a50417954247f0cf47c7ca15eff7\",\"urls\":[\"bzzr://3b585a4055121fee393f2b691538036c87f56556f43f0b6e851a88de7b8275e6\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol": { + "AlgoSupervisorRole": { + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addSupervisor", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isSupervisor", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceSupervisor", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "addSupervisor(address)": "29d10b6e", + "isSupervisor(address)": "81a24459", + "renounceSupervisor()": "be952494" + } + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol": { + "AlgoSystemRole": { + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isSystem", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addSystem", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceSystem", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "addSystem(address)": "74be7592", + "isSystem(address)": "34cdcf26", + "renounceSystem()": "e9d61859" + } + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol": { + "IAlgoMiner": { + "abi": [ + { + "constant": true, + "inputs": [], + "name": "isAlgoMiner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getCategory", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "getCategory()": "80258e47", + "isAlgoMiner()": "1777fb4b" + } + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { + "Roles": { + "abi": [], + "devdoc": { + "methods": {}, + "title": "Roles" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820ba9d82b11504517181f938ed511f09c0a22046ef39e2e32460a2175b508e16a80029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xba SWAP14 DUP3 0xb1 ISZERO DIV MLOAD PUSH18 0x81F938ED511F09C0A22046EF39E2E32460A2 OR JUMPDEST POP DUP15 AND 0xa8 STOP 0x29 ", + "sourceMap": "109:784:5:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "15200", + "executionCost": "116", + "totalCost": "15316" + }, + "internal": { + "add(struct Roles.Role storage pointer,address)": "infinite", + "has(struct Roles.Role storage pointer,address)": "infinite", + "remove(struct Roles.Role storage pointer,address)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"Roles\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":\"Roles\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { + "SafeMath": { + "abi": [], + "devdoc": { + "methods": {}, + "title": "SafeMath" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820da2bd0dd3588878574232c2d13f92e16f4b0e8ad94ede9adb0d087f862d4f8cf0029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xda 0x2b 0xd0 0xdd CALLDATALOAD DUP9 DUP8 DUP6 PUSH21 0x232C2D13F92E16F4B0E8AD94EDE9ADB0D087F862D4 0xf8 0xcf STOP 0x29 ", + "sourceMap": "117:1531:6:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "15200", + "executionCost": "116", + "totalCost": "15316" + }, + "internal": { + "add(uint256,uint256)": "infinite", + "div(uint256,uint256)": "infinite", + "mod(uint256,uint256)": "infinite", + "mul(uint256,uint256)": "infinite", + "sub(uint256,uint256)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"SafeMath\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol": { + "IERC20": { + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "who", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + } + ], + "devdoc": { + "methods": {}, + "title": "ERC20 interface" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol": { + "SafeERC20": { + "abi": [], + "devdoc": { + "methods": {}, + "title": "SafeERC20" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820c0f55d8db2bd761049fa5ba6b6c207a4d595b758946aba3715580373517606710029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xc0 0xf5 0x5d DUP14 0xb2 0xbd PUSH23 0x1049FA5BA6B6C207A4D595B758946ABA37155803735176 MOD PUSH18 0x2900000000000000000000000000000000 ", + "sourceMap": "353:1296:8:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "15200", + "executionCost": "116", + "totalCost": "15316" + }, + "internal": { + "safeApprove(contract IERC20,address,uint256)": "infinite", + "safeDecreaseAllowance(contract IERC20,address,uint256)": "infinite", + "safeIncreaseAllowance(contract IERC20,address,uint256)": "infinite", + "safeTransfer(contract IERC20,address,uint256)": "infinite", + "safeTransferFrom(contract IERC20,address,address,uint256)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"SafeERC20\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + } + }, + "sources": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol", + "exportedSymbols": { + "AlgoCoreTeamRole": [ + 86 + ] + }, + "id": 87, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:0" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "id": 2, + "nodeType": "ImportDirective", + "scope": 87, + "sourceUnit": 769, + "src": "28:189:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 86, + "linearizedBaseContracts": [ + 86 + ], + "name": "AlgoCoreTeamRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 5, + "libraryName": { + "contractScope": null, + "id": 3, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 768, + "src": "260:5:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$768", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "254:27:0", + "typeName": { + "contractScope": null, + "id": 4, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 681, + "src": "270:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "constant": false, + "id": 7, + "name": "_coreTeamMembers", + "nodeType": "VariableDeclaration", + "scope": 86, + "src": "289:35:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$681_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 6, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 681, + "src": "289:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 15, + "nodeType": "Block", + "src": "357:43:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1124, + "src": "381:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 12, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "381:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10, + "name": "_addCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "368:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 13, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "368:24:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14, + "nodeType": "ExpressionStatement", + "src": "368:24:0" + } + ] + }, + "documentation": null, + "id": 16, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8, + "nodeType": "ParameterList", + "parameters": [], + "src": "345:2:0" + }, + "payable": false, + "returnParameters": { + "id": 9, + "nodeType": "ParameterList", + "parameters": [], + "src": "357:0:0" + }, + "scope": 86, + "src": "333:67:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 26, + "nodeType": "Block", + "src": "432:62:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 20, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1124, + "src": "462:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 21, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "462:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 19, + "name": "isCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "451:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 22, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "451:22:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 18, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "443:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 23, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "443:31:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 24, + "nodeType": "ExpressionStatement", + "src": "443:31:0" + }, + { + "id": 25, + "nodeType": "PlaceholderStatement", + "src": "485:1:0" + } + ] + }, + "documentation": null, + "id": 27, + "name": "onlyCoreTeam", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 17, + "nodeType": "ParameterList", + "parameters": [], + "src": "429:2:0" + }, + "src": "408:86:0", + "visibility": "internal" + }, + { + "body": { + "id": 39, + "nodeType": "Block", + "src": "566:55:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 36, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 29, + "src": "605:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 34, + "name": "_coreTeamMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "584:16:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$681_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 35, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 767, + "src": "584:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$681_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 37, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "584:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 33, + "id": 38, + "nodeType": "Return", + "src": "577:36:0" + } + ] + }, + "documentation": null, + "id": 40, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 30, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 29, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 40, + "src": "522:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 28, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "522:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "521:17:0" + }, + "payable": false, + "returnParameters": { + "id": 33, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 32, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 40, + "src": "560:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 31, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "560:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "559:6:0" + }, + "scope": 86, + "src": "502:119:0", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 51, + "nodeType": "Block", + "src": "687:40:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 48, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "711:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 47, + "name": "_addCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "698:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 49, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "698:21:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 50, + "nodeType": "ExpressionStatement", + "src": "698:21:0" + } + ] + }, + "documentation": null, + "id": 52, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 45, + "modifierName": { + "argumentTypes": null, + "id": 44, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "674:12:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "674:12:0" + } + ], + "name": "addCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 42, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 52, + "src": "650:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 41, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "650:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "649:17:0" + }, + "payable": false, + "returnParameters": { + "id": 46, + "nodeType": "ParameterList", + "parameters": [], + "src": "687:0:0" + }, + "scope": 86, + "src": "629:98:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 60, + "nodeType": "Block", + "src": "770:46:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 56, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1124, + "src": "797:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 57, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "797:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 55, + "name": "_removeCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "781:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 58, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "781:27:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 59, + "nodeType": "ExpressionStatement", + "src": "781:27:0" + } + ] + }, + "documentation": null, + "id": 61, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "renounceCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 53, + "nodeType": "ParameterList", + "parameters": [], + "src": "760:2:0" + }, + "payable": false, + "returnParameters": { + "id": 54, + "nodeType": "ParameterList", + "parameters": [], + "src": "770:0:0" + }, + "scope": 86, + "src": "735:81:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 72, + "nodeType": "Block", + "src": "872:48:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 69, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 63, + "src": "904:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 66, + "name": "_coreTeamMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "883:16:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$681_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 68, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 713, + "src": "883:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$681_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 70, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "883:29:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 71, + "nodeType": "ExpressionStatement", + "src": "883:29:0" + } + ] + }, + "documentation": null, + "id": 73, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_addCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 64, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 63, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 73, + "src": "846:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 62, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "846:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "845:17:0" + }, + "payable": false, + "returnParameters": { + "id": 65, + "nodeType": "ParameterList", + "parameters": [], + "src": "872:0:0" + }, + "scope": 86, + "src": "824:96:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 84, + "nodeType": "Block", + "src": "979:51:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 81, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 75, + "src": "1014:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 78, + "name": "_coreTeamMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "990:16:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$681_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 80, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 744, + "src": "990:23:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$681_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 82, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "990:32:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 83, + "nodeType": "ExpressionStatement", + "src": "990:32:0" + } + ] + }, + "documentation": null, + "id": 85, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_removeCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 76, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 75, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 85, + "src": "953:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 74, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "953:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "952:17:0" + }, + "payable": false, + "returnParameters": { + "id": 77, + "nodeType": "ParameterList", + "parameters": [], + "src": "979:0:0" + }, + "scope": 86, + "src": "928:102:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 87, + "src": "221:812:0" + } + ], + "src": "0:1035:0" + }, + "id": 0 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol", + "exportedSymbols": { + "AlgoMiner": [ + 487 + ] + }, + "id": 488, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 88, + "literals": [ + "solidity", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:23:1" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "id": 89, + "nodeType": "ImportDirective", + "scope": 488, + "sourceUnit": 966, + "src": "27:195:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "id": 90, + "nodeType": "ImportDirective", + "scope": 488, + "sourceUnit": 1110, + "src": "224:198:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", + "file": "./IAlgoMiner.sol", + "id": 91, + "nodeType": "ImportDirective", + "scope": 488, + "sourceUnit": 675, + "src": "426:26:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol", + "file": "./AlgoSystemRole.sol", + "id": 92, + "nodeType": "ImportDirective", + "scope": 488, + "sourceUnit": 662, + "src": "454:30:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol", + "file": "./AlgoCoreTeamRole.sol", + "id": 93, + "nodeType": "ImportDirective", + "scope": 488, + "sourceUnit": 87, + "src": "486:32:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol", + "file": "./AlgoSupervisorRole.sol", + "id": 94, + "nodeType": "ImportDirective", + "scope": 488, + "sourceUnit": 575, + "src": "520:34:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 95, + "name": "AlgoSystemRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 661, + "src": "580:14:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AlgoSystemRole_$661", + "typeString": "contract AlgoSystemRole" + } + }, + "id": 96, + "nodeType": "InheritanceSpecifier", + "src": "580:14:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 97, + "name": "AlgoCoreTeamRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 86, + "src": "596:16:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AlgoCoreTeamRole_$86", + "typeString": "contract AlgoCoreTeamRole" + } + }, + "id": 98, + "nodeType": "InheritanceSpecifier", + "src": "596:16:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 99, + "name": "AlgoSupervisorRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 574, + "src": "614:18:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AlgoSupervisorRole_$574", + "typeString": "contract AlgoSupervisorRole" + } + }, + "id": 100, + "nodeType": "InheritanceSpecifier", + "src": "614:18:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 101, + "name": "IAlgoMiner", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 674, + "src": "634:10:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$674", + "typeString": "contract IAlgoMiner" + } + }, + "id": 102, + "nodeType": "InheritanceSpecifier", + "src": "634:10:1" + } + ], + "contractDependencies": [ + 86, + 574, + 661, + 674 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 487, + "linearizedBaseContracts": [ + 487, + 674, + 574, + 86, + 661 + ], + "name": "AlgoMiner", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 105, + "libraryName": { + "contractScope": null, + "id": 103, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1109, + "src": "658:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$1109", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "652:27:1", + "typeName": { + "contractScope": null, + "id": 104, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 965, + "src": "672:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$965", + "typeString": "contract IERC20" + } + } + }, + { + "constant": true, + "id": 108, + "name": "DAYS_PER_YEAR", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "687:43:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 106, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "687:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "333635", + "id": 107, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "727:3:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_365_by_1", + "typeString": "int_const 365" + }, + "value": "365" + }, + "visibility": "public" + }, + { + "canonicalName": "AlgoMiner.MinerState", + "id": 113, + "members": [ + { + "id": 109, + "name": "Deactivated", + "nodeType": "EnumValue", + "src": "766:11:1" + }, + { + "id": 110, + "name": "Activated", + "nodeType": "EnumValue", + "src": "788:9:1" + }, + { + "id": 111, + "name": "Suspended", + "nodeType": "EnumValue", + "src": "808:9:1" + }, + { + "id": 112, + "name": "Stopped", + "nodeType": "EnumValue", + "src": "828:7:1" + } + ], + "name": "MinerState", + "nodeType": "EnumDefinition", + "src": "739:103:1" + }, + { + "constant": false, + "id": 115, + "name": "_minerType", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "850:25:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 114, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "850:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 117, + "name": "_category", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "882:23:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 116, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "882:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 119, + "name": "_miner", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "912:22:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 118, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "912:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 121, + "name": "_token", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "941:21:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$965", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 120, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 965, + "src": "941:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$965", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 123, + "name": "_state", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "971:25:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + }, + "typeName": { + "contractScope": null, + "id": 122, + "name": "MinerState", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 113, + "src": "971:10:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 125, + "name": "_mining", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "1003:20:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 124, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1003:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 127, + "name": "_currentYear", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "1030:26:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 126, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1030:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 129, + "name": "_currentDay", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "1063:26:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 128, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1063:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 131, + "name": "_currentYearSupply", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "1096:34:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 130, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1096:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 166, + "nodeType": "Block", + "src": "1329:146:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 148, + "name": "_minerType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 115, + "src": "1342:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 149, + "name": "minerType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 133, + "src": "1355:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "1342:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 151, + "nodeType": "ExpressionStatement", + "src": "1342:22:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 152, + "name": "_category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 117, + "src": "1375:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 153, + "name": "category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 135, + "src": "1387:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "1375:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 155, + "nodeType": "ExpressionStatement", + "src": "1375:20:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 158, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 156, + "name": "_miner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "1406:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 157, + "name": "ownerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 137, + "src": "1415:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1406:21:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 159, + "nodeType": "ExpressionStatement", + "src": "1406:21:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 160, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 121, + "src": "1438:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$965", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 162, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 139, + "src": "1454:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 161, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 965, + "src": "1447:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$965_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1447:20:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$965", + "typeString": "contract IERC20" + } + }, + "src": "1438:29:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$965", + "typeString": "contract IERC20" + } + }, + "id": 165, + "nodeType": "ExpressionStatement", + "src": "1438:29:1" + } + ] + }, + "documentation": null, + "id": 167, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 142, + "modifierName": { + "argumentTypes": null, + "id": 141, + "name": "AlgoSystemRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 661, + "src": "1238:14:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_AlgoSystemRole_$661_$", + "typeString": "type(contract AlgoSystemRole)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1238:16:1" + }, + { + "arguments": [], + "id": 144, + "modifierName": { + "argumentTypes": null, + "id": 143, + "name": "AlgoCoreTeamRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 86, + "src": "1264:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_AlgoCoreTeamRole_$86_$", + "typeString": "type(contract AlgoCoreTeamRole)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1264:18:1" + }, + { + "arguments": [], + "id": 146, + "modifierName": { + "argumentTypes": null, + "id": 145, + "name": "AlgoSupervisorRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 574, + "src": "1292:18:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_AlgoSupervisorRole_$574_$", + "typeString": "type(contract AlgoSupervisorRole)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1292:20:1" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 140, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 133, + "name": "minerType", + "nodeType": "VariableDeclaration", + "scope": 167, + "src": "1151:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 132, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1151:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 135, + "name": "category", + "nodeType": "VariableDeclaration", + "scope": 167, + "src": "1169:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 134, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1169:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 137, + "name": "ownerAddress", + "nodeType": "VariableDeclaration", + "scope": 167, + "src": "1185:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 136, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1185:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 139, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 167, + "src": "1207:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 138, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1207:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1150:78:1" + }, + "payable": false, + "returnParameters": { + "id": 147, + "nodeType": "ParameterList", + "parameters": [], + "src": "1329:0:1" + }, + "scope": 487, + "src": "1139:336:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 177, + "nodeType": "Block", + "src": "1504:60:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 170, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1124, + "src": "1523:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1523:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 172, + "name": "_miner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "1537:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1523:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 169, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "1515:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1515:29:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 175, + "nodeType": "ExpressionStatement", + "src": "1515:29:1" + }, + { + "id": 176, + "nodeType": "PlaceholderStatement", + "src": "1555:1:1" + } + ] + }, + "documentation": null, + "id": 178, + "name": "onlyMiner", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 168, + "nodeType": "ParameterList", + "parameters": [], + "src": "1501:2:1" + }, + "src": "1483:81:1", + "visibility": "internal" + }, + { + "body": { + "id": 221, + "nodeType": "Block", + "src": "1621:326:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + }, + "id": 187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 184, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "1640:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 185, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "1650:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 186, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Deactivated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1650:22:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "1640:32:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 183, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "1632:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1632:41:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 189, + "nodeType": "ExpressionStatement", + "src": "1632:41:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 190, + "name": "_currentYearSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 131, + "src": "1689:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 191, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1711:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1689:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 215, + "nodeType": "IfStatement", + "src": "1686:212:1", + "trueBody": { + "id": 214, + "nodeType": "Block", + "src": "1714:184:1", + "statements": [ + { + "assignments": [ + 194 + ], + "declarations": [ + { + "constant": false, + "id": 194, + "name": "currentBalance", + "nodeType": "VariableDeclaration", + "scope": 222, + "src": "1729:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 193, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1729:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 201, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 198, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1153, + "src": "1779:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AlgoMiner_$487", + "typeString": "contract AlgoMiner" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_AlgoMiner_$487", + "typeString": "contract AlgoMiner" + } + ], + "id": 197, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1771:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1771:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 195, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 121, + "src": "1754:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$965", + "typeString": "contract IERC20" + } + }, + "id": 196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 910, + "src": "1754:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1754:31:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1729:56:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 203, + "name": "currentBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 194, + "src": "1810:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 204, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1828:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1810:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 202, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "1802:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1802:28:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 207, + "nodeType": "ExpressionStatement", + "src": "1802:28:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 208, + "name": "_currentYearSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 131, + "src": "1847:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 209, + "name": "currentBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 194, + "src": "1868:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 210, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1885:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "1868:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1847:39:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 213, + "nodeType": "ExpressionStatement", + "src": "1847:39:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 216, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "1910:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 217, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "1919:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 218, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Activated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1919:20:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "1910:29:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "id": 220, + "nodeType": "ExpressionStatement", + "src": "1910:29:1" + } + ] + }, + "documentation": null, + "id": 222, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 181, + "modifierName": { + "argumentTypes": null, + "id": 180, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "1608:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1608:12:1" + } + ], + "name": "activateMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 179, + "nodeType": "ParameterList", + "parameters": [], + "src": "1598:2:1" + }, + "payable": false, + "returnParameters": { + "id": 182, + "nodeType": "ParameterList", + "parameters": [], + "src": "1621:0:1" + }, + "scope": 487, + "src": "1576:371:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 243, + "nodeType": "Block", + "src": "2002:138:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + }, + "id": 231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 228, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2021:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 229, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "2031:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 230, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Deactivated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2031:22:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "2021:32:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 227, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "2013:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2013:41:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 233, + "nodeType": "ExpressionStatement", + "src": "2013:41:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 234, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2075:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 235, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "2084:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 236, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Deactivated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2084:22:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "2075:31:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "id": 238, + "nodeType": "ExpressionStatement", + "src": "2075:31:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 241, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 239, + "name": "_mining", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125, + "src": "2117:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 240, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2127:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "2117:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 242, + "nodeType": "ExpressionStatement", + "src": "2117:15:1" + } + ] + }, + "documentation": null, + "id": 244, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 225, + "modifierName": { + "argumentTypes": null, + "id": 224, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "1989:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1989:12:1" + } + ], + "name": "deactivateMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 223, + "nodeType": "ParameterList", + "parameters": [], + "src": "1979:2:1" + }, + "payable": false, + "returnParameters": { + "id": 226, + "nodeType": "ParameterList", + "parameters": [], + "src": "2002:0:1" + }, + "scope": 487, + "src": "1955:185:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 270, + "nodeType": "Block", + "src": "2215:142:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + }, + "id": 255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 252, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2234:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 253, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "2244:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 254, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Deactivated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2244:22:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "2234:32:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 251, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "2226:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 256, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2226:41:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 257, + "nodeType": "ExpressionStatement", + "src": "2226:41:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 261, + "name": "newMinerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 246, + "src": "2300:15:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 265, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1153, + "src": "2342:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AlgoMiner_$487", + "typeString": "contract AlgoMiner" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_AlgoMiner_$487", + "typeString": "contract AlgoMiner" + } + ], + "id": 264, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2334:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2334:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 262, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 121, + "src": "2317:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$965", + "typeString": "contract IERC20" + } + }, + "id": 263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 910, + "src": "2317:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2317:31:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 258, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 121, + "src": "2280:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$965", + "typeString": "contract IERC20" + } + }, + "id": 260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 990, + "src": "2280:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$965_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$965_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2280:69:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 269, + "nodeType": "ExpressionStatement", + "src": "2280:69:1" + } + ] + }, + "documentation": null, + "id": 271, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 249, + "modifierName": { + "argumentTypes": null, + "id": 248, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "2202:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2202:12:1" + } + ], + "name": "migrateMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 247, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 246, + "name": "newMinerAddress", + "nodeType": "VariableDeclaration", + "scope": 271, + "src": "2170:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 245, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2170:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2169:25:1" + }, + "payable": false, + "returnParameters": { + "id": 250, + "nodeType": "ParameterList", + "parameters": [], + "src": "2215:0:1" + }, + "scope": 487, + "src": "2148:209:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 288, + "nodeType": "Block", + "src": "2410:108:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + }, + "id": 280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 277, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2429:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 278, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "2439:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 279, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Activated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2439:20:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "2429:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 276, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "2421:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2421:39:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 282, + "nodeType": "ExpressionStatement", + "src": "2421:39:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 283, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2481:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 284, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "2490:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 285, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Suspended", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2490:20:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "2481:29:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "id": 287, + "nodeType": "ExpressionStatement", + "src": "2481:29:1" + } + ] + }, + "documentation": null, + "id": 289, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 274, + "modifierName": { + "argumentTypes": null, + "id": 273, + "name": "onlySupervisor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 515, + "src": "2395:14:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2395:14:1" + } + ], + "name": "pauseMining", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 272, + "nodeType": "ParameterList", + "parameters": [], + "src": "2385:2:1" + }, + "payable": false, + "returnParameters": { + "id": 275, + "nodeType": "ParameterList", + "parameters": [], + "src": "2410:0:1" + }, + "scope": 487, + "src": "2365:153:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 306, + "nodeType": "Block", + "src": "2572:100:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + }, + "id": 298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 295, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2591:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 296, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "2601:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 297, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Suspended", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2601:20:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "2591:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 294, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "2583:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 299, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2583:39:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 300, + "nodeType": "ExpressionStatement", + "src": "2583:39:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 301, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2635:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 302, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "2644:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 303, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Activated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2644:20:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "2635:29:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "id": 305, + "nodeType": "ExpressionStatement", + "src": "2635:29:1" + } + ] + }, + "documentation": null, + "id": 307, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 292, + "modifierName": { + "argumentTypes": null, + "id": 291, + "name": "onlySupervisor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 515, + "src": "2557:14:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2557:14:1" + } + ], + "name": "resumeMining", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 290, + "nodeType": "ParameterList", + "parameters": [], + "src": "2547:2:1" + }, + "payable": false, + "returnParameters": { + "id": 293, + "nodeType": "ParameterList", + "parameters": [], + "src": "2572:0:1" + }, + "scope": 487, + "src": "2526:146:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 334, + "nodeType": "Block", + "src": "2736:160:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + }, + "id": 316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 313, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2755:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 314, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "2765:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 315, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Stopped", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2765:18:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "2755:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 312, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "2747:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 317, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2747:37:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 318, + "nodeType": "ExpressionStatement", + "src": "2747:37:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 319, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2805:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 320, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "2814:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 321, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Stopped", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2814:18:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "2805:27:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "id": 323, + "nodeType": "ExpressionStatement", + "src": "2805:27:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 324, + "name": "_mining", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125, + "src": "2843:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 325, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2853:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "2843:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 327, + "nodeType": "ExpressionStatement", + "src": "2843:15:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 328, + "name": "_miner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "2869:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 330, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2886:1:1", + "subdenomination": null, + "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": 329, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2878:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 331, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2878:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2869:19:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 333, + "nodeType": "ExpressionStatement", + "src": "2869:19:1" + } + ] + }, + "documentation": null, + "id": 335, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 310, + "modifierName": { + "argumentTypes": null, + "id": 309, + "name": "onlySupervisor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 515, + "src": "2721:14:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2721:14:1" + } + ], + "name": "stopAndRemoveOwnership", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 308, + "nodeType": "ParameterList", + "parameters": [], + "src": "2711:2:1" + }, + "payable": false, + "returnParameters": { + "id": 311, + "nodeType": "ParameterList", + "parameters": [], + "src": "2736:0:1" + }, + "scope": 487, + "src": "2680:216:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 358, + "nodeType": "Block", + "src": "2971:133:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + }, + "id": 346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 343, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2990:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 344, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "3000:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 345, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Stopped", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3000:18:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "2990:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 342, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "2982:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2982:37:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 348, + "nodeType": "ExpressionStatement", + "src": "2982:37:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 349, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "3032:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 350, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "3041:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 351, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Activated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3041:20:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "3032:29:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "id": 353, + "nodeType": "ExpressionStatement", + "src": "3032:29:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 354, + "name": "_miner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "3072:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 355, + "name": "newOwnerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 337, + "src": "3081:15:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3072:24:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 357, + "nodeType": "ExpressionStatement", + "src": "3072:24:1" + } + ] + }, + "documentation": null, + "id": 359, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 340, + "modifierName": { + "argumentTypes": null, + "id": 339, + "name": "onlySupervisor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 515, + "src": "2956:14:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2956:14:1" + } + ], + "name": "resetMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 338, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 337, + "name": "newOwnerAddress", + "nodeType": "VariableDeclaration", + "scope": 359, + "src": "2924:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 336, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2924:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2923:25:1" + }, + "payable": false, + "returnParameters": { + "id": 341, + "nodeType": "ParameterList", + "parameters": [], + "src": "2971:0:1" + }, + "scope": 487, + "src": "2904:200:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 380, + "nodeType": "Block", + "src": "3152:121:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + }, + "id": 368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 365, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "3171:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 366, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "3181:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 367, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Activated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3181:20:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "3171:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 364, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "3163:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 369, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3163:39:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 370, + "nodeType": "ExpressionStatement", + "src": "3163:39:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "3221:8:1", + "subExpression": { + "argumentTypes": null, + "id": 372, + "name": "_mining", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125, + "src": "3222:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 371, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "3213:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3213:17:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 375, + "nodeType": "ExpressionStatement", + "src": "3213:17:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 376, + "name": "_mining", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125, + "src": "3251:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 377, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3261:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "3251:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 379, + "nodeType": "ExpressionStatement", + "src": "3251:14:1" + } + ] + }, + "documentation": null, + "id": 381, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 362, + "modifierName": { + "argumentTypes": null, + "id": 361, + "name": "onlyMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 178, + "src": "3142:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3142:9:1" + } + ], + "name": "startMining", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 360, + "nodeType": "ParameterList", + "parameters": [], + "src": "3132:2:1" + }, + "payable": false, + "returnParameters": { + "id": 363, + "nodeType": "ParameterList", + "parameters": [], + "src": "3152:0:1" + }, + "scope": 487, + "src": "3112:161:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 401, + "nodeType": "Block", + "src": "3320:121:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + }, + "id": 390, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 387, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "3339:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 388, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "3349:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 389, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Activated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3349:20:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "3339:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 386, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "3331:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 391, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3331:39:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 392, + "nodeType": "ExpressionStatement", + "src": "3331:39:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 394, + "name": "_mining", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125, + "src": "3389:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 393, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "3381:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3381:16:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 396, + "nodeType": "ExpressionStatement", + "src": "3381:16:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 397, + "name": "_mining", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125, + "src": "3418:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 398, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3428:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "3418:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 400, + "nodeType": "ExpressionStatement", + "src": "3418:15:1" + } + ] + }, + "documentation": null, + "id": 402, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 384, + "modifierName": { + "argumentTypes": null, + "id": 383, + "name": "onlyMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 178, + "src": "3310:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3310:9:1" + } + ], + "name": "stopMining", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 382, + "nodeType": "ParameterList", + "parameters": [], + "src": "3300:2:1" + }, + "payable": false, + "returnParameters": { + "id": 385, + "nodeType": "ParameterList", + "parameters": [], + "src": "3320:0:1" + }, + "scope": 487, + "src": "3281:160:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 469, + "nodeType": "Block", + "src": "3483:547:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + }, + "id": 411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 408, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "3502:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 409, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "3512:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 410, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Activated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3512:20:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "3502:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 407, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "3494:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 412, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3494:39:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 413, + "nodeType": "ExpressionStatement", + "src": "3494:39:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 415, + "name": "_mining", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125, + "src": "3552:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 414, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "3544:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3544:16:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 417, + "nodeType": "ExpressionStatement", + "src": "3544:16:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "id": 420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 418, + "name": "_currentDay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "3576:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 419, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3591:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3576:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 454, + "nodeType": "Block", + "src": "3673:238:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3688:13:1", + "subExpression": { + "argumentTypes": null, + "id": 430, + "name": "_currentDay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "3688:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 432, + "nodeType": "ExpressionStatement", + "src": "3688:13:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 438, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 433, + "name": "_currentDay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "3719:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 436, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 434, + "name": "DAYS_PER_YEAR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 108, + "src": "3735:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 435, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3751:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3735:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 437, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3734:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3719:34:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 453, + "nodeType": "IfStatement", + "src": "3716:184:1", + "trueBody": { + "id": 452, + "nodeType": "Block", + "src": "3755:145:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3774:14:1", + "subExpression": { + "argumentTypes": null, + "id": 439, + "name": "_currentYear", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 127, + "src": "3774:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 441, + "nodeType": "ExpressionStatement", + "src": "3774:14:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 442, + "name": "_currentDay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "3807:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 443, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3821:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3807:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 445, + "nodeType": "ExpressionStatement", + "src": "3807:15:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 446, + "name": "_currentYearSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 131, + "src": "3841:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 447, + "name": "_currentYearSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 131, + "src": "3862:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 448, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3883:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "3862:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3841:43:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 451, + "nodeType": "ExpressionStatement", + "src": "3841:43:1" + } + ] + } + } + ] + }, + "id": 455, + "nodeType": "IfStatement", + "src": "3573:338:1", + "trueBody": { + "id": 429, + "nodeType": "Block", + "src": "3594:73:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 421, + "name": "_currentYear", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 127, + "src": "3609:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 422, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3624:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3609:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 424, + "nodeType": "ExpressionStatement", + "src": "3609:16:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 425, + "name": "_currentDay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "3640:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 426, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3654:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3640:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 428, + "nodeType": "ExpressionStatement", + "src": "3640:15:1" + } + ] + } + }, + { + "assignments": [ + 457 + ], + "declarations": [ + { + "constant": false, + "id": 457, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 470, + "src": "3923:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 456, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3923:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 461, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 458, + "name": "_currentYearSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 131, + "src": "3940:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 459, + "name": "DAYS_PER_YEAR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 108, + "src": "3961:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3940:34:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3923:51:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 465, + "name": "_miner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "4007:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 466, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 457, + "src": "4015:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 462, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 121, + "src": "3987:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$965", + "typeString": "contract IERC20" + } + }, + "id": 464, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 990, + "src": "3987:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$965_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$965_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3987:35:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 468, + "nodeType": "ExpressionStatement", + "src": "3987:35:1" + } + ] + }, + "documentation": null, + "id": 470, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 405, + "modifierName": { + "argumentTypes": null, + "id": 404, + "name": "onlySystem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 602, + "src": "3472:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3472:10:1" + } + ], + "name": "mine", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 403, + "nodeType": "ParameterList", + "parameters": [], + "src": "3462:2:1" + }, + "payable": false, + "returnParameters": { + "id": 406, + "nodeType": "ParameterList", + "parameters": [], + "src": "3483:0:1" + }, + "scope": 487, + "src": "3449:581:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 477, + "nodeType": "Block", + "src": "4088:30:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 475, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4106:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 474, + "id": 476, + "nodeType": "Return", + "src": "4099:11:1" + } + ] + }, + "documentation": null, + "id": 478, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isAlgoMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 471, + "nodeType": "ParameterList", + "parameters": [], + "src": "4058:2:1" + }, + "payable": false, + "returnParameters": { + "id": 474, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 473, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 478, + "src": "4082:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 472, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4082:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4081:6:1" + }, + "scope": 487, + "src": "4038:80:1", + "stateMutability": "pure", + "superFunction": 668, + "visibility": "public" + }, + { + "body": { + "id": 485, + "nodeType": "Block", + "src": "4177:35:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 483, + "name": "_category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 117, + "src": "4195:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 482, + "id": 484, + "nodeType": "Return", + "src": "4188:16:1" + } + ] + }, + "documentation": null, + "id": 486, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getCategory", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 479, + "nodeType": "ParameterList", + "parameters": [], + "src": "4146:2:1" + }, + "payable": false, + "returnParameters": { + "id": 482, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 481, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 486, + "src": "4170:5:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 480, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4170:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4169:7:1" + }, + "scope": 487, + "src": "4126:86:1", + "stateMutability": "view", + "superFunction": 673, + "visibility": "public" + } + ], + "scope": 488, + "src": "558:3657:1" + } + ], + "src": "0:4217:1" + }, + "id": 1 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol", + "exportedSymbols": { + "AlgoSupervisorRole": [ + 574 + ] + }, + "id": 575, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 489, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:2" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "id": 490, + "nodeType": "ImportDirective", + "scope": 575, + "sourceUnit": 769, + "src": "28:189:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 574, + "linearizedBaseContracts": [ + 574 + ], + "name": "AlgoSupervisorRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 493, + "libraryName": { + "contractScope": null, + "id": 491, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 768, + "src": "262:5:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$768", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "256:27:2", + "typeName": { + "contractScope": null, + "id": 492, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 681, + "src": "272:10:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "constant": false, + "id": 495, + "name": "_supervisors", + "nodeType": "VariableDeclaration", + "scope": 574, + "src": "291:31:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$681_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 494, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 681, + "src": "291:10:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 503, + "nodeType": "Block", + "src": "355:45:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 499, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1124, + "src": "381:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "381:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 498, + "name": "_addSupervisor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 561, + "src": "366:14:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "366:26:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 502, + "nodeType": "ExpressionStatement", + "src": "366:26:2" + } + ] + }, + "documentation": null, + "id": 504, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 496, + "nodeType": "ParameterList", + "parameters": [], + "src": "343:2:2" + }, + "payable": false, + "returnParameters": { + "id": 497, + "nodeType": "ParameterList", + "parameters": [], + "src": "355:0:2" + }, + "scope": 574, + "src": "331:69:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 514, + "nodeType": "Block", + "src": "434:64:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 508, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1124, + "src": "466:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 509, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "466:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 507, + "name": "isSupervisor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 528, + "src": "453:12:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "453:24:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 506, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "445:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 511, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "445:33:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 512, + "nodeType": "ExpressionStatement", + "src": "445:33:2" + }, + { + "id": 513, + "nodeType": "PlaceholderStatement", + "src": "489:1:2" + } + ] + }, + "documentation": null, + "id": 515, + "name": "onlySupervisor", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 505, + "nodeType": "ParameterList", + "parameters": [], + "src": "431:2:2" + }, + "src": "408:90:2", + "visibility": "internal" + }, + { + "body": { + "id": 527, + "nodeType": "Block", + "src": "572:51:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 524, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 517, + "src": "607:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 522, + "name": "_supervisors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "590:12:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$681_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 523, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 767, + "src": "590:16:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$681_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "590:25:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 521, + "id": 526, + "nodeType": "Return", + "src": "583:32:2" + } + ] + }, + "documentation": null, + "id": 528, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isSupervisor", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 518, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 517, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 528, + "src": "528:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 516, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "528:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "527:17:2" + }, + "payable": false, + "returnParameters": { + "id": 521, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 520, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 528, + "src": "566:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 519, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "566:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "565:6:2" + }, + "scope": 574, + "src": "506:117:2", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 539, + "nodeType": "Block", + "src": "693:42:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 536, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "719:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 535, + "name": "_addSupervisor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 561, + "src": "704:14:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "704:23:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 538, + "nodeType": "ExpressionStatement", + "src": "704:23:2" + } + ] + }, + "documentation": null, + "id": 540, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 533, + "modifierName": { + "argumentTypes": null, + "id": 532, + "name": "onlySupervisor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 515, + "src": "678:14:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "678:14:2" + } + ], + "name": "addSupervisor", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 531, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 530, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 540, + "src": "654:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 529, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "654:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "653:17:2" + }, + "payable": false, + "returnParameters": { + "id": 534, + "nodeType": "ParameterList", + "parameters": [], + "src": "693:0:2" + }, + "scope": 574, + "src": "631:104:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 548, + "nodeType": "Block", + "src": "780:48:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 544, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1124, + "src": "809:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "809:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 543, + "name": "_removeSupervisor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 573, + "src": "791:17:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "791:29:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 547, + "nodeType": "ExpressionStatement", + "src": "791:29:2" + } + ] + }, + "documentation": null, + "id": 549, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "renounceSupervisor", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 541, + "nodeType": "ParameterList", + "parameters": [], + "src": "770:2:2" + }, + "payable": false, + "returnParameters": { + "id": 542, + "nodeType": "ParameterList", + "parameters": [], + "src": "780:0:2" + }, + "scope": 574, + "src": "743:85:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 560, + "nodeType": "Block", + "src": "886:44:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 557, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 551, + "src": "914:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 554, + "name": "_supervisors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "897:12:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$681_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 556, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 713, + "src": "897:16:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$681_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "897:25:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 559, + "nodeType": "ExpressionStatement", + "src": "897:25:2" + } + ] + }, + "documentation": null, + "id": 561, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_addSupervisor", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 552, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 551, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 561, + "src": "860:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 550, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "860:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "859:17:2" + }, + "payable": false, + "returnParameters": { + "id": 553, + "nodeType": "ParameterList", + "parameters": [], + "src": "886:0:2" + }, + "scope": 574, + "src": "836:94:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 572, + "nodeType": "Block", + "src": "991:47:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 569, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "1022:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 566, + "name": "_supervisors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "1002:12:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$681_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 568, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 744, + "src": "1002:19:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$681_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1002:28:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 571, + "nodeType": "ExpressionStatement", + "src": "1002:28:2" + } + ] + }, + "documentation": null, + "id": 573, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_removeSupervisor", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 564, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 563, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 573, + "src": "965:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 562, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "965:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "964:17:2" + }, + "payable": false, + "returnParameters": { + "id": 565, + "nodeType": "ParameterList", + "parameters": [], + "src": "991:0:2" + }, + "scope": 574, + "src": "938:100:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 575, + "src": "221:820:2" + } + ], + "src": "0:1043:2" + }, + "id": 2 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol", + "exportedSymbols": { + "AlgoSystemRole": [ + 661 + ] + }, + "id": 662, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 576, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:3" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "id": 577, + "nodeType": "ImportDirective", + "scope": 662, + "sourceUnit": 769, + "src": "28:189:3", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 661, + "linearizedBaseContracts": [ + 661 + ], + "name": "AlgoSystemRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 580, + "libraryName": { + "contractScope": null, + "id": 578, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 768, + "src": "258:5:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$768", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "252:27:3", + "typeName": { + "contractScope": null, + "id": 579, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 681, + "src": "268:10:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "constant": false, + "id": 582, + "name": "_systemMembers", + "nodeType": "VariableDeclaration", + "scope": 661, + "src": "287:33:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$681_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 581, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 681, + "src": "287:10:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 590, + "nodeType": "Block", + "src": "353:41:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 586, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1124, + "src": "375:3:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "375:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 585, + "name": "_addSystem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 648, + "src": "364:10:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "364:22:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 589, + "nodeType": "ExpressionStatement", + "src": "364:22:3" + } + ] + }, + "documentation": null, + "id": 591, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 583, + "nodeType": "ParameterList", + "parameters": [], + "src": "341:2:3" + }, + "payable": false, + "returnParameters": { + "id": 584, + "nodeType": "ParameterList", + "parameters": [], + "src": "353:0:3" + }, + "scope": 661, + "src": "329:65:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 601, + "nodeType": "Block", + "src": "424:60:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 595, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1124, + "src": "452:3:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "452:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 594, + "name": "isSystem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 615, + "src": "443:8:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "443:20:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 593, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "435:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "435:29:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 599, + "nodeType": "ExpressionStatement", + "src": "435:29:3" + }, + { + "id": 600, + "nodeType": "PlaceholderStatement", + "src": "475:1:3" + } + ] + }, + "documentation": null, + "id": 602, + "name": "onlySystem", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 592, + "nodeType": "ParameterList", + "parameters": [], + "src": "421:2:3" + }, + "src": "402:82:3", + "visibility": "internal" + }, + { + "body": { + "id": 614, + "nodeType": "Block", + "src": "554:53:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 611, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 604, + "src": "591:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 609, + "name": "_systemMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "572:14:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$681_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 610, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 767, + "src": "572:18:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$681_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "572:27:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 608, + "id": 613, + "nodeType": "Return", + "src": "565:34:3" + } + ] + }, + "documentation": null, + "id": 615, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isSystem", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 605, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 604, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 615, + "src": "510:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 603, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "510:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "509:17:3" + }, + "payable": false, + "returnParameters": { + "id": 608, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 607, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 615, + "src": "548:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 606, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "548:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "547:6:3" + }, + "scope": 661, + "src": "492:115:3", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 626, + "nodeType": "Block", + "src": "669:38:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 623, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 617, + "src": "691:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 622, + "name": "_addSystem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 648, + "src": "680:10:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "680:19:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 625, + "nodeType": "ExpressionStatement", + "src": "680:19:3" + } + ] + }, + "documentation": null, + "id": 627, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 620, + "modifierName": { + "argumentTypes": null, + "id": 619, + "name": "onlySystem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 602, + "src": "658:10:3", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "658:10:3" + } + ], + "name": "addSystem", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 618, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 617, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 627, + "src": "634:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 616, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "634:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "633:17:3" + }, + "payable": false, + "returnParameters": { + "id": 621, + "nodeType": "ParameterList", + "parameters": [], + "src": "669:0:3" + }, + "scope": 661, + "src": "615:92:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 635, + "nodeType": "Block", + "src": "748:44:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 631, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1124, + "src": "773:3:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "773:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 630, + "name": "_removeSystem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 660, + "src": "759:13:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "759:25:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 634, + "nodeType": "ExpressionStatement", + "src": "759:25:3" + } + ] + }, + "documentation": null, + "id": 636, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "renounceSystem", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 628, + "nodeType": "ParameterList", + "parameters": [], + "src": "738:2:3" + }, + "payable": false, + "returnParameters": { + "id": 629, + "nodeType": "ParameterList", + "parameters": [], + "src": "748:0:3" + }, + "scope": 661, + "src": "715:77:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 647, + "nodeType": "Block", + "src": "846:46:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 644, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 638, + "src": "876:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 641, + "name": "_systemMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "857:14:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$681_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 643, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 713, + "src": "857:18:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$681_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "857:27:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 646, + "nodeType": "ExpressionStatement", + "src": "857:27:3" + } + ] + }, + "documentation": null, + "id": 648, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_addSystem", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 639, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 638, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 648, + "src": "820:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 637, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "820:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "819:17:3" + }, + "payable": false, + "returnParameters": { + "id": 640, + "nodeType": "ParameterList", + "parameters": [], + "src": "846:0:3" + }, + "scope": 661, + "src": "800:92:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 659, + "nodeType": "Block", + "src": "949:49:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 656, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 650, + "src": "982:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 653, + "name": "_systemMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "960:14:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$681_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 655, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 744, + "src": "960:21:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$681_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "960:30:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 658, + "nodeType": "ExpressionStatement", + "src": "960:30:3" + } + ] + }, + "documentation": null, + "id": 660, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_removeSystem", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 651, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 650, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 660, + "src": "923:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 649, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "923:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "922:17:3" + }, + "payable": false, + "returnParameters": { + "id": 652, + "nodeType": "ParameterList", + "parameters": [], + "src": "949:0:3" + }, + "scope": 661, + "src": "900:98:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 662, + "src": "221:780:3" + } + ], + "src": "0:1003:3" + }, + "id": 3 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", + "exportedSymbols": { + "IAlgoMiner": [ + 674 + ] + }, + "id": 675, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 663, + "literals": [ + "solidity", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:23:4" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": false, + "id": 674, + "linearizedBaseContracts": [ + 674 + ], + "name": "IAlgoMiner", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 668, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isAlgoMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 664, + "nodeType": "ParameterList", + "parameters": [], + "src": "74:2:4" + }, + "payable": false, + "returnParameters": { + "id": 667, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 666, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 668, + "src": "98:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 665, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "98:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "97:6:4" + }, + "scope": 674, + "src": "54:50:4", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 673, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getCategory", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 669, + "nodeType": "ParameterList", + "parameters": [], + "src": "130:2:4" + }, + "payable": false, + "returnParameters": { + "id": 672, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 671, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 673, + "src": "154:5:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 670, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "154:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "153:7:4" + }, + "scope": 674, + "src": "110:51:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 675, + "src": "27:137:4" + } + ], + "src": "0:164:4" + }, + "id": 4 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "exportedSymbols": { + "Roles": [ + 768 + ] + }, + "id": 769, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 676, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:5" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", + "fullyImplemented": true, + "id": 768, + "linearizedBaseContracts": [ + 768 + ], + "name": "Roles", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "Roles.Role", + "id": 681, + "members": [ + { + "constant": false, + "id": 680, + "name": "bearer", + "nodeType": "VariableDeclaration", + "scope": 681, + "src": "145:32:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 679, + "keyType": { + "id": 677, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "154:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "145:25:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 678, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "165:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Role", + "nodeType": "StructDefinition", + "scope": 768, + "src": "127:55:5", + "visibility": "public" + }, + { + "body": { + "id": 712, + "nodeType": "Block", + "src": "302:109:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 689, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "316:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 691, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "335:1:5", + "subdenomination": null, + "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": 690, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "327:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 692, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "327:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "316:21:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 688, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "308:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "308:30:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 695, + "nodeType": "ExpressionStatement", + "src": "308:30:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 701, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "352:19:5", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 698, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 683, + "src": "357:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 699, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "363:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 697, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 767, + "src": "353:3:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "353:18:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 696, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "344:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 702, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "344:28:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 703, + "nodeType": "ExpressionStatement", + "src": "344:28:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 704, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 683, + "src": "379:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 707, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 680, + "src": "379:11:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 708, + "indexExpression": { + "argumentTypes": null, + "id": 706, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "391:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "379:20:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 709, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "402:4:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "379:27:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 711, + "nodeType": "ExpressionStatement", + "src": "379:27:5" + } + ] + }, + "documentation": "@dev give an account access to this role", + "id": 713, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 686, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 683, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 713, + "src": "257:17:5", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 682, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 681, + "src": "257:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 685, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 713, + "src": "276:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 684, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "276:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "256:36:5" + }, + "payable": false, + "returnParameters": { + "id": 687, + "nodeType": "ParameterList", + "parameters": [], + "src": "302:0:5" + }, + "scope": 768, + "src": "244:167:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 743, + "nodeType": "Block", + "src": "538:109:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 721, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 717, + "src": "552:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 723, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "571:1:5", + "subdenomination": null, + "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": 722, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "563:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 724, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "563:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "552:21:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 720, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "544:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "544:30:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 727, + "nodeType": "ExpressionStatement", + "src": "544:30:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 730, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 715, + "src": "592:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 731, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 717, + "src": "598:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 729, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 767, + "src": "588:3:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 732, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "588:18:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 728, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "580:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "580:27:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 734, + "nodeType": "ExpressionStatement", + "src": "580:27:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 735, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 715, + "src": "614:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 738, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 680, + "src": "614:11:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 739, + "indexExpression": { + "argumentTypes": null, + "id": 737, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 717, + "src": "626:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "614:20:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 740, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "637:5:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "614:28:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 742, + "nodeType": "ExpressionStatement", + "src": "614:28:5" + } + ] + }, + "documentation": "@dev remove an account's access to this role", + "id": 744, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "remove", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 718, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 715, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 744, + "src": "493:17:5", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 714, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 681, + "src": "493:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 717, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 744, + "src": "512:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 716, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "512:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "492:36:5" + }, + "payable": false, + "returnParameters": { + "id": 719, + "nodeType": "ParameterList", + "parameters": [], + "src": "538:0:5" + }, + "scope": 768, + "src": "477:170:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 766, + "nodeType": "Block", + "src": "817:74:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 754, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 748, + "src": "831:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 756, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "850:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 755, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "842:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 757, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "842:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "831:21:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 753, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "823:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "823:30:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 760, + "nodeType": "ExpressionStatement", + "src": "823:30:5" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 761, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 746, + "src": "866:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 762, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 680, + "src": "866:11:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 764, + "indexExpression": { + "argumentTypes": null, + "id": 763, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 748, + "src": "878:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "866:20:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 752, + "id": 765, + "nodeType": "Return", + "src": "859:27:5" + } + ] + }, + "documentation": "@dev check if an account has this role\n@return bool", + "id": 767, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "has", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 749, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 746, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 767, + "src": "738:17:5", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 745, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 681, + "src": "738:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 748, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 767, + "src": "757:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 747, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "757:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "737:36:5" + }, + "payable": false, + "returnParameters": { + "id": 752, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 751, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 767, + "src": "809:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 750, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "809:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "808:6:5" + }, + "scope": 768, + "src": "725:166:5", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 769, + "src": "109:784:5" + } + ], + "src": "0:894:5" + }, + "id": 5 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", + "exportedSymbols": { + "SafeMath": [ + 896 + ] + }, + "id": 897, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 770, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:6" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", + "fullyImplemented": true, + "id": 896, + "linearizedBaseContracts": [ + 896 + ], + "name": "SafeMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 802, + "nodeType": "Block", + "src": "271:314:6", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 779, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 772, + "src": "486:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 780, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "491:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "486:6:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 785, + "nodeType": "IfStatement", + "src": "482:35:6", + "trueBody": { + "id": 784, + "nodeType": "Block", + "src": "494:23:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 782, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "509:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 778, + "id": 783, + "nodeType": "Return", + "src": "502:8:6" + } + ] + } + }, + { + "assignments": [ + 787 + ], + "declarations": [ + { + "constant": false, + "id": 787, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 803, + "src": "523:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 786, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "523:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 791, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 788, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 772, + "src": "535:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 789, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 774, + "src": "539:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "535:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "523:17:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 793, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 787, + "src": "554:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 794, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 772, + "src": "558:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "554:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 796, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 774, + "src": "563:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "554:10:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 792, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "546:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "546:19:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 799, + "nodeType": "ExpressionStatement", + "src": "546:19:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 800, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 787, + "src": "579:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 778, + "id": 801, + "nodeType": "Return", + "src": "572:8:6" + } + ] + }, + "documentation": "@dev Multiplies two numbers, reverts on overflow.", + "id": 803, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "mul", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 775, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 772, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 803, + "src": "217:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 771, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "217:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 774, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 803, + "src": "228:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 773, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "228:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "216:22:6" + }, + "payable": false, + "returnParameters": { + "id": 778, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 777, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 803, + "src": "262:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 776, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "262:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "261:9:6" + }, + "scope": 896, + "src": "204:381:6", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 826, + "nodeType": "Block", + "src": "762:203:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 813, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 807, + "src": "776:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 814, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "780:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "776:5:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 812, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "768:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "768:14:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 817, + "nodeType": "ExpressionStatement", + "src": "768:14:6" + }, + { + "assignments": [ + 819 + ], + "declarations": [ + { + "constant": false, + "id": 819, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 827, + "src": "846:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 818, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "846:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 823, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 820, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 805, + "src": "858:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 821, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 807, + "src": "862:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "858:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "846:17:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 824, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 819, + "src": "959:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 811, + "id": 825, + "nodeType": "Return", + "src": "952:8:6" + } + ] + }, + "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", + "id": 827, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 808, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 805, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 827, + "src": "708:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 804, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "708:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 807, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 827, + "src": "719:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 806, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "719:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "707:22:6" + }, + "payable": false, + "returnParameters": { + "id": 811, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 810, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 827, + "src": "753:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 809, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "753:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "752:9:6" + }, + "scope": 896, + "src": "695:270:6", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 850, + "nodeType": "Block", + "src": "1145:64:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 837, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 831, + "src": "1159:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 838, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 829, + "src": "1164:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1159:6:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 836, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "1151:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1151:15:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 841, + "nodeType": "ExpressionStatement", + "src": "1151:15:6" + }, + { + "assignments": [ + 843 + ], + "declarations": [ + { + "constant": false, + "id": 843, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 851, + "src": "1172:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 842, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1172:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 847, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 844, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 829, + "src": "1184:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 845, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 831, + "src": "1188:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1184:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1172:17:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 848, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 843, + "src": "1203:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 835, + "id": 849, + "nodeType": "Return", + "src": "1196:8:6" + } + ] + }, + "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", + "id": 851, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 832, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 829, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 851, + "src": "1091:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 828, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1091:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 831, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 851, + "src": "1102:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 830, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1102:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1090:22:6" + }, + "payable": false, + "returnParameters": { + "id": 835, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 834, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 851, + "src": "1136:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 833, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1136:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1135:9:6" + }, + "scope": 896, + "src": "1078:131:6", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 874, + "nodeType": "Block", + "src": "1339:64:6", + "statements": [ + { + "assignments": [ + 861 + ], + "declarations": [ + { + "constant": false, + "id": 861, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 875, + "src": "1345:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 860, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1345:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 865, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 862, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 853, + "src": "1357:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 863, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 855, + "src": "1361:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1357:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1345:17:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 869, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 867, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 861, + "src": "1376:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 868, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 853, + "src": "1381:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1376:6:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 866, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "1368:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1368:15:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 871, + "nodeType": "ExpressionStatement", + "src": "1368:15:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 872, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 861, + "src": "1397:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 859, + "id": 873, + "nodeType": "Return", + "src": "1390:8:6" + } + ] + }, + "documentation": "@dev Adds two numbers, reverts on overflow.", + "id": 875, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 856, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 853, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 875, + "src": "1285:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 852, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1285:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 855, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 875, + "src": "1296:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 854, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1296:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1284:22:6" + }, + "payable": false, + "returnParameters": { + "id": 859, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 858, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 875, + "src": "1330:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 857, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1330:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1329:9:6" + }, + "scope": 896, + "src": "1272:131:6", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 894, + "nodeType": "Block", + "src": "1602:44:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 887, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 885, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 879, + "src": "1616:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 886, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1621:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1616:6:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 884, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "1608:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 888, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1608:15:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 889, + "nodeType": "ExpressionStatement", + "src": "1608:15:6" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 890, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 877, + "src": "1636:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "id": 891, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 879, + "src": "1640:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1636:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 883, + "id": 893, + "nodeType": "Return", + "src": "1629:12:6" + } + ] + }, + "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", + "id": 895, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "mod", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 880, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 877, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 895, + "src": "1548:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 876, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1548:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 879, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 895, + "src": "1559:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 878, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1559:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1547:22:6" + }, + "payable": false, + "returnParameters": { + "id": 883, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 882, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 895, + "src": "1593:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 881, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1593:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1592:9:6" + }, + "scope": 896, + "src": "1535:111:6", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 897, + "src": "117:1531:6" + } + ], + "src": "0:1649:6" + }, + "id": 6 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "exportedSymbols": { + "IERC20": [ + 965 + ] + }, + "id": 966, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 898, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:7" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", + "fullyImplemented": false, + "id": 965, + "linearizedBaseContracts": [ + 965 + ], + "name": "IERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 903, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 899, + "nodeType": "ParameterList", + "parameters": [], + "src": "156:2:7" + }, + "payable": false, + "returnParameters": { + "id": 902, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 901, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 903, + "src": "182:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 900, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "182:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "181:9:7" + }, + "scope": 965, + "src": "136:55:7", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 910, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 906, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 905, + "name": "who", + "nodeType": "VariableDeclaration", + "scope": 910, + "src": "214:11:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 904, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "214:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "213:13:7" + }, + "payable": false, + "returnParameters": { + "id": 909, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 908, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 910, + "src": "250:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 907, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "250:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "249:9:7" + }, + "scope": 965, + "src": "195:64:7", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 919, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 915, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 912, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 919, + "src": "282:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 911, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "282:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 914, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 919, + "src": "297:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 913, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "297:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "281:32:7" + }, + "payable": false, + "returnParameters": { + "id": 918, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 917, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 919, + "src": "341:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 916, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "341:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "340:9:7" + }, + "scope": 965, + "src": "263:87:7", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 928, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 924, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 921, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 928, + "src": "372:10:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 920, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "372:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 923, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 928, + "src": "384:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 922, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "384:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "371:27:7" + }, + "payable": false, + "returnParameters": { + "id": 927, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 926, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 928, + "src": "417:4:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 925, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "417:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "416:6:7" + }, + "scope": 965, + "src": "354:69:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 937, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 933, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 930, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 937, + "src": "444:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 929, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "444:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 932, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 937, + "src": "461:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 931, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "461:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "443:32:7" + }, + "payable": false, + "returnParameters": { + "id": 936, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 935, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 937, + "src": "498:4:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 934, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "498:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "497:6:7" + }, + "scope": 965, + "src": "427:77:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 948, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 944, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 939, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 948, + "src": "530:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 938, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "530:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 941, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 948, + "src": "544:10:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 940, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "544:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 943, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 948, + "src": "556:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 942, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "556:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "529:41:7" + }, + "payable": false, + "returnParameters": { + "id": 947, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 946, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 948, + "src": "593:4:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 945, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "593:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "592:6:7" + }, + "scope": 965, + "src": "508:91:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": null, + "id": 956, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 955, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 950, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 956, + "src": "623:20:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 949, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "623:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 952, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 956, + "src": "649:18:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 951, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "649:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 954, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 956, + "src": "673:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 953, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "673:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "617:73:7" + }, + "src": "603:88:7" + }, + { + "anonymous": false, + "documentation": null, + "id": 964, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 963, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 958, + "indexed": true, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 964, + "src": "715:21:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 957, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "715:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 960, + "indexed": true, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 964, + "src": "742:23:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 959, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "742:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 962, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 964, + "src": "771:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 961, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "771:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "709:79:7" + }, + "src": "695:94:7" + } + ], + "scope": 966, + "src": "115:676:7" + } + ], + "src": "0:792:7" + }, + "id": 7 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "exportedSymbols": { + "SafeERC20": [ + 1109 + ] + }, + "id": 1110, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 967, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:8" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 968, + "nodeType": "ImportDirective", + "scope": 1110, + "sourceUnit": 966, + "src": "26:22:8", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 969, + "nodeType": "ImportDirective", + "scope": 1110, + "sourceUnit": 897, + "src": "49:33:8", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.", + "fullyImplemented": true, + "id": 1109, + "linearizedBaseContracts": [ + 1109 + ], + "name": "SafeERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 972, + "libraryName": { + "contractScope": null, + "id": 970, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 896, + "src": "382:8:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$896", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "376:27:8", + "typeName": { + "id": 971, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "395:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "body": { + "id": 989, + "nodeType": "Block", + "src": "501:45:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 984, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "530:2:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 985, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 978, + "src": "534:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 982, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 974, + "src": "515:5:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$965", + "typeString": "contract IERC20" + } + }, + "id": 983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 928, + "src": "515:14:8", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 986, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "515:25:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 981, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "507:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "507:34:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 988, + "nodeType": "ExpressionStatement", + "src": "507:34:8" + } + ] + }, + "documentation": null, + "id": 990, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeTransfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 979, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 974, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 990, + "src": "434:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$965", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 973, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 965, + "src": "434:6:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$965", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 976, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 990, + "src": "452:10:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 975, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "452:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 978, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 990, + "src": "468:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 977, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "468:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "428:57:8" + }, + "payable": false, + "returnParameters": { + "id": 980, + "nodeType": "ParameterList", + "parameters": [], + "src": "501:0:8" + }, + "scope": 1109, + "src": "407:139:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1010, + "nodeType": "Block", + "src": "666:55:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1004, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 994, + "src": "699:4:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1005, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 996, + "src": "705:2:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1006, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 998, + "src": "709:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1002, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 992, + "src": "680:5:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$965", + "typeString": "contract IERC20" + } + }, + "id": 1003, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 948, + "src": "680:18:8", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 1007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "680:35:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1001, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "672:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "672:44:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1009, + "nodeType": "ExpressionStatement", + "src": "672:44:8" + } + ] + }, + "documentation": null, + "id": 1011, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 999, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 992, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1011, + "src": "581:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$965", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 991, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 965, + "src": "581:6:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$965", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 994, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 1011, + "src": "599:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 993, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "599:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 996, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1011, + "src": "617:10:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 995, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "617:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 998, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1011, + "src": "633:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 997, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "633:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "575:75:8" + }, + "payable": false, + "returnParameters": { + "id": 1000, + "nodeType": "ParameterList", + "parameters": [], + "src": "666:0:8" + }, + "scope": 1109, + "src": "550:171:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1045, + "nodeType": "Block", + "src": "823:330:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1034, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1021, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1017, + "src": "1045:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1022, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1054:1:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1045:10:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1024, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1044:12:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1027, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1124, + "src": "1077:3:8", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1077:10:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1029, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1015, + "src": "1089:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1025, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1013, + "src": "1061:5:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$965", + "typeString": "contract IERC20" + } + }, + "id": 1026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 919, + "src": "1061:15:8", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 1030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1061:36:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1031, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1101:1:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1061:41:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1033, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1060:43:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1044:59:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1020, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "1036:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1036:68:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1036, + "nodeType": "ExpressionStatement", + "src": "1036:68:8" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1040, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1015, + "src": "1132:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1041, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1017, + "src": "1141:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1038, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1013, + "src": "1118:5:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$965", + "typeString": "contract IERC20" + } + }, + "id": 1039, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 937, + "src": "1118:13:8", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1042, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1118:29:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1037, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "1110:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1110:38:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1044, + "nodeType": "ExpressionStatement", + "src": "1110:38:8" + } + ] + }, + "documentation": null, + "id": 1046, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeApprove", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1018, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1013, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1046, + "src": "751:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$965", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 1012, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 965, + "src": "751:6:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$965", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1015, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1046, + "src": "769:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1014, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "769:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1017, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1046, + "src": "790:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1016, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "790:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "745:62:8" + }, + "payable": false, + "returnParameters": { + "id": 1019, + "nodeType": "ParameterList", + "parameters": [], + "src": "823:0:8" + }, + "scope": 1109, + "src": "725:428:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1076, + "nodeType": "Block", + "src": "1265:135:8", + "statements": [ + { + "assignments": [ + 1056 + ], + "declarations": [ + { + "constant": false, + "id": 1056, + "name": "newAllowance", + "nodeType": "VariableDeclaration", + "scope": 1077, + "src": "1271:20:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1055, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1271:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1067, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1065, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1052, + "src": "1338:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1060, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1145, + "src": "1318:4:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$1109", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$1109", + "typeString": "library SafeERC20" + } + ], + "id": 1059, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1310:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1061, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1310:13:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1062, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1050, + "src": "1325:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1057, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1048, + "src": "1294:5:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$965", + "typeString": "contract IERC20" + } + }, + "id": 1058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 919, + "src": "1294:15:8", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 1063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1294:39:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 875, + "src": "1294:43:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1066, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1294:50:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1271:73:8" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1071, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1050, + "src": "1372:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1072, + "name": "newAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1056, + "src": "1381:12:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1069, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1048, + "src": "1358:5:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$965", + "typeString": "contract IERC20" + } + }, + "id": 1070, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 937, + "src": "1358:13:8", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1358:36:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1068, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "1350:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1074, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1350:45:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1075, + "nodeType": "ExpressionStatement", + "src": "1350:45:8" + } + ] + }, + "documentation": null, + "id": 1077, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeIncreaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1053, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1048, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1077, + "src": "1193:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$965", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 1047, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 965, + "src": "1193:6:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$965", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1050, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1077, + "src": "1211:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1049, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1211:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1052, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1077, + "src": "1232:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1051, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1232:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1187:62:8" + }, + "payable": false, + "returnParameters": { + "id": 1054, + "nodeType": "ParameterList", + "parameters": [], + "src": "1265:0:8" + }, + "scope": 1109, + "src": "1157:243:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1107, + "nodeType": "Block", + "src": "1512:135:8", + "statements": [ + { + "assignments": [ + 1087 + ], + "declarations": [ + { + "constant": false, + "id": 1087, + "name": "newAllowance", + "nodeType": "VariableDeclaration", + "scope": 1108, + "src": "1518:20:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1086, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1518:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1098, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1096, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1083, + "src": "1585:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1091, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1145, + "src": "1565:4:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$1109", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$1109", + "typeString": "library SafeERC20" + } + ], + "id": 1090, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1557:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1092, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1557:13:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1093, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1081, + "src": "1572:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1088, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1079, + "src": "1541:5:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$965", + "typeString": "contract IERC20" + } + }, + "id": 1089, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 919, + "src": "1541:15:8", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 1094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1541:39:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 851, + "src": "1541:43:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1097, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1541:50:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1518:73:8" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1102, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1081, + "src": "1619:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1103, + "name": "newAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1087, + "src": "1628:12:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1100, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1079, + "src": "1605:5:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$965", + "typeString": "contract IERC20" + } + }, + "id": 1101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 937, + "src": "1605:13:8", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1605:36:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1099, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1127, + 1128 + ], + "referencedDeclaration": 1127, + "src": "1597:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1105, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1597:45:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1106, + "nodeType": "ExpressionStatement", + "src": "1597:45:8" + } + ] + }, + "documentation": null, + "id": 1108, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeDecreaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1084, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1079, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1108, + "src": "1440:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$965", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 1078, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 965, + "src": "1440:6:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$965", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1081, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1108, + "src": "1458:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1080, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1458:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1083, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1108, + "src": "1479:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1082, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1479:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1434:62:8" + }, + "payable": false, + "returnParameters": { + "id": 1085, + "nodeType": "ParameterList", + "parameters": [], + "src": "1512:0:8" + }, + "scope": 1109, + "src": "1404:243:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 1110, + "src": "353:1296:8" + } + ], + "src": "0:1650:8" + }, + "id": 8 + } + } +} \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.abi b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.abi new file mode 100644 index 000000000..e8b771402 --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.abi @@ -0,0 +1 @@ +[{"constant":false,"inputs":[],"name":"pauseMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isAlgoMiner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[],"name":"startMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMinerAddress","type":"address"}],"name":"migrateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSystem","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"stopAndRemoveOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"resumeMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCategory","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSupervisor","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"mine","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deactivateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwnerAddress","type":"address"}],"name":"resetMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"activateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"DAYS_PER_YEAR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"stopMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"minerType","type":"uint16"},{"name":"category","type":"uint8"},{"name":"ownerAddress","type":"address"},{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin new file mode 100644 index 000000000..14cb72e69 --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin @@ -0,0 +1 @@ +60806040523480156200001157600080fd5b5060405160808062000fb883398101604090815281516020830151918301516060909301519092906200004d33640100000000620000de810204565b6200006133640100000000620000fc810204565b620000753364010000000062000117810204565b6003805461ffff191661ffff959095169490941762ff000019166201000060ff949094169390930292909217630100000060b860020a0319166301000000600160a060020a03928316021790925560048054600160a060020a03191691909216179055620001c5565b620000f960008264010000000062000d1d6200013282021704565b50565b620000f960018264010000000062000d1d6200013282021704565b620000f960028264010000000062000d1d6200013282021704565b600160a060020a03811615156200014857600080fd5b6200015d82826401000000006200018d810204565b156200016857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001a557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610de380620001d56000396000f3006080604052600436106101275763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663162f986d811461012c5780631777fb4b1461014357806321b79d981461016c578063231d4e2a1461018157806329d10b6e146101a25780632e6b6849146101c357806334cdcf26146101e4578063363aa6c714610205578063427534a41461021a578063608d3d3d1461022f57806374be75921461025057806380258e471461027157806381a244591461029c57806399f4b251146102bd5780639e614ca0146102d2578063ada436e9146102e7578063b2a32cd514610308578063be9524941461031d578063c6846ef814610332578063d43acc7914610359578063da4086791461036e578063e9d6185914610383575b600080fd5b34801561013857600080fd5b50610141610398565b005b34801561014f57600080fd5b506101586103fe565b604080519115158252519081900360200190f35b34801561017857600080fd5b50610141610403565b34801561018d57600080fd5b50610141600160a060020a03600435166104a7565b3480156101ae57600080fd5b50610141600160a060020a0360043516610593565b3480156101cf57600080fd5b50610141600160a060020a03600435166105b0565b3480156101f057600080fd5b50610158600160a060020a03600435166105cd565b34801561021157600080fd5b506101416105e5565b34801561022657600080fd5b5061014161068e565b34801561023b57600080fd5b50610158600160a060020a03600435166106f1565b34801561025c57600080fd5b50610141600160a060020a0360043516610704565b34801561027d57600080fd5b50610286610721565b6040805160ff9092168252519081900360200190f35b3480156102a857600080fd5b50610158600160a060020a0360043516610730565b3480156102c957600080fd5b50610141610743565b3480156102de57600080fd5b50610141610915565b3480156102f357600080fd5b50610141600160a060020a036004351661096f565b34801561031457600080fd5b50610141610a05565b34801561032957600080fd5b50610141610b18565b34801561033e57600080fd5b50610347610b23565b60408051918252519081900360200190f35b34801561036557600080fd5b50610141610b29565b34801561037a57600080fd5b50610141610b32565b34801561038f57600080fd5b50610141610bbf565b6103a133610730565b15156103ac57600080fd5b600160045460a060020a900460ff1660038111156103c657fe5b146103d057600080fd5b600480546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550565b600190565b60035463010000009004600160a060020a0316331461042157600080fd5b600160045460a060020a900460ff16600381111561043b57fe5b1461044557600080fd5b6004547501000000000000000000000000000000000000000000900460ff161561046e57600080fd5b6004805475ff00000000000000000000000000000000000000000019167501000000000000000000000000000000000000000000179055565b6104b0336106f1565b15156104bb57600080fd5b600060045460a060020a900460ff1660038111156104d557fe5b146104df57600080fd5b60048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251610590928492600160a060020a0316916370a08231916024808201926020929091908290030181600087803b15801561054b57600080fd5b505af115801561055f573d6000803e3d6000fd5b505050506040513d602081101561057557600080fd5b5051600454600160a060020a0316919063ffffffff610bc816565b50565b61059c33610730565b15156105a757600080fd5b61059081610c80565b6105b9336106f1565b15156105c457600080fd5b61059081610c91565b60006105df818363ffffffff610ca216565b92915050565b6105ee33610730565b15156105f957600080fd5b600360045460a060020a900460ff16600381111561061357fe5b141561061e57600080fd5b6004805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001775ff000000000000000000000000000000000000000000191690556003805476ffffffffffffffffffffffffffffffffffffffff00000019169055565b61069733610730565b15156106a257600080fd5b600260045460a060020a900460ff1660038111156106bc57fe5b146106c657600080fd5b600480546001919074ff0000000000000000000000000000000000000000191660a060020a836103f7565b60006105df60018363ffffffff610ca216565b61070d336105cd565b151561071857600080fd5b61059081610cd9565b60035462010000900460ff1690565b60006105df60028363ffffffff610ca216565b600061074e336105cd565b151561075957600080fd5b600160045460a060020a900460ff16600381111561077357fe5b1461077d57600080fd5b6004547501000000000000000000000000000000000000000000900460ff1615156107a757600080fd5b60045460b860020a900461ffff16151561081d576004805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a1790556108e5565b60048054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e14156108e5576004805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600554600290046005555b5060055460035460045461016d9092049161059091600160a060020a039182169163010000009091041683610bc8565b61091e336106f1565b151561092957600080fd5b600060045460a060020a900460ff16600381111561094357fe5b141561094e57600080fd5b6004805475ffff000000000000000000000000000000000000000019169055565b61097833610730565b151561098357600080fd5b600360045460a060020a900460ff16600381111561099d57fe5b146109a757600080fd5b6004805474ff0000000000000000000000000000000000000000191660a060020a17905560038054600160a060020a039290921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b6000610a10336106f1565b1515610a1b57600080fd5b600060045460a060020a900460ff166003811115610a3557fe5b14610a3f57600080fd5b6005541515610af15760048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251600160a060020a03909116916370a082319160248083019260209291908290030181600087803b158015610aaf57600080fd5b505af1158015610ac3573d6000803e3d6000fd5b505050506040513d6020811015610ad957600080fd5b50519050801515610ae957600080fd5b600281046005555b506004805474ff0000000000000000000000000000000000000000191660a060020a179055565b610b2133610cea565b565b61016d81565b610b2133610cfb565b60035463010000009004600160a060020a03163314610b5057600080fd5b600160045460a060020a900460ff166003811115610b6a57fe5b14610b7457600080fd5b6004547501000000000000000000000000000000000000000000900460ff161515610b9e57600080fd5b6004805475ff00000000000000000000000000000000000000000019169055565b610b2133610d0c565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610c4457600080fd5b505af1158015610c58573d6000803e3d6000fd5b505050506040513d6020811015610c6e57600080fd5b50511515610c7b57600080fd5b505050565b61059060028263ffffffff610d1d16565b61059060018263ffffffff610d1d16565b6000600160a060020a0382161515610cb957600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61059060008263ffffffff610d1d16565b61059060028263ffffffff610d6b16565b61059060018263ffffffff610d6b16565b61059060008263ffffffff610d6b16565b600160a060020a0381161515610d3257600080fd5b610d3c8282610ca2565b15610d4657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610d8057600080fd5b610d8a8282610ca2565b1515610d9557600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820346733bed0f72b16c5bb967042b5930d38e536cc6adf26f0a2b6cc22aaa8069d0029 \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json new file mode 100644 index 000000000..d56d737c5 --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json @@ -0,0 +1,351 @@ +{ + "abi": [ + { + "constant": false, + "inputs": [], + "name": "pauseMining", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isAlgoMiner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "startMining", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "newMinerAddress", + "type": "address" + } + ], + "name": "migrateMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addSupervisor", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isSystem", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "stopAndRemoveOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "resumeMining", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isCoreTeam", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addSystem", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getCategory", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isSupervisor", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "mine", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "deactivateMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "newOwnerAddress", + "type": "address" + } + ], + "name": "resetMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "activateMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceSupervisor", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "DAYS_PER_YEAR", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "stopMining", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceSystem", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "name": "minerType", + "type": "uint16" + }, + { + "name": "category", + "type": "uint8" + }, + { + "name": "ownerAddress", + "type": "address" + }, + { + "name": "tokenAddress", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "bytecode": "60806040523480156200001157600080fd5b5060405160808062000fb883398101604090815281516020830151918301516060909301519092906200004d33640100000000620000de810204565b6200006133640100000000620000fc810204565b620000753364010000000062000117810204565b6003805461ffff191661ffff959095169490941762ff000019166201000060ff949094169390930292909217630100000060b860020a0319166301000000600160a060020a03928316021790925560048054600160a060020a03191691909216179055620001c5565b620000f960008264010000000062000d1d6200013282021704565b50565b620000f960018264010000000062000d1d6200013282021704565b620000f960028264010000000062000d1d6200013282021704565b600160a060020a03811615156200014857600080fd5b6200015d82826401000000006200018d810204565b156200016857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001a557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610de380620001d56000396000f3006080604052600436106101275763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663162f986d811461012c5780631777fb4b1461014357806321b79d981461016c578063231d4e2a1461018157806329d10b6e146101a25780632e6b6849146101c357806334cdcf26146101e4578063363aa6c714610205578063427534a41461021a578063608d3d3d1461022f57806374be75921461025057806380258e471461027157806381a244591461029c57806399f4b251146102bd5780639e614ca0146102d2578063ada436e9146102e7578063b2a32cd514610308578063be9524941461031d578063c6846ef814610332578063d43acc7914610359578063da4086791461036e578063e9d6185914610383575b600080fd5b34801561013857600080fd5b50610141610398565b005b34801561014f57600080fd5b506101586103fe565b604080519115158252519081900360200190f35b34801561017857600080fd5b50610141610403565b34801561018d57600080fd5b50610141600160a060020a03600435166104a7565b3480156101ae57600080fd5b50610141600160a060020a0360043516610593565b3480156101cf57600080fd5b50610141600160a060020a03600435166105b0565b3480156101f057600080fd5b50610158600160a060020a03600435166105cd565b34801561021157600080fd5b506101416105e5565b34801561022657600080fd5b5061014161068e565b34801561023b57600080fd5b50610158600160a060020a03600435166106f1565b34801561025c57600080fd5b50610141600160a060020a0360043516610704565b34801561027d57600080fd5b50610286610721565b6040805160ff9092168252519081900360200190f35b3480156102a857600080fd5b50610158600160a060020a0360043516610730565b3480156102c957600080fd5b50610141610743565b3480156102de57600080fd5b50610141610915565b3480156102f357600080fd5b50610141600160a060020a036004351661096f565b34801561031457600080fd5b50610141610a05565b34801561032957600080fd5b50610141610b18565b34801561033e57600080fd5b50610347610b23565b60408051918252519081900360200190f35b34801561036557600080fd5b50610141610b29565b34801561037a57600080fd5b50610141610b32565b34801561038f57600080fd5b50610141610bbf565b6103a133610730565b15156103ac57600080fd5b600160045460a060020a900460ff1660038111156103c657fe5b146103d057600080fd5b600480546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550565b600190565b60035463010000009004600160a060020a0316331461042157600080fd5b600160045460a060020a900460ff16600381111561043b57fe5b1461044557600080fd5b6004547501000000000000000000000000000000000000000000900460ff161561046e57600080fd5b6004805475ff00000000000000000000000000000000000000000019167501000000000000000000000000000000000000000000179055565b6104b0336106f1565b15156104bb57600080fd5b600060045460a060020a900460ff1660038111156104d557fe5b146104df57600080fd5b60048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251610590928492600160a060020a0316916370a08231916024808201926020929091908290030181600087803b15801561054b57600080fd5b505af115801561055f573d6000803e3d6000fd5b505050506040513d602081101561057557600080fd5b5051600454600160a060020a0316919063ffffffff610bc816565b50565b61059c33610730565b15156105a757600080fd5b61059081610c80565b6105b9336106f1565b15156105c457600080fd5b61059081610c91565b60006105df818363ffffffff610ca216565b92915050565b6105ee33610730565b15156105f957600080fd5b600360045460a060020a900460ff16600381111561061357fe5b141561061e57600080fd5b6004805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001775ff000000000000000000000000000000000000000000191690556003805476ffffffffffffffffffffffffffffffffffffffff00000019169055565b61069733610730565b15156106a257600080fd5b600260045460a060020a900460ff1660038111156106bc57fe5b146106c657600080fd5b600480546001919074ff0000000000000000000000000000000000000000191660a060020a836103f7565b60006105df60018363ffffffff610ca216565b61070d336105cd565b151561071857600080fd5b61059081610cd9565b60035462010000900460ff1690565b60006105df60028363ffffffff610ca216565b600061074e336105cd565b151561075957600080fd5b600160045460a060020a900460ff16600381111561077357fe5b1461077d57600080fd5b6004547501000000000000000000000000000000000000000000900460ff1615156107a757600080fd5b60045460b860020a900461ffff16151561081d576004805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a1790556108e5565b60048054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e14156108e5576004805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600554600290046005555b5060055460035460045461016d9092049161059091600160a060020a039182169163010000009091041683610bc8565b61091e336106f1565b151561092957600080fd5b600060045460a060020a900460ff16600381111561094357fe5b141561094e57600080fd5b6004805475ffff000000000000000000000000000000000000000019169055565b61097833610730565b151561098357600080fd5b600360045460a060020a900460ff16600381111561099d57fe5b146109a757600080fd5b6004805474ff0000000000000000000000000000000000000000191660a060020a17905560038054600160a060020a039290921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b6000610a10336106f1565b1515610a1b57600080fd5b600060045460a060020a900460ff166003811115610a3557fe5b14610a3f57600080fd5b6005541515610af15760048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251600160a060020a03909116916370a082319160248083019260209291908290030181600087803b158015610aaf57600080fd5b505af1158015610ac3573d6000803e3d6000fd5b505050506040513d6020811015610ad957600080fd5b50519050801515610ae957600080fd5b600281046005555b506004805474ff0000000000000000000000000000000000000000191660a060020a179055565b610b2133610cea565b565b61016d81565b610b2133610cfb565b60035463010000009004600160a060020a03163314610b5057600080fd5b600160045460a060020a900460ff166003811115610b6a57fe5b14610b7457600080fd5b6004547501000000000000000000000000000000000000000000900460ff161515610b9e57600080fd5b6004805475ff00000000000000000000000000000000000000000019169055565b610b2133610d0c565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610c4457600080fd5b505af1158015610c58573d6000803e3d6000fd5b505050506040513d6020811015610c6e57600080fd5b50511515610c7b57600080fd5b505050565b61059060028263ffffffff610d1d16565b61059060018263ffffffff610d1d16565b6000600160a060020a0382161515610cb957600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61059060008263ffffffff610d1d16565b61059060028263ffffffff610d6b16565b61059060018263ffffffff610d6b16565b61059060008263ffffffff610d6b16565b600160a060020a0381161515610d3257600080fd5b610d3c8282610ca2565b15610d4657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610d8057600080fd5b610d8a8282610ca2565b1515610d9557600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820346733bed0f72b16c5bb967042b5930d38e536cc6adf26f0a2b6cc22aaa8069d0029", + "functionHashes": { + "DAYS_PER_YEAR()": "c6846ef8", + "activateMiner()": "b2a32cd5", + "addCoreTeam(address)": "2e6b6849", + "addSupervisor(address)": "29d10b6e", + "addSystem(address)": "74be7592", + "deactivateMiner()": "9e614ca0", + "getCategory()": "80258e47", + "isAlgoMiner()": "1777fb4b", + "isCoreTeam(address)": "608d3d3d", + "isSupervisor(address)": "81a24459", + "isSystem(address)": "34cdcf26", + "migrateMiner(address)": "231d4e2a", + "mine()": "99f4b251", + "pauseMining()": "162f986d", + "renounceCoreTeam()": "d43acc79", + "renounceSupervisor()": "be952494", + "renounceSystem()": "e9d61859", + "resetMiner(address)": "ada436e9", + "resumeMining()": "427534a4", + "startMining()": "21b79d98", + "stopAndRemoveOwnership()": "363aa6c7", + "stopMining()": "da408679" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "711000", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "DAYS_PER_YEAR()": "580", + "activateMiner()": "infinite", + "addCoreTeam(address)": "infinite", + "addSupervisor(address)": "infinite", + "addSystem(address)": "infinite", + "deactivateMiner()": "infinite", + "getCategory()": "652", + "isAlgoMiner()": "212", + "isCoreTeam(address)": "infinite", + "isSupervisor(address)": "infinite", + "isSystem(address)": "infinite", + "migrateMiner(address)": "infinite", + "mine()": "infinite", + "pauseMining()": "infinite", + "renounceCoreTeam()": "infinite", + "renounceSupervisor()": "infinite", + "renounceSystem()": "infinite", + "resetMiner(address)": "infinite", + "resumeMining()": "infinite", + "startMining()": "21272", + "stopAndRemoveOwnership()": "infinite", + "stopMining()": "21665" + } + } +} \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json new file mode 100644 index 000000000..15b41cc7a --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json @@ -0,0 +1,10176 @@ +{ + "contracts": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol": { + "AlgoCoreTeamRole": { + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isCoreTeam", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "addCoreTeam(address)": "2e6b6849", + "isCoreTeam(address)": "608d3d3d", + "renounceCoreTeam()": "d43acc79" + } + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol": { + "AlgoPool": { + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "minerAddress", + "type": "address" + } + ], + "name": "trasferToMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "TOKEN_FACTOR", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "CAT_4_VALUE", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "CAT_1_VALUE", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "CAT_3_VALUE", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isCoreTeam", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "CAT_0_VALUE", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "CAT_5_VALUE", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "CAT_2_VALUE", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "name": "poolType", + "type": "uint16" + }, + { + "name": "tokenAddress", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b5060405160408061076083398101604052805160209091015161003b33640100000000610077810204565b60018054600160a060020a0390921662010000026201000060b060020a031961ffff90941661ffff199093169290921792909216179055610120565b61008f60008264010000000061056b61009282021704565b50565b600160a060020a03811615156100a757600080fd5b6100ba82826401000000006100e9810204565b156100c457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561010057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106318061012f6000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632296f4c7811461009a57806325109e8b146100bd5780632e6b6849146100e4578063455acbcd14610105578063492fba841461011a57806349dc9ed01461012f578063608d3d3d146101445780639fc3c98314610179578063a89febb21461018e578063aed6183f146101a3578063d43acc79146101b8575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a03600435166101cd565b005b3480156100c957600080fd5b506100d26103cc565b60408051918252519081900360200190f35b3480156100f057600080fd5b506100bb600160a060020a03600435166103d8565b34801561011157600080fd5b506100d26103f8565b34801561012657600080fd5b506100d2610407565b34801561013b57600080fd5b506100d2610415565b34801561015057600080fd5b50610165600160a060020a0360043516610424565b604080519115158252519081900360200190f35b34801561018557600080fd5b506100d261043c565b34801561019a57600080fd5b506100d261044a565b3480156101af57600080fd5b506100d2610459565b3480156101c457600080fd5b506100bb610468565b60008060006101db33610424565b15156101e657600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561022757600080fd5b505af115801561023b573d6000803e3d6000fd5b505050506040513d602081101561025157600080fd5b5051151561025e57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561029c57600080fd5b505af11580156102b0573d6000803e3d6000fd5b505050506040513d60208110156102c657600080fd5b50519150600060ff8316108015906102e2575060058260ff1611155b15156102ed57600080fd5b50600060ff8216151561030b575069152d02c7e14af680000061039c565b8160ff1660011415610328575069d3c21bcecceda100000061039c565b8160ff166002141561034657506a01a784379d99db4200000061039c565b8160ff166003141561036457506a027b46536c66c8e300000061039c565b8160ff166004141561038257506a034f086f3b33b68400000061039c565b8160ff166005141561039c57506a0422ca8b0a00a4250000005b600081116103a957600080fd5b6001546103c690620100009004600160a060020a03168583610473565b50505050565b670de0b6b3a764000081565b6103e133610424565b15156103ec57600080fd5b6103f581610512565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b6000610436818363ffffffff61052316565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b6104713361055a565b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156104d657600080fd5b505af11580156104ea573d6000803e3d6000fd5b505050506040513d602081101561050057600080fd5b5051151561050d57600080fd5b505050565b6103f560008263ffffffff61056b16565b6000600160a060020a038216151561053a57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6103f560008263ffffffff6105b916565b600160a060020a038116151561058057600080fd5b61058a8282610523565b1561059457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a03811615156105ce57600080fd5b6105d88282610523565b15156105e357600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820fcd1665b524606952d86f870d91a6ad5ceaed631661ee3cc8731e992b464993a0029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 PUSH2 0x760 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH2 0x3B CALLER PUSH5 0x100000000 PUSH2 0x77 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND PUSH3 0x10000 MUL PUSH3 0x10000 PUSH1 0xB0 PUSH1 0x2 EXP SUB NOT PUSH2 0xFFFF SWAP1 SWAP5 AND PUSH2 0xFFFF NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH2 0x120 JUMP JUMPDEST PUSH2 0x8F PUSH1 0x0 DUP3 PUSH5 0x100000000 PUSH2 0x56B PUSH2 0x92 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBA DUP3 DUP3 PUSH5 0x100000000 PUSH2 0xE9 DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH2 0xC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x631 DUP1 PUSH2 0x12F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x95 JUMPI PUSH4 0xFFFFFFFF PUSH1 0xE0 PUSH1 0x2 EXP PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x2296F4C7 DUP2 EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0x25109E8B EQ PUSH2 0xBD JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x455ACBCD EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x492FBA84 EQ PUSH2 0x11A JUMPI DUP1 PUSH4 0x49DC9ED0 EQ PUSH2 0x12F JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x9FC3C983 EQ PUSH2 0x179 JUMPI DUP1 PUSH4 0xA89FEBB2 EQ PUSH2 0x18E JUMPI DUP1 PUSH4 0xAED6183F EQ PUSH2 0x1A3 JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x1B8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x1CD JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x3CC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x3D8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x111 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x3F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x126 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x407 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x415 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x424 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x43C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x44A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x459 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH2 0x468 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1DB CALLER PUSH2 0x424 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 SWAP3 POP DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x227 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x23B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x251 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x25E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP PUSH1 0x0 PUSH1 0xFF DUP4 AND LT DUP1 ISZERO SWAP1 PUSH2 0x2E2 JUMPI POP PUSH1 0x5 DUP3 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0x2ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0xFF DUP3 AND ISZERO ISZERO PUSH2 0x30B JUMPI POP PUSH10 0x152D02C7E14AF6800000 PUSH2 0x39C JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x328 JUMPI POP PUSH10 0xD3C21BCECCEDA1000000 PUSH2 0x39C JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x346 JUMPI POP PUSH11 0x1A784379D99DB42000000 PUSH2 0x39C JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x364 JUMPI POP PUSH11 0x27B46536C66C8E3000000 PUSH2 0x39C JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x382 JUMPI POP PUSH11 0x34F086F3B33B684000000 PUSH2 0x39C JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x39C JUMPI POP PUSH11 0x422CA8B0A00A425000000 JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x3A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x3C6 SWAP1 PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP6 DUP4 PUSH2 0x473 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH2 0x3E1 CALLER PUSH2 0x424 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x3EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3F5 DUP2 PUSH2 0x512 JUMP JUMPDEST POP JUMP JUMPDEST PUSH11 0x34F086F3B33B684000000 DUP2 JUMP JUMPDEST PUSH10 0xD3C21BCECCEDA1000000 DUP2 JUMP JUMPDEST PUSH11 0x27B46536C66C8E3000000 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x436 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x523 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH10 0x152D02C7E14AF6800000 DUP2 JUMP JUMPDEST PUSH11 0x422CA8B0A00A425000000 DUP2 JUMP JUMPDEST PUSH11 0x1A784379D99DB42000000 DUP2 JUMP JUMPDEST PUSH2 0x471 CALLER PUSH2 0x55A JUMP JUMPDEST JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x500 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x50D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x3F5 PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x56B AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x53A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x3F5 PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x5B9 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x580 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x58A DUP3 DUP3 PUSH2 0x523 JUMP JUMPDEST ISZERO PUSH2 0x594 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x5CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5D8 DUP3 DUP3 PUSH2 0x523 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x5E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xfc 0xd1 PUSH7 0x5B524606952D86 0xf8 PUSH17 0xD91A6AD5CEAED631661EE3CC8731E992B4 PUSH5 0x993A002900 ", + "sourceMap": "490:1691:1:-;;;1113:174;8:9:-1;5:2;;;30:1;27;20:12;5:2;1113:174:1;;;;;;;;;;;;;;;;;;;368:24:0;381:10;368:12;;;;:24;:::i;:::-;1219:9:1;:20;;-1:-1:-1;;;;;1250:29:1;;;;;-1:-1:-1;;;;;;1219:20:1;;;;-1:-1:-1;;1219:20:1;;;;;;;1250:29;;;;;;;490:1691;;824:96:0;883:29;:16;904:7;883:20;;;;;;:29;:::i;:::-;824:96;:::o;244:167:3:-;-1:-1:-1;;;;;316:21:3;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:3;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:3;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:3;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:3;:11;:20;;;;;;;;;;;;;;;725:166::o;490:1691:1:-;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "317000", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "CAT_0_VALUE()": "401", + "CAT_1_VALUE()": "335", + "CAT_2_VALUE()": "445", + "CAT_3_VALUE()": "357", + "CAT_4_VALUE()": "313", + "CAT_5_VALUE()": "423", + "TOKEN_FACTOR()": "269", + "addCoreTeam(address)": "infinite", + "isCoreTeam(address)": "infinite", + "renounceCoreTeam()": "infinite", + "trasferToMiner(address)": "infinite" + } + }, + "methodIdentifiers": { + "CAT_0_VALUE()": "9fc3c983", + "CAT_1_VALUE()": "492fba84", + "CAT_2_VALUE()": "aed6183f", + "CAT_3_VALUE()": "49dc9ed0", + "CAT_4_VALUE()": "455acbcd", + "CAT_5_VALUE()": "a89febb2", + "TOKEN_FACTOR()": "25109e8b", + "addCoreTeam(address)": "2e6b6849", + "isCoreTeam(address)": "608d3d3d", + "renounceCoreTeam()": "d43acc79", + "trasferToMiner(address)": "2296f4c7" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"trasferToMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"TOKEN_FACTOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_4_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_1_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_3_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_0_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_5_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_2_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"poolType\",\"type\":\"uint16\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":\"AlgoPool\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":{\"keccak256\":\"0xaa20972ee94e17902a4362885750505af52aeaa2e0cae1bf259b4ba3c3923d32\",\"urls\":[\"bzzr://cb35cac4a863c851295ac8608f3076d82cb1661797bed96740ef01d558ccfb61\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0xb457e39e512b5475c3e70193ab0a751f6626a50417954247f0cf47c7ca15eff7\",\"urls\":[\"bzzr://3b585a4055121fee393f2b691538036c87f56556f43f0b6e851a88de7b8275e6\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol": { + "IAlgoMiner": { + "abi": [ + { + "constant": true, + "inputs": [], + "name": "isAlgoMiner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getCategory", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "getCategory()": "80258e47", + "isAlgoMiner()": "1777fb4b" + } + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { + "Roles": { + "abi": [], + "devdoc": { + "methods": {}, + "title": "Roles" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820ba9d82b11504517181f938ed511f09c0a22046ef39e2e32460a2175b508e16a80029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xba SWAP14 DUP3 0xb1 ISZERO DIV MLOAD PUSH18 0x81F938ED511F09C0A22046EF39E2E32460A2 OR JUMPDEST POP DUP15 AND 0xa8 STOP 0x29 ", + "sourceMap": "109:784:3:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "15200", + "executionCost": "116", + "totalCost": "15316" + }, + "internal": { + "add(struct Roles.Role storage pointer,address)": "infinite", + "has(struct Roles.Role storage pointer,address)": "infinite", + "remove(struct Roles.Role storage pointer,address)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"Roles\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":\"Roles\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { + "SafeMath": { + "abi": [], + "devdoc": { + "methods": {}, + "title": "SafeMath" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820da2bd0dd3588878574232c2d13f92e16f4b0e8ad94ede9adb0d087f862d4f8cf0029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xda 0x2b 0xd0 0xdd CALLDATALOAD DUP9 DUP8 DUP6 PUSH21 0x232C2D13F92E16F4B0E8AD94EDE9ADB0D087F862D4 0xf8 0xcf STOP 0x29 ", + "sourceMap": "117:1531:4:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "15200", + "executionCost": "116", + "totalCost": "15316" + }, + "internal": { + "add(uint256,uint256)": "infinite", + "div(uint256,uint256)": "infinite", + "mod(uint256,uint256)": "infinite", + "mul(uint256,uint256)": "infinite", + "sub(uint256,uint256)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"SafeMath\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol": { + "IERC20": { + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "who", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + } + ], + "devdoc": { + "methods": {}, + "title": "ERC20 interface" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol": { + "SafeERC20": { + "abi": [], + "devdoc": { + "methods": {}, + "title": "SafeERC20" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820c0f55d8db2bd761049fa5ba6b6c207a4d595b758946aba3715580373517606710029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xc0 0xf5 0x5d DUP14 0xb2 0xbd PUSH23 0x1049FA5BA6B6C207A4D595B758946ABA37155803735176 MOD PUSH18 0x2900000000000000000000000000000000 ", + "sourceMap": "353:1296:6:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "15200", + "executionCost": "116", + "totalCost": "15316" + }, + "internal": { + "safeApprove(contract IERC20,address,uint256)": "infinite", + "safeDecreaseAllowance(contract IERC20,address,uint256)": "infinite", + "safeIncreaseAllowance(contract IERC20,address,uint256)": "infinite", + "safeTransfer(contract IERC20,address,uint256)": "infinite", + "safeTransferFrom(contract IERC20,address,address,uint256)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"SafeERC20\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + } + }, + "sources": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol", + "exportedSymbols": { + "AlgoCoreTeamRole": [ + 86 + ] + }, + "id": 87, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:0" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "id": 2, + "nodeType": "ImportDirective", + "scope": 87, + "sourceUnit": 382, + "src": "28:189:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 86, + "linearizedBaseContracts": [ + 86 + ], + "name": "AlgoCoreTeamRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 5, + "libraryName": { + "contractScope": null, + "id": 3, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 381, + "src": "260:5:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$381", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "254:27:0", + "typeName": { + "contractScope": null, + "id": 4, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 294, + "src": "270:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "constant": false, + "id": 7, + "name": "_coreTeamMembers", + "nodeType": "VariableDeclaration", + "scope": 86, + "src": "289:35:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 6, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 294, + "src": "289:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 15, + "nodeType": "Block", + "src": "357:43:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 737, + "src": "381:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 12, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "381:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10, + "name": "_addCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "368:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 13, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "368:24:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14, + "nodeType": "ExpressionStatement", + "src": "368:24:0" + } + ] + }, + "documentation": null, + "id": 16, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8, + "nodeType": "ParameterList", + "parameters": [], + "src": "345:2:0" + }, + "payable": false, + "returnParameters": { + "id": 9, + "nodeType": "ParameterList", + "parameters": [], + "src": "357:0:0" + }, + "scope": 86, + "src": "333:67:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 26, + "nodeType": "Block", + "src": "432:62:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 20, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 737, + "src": "462:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 21, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "462:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 19, + "name": "isCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "451:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 22, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "451:22:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 18, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "443:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 23, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "443:31:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 24, + "nodeType": "ExpressionStatement", + "src": "443:31:0" + }, + { + "id": 25, + "nodeType": "PlaceholderStatement", + "src": "485:1:0" + } + ] + }, + "documentation": null, + "id": 27, + "name": "onlyCoreTeam", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 17, + "nodeType": "ParameterList", + "parameters": [], + "src": "429:2:0" + }, + "src": "408:86:0", + "visibility": "internal" + }, + { + "body": { + "id": 39, + "nodeType": "Block", + "src": "566:55:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 36, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 29, + "src": "605:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 34, + "name": "_coreTeamMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "584:16:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 35, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 380, + "src": "584:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$294_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$294_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 37, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "584:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 33, + "id": 38, + "nodeType": "Return", + "src": "577:36:0" + } + ] + }, + "documentation": null, + "id": 40, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 30, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 29, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 40, + "src": "522:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 28, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "522:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "521:17:0" + }, + "payable": false, + "returnParameters": { + "id": 33, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 32, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 40, + "src": "560:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 31, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "560:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "559:6:0" + }, + "scope": 86, + "src": "502:119:0", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 51, + "nodeType": "Block", + "src": "687:40:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 48, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "711:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 47, + "name": "_addCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "698:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 49, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "698:21:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 50, + "nodeType": "ExpressionStatement", + "src": "698:21:0" + } + ] + }, + "documentation": null, + "id": 52, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 45, + "modifierName": { + "argumentTypes": null, + "id": 44, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "674:12:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "674:12:0" + } + ], + "name": "addCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 42, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 52, + "src": "650:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 41, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "650:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "649:17:0" + }, + "payable": false, + "returnParameters": { + "id": 46, + "nodeType": "ParameterList", + "parameters": [], + "src": "687:0:0" + }, + "scope": 86, + "src": "629:98:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 60, + "nodeType": "Block", + "src": "770:46:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 56, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 737, + "src": "797:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 57, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "797:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 55, + "name": "_removeCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "781:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 58, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "781:27:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 59, + "nodeType": "ExpressionStatement", + "src": "781:27:0" + } + ] + }, + "documentation": null, + "id": 61, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "renounceCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 53, + "nodeType": "ParameterList", + "parameters": [], + "src": "760:2:0" + }, + "payable": false, + "returnParameters": { + "id": 54, + "nodeType": "ParameterList", + "parameters": [], + "src": "770:0:0" + }, + "scope": 86, + "src": "735:81:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 72, + "nodeType": "Block", + "src": "872:48:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 69, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 63, + "src": "904:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 66, + "name": "_coreTeamMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "883:16:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 68, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 326, + "src": "883:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$294_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$294_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 70, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "883:29:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 71, + "nodeType": "ExpressionStatement", + "src": "883:29:0" + } + ] + }, + "documentation": null, + "id": 73, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_addCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 64, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 63, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 73, + "src": "846:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 62, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "846:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "845:17:0" + }, + "payable": false, + "returnParameters": { + "id": 65, + "nodeType": "ParameterList", + "parameters": [], + "src": "872:0:0" + }, + "scope": 86, + "src": "824:96:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 84, + "nodeType": "Block", + "src": "979:51:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 81, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 75, + "src": "1014:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 78, + "name": "_coreTeamMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "990:16:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 80, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 357, + "src": "990:23:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$294_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$294_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 82, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "990:32:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 83, + "nodeType": "ExpressionStatement", + "src": "990:32:0" + } + ] + }, + "documentation": null, + "id": 85, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_removeCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 76, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 75, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 85, + "src": "953:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 74, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "953:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "952:17:0" + }, + "payable": false, + "returnParameters": { + "id": 77, + "nodeType": "ParameterList", + "parameters": [], + "src": "979:0:0" + }, + "scope": 86, + "src": "928:102:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 87, + "src": "221:812:0" + } + ], + "src": "0:1035:0" + }, + "id": 0 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol", + "exportedSymbols": { + "AlgoPool": [ + 274 + ] + }, + "id": 275, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 88, + "literals": [ + "solidity", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:23:1" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "id": 89, + "nodeType": "ImportDirective", + "scope": 275, + "sourceUnit": 579, + "src": "27:195:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "id": 90, + "nodeType": "ImportDirective", + "scope": 275, + "sourceUnit": 723, + "src": "224:198:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", + "file": "./IAlgoMiner.sol", + "id": 91, + "nodeType": "ImportDirective", + "scope": 275, + "sourceUnit": 288, + "src": "426:26:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol", + "file": "./AlgoCoreTeamRole.sol", + "id": 92, + "nodeType": "ImportDirective", + "scope": 275, + "sourceUnit": 87, + "src": "454:32:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 93, + "name": "AlgoCoreTeamRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 86, + "src": "511:16:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AlgoCoreTeamRole_$86", + "typeString": "contract AlgoCoreTeamRole" + } + }, + "id": 94, + "nodeType": "InheritanceSpecifier", + "src": "511:16:1" + } + ], + "contractDependencies": [ + 86 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 274, + "linearizedBaseContracts": [ + 274, + 86 + ], + "name": "AlgoPool", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 97, + "libraryName": { + "contractScope": null, + "id": 95, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 722, + "src": "541:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$722", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "535:27:1", + "typeName": { + "contractScope": null, + "id": 96, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 578, + "src": "555:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + } + }, + { + "constant": true, + "id": 104, + "name": "TOKEN_FACTOR", + "nodeType": "VariableDeclaration", + "scope": 274, + "src": "570:56:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 98, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "570:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 103, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 99, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "609:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "3138", + "id": 101, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "623:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + } + ], + "id": 100, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "615:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint256" + }, + "id": 102, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "615:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "609:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": true, + "id": 109, + "name": "CAT_0_VALUE", + "nodeType": "VariableDeclaration", + "scope": 274, + "src": "633:59:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 105, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "633:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 108, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "313030303030", + "id": 106, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "671:6:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_100000_by_1", + "typeString": "int_const 100000" + }, + "value": "100000" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 107, + "name": "TOKEN_FACTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "680:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "671:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": true, + "id": 114, + "name": "CAT_1_VALUE", + "nodeType": "VariableDeclaration", + "scope": 274, + "src": "699:60:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 110, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "699:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 113, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "31303030303030", + "id": 111, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "737:7:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1000000" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 112, + "name": "TOKEN_FACTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "747:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "737:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": true, + "id": 121, + "name": "CAT_2_VALUE", + "nodeType": "VariableDeclaration", + "scope": 274, + "src": "766:64:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 115, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "766:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 120, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_2000000_by_1", + "typeString": "int_const 2000000" + }, + "id": 118, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 116, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "804:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31303030303030", + "id": 117, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "808:7:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1000000" + }, + "src": "804:11:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_2000000_by_1", + "typeString": "int_const 2000000" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 119, + "name": "TOKEN_FACTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "818:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "804:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": true, + "id": 128, + "name": "CAT_3_VALUE", + "nodeType": "VariableDeclaration", + "scope": 274, + "src": "837:64:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 122, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "837:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 127, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_3000000_by_1", + "typeString": "int_const 3000000" + }, + "id": 125, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "33", + "id": 123, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "875:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31303030303030", + "id": 124, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "879:7:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1000000" + }, + "src": "875:11:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_3000000_by_1", + "typeString": "int_const 3000000" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 126, + "name": "TOKEN_FACTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "889:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "875:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": true, + "id": 135, + "name": "CAT_4_VALUE", + "nodeType": "VariableDeclaration", + "scope": 274, + "src": "908:64:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 129, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "908:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 134, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_4000000_by_1", + "typeString": "int_const 4000000" + }, + "id": 132, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "34", + "id": 130, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "946:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31303030303030", + "id": 131, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "950:7:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1000000" + }, + "src": "946:11:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_4000000_by_1", + "typeString": "int_const 4000000" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 133, + "name": "TOKEN_FACTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "960:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "946:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": true, + "id": 142, + "name": "CAT_5_VALUE", + "nodeType": "VariableDeclaration", + "scope": 274, + "src": "979:64:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 136, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "979:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 141, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_5000000_by_1", + "typeString": "int_const 5000000" + }, + "id": 139, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "35", + "id": 137, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1017:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31303030303030", + "id": 138, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1021:7:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1000000" + }, + "src": "1017:11:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_5000000_by_1", + "typeString": "int_const 5000000" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 140, + "name": "TOKEN_FACTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "1031:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1017:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "id": 144, + "name": "_poolType", + "nodeType": "VariableDeclaration", + "scope": 274, + "src": "1052:24:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 143, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1052:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 146, + "name": "_token", + "nodeType": "VariableDeclaration", + "scope": 274, + "src": "1083:21:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 145, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 578, + "src": "1083:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 165, + "nodeType": "Block", + "src": "1208:79:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 157, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 155, + "name": "_poolType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 144, + "src": "1219:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 156, + "name": "poolType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 148, + "src": "1231:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "1219:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 158, + "nodeType": "ExpressionStatement", + "src": "1219:20:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 159, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 146, + "src": "1250:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 161, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 150, + "src": "1266:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 160, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 578, + "src": "1259:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$578_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1259:20:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "src": "1250:29:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "id": 164, + "nodeType": "ExpressionStatement", + "src": "1250:29:1" + } + ] + }, + "documentation": null, + "id": 166, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 153, + "modifierName": { + "argumentTypes": null, + "id": 152, + "name": "AlgoCoreTeamRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 86, + "src": "1173:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_AlgoCoreTeamRole_$86_$", + "typeString": "type(contract AlgoCoreTeamRole)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1173:18:1" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 151, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 148, + "name": "poolType", + "nodeType": "VariableDeclaration", + "scope": 166, + "src": "1125:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 147, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1125:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 150, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 166, + "src": "1142:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 149, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1142:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1124:39:1" + }, + "payable": false, + "returnParameters": { + "id": 154, + "nodeType": "ParameterList", + "parameters": [], + "src": "1208:0:1" + }, + "scope": 274, + "src": "1113:174:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 272, + "nodeType": "Block", + "src": "1361:817:1", + "statements": [ + { + "assignments": [ + 174 + ], + "declarations": [ + { + "constant": false, + "id": 174, + "name": "algoMiner", + "nodeType": "VariableDeclaration", + "scope": 273, + "src": "1372:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$287", + "typeString": "contract IAlgoMiner" + }, + "typeName": { + "contractScope": null, + "id": 173, + "name": "IAlgoMiner", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 287, + "src": "1372:10:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$287", + "typeString": "contract IAlgoMiner" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 178, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 176, + "name": "minerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 168, + "src": "1406:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 175, + "name": "IAlgoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 287, + "src": "1395:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$287_$", + "typeString": "type(contract IAlgoMiner)" + } + }, + "id": 177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1395:24:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$287", + "typeString": "contract IAlgoMiner" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1372:47:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 180, + "name": "algoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 174, + "src": "1448:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$287", + "typeString": "contract IAlgoMiner" + } + }, + "id": 181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isAlgoMiner", + "nodeType": "MemberAccess", + "referencedDeclaration": 281, + "src": "1448:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_pure$__$returns$_t_bool_$", + "typeString": "function () pure external returns (bool)" + } + }, + "id": 182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1448:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 179, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "1440:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1440:32:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 184, + "nodeType": "ExpressionStatement", + "src": "1440:32:1" + }, + { + "assignments": [ + 186 + ], + "declarations": [ + { + "constant": false, + "id": 186, + "name": "minerCategory", + "nodeType": "VariableDeclaration", + "scope": 273, + "src": "1493:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 185, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1493:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 190, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 187, + "name": "algoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 174, + "src": "1515:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$287", + "typeString": "contract IAlgoMiner" + } + }, + "id": 188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getCategory", + "nodeType": "MemberAccess", + "referencedDeclaration": 286, + "src": "1515:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", + "typeString": "function () view external returns (uint8)" + } + }, + "id": 189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1515:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1493:45:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 192, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 186, + "src": "1559:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 193, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1576:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1559:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 195, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 186, + "src": "1581:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "35", + "id": 196, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1598:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "src": "1581:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1559:40:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 191, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "1551:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1551:49:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 200, + "nodeType": "ExpressionStatement", + "src": "1551:49:1" + }, + { + "assignments": [ + 202 + ], + "declarations": [ + { + "constant": false, + "id": 202, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 273, + "src": "1613:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 201, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1613:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 204, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 203, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1629:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1613:17:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 205, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 186, + "src": "1646:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 206, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1663:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1646:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 213, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 186, + "src": "1721:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 214, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1738:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1721:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 221, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 186, + "src": "1796:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 222, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1813:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "1796:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 229, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 186, + "src": "1871:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "33", + "id": 230, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1888:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "src": "1871:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 237, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 186, + "src": "1946:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "34", + "id": 238, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1963:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "1946:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 245, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 186, + "src": "2021:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "35", + "id": 246, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2038:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "src": "2021:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 253, + "nodeType": "IfStatement", + "src": "2018:69:1", + "trueBody": { + "id": 252, + "nodeType": "Block", + "src": "2041:46:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 248, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "2056:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 249, + "name": "CAT_5_VALUE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 142, + "src": "2064:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2056:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 251, + "nodeType": "ExpressionStatement", + "src": "2056:19:1" + } + ] + } + }, + "id": 254, + "nodeType": "IfStatement", + "src": "1943:144:1", + "trueBody": { + "id": 244, + "nodeType": "Block", + "src": "1966:46:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 240, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "1981:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 241, + "name": "CAT_4_VALUE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 135, + "src": "1989:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1981:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 243, + "nodeType": "ExpressionStatement", + "src": "1981:19:1" + } + ] + } + }, + "id": 255, + "nodeType": "IfStatement", + "src": "1868:219:1", + "trueBody": { + "id": 236, + "nodeType": "Block", + "src": "1891:46:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 232, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "1906:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 233, + "name": "CAT_3_VALUE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 128, + "src": "1914:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1906:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 235, + "nodeType": "ExpressionStatement", + "src": "1906:19:1" + } + ] + } + }, + "id": 256, + "nodeType": "IfStatement", + "src": "1793:294:1", + "trueBody": { + "id": 228, + "nodeType": "Block", + "src": "1816:46:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 224, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "1831:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 225, + "name": "CAT_2_VALUE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 121, + "src": "1839:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1831:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 227, + "nodeType": "ExpressionStatement", + "src": "1831:19:1" + } + ] + } + }, + "id": 257, + "nodeType": "IfStatement", + "src": "1718:369:1", + "trueBody": { + "id": 220, + "nodeType": "Block", + "src": "1741:46:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 216, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "1756:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 217, + "name": "CAT_1_VALUE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 114, + "src": "1764:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1756:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 219, + "nodeType": "ExpressionStatement", + "src": "1756:19:1" + } + ] + } + }, + "id": 258, + "nodeType": "IfStatement", + "src": "1643:444:1", + "trueBody": { + "id": 212, + "nodeType": "Block", + "src": "1666:46:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 208, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "1681:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 209, + "name": "CAT_0_VALUE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 109, + "src": "1689:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1681:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 211, + "nodeType": "ExpressionStatement", + "src": "1681:19:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 260, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "2107:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 261, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2115:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2107:9:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 259, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "2099:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2099:18:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 264, + "nodeType": "ExpressionStatement", + "src": "2099:18:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 268, + "name": "minerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 168, + "src": "2150:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 269, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "2164:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 265, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 146, + "src": "2130:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "id": 267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 603, + "src": "2130:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$578_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$578_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2130:40:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 271, + "nodeType": "ExpressionStatement", + "src": "2130:40:1" + } + ] + }, + "documentation": null, + "id": 273, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 171, + "modifierName": { + "argumentTypes": null, + "id": 170, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "1348:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1348:12:1" + } + ], + "name": "trasferToMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 169, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 168, + "name": "minerAddress", + "nodeType": "VariableDeclaration", + "scope": 273, + "src": "1319:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 167, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1319:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1318:22:1" + }, + "payable": false, + "returnParameters": { + "id": 172, + "nodeType": "ParameterList", + "parameters": [], + "src": "1361:0:1" + }, + "scope": 274, + "src": "1295:883:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 275, + "src": "490:1691:1" + } + ], + "src": "0:2183:1" + }, + "id": 1 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", + "exportedSymbols": { + "IAlgoMiner": [ + 287 + ] + }, + "id": 288, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 276, + "literals": [ + "solidity", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:23:2" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": false, + "id": 287, + "linearizedBaseContracts": [ + 287 + ], + "name": "IAlgoMiner", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 281, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isAlgoMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 277, + "nodeType": "ParameterList", + "parameters": [], + "src": "74:2:2" + }, + "payable": false, + "returnParameters": { + "id": 280, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 279, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 281, + "src": "98:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 278, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "98:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "97:6:2" + }, + "scope": 287, + "src": "54:50:2", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 286, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getCategory", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 282, + "nodeType": "ParameterList", + "parameters": [], + "src": "130:2:2" + }, + "payable": false, + "returnParameters": { + "id": 285, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 284, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 286, + "src": "154:5:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 283, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "154:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "153:7:2" + }, + "scope": 287, + "src": "110:51:2", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 288, + "src": "27:137:2" + } + ], + "src": "0:164:2" + }, + "id": 2 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "exportedSymbols": { + "Roles": [ + 381 + ] + }, + "id": 382, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 289, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:3" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", + "fullyImplemented": true, + "id": 381, + "linearizedBaseContracts": [ + 381 + ], + "name": "Roles", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "Roles.Role", + "id": 294, + "members": [ + { + "constant": false, + "id": 293, + "name": "bearer", + "nodeType": "VariableDeclaration", + "scope": 294, + "src": "145:32:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 292, + "keyType": { + "id": 290, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "154:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "145:25:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 291, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "165:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Role", + "nodeType": "StructDefinition", + "scope": 381, + "src": "127:55:3", + "visibility": "public" + }, + { + "body": { + "id": 325, + "nodeType": "Block", + "src": "302:109:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 302, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 298, + "src": "316:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 304, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "335:1:3", + "subdenomination": null, + "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": 303, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "327:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 305, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "327:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "316:21:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 301, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "308:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 307, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "308:30:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 308, + "nodeType": "ExpressionStatement", + "src": "308:30:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "352:19:3", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 311, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 296, + "src": "357:4:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 312, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 298, + "src": "363:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 310, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 380, + "src": "353:3:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$294_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "353:18:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 309, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "344:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "344:28:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 316, + "nodeType": "ExpressionStatement", + "src": "344:28:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 317, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 296, + "src": "379:4:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 320, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "379:11:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 321, + "indexExpression": { + "argumentTypes": null, + "id": 319, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 298, + "src": "391:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "379:20:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 322, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "402:4:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "379:27:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 324, + "nodeType": "ExpressionStatement", + "src": "379:27:3" + } + ] + }, + "documentation": "@dev give an account access to this role", + "id": 326, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 299, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 296, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 326, + "src": "257:17:3", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 295, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 294, + "src": "257:4:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 298, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 326, + "src": "276:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 297, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "276:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "256:36:3" + }, + "payable": false, + "returnParameters": { + "id": 300, + "nodeType": "ParameterList", + "parameters": [], + "src": "302:0:3" + }, + "scope": 381, + "src": "244:167:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 356, + "nodeType": "Block", + "src": "538:109:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 334, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "552:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 336, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "571:1:3", + "subdenomination": null, + "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": 335, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "563:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "563:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "552:21:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 333, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "544:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "544:30:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 340, + "nodeType": "ExpressionStatement", + "src": "544:30:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 343, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 328, + "src": "592:4:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 344, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "598:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 342, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 380, + "src": "588:3:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$294_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "588:18:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 341, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "580:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "580:27:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 347, + "nodeType": "ExpressionStatement", + "src": "580:27:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 348, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 328, + "src": "614:4:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 351, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "614:11:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 352, + "indexExpression": { + "argumentTypes": null, + "id": 350, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "626:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "614:20:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "637:5:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "614:28:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 355, + "nodeType": "ExpressionStatement", + "src": "614:28:3" + } + ] + }, + "documentation": "@dev remove an account's access to this role", + "id": 357, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "remove", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 331, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 328, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 357, + "src": "493:17:3", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 327, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 294, + "src": "493:4:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 330, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 357, + "src": "512:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 329, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "512:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "492:36:3" + }, + "payable": false, + "returnParameters": { + "id": 332, + "nodeType": "ParameterList", + "parameters": [], + "src": "538:0:3" + }, + "scope": 381, + "src": "477:170:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 379, + "nodeType": "Block", + "src": "817:74:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 367, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 361, + "src": "831:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 369, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "850:1:3", + "subdenomination": null, + "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": 368, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "842:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 370, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "842:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "831:21:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 366, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "823:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "823:30:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 373, + "nodeType": "ExpressionStatement", + "src": "823:30:3" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 374, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 359, + "src": "866:4:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 375, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "866:11:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 377, + "indexExpression": { + "argumentTypes": null, + "id": 376, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 361, + "src": "878:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "866:20:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 365, + "id": 378, + "nodeType": "Return", + "src": "859:27:3" + } + ] + }, + "documentation": "@dev check if an account has this role\n@return bool", + "id": 380, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "has", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 362, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 359, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 380, + "src": "738:17:3", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 358, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 294, + "src": "738:4:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 361, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 380, + "src": "757:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 360, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "757:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "737:36:3" + }, + "payable": false, + "returnParameters": { + "id": 365, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 364, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 380, + "src": "809:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 363, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "809:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "808:6:3" + }, + "scope": 381, + "src": "725:166:3", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 382, + "src": "109:784:3" + } + ], + "src": "0:894:3" + }, + "id": 3 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", + "exportedSymbols": { + "SafeMath": [ + 509 + ] + }, + "id": 510, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 383, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:4" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", + "fullyImplemented": true, + "id": 509, + "linearizedBaseContracts": [ + 509 + ], + "name": "SafeMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 415, + "nodeType": "Block", + "src": "271:314:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 392, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "486:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 393, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "491:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "486:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 398, + "nodeType": "IfStatement", + "src": "482:35:4", + "trueBody": { + "id": 397, + "nodeType": "Block", + "src": "494:23:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 395, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "509:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 391, + "id": 396, + "nodeType": "Return", + "src": "502:8:4" + } + ] + } + }, + { + "assignments": [ + 400 + ], + "declarations": [ + { + "constant": false, + "id": 400, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 416, + "src": "523:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 399, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "523:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 404, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 401, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "535:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 402, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "539:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "535:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "523:17:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 406, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 400, + "src": "554:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 407, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "558:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "554:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 409, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "563:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "554:10:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 405, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "546:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "546:19:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 412, + "nodeType": "ExpressionStatement", + "src": "546:19:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 413, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 400, + "src": "579:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 391, + "id": 414, + "nodeType": "Return", + "src": "572:8:4" + } + ] + }, + "documentation": "@dev Multiplies two numbers, reverts on overflow.", + "id": 416, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "mul", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 385, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 416, + "src": "217:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 384, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "217:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 387, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 416, + "src": "228:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 386, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "228:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "216:22:4" + }, + "payable": false, + "returnParameters": { + "id": 391, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 390, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 416, + "src": "262:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 389, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "262:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "261:9:4" + }, + "scope": 509, + "src": "204:381:4", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 439, + "nodeType": "Block", + "src": "762:203:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 426, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 420, + "src": "776:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 427, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "780:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "776:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 425, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "768:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "768:14:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 430, + "nodeType": "ExpressionStatement", + "src": "768:14:4" + }, + { + "assignments": [ + 432 + ], + "declarations": [ + { + "constant": false, + "id": 432, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 440, + "src": "846:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 431, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "846:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 436, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 433, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 418, + "src": "858:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 434, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 420, + "src": "862:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "858:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "846:17:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 437, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 432, + "src": "959:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 424, + "id": 438, + "nodeType": "Return", + "src": "952:8:4" + } + ] + }, + "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", + "id": 440, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 421, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 418, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 440, + "src": "708:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 417, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "708:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 420, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 440, + "src": "719:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 419, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "719:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "707:22:4" + }, + "payable": false, + "returnParameters": { + "id": 424, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 423, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 440, + "src": "753:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 422, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "753:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "752:9:4" + }, + "scope": 509, + "src": "695:270:4", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 463, + "nodeType": "Block", + "src": "1145:64:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 450, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "1159:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 451, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 442, + "src": "1164:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1159:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 449, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "1151:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1151:15:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 454, + "nodeType": "ExpressionStatement", + "src": "1151:15:4" + }, + { + "assignments": [ + 456 + ], + "declarations": [ + { + "constant": false, + "id": 456, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 464, + "src": "1172:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 455, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1172:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 460, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 457, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 442, + "src": "1184:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 458, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "1188:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1184:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1172:17:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 461, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 456, + "src": "1203:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 448, + "id": 462, + "nodeType": "Return", + "src": "1196:8:4" + } + ] + }, + "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", + "id": 464, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 445, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 442, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 464, + "src": "1091:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 441, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1091:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 444, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 464, + "src": "1102:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 443, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1102:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1090:22:4" + }, + "payable": false, + "returnParameters": { + "id": 448, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 447, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 464, + "src": "1136:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 446, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1136:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1135:9:4" + }, + "scope": 509, + "src": "1078:131:4", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 487, + "nodeType": "Block", + "src": "1339:64:4", + "statements": [ + { + "assignments": [ + 474 + ], + "declarations": [ + { + "constant": false, + "id": 474, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 488, + "src": "1345:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 473, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1345:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 478, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 475, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 466, + "src": "1357:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 476, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 468, + "src": "1361:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1357:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1345:17:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 480, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 474, + "src": "1376:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 481, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 466, + "src": "1381:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1376:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 479, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "1368:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1368:15:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 484, + "nodeType": "ExpressionStatement", + "src": "1368:15:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 485, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 474, + "src": "1397:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 472, + "id": 486, + "nodeType": "Return", + "src": "1390:8:4" + } + ] + }, + "documentation": "@dev Adds two numbers, reverts on overflow.", + "id": 488, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 469, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 466, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 488, + "src": "1285:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 465, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1285:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 468, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 488, + "src": "1296:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 467, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1296:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1284:22:4" + }, + "payable": false, + "returnParameters": { + "id": 472, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 471, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 488, + "src": "1330:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 470, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1330:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1329:9:4" + }, + "scope": 509, + "src": "1272:131:4", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 507, + "nodeType": "Block", + "src": "1602:44:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 498, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 492, + "src": "1616:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 499, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1621:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1616:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 497, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "1608:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1608:15:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 502, + "nodeType": "ExpressionStatement", + "src": "1608:15:4" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 503, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 490, + "src": "1636:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "id": 504, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 492, + "src": "1640:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1636:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 496, + "id": 506, + "nodeType": "Return", + "src": "1629:12:4" + } + ] + }, + "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", + "id": 508, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "mod", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 493, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 490, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 508, + "src": "1548:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 489, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1548:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 492, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 508, + "src": "1559:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 491, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1559:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1547:22:4" + }, + "payable": false, + "returnParameters": { + "id": 496, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 495, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 508, + "src": "1593:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 494, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1593:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1592:9:4" + }, + "scope": 509, + "src": "1535:111:4", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 510, + "src": "117:1531:4" + } + ], + "src": "0:1649:4" + }, + "id": 4 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "exportedSymbols": { + "IERC20": [ + 578 + ] + }, + "id": 579, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 511, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:5" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", + "fullyImplemented": false, + "id": 578, + "linearizedBaseContracts": [ + 578 + ], + "name": "IERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 516, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 512, + "nodeType": "ParameterList", + "parameters": [], + "src": "156:2:5" + }, + "payable": false, + "returnParameters": { + "id": 515, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 514, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 516, + "src": "182:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 513, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "182:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "181:9:5" + }, + "scope": 578, + "src": "136:55:5", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 523, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 519, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 518, + "name": "who", + "nodeType": "VariableDeclaration", + "scope": 523, + "src": "214:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 517, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "214:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "213:13:5" + }, + "payable": false, + "returnParameters": { + "id": 522, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 521, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 523, + "src": "250:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 520, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "250:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "249:9:5" + }, + "scope": 578, + "src": "195:64:5", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 532, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 528, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 525, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 532, + "src": "282:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 524, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "282:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 527, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 532, + "src": "297:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 526, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "297:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "281:32:5" + }, + "payable": false, + "returnParameters": { + "id": 531, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 530, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 532, + "src": "341:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 529, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "341:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "340:9:5" + }, + "scope": 578, + "src": "263:87:5", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 541, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 537, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 534, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 541, + "src": "372:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 533, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "372:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 536, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 541, + "src": "384:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 535, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "384:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "371:27:5" + }, + "payable": false, + "returnParameters": { + "id": 540, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 539, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 541, + "src": "417:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 538, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "417:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "416:6:5" + }, + "scope": 578, + "src": "354:69:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 550, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 546, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 543, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 550, + "src": "444:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 542, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "444:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 545, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 550, + "src": "461:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 544, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "461:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "443:32:5" + }, + "payable": false, + "returnParameters": { + "id": 549, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 548, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 550, + "src": "498:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 547, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "498:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "497:6:5" + }, + "scope": 578, + "src": "427:77:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 561, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 557, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 552, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 561, + "src": "530:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 551, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "530:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 554, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 561, + "src": "544:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 553, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "544:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 556, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 561, + "src": "556:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 555, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "556:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "529:41:5" + }, + "payable": false, + "returnParameters": { + "id": 560, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 559, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 561, + "src": "593:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 558, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "593:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "592:6:5" + }, + "scope": 578, + "src": "508:91:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": null, + "id": 569, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 568, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 563, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 569, + "src": "623:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 562, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "623:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 565, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 569, + "src": "649:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 564, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "649:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 567, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 569, + "src": "673:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 566, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "673:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "617:73:5" + }, + "src": "603:88:5" + }, + { + "anonymous": false, + "documentation": null, + "id": 577, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 576, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 571, + "indexed": true, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 577, + "src": "715:21:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 570, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "715:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 573, + "indexed": true, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 577, + "src": "742:23:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 572, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "742:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 575, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 577, + "src": "771:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 574, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "771:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "709:79:5" + }, + "src": "695:94:5" + } + ], + "scope": 579, + "src": "115:676:5" + } + ], + "src": "0:792:5" + }, + "id": 5 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "exportedSymbols": { + "SafeERC20": [ + 722 + ] + }, + "id": 723, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 580, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:6" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 581, + "nodeType": "ImportDirective", + "scope": 723, + "sourceUnit": 579, + "src": "26:22:6", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 582, + "nodeType": "ImportDirective", + "scope": 723, + "sourceUnit": 510, + "src": "49:33:6", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.", + "fullyImplemented": true, + "id": 722, + "linearizedBaseContracts": [ + 722 + ], + "name": "SafeERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 585, + "libraryName": { + "contractScope": null, + "id": 583, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 509, + "src": "382:8:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$509", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "376:27:6", + "typeName": { + "id": 584, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "395:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "body": { + "id": 602, + "nodeType": "Block", + "src": "501:45:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 597, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 589, + "src": "530:2:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 598, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 591, + "src": "534:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 595, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 587, + "src": "515:5:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "id": 596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 541, + "src": "515:14:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "515:25:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 594, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "507:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "507:34:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 601, + "nodeType": "ExpressionStatement", + "src": "507:34:6" + } + ] + }, + "documentation": null, + "id": 603, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeTransfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 592, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 587, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 603, + "src": "434:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 586, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 578, + "src": "434:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 589, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 603, + "src": "452:10:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 588, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "452:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 591, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 603, + "src": "468:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 590, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "468:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "428:57:6" + }, + "payable": false, + "returnParameters": { + "id": 593, + "nodeType": "ParameterList", + "parameters": [], + "src": "501:0:6" + }, + "scope": 722, + "src": "407:139:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 623, + "nodeType": "Block", + "src": "666:55:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 617, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 607, + "src": "699:4:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 618, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 609, + "src": "705:2:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 619, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 611, + "src": "709:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 615, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 605, + "src": "680:5:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "id": 616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 561, + "src": "680:18:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "680:35:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 614, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "672:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "672:44:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 622, + "nodeType": "ExpressionStatement", + "src": "672:44:6" + } + ] + }, + "documentation": null, + "id": 624, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 612, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 605, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 624, + "src": "581:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 604, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 578, + "src": "581:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 607, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 624, + "src": "599:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 606, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "599:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 609, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 624, + "src": "617:10:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 608, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "617:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 611, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 624, + "src": "633:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 610, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "633:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "575:75:6" + }, + "payable": false, + "returnParameters": { + "id": 613, + "nodeType": "ParameterList", + "parameters": [], + "src": "666:0:6" + }, + "scope": 722, + "src": "550:171:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 658, + "nodeType": "Block", + "src": "823:330:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 634, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 630, + "src": "1045:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 635, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1054:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1045:10:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 637, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1044:12:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 640, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 737, + "src": "1077:3:6", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1077:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 642, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 628, + "src": "1089:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 638, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 626, + "src": "1061:5:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "id": 639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 532, + "src": "1061:15:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1061:36:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 644, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1101:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1061:41:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 646, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1060:43:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1044:59:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 633, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "1036:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1036:68:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 649, + "nodeType": "ExpressionStatement", + "src": "1036:68:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 653, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 628, + "src": "1132:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 654, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 630, + "src": "1141:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 651, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 626, + "src": "1118:5:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "id": 652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 550, + "src": "1118:13:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1118:29:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 650, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "1110:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1110:38:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 657, + "nodeType": "ExpressionStatement", + "src": "1110:38:6" + } + ] + }, + "documentation": null, + "id": 659, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeApprove", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 631, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 626, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 659, + "src": "751:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 625, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 578, + "src": "751:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 628, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 659, + "src": "769:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 627, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "769:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 630, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 659, + "src": "790:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 629, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "790:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "745:62:6" + }, + "payable": false, + "returnParameters": { + "id": 632, + "nodeType": "ParameterList", + "parameters": [], + "src": "823:0:6" + }, + "scope": 722, + "src": "725:428:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 689, + "nodeType": "Block", + "src": "1265:135:6", + "statements": [ + { + "assignments": [ + 669 + ], + "declarations": [ + { + "constant": false, + "id": 669, + "name": "newAllowance", + "nodeType": "VariableDeclaration", + "scope": 690, + "src": "1271:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 668, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1271:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 680, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 678, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 665, + "src": "1338:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 673, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 758, + "src": "1318:4:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$722", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$722", + "typeString": "library SafeERC20" + } + ], + "id": 672, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1310:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1310:13:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 675, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 663, + "src": "1325:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 670, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 661, + "src": "1294:5:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "id": 671, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 532, + "src": "1294:15:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1294:39:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 488, + "src": "1294:43:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 679, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1294:50:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1271:73:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 684, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 663, + "src": "1372:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 685, + "name": "newAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 669, + "src": "1381:12:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 682, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 661, + "src": "1358:5:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "id": 683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 550, + "src": "1358:13:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 686, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1358:36:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 681, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "1350:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1350:45:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 688, + "nodeType": "ExpressionStatement", + "src": "1350:45:6" + } + ] + }, + "documentation": null, + "id": 690, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeIncreaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 666, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 661, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 690, + "src": "1193:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 660, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 578, + "src": "1193:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 663, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 690, + "src": "1211:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 662, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1211:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 665, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 690, + "src": "1232:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 664, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1232:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1187:62:6" + }, + "payable": false, + "returnParameters": { + "id": 667, + "nodeType": "ParameterList", + "parameters": [], + "src": "1265:0:6" + }, + "scope": 722, + "src": "1157:243:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 720, + "nodeType": "Block", + "src": "1512:135:6", + "statements": [ + { + "assignments": [ + 700 + ], + "declarations": [ + { + "constant": false, + "id": 700, + "name": "newAllowance", + "nodeType": "VariableDeclaration", + "scope": 721, + "src": "1518:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 699, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1518:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 711, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 709, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "1585:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 704, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 758, + "src": "1565:4:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$722", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$722", + "typeString": "library SafeERC20" + } + ], + "id": 703, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1557:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1557:13:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 706, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 694, + "src": "1572:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 701, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 692, + "src": "1541:5:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "id": 702, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 532, + "src": "1541:15:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 707, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1541:39:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 464, + "src": "1541:43:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1541:50:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1518:73:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 715, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 694, + "src": "1619:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 716, + "name": "newAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 700, + "src": "1628:12:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 713, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 692, + "src": "1605:5:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "id": 714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 550, + "src": "1605:13:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1605:36:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 712, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 740, + 741 + ], + "referencedDeclaration": 740, + "src": "1597:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1597:45:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 719, + "nodeType": "ExpressionStatement", + "src": "1597:45:6" + } + ] + }, + "documentation": null, + "id": 721, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeDecreaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 697, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 692, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 721, + "src": "1440:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 691, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 578, + "src": "1440:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$578", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 694, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 721, + "src": "1458:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 693, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1458:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 696, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 721, + "src": "1479:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 695, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1479:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1434:62:6" + }, + "payable": false, + "returnParameters": { + "id": 698, + "nodeType": "ParameterList", + "parameters": [], + "src": "1512:0:6" + }, + "scope": 722, + "src": "1404:243:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 723, + "src": "353:1296:6" + } + ], + "src": "0:1650:6" + }, + "id": 6 + } + } +} \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.abi b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.abi new file mode 100644 index 000000000..38dd233d4 --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.abi @@ -0,0 +1 @@ +[{"constant":false,"inputs":[{"name":"minerAddress","type":"address"}],"name":"trasferToMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_FACTOR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"CAT_4_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_1_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_3_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_0_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_5_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_2_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"poolType","type":"uint16"},{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin new file mode 100644 index 000000000..d3f811a9f --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin @@ -0,0 +1 @@ +608060405234801561001057600080fd5b5060405160408061076083398101604052805160209091015161003b33640100000000610077810204565b60018054600160a060020a0390921662010000026201000060b060020a031961ffff90941661ffff199093169290921792909216179055610120565b61008f60008264010000000061056b61009282021704565b50565b600160a060020a03811615156100a757600080fd5b6100ba82826401000000006100e9810204565b156100c457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561010057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106318061012f6000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632296f4c7811461009a57806325109e8b146100bd5780632e6b6849146100e4578063455acbcd14610105578063492fba841461011a57806349dc9ed01461012f578063608d3d3d146101445780639fc3c98314610179578063a89febb21461018e578063aed6183f146101a3578063d43acc79146101b8575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a03600435166101cd565b005b3480156100c957600080fd5b506100d26103cc565b60408051918252519081900360200190f35b3480156100f057600080fd5b506100bb600160a060020a03600435166103d8565b34801561011157600080fd5b506100d26103f8565b34801561012657600080fd5b506100d2610407565b34801561013b57600080fd5b506100d2610415565b34801561015057600080fd5b50610165600160a060020a0360043516610424565b604080519115158252519081900360200190f35b34801561018557600080fd5b506100d261043c565b34801561019a57600080fd5b506100d261044a565b3480156101af57600080fd5b506100d2610459565b3480156101c457600080fd5b506100bb610468565b60008060006101db33610424565b15156101e657600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561022757600080fd5b505af115801561023b573d6000803e3d6000fd5b505050506040513d602081101561025157600080fd5b5051151561025e57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561029c57600080fd5b505af11580156102b0573d6000803e3d6000fd5b505050506040513d60208110156102c657600080fd5b50519150600060ff8316108015906102e2575060058260ff1611155b15156102ed57600080fd5b50600060ff8216151561030b575069152d02c7e14af680000061039c565b8160ff1660011415610328575069d3c21bcecceda100000061039c565b8160ff166002141561034657506a01a784379d99db4200000061039c565b8160ff166003141561036457506a027b46536c66c8e300000061039c565b8160ff166004141561038257506a034f086f3b33b68400000061039c565b8160ff166005141561039c57506a0422ca8b0a00a4250000005b600081116103a957600080fd5b6001546103c690620100009004600160a060020a03168583610473565b50505050565b670de0b6b3a764000081565b6103e133610424565b15156103ec57600080fd5b6103f581610512565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b6000610436818363ffffffff61052316565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b6104713361055a565b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156104d657600080fd5b505af11580156104ea573d6000803e3d6000fd5b505050506040513d602081101561050057600080fd5b5051151561050d57600080fd5b505050565b6103f560008263ffffffff61056b16565b6000600160a060020a038216151561053a57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6103f560008263ffffffff6105b916565b600160a060020a038116151561058057600080fd5b61058a8282610523565b1561059457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a03811615156105ce57600080fd5b6105d88282610523565b15156105e357600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820fcd1665b524606952d86f870d91a6ad5ceaed631661ee3cc8731e992b464993a0029 \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json new file mode 100644 index 000000000..6491b1282 --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json @@ -0,0 +1,207 @@ +{ + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "minerAddress", + "type": "address" + } + ], + "name": "trasferToMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "TOKEN_FACTOR", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "CAT_4_VALUE", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "CAT_1_VALUE", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "CAT_3_VALUE", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isCoreTeam", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "CAT_0_VALUE", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "CAT_5_VALUE", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "CAT_2_VALUE", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "name": "poolType", + "type": "uint16" + }, + { + "name": "tokenAddress", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "bytecode": "608060405234801561001057600080fd5b5060405160408061076083398101604052805160209091015161003b33640100000000610077810204565b60018054600160a060020a0390921662010000026201000060b060020a031961ffff90941661ffff199093169290921792909216179055610120565b61008f60008264010000000061056b61009282021704565b50565b600160a060020a03811615156100a757600080fd5b6100ba82826401000000006100e9810204565b156100c457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561010057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106318061012f6000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632296f4c7811461009a57806325109e8b146100bd5780632e6b6849146100e4578063455acbcd14610105578063492fba841461011a57806349dc9ed01461012f578063608d3d3d146101445780639fc3c98314610179578063a89febb21461018e578063aed6183f146101a3578063d43acc79146101b8575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a03600435166101cd565b005b3480156100c957600080fd5b506100d26103cc565b60408051918252519081900360200190f35b3480156100f057600080fd5b506100bb600160a060020a03600435166103d8565b34801561011157600080fd5b506100d26103f8565b34801561012657600080fd5b506100d2610407565b34801561013b57600080fd5b506100d2610415565b34801561015057600080fd5b50610165600160a060020a0360043516610424565b604080519115158252519081900360200190f35b34801561018557600080fd5b506100d261043c565b34801561019a57600080fd5b506100d261044a565b3480156101af57600080fd5b506100d2610459565b3480156101c457600080fd5b506100bb610468565b60008060006101db33610424565b15156101e657600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561022757600080fd5b505af115801561023b573d6000803e3d6000fd5b505050506040513d602081101561025157600080fd5b5051151561025e57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561029c57600080fd5b505af11580156102b0573d6000803e3d6000fd5b505050506040513d60208110156102c657600080fd5b50519150600060ff8316108015906102e2575060058260ff1611155b15156102ed57600080fd5b50600060ff8216151561030b575069152d02c7e14af680000061039c565b8160ff1660011415610328575069d3c21bcecceda100000061039c565b8160ff166002141561034657506a01a784379d99db4200000061039c565b8160ff166003141561036457506a027b46536c66c8e300000061039c565b8160ff166004141561038257506a034f086f3b33b68400000061039c565b8160ff166005141561039c57506a0422ca8b0a00a4250000005b600081116103a957600080fd5b6001546103c690620100009004600160a060020a03168583610473565b50505050565b670de0b6b3a764000081565b6103e133610424565b15156103ec57600080fd5b6103f581610512565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b6000610436818363ffffffff61052316565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b6104713361055a565b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156104d657600080fd5b505af11580156104ea573d6000803e3d6000fd5b505050506040513d602081101561050057600080fd5b5051151561050d57600080fd5b505050565b6103f560008263ffffffff61056b16565b6000600160a060020a038216151561053a57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6103f560008263ffffffff6105b916565b600160a060020a038116151561058057600080fd5b61058a8282610523565b1561059457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a03811615156105ce57600080fd5b6105d88282610523565b15156105e357600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820fcd1665b524606952d86f870d91a6ad5ceaed631661ee3cc8731e992b464993a0029", + "functionHashes": { + "CAT_0_VALUE()": "9fc3c983", + "CAT_1_VALUE()": "492fba84", + "CAT_2_VALUE()": "aed6183f", + "CAT_3_VALUE()": "49dc9ed0", + "CAT_4_VALUE()": "455acbcd", + "CAT_5_VALUE()": "a89febb2", + "TOKEN_FACTOR()": "25109e8b", + "addCoreTeam(address)": "2e6b6849", + "isCoreTeam(address)": "608d3d3d", + "renounceCoreTeam()": "d43acc79", + "trasferToMiner(address)": "2296f4c7" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "317000", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "CAT_0_VALUE()": "401", + "CAT_1_VALUE()": "335", + "CAT_2_VALUE()": "445", + "CAT_3_VALUE()": "357", + "CAT_4_VALUE()": "313", + "CAT_5_VALUE()": "423", + "TOKEN_FACTOR()": "269", + "addCoreTeam(address)": "infinite", + "isCoreTeam(address)": "infinite", + "renounceCoreTeam()": "infinite", + "trasferToMiner(address)": "infinite" + } + } +} \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/package-lock.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/package-lock.json new file mode 100644 index 000000000..6ca2c08a4 --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/package-lock.json @@ -0,0 +1,495 @@ +{ + "name": "algo-token-distribution", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "fs-extra": { + "version": "0.30.0", + "resolved": "http://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "http://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "requires": { + "graceful-fs": "^4.1.9" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "^1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "openzeppelin-solidity": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/openzeppelin-solidity/-/openzeppelin-solidity-2.0.0.tgz", + "integrity": "sha512-SolpxQFArtiYnlSNg3dZ9sz0WVlKtPqSOcJkXRllaZp4+Lpfqz3vxF0yoh7g75TszKPyadqoJmU7+GM/vwh9SA==" + }, + "os-locale": { + "version": "1.4.0", + "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "requires": { + "lcid": "^1.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "^2.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-from-string": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", + "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "requires": { + "glob": "^7.0.5" + } + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "solc": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.24.tgz", + "integrity": "sha512-2xd7Cf1HeVwrIb6Bu1cwY2/TaLRodrppCq3l7rhLimFQgmxptXhTC3+/wesVLpB09F1A2kZgvbMOgH7wvhFnBQ==", + "requires": { + "fs-extra": "^0.30.0", + "memorystream": "^0.3.1", + "require-from-string": "^1.1.0", + "semver": "^5.3.0", + "yargs": "^4.7.1" + } + }, + "spdx-correct": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz", + "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz", + "integrity": "sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg==" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" + }, + "window-size": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", + "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=" + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yargs": { + "version": "4.8.1", + "resolved": "http://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", + "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", + "requires": { + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "lodash.assign": "^4.0.3", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.1", + "which-module": "^1.0.0", + "window-size": "^0.2.0", + "y18n": "^3.2.1", + "yargs-parser": "^2.4.1" + } + }, + "yargs-parser": { + "version": "2.4.1", + "resolved": "http://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", + "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", + "requires": { + "camelcase": "^3.0.0", + "lodash.assign": "^4.0.6" + } + } + } +} diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/package.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/package.json new file mode 100644 index 000000000..7cc030dcd --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/package.json @@ -0,0 +1,15 @@ +{ + "name": "algo-token-distribution", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "openzeppelin-solidity": "^2.0.0", + "solc": "^0.4.24" + } +} diff --git a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests.csproj b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests.csproj new file mode 100644 index 000000000..362f1c46a --- /dev/null +++ b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests.csproj @@ -0,0 +1,23 @@ + + + + netcoreapp2.1 + latest + false + + + + + + + + + + + + + + + + + diff --git a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoMinerTests.cs b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoMinerTests.cs new file mode 100644 index 000000000..11715109f --- /dev/null +++ b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoMinerTests.cs @@ -0,0 +1,108 @@ +using System; +using System.Numerics; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoErc20Token; +using AdvancedAlgos.AlgoToken.Framework.Ethereum; +using AdvancedAlgos.AlgoToken.Framework.Ethereum.Exceptions; +using AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest; +using Nethereum.Web3; +using Nethereum.Web3.Accounts; +using Xunit; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests +{ + public class AlgoMinerTests + { + private const long INITIAL_SUPPLY = 1000000000; + + [Fact] + public async Task BasicMinerWorkfloWTest() + { + EthNetwork.UseGanacheTestNet(); + + var prefundedAccount = new Account(EthNetwork.Instance.PrefundedPrivateKey); + + var tokenOwnerAccount = EthAccountFactory.Create(); + var systemAccount = EthAccountFactory.Create(); + var coreTeamAccount = EthAccountFactory.Create(); + var supervisorAccount = EthAccountFactory.Create(); + var minerAccount = EthAccountFactory.Create(); + + await EthNetwork.Instance.RefillAsync(tokenOwnerAccount); + await EthNetwork.Instance.RefillAsync(systemAccount); + await EthNetwork.Instance.RefillAsync(coreTeamAccount); + await EthNetwork.Instance.RefillAsync(supervisorAccount); + await EthNetwork.Instance.RefillAsync(minerAccount); + + // Create the ERC20 token... + var token = new AlgoTokenV1(EthNetwork.Instance.GetWeb3(tokenOwnerAccount), EthNetwork.Instance.GasPriceProvider); + await token.DeployAsync(); + + // Create a pool... + var pool1 = new AlgoPool(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); + + await pool1.DeployAsync(10, token.ContractAddress); + + // Transfer some tokens to the pool... + await token.TransferAsync(pool1.ContractAddress, 100.MAlgo()); + + // Create a miner category 2... + var miner1 = new AlgoMiner(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); + await miner1.DeployAsync(5, 2, minerAccount.Address, token.ContractAddress); + + // Add roles to the miner... + await miner1.AddSystemAsync(systemAccount.Address); + await miner1.AddSupervisorAsync(supervisorAccount.Address); + + // Transfer tokens to the miner... + await pool1.TrasferToMinerAsync(miner1.ContractAddress); + + // Ensure the miner received the tokens according to its category 2. + Assert.Equal(2.MAlgo(), await token.BalanceOfAsync(miner1.ContractAddress)); + + // Activate the miner... + await miner1.ActivateMinerAsync(); + + // Start mining... + miner1.Bind(EthNetwork.Instance.GetWeb3(minerAccount)); + await miner1.StartMiningAsync(); + + // Mine 5 days... + miner1.Bind(EthNetwork.Instance.GetWeb3(systemAccount)); + + var paymentPerDay = 2.MAlgo() / 2 / 365; + BigInteger expectedMinerBalance = 0; + + for (int i = 0; i < 5; i++) + { + await miner1.MineAsync(); + expectedMinerBalance += paymentPerDay; + + Assert.Equal(expectedMinerBalance, await token.BalanceOfAsync(minerAccount.Address)); + } + + // Pause the miner... + miner1.Bind(EthNetwork.Instance.GetWeb3(supervisorAccount)); + await miner1.PauseMiningAsync(); + + // Try to mine one day... + miner1.Bind(EthNetwork.Instance.GetWeb3(systemAccount)); + await Assert.ThrowsAsync( + () => miner1.MineAsync()); + + // Ensure the balance is not changed... + Assert.Equal(expectedMinerBalance, await token.BalanceOfAsync(minerAccount.Address)); + + // Resume the miner... + miner1.Bind(EthNetwork.Instance.GetWeb3(supervisorAccount)); + await miner1.ResumeMiningAsync(); + + // Mine one day... + miner1.Bind(EthNetwork.Instance.GetWeb3(coreTeamAccount)); + await miner1.MineAsync(); + expectedMinerBalance += paymentPerDay; + + Assert.Equal(expectedMinerBalance, await token.BalanceOfAsync(minerAccount.Address)); + } + } +} diff --git a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoPoolTests.cs b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoPoolTests.cs new file mode 100644 index 000000000..ebef49f56 --- /dev/null +++ b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoPoolTests.cs @@ -0,0 +1,70 @@ +using System; +using System.Numerics; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoErc20Token; +using AdvancedAlgos.AlgoToken.Framework.Ethereum; +using AdvancedAlgos.AlgoToken.Framework.Ethereum.Exceptions; +using AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest; +using Nethereum.RPC.Accounts; +using Nethereum.Web3; +using Nethereum.Web3.Accounts; +using Xunit; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests +{ + public class AlgoPoolTests + { + [Fact] + public async Task TransferToMinerTest() + { + EthNetwork.UseGanacheTestNet(); + + var prefundedAccount = new Account(EthNetwork.Instance.PrefundedPrivateKey); + + var tokenOwnerAccount = EthAccountFactory.Create(); + var coreTeamAccount = EthAccountFactory.Create(); + var minerAccounts = new IAccount[6]; + + await EthNetwork.Instance.RefillAsync(tokenOwnerAccount); + await EthNetwork.Instance.RefillAsync(coreTeamAccount); + + // Create the ERC20 token... + var token = new AlgoTokenV1(EthNetwork.Instance.GetWeb3(tokenOwnerAccount), EthNetwork.Instance.GasPriceProvider); + await token.DeployAsync(); + + // Create a pool... + var pool1 = new AlgoPool(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); + await pool1.DeployAsync(10, token.ContractAddress); + + // Transfer some tokens to the pool... + await token.TransferAsync(pool1.ContractAddress, 100.MAlgo()); + + // Create miners for each category... + AlgoMiner[] miners = new AlgoMiner[6]; + + for (int i = 0; i <= 5; i++) + { + // Create an account for the miner... + minerAccounts[i] = EthAccountFactory.Create(); + + // Create the miner... + miners[i] = new AlgoMiner(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); + await miners[i].DeployAsync((ushort)i, (byte)i, minerAccounts[i].Address, token.ContractAddress); + } + + // Transfer tokens from the pool to the miners... + for (int i = 0; i <= 5; i++) + { + await pool1.TrasferToMinerAsync(miners[i].ContractAddress); + } + + // Ensure each miner received the proper amount of tokens according its category... + Assert.Equal(100000.Algo(), await token.BalanceOfAsync(miners[0].ContractAddress)); + Assert.Equal(1.MAlgo(), await token.BalanceOfAsync(miners[1].ContractAddress)); + Assert.Equal(2.MAlgo(), await token.BalanceOfAsync(miners[2].ContractAddress)); + Assert.Equal(3.MAlgo(), await token.BalanceOfAsync(miners[3].ContractAddress)); + Assert.Equal(4.MAlgo(), await token.BalanceOfAsync(miners[4].ContractAddress)); + Assert.Equal(5.MAlgo(), await token.BalanceOfAsync(miners[5].ContractAddress)); + } + } +} diff --git a/labs/algo-token-playground/build/build-osx-x64.cmd b/labs/algo-token-playground/build/build-osx-x64.cmd new file mode 100644 index 000000000..61a0aadc3 --- /dev/null +++ b/labs/algo-token-playground/build/build-osx-x64.cmd @@ -0,0 +1 @@ +dotnet publish ../src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj -c Release -o ../../build/release/osx-x64 --self-contained -r osx-x64 diff --git a/labs/algo-token-playground/build/build-win-x64.cmd b/labs/algo-token-playground/build/build-win-x64.cmd new file mode 100644 index 000000000..ea75e2ad0 --- /dev/null +++ b/labs/algo-token-playground/build/build-win-x64.cmd @@ -0,0 +1 @@ +dotnet publish ../src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj -c Release -o ../../build/release/win-x64 --self-contained -r win-x64 diff --git a/labs/algo-token-playground/script.md b/labs/algo-token-playground/script.md new file mode 100644 index 000000000..e4fc98581 --- /dev/null +++ b/labs/algo-token-playground/script.md @@ -0,0 +1,19 @@ +new-account -n miner_1_account +import-account 0936af475d2701538aad321f87e0a51f2b297634653393e8cab7290a674009a5 -n prefunded +eth-transfer miner_1_account 1eth +eth-getbalance miner_1_account +deploy-algotoken -n token +deploy-algopool 1 token -n dev_pool +token.algotoken-transfer dev_pool 100m +token.algotoken-balanceof dev_pool +deploy-algominer 1 2 miner_1_account token -n miner_1 +dev_pool.algopool-trasfertominer miner_1 +token.algotoken-balanceof miner_1 +miner_1.algominer-activateminer +set-account miner_1_account +miner_1.algominer-startmining +set-account prefunded +miner_1.algominer-mine +token.algotoken-balanceof miner_1_account +miner_1.algominer-mine +token.algotoken-balanceof miner_1_account diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj new file mode 100644 index 000000000..f86ca587b --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj @@ -0,0 +1,20 @@ + + + + Exe + netcoreapp2.1 + latest + + + + + + + + + + + + + + diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AccountManagement/AccountCounter.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AccountManagement/AccountCounter.cs new file mode 100644 index 000000000..84c6029b3 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AccountManagement/AccountCounter.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AccountManagement +{ + public static class AccountCounter + { + private static long _count = 0; + + public static long Next() + { + Interlocked.Increment(ref _count); + return _count; + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AccountManagement/ImportAccountCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AccountManagement/ImportAccountCommand.cs new file mode 100644 index 000000000..afea426bc --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AccountManagement/ImportAccountCommand.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using AdvancedAlgos.AlgoToken.Framework.Ethereum; +using Nethereum.Web3.Accounts; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AccountManagement +{ + public class ImportAccountCommand : ICommand + { + private const string DEFAULT_NAME_FORMAT = "account#{0}"; + + public string Name { get; set; } + public string PrivateKey { get; set; } + + public Task ExecuteAsync(RuntimeContext context) + { + string name = string.IsNullOrWhiteSpace(Name) ? + string.Format(CultureInfo.InvariantCulture, DEFAULT_NAME_FORMAT, AccountCounter.Next()) : Name; + + if (context.Accounts.ContainsKey(name)) throw new Exception($"The name '{name}' already exists."); + + var ethAccountDescriptor = new EthAccountDescriptor(name, new Account(PrivateKey)); + + context.Accounts.Add(name, ethAccountDescriptor); + context.CurrentAccount = ethAccountDescriptor; + + Console.WriteLine("Account imported:"); + Console.WriteLine($"- Name: '{name}'."); + Console.WriteLine($"- Address: '{ethAccountDescriptor.Account.Address}'."); + + return Task.CompletedTask; + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AccountManagement/ListAccountsCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AccountManagement/ListAccountsCommand.cs new file mode 100644 index 000000000..69117feb3 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AccountManagement/ListAccountsCommand.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AccountManagement +{ + public class ListAccountsCommand : ICommand + { + public Task ExecuteAsync(RuntimeContext context) + { + foreach (var ethAccountDescriptor in context.Accounts.Values) + { + Console.WriteLine($"- {ethAccountDescriptor.Name}:{ethAccountDescriptor.Account.Address}"); + } + + return Task.CompletedTask; + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AccountManagement/NewAccountCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AccountManagement/NewAccountCommand.cs new file mode 100644 index 000000000..82e77351c --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AccountManagement/NewAccountCommand.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using AdvancedAlgos.AlgoToken.Framework.Ethereum; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AccountManagement +{ + public class NewAccountCommand : ICommand + { + private const string DEFAULT_NAME_FORMAT = "account#{0}"; + + public string Name { get; set; } + + public Task ExecuteAsync(RuntimeContext context) + { + string name = string.IsNullOrWhiteSpace(Name) ? + string.Format(CultureInfo.InvariantCulture, DEFAULT_NAME_FORMAT, AccountCounter.Next()) : Name; + + if (context.Accounts.ContainsKey(name)) throw new Exception($"The name '{name}' already exists."); + + var ethAccountDescriptor = new EthAccountDescriptor(name, EthAccountFactory.Create()); + + context.Accounts.Add(name, ethAccountDescriptor); + context.CurrentAccount = ethAccountDescriptor; + + Console.WriteLine("New account created:"); + Console.WriteLine($"- Name: '{name}'."); + Console.WriteLine($"- Address: '{ethAccountDescriptor.Account.Address}'."); + Console.WriteLine($"- Private Key: '{ethAccountDescriptor.Account.PrivateKey}'."); + + return Task.CompletedTask; + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AccountManagement/SetAccountCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AccountManagement/SetAccountCommand.cs new file mode 100644 index 000000000..15c1aac92 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AccountManagement/SetAccountCommand.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AccountManagement +{ + public class SetAccountCommand : ICommand + { + public string Name { get; set; } + + public Task ExecuteAsync(RuntimeContext context) + { + if (!context.Accounts.ContainsKey(Name)) throw new Exception($"Account '{Name}' not found."); + + context.CurrentAccount = context.Accounts[Name]; + + return Task.CompletedTask; + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerActivateMinerCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerActivateMinerCommand.cs new file mode 100644 index 000000000..d5f40545d --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerActivateMinerCommand.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenDistribution; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoMinerContract +{ + public class AlgoMinerActivateMinerCommand : EthInvokeTransactionalFunctionCommand + { + protected override async Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3) + { + var algoMiner = new AlgoMiner(contractAddress, web3, context.GasPriceProvider); + + return await algoMiner.ActivateMinerAsync(); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerAddCoreTeamCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerAddCoreTeamCommand.cs new file mode 100644 index 000000000..741a9b40d --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerAddCoreTeamCommand.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenDistribution; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoMinerContract +{ + public class AlgoMinerAddCoreTeamCommand : EthInvokeTransactionalFunctionCommand + { + public string Account { get; set; } + + protected override async Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3) + { + var algoMiner = new AlgoMiner(contractAddress, web3, context.GasPriceProvider); + + return await algoMiner.AddCoreTeamAsync(context.ResolveAccountReference(Account)); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerAddSupervisorCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerAddSupervisorCommand.cs new file mode 100644 index 000000000..6b28c00dd --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerAddSupervisorCommand.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenDistribution; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoMinerContract +{ + public class AlgoMinerAddSupervisorCommand : EthInvokeTransactionalFunctionCommand + { + public string Account { get; set; } + + protected override async Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3) + { + var algoMiner = new AlgoMiner(contractAddress, web3, context.GasPriceProvider); + + return await algoMiner.AddSupervisorAsync(context.ResolveAccountReference(Account)); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerAddSystemCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerAddSystemCommand.cs new file mode 100644 index 000000000..dd47486cf --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerAddSystemCommand.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenDistribution; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoMinerContract +{ + public class AlgoMinerAddSystemCommand : EthInvokeTransactionalFunctionCommand + { + public string Account { get; set; } + + protected override async Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3) + { + var algoMiner = new AlgoMiner(contractAddress, web3, context.GasPriceProvider); + + return await algoMiner.AddSystemAsync(context.ResolveAccountReference(Account)); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerDeactivateMinerCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerDeactivateMinerCommand.cs new file mode 100644 index 000000000..82ab1672b --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerDeactivateMinerCommand.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenDistribution; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoMinerContract +{ + public class AlgoMinerDeactivateMinerCommand : EthInvokeTransactionalFunctionCommand + { + protected override async Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3) + { + var algoMiner = new AlgoMiner(contractAddress, web3, context.GasPriceProvider); + + return await algoMiner.DeactivateMinerAsync(); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerDeployCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerDeployCommand.cs new file mode 100644 index 000000000..e4b29288b --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerDeployCommand.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenDistribution; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoMinerContract +{ + public class AlgoMinerDeployCommand : DeployContractCommand + { + public override string DefaultName => "AlgoMiner"; + + public ushort MinerType { get; set; } + public byte Category { get; set; } + public string OwnerAddress { get; set; } + public string TokenAddress { get; set; } + + protected override async Task DeployContractAsync(RuntimeContext context, Web3 web3) + { + var algoMiner = new AlgoMiner(web3, context.GasPriceProvider); + return await algoMiner.DeployAsync( + MinerType, + Category, + context.ResolveAccountReference(OwnerAddress), + context.ResolveContractReference(TokenAddress)); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerMigrateMinerCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerMigrateMinerCommand.cs new file mode 100644 index 000000000..42444cbf7 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerMigrateMinerCommand.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenDistribution; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoMinerContract +{ + public class AlgoMinerMigrateMinerCommand : EthInvokeTransactionalFunctionCommand + { + public string NewMinerAddress { get; set; } + + protected override async Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3) + { + var algoMiner = new AlgoMiner(contractAddress, web3, context.GasPriceProvider); + + return await algoMiner.MigrateMinerAsync(context.ResolveContractReference(NewMinerAddress)); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerMineCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerMineCommand.cs new file mode 100644 index 000000000..acd35e621 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerMineCommand.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenDistribution; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoMinerContract +{ + public class AlgoMinerMineCommand : EthInvokeTransactionalFunctionCommand + { + protected override async Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3) + { + var algoMiner = new AlgoMiner(contractAddress, web3, context.GasPriceProvider); + + return await algoMiner.MineAsync(); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerPauseMiningCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerPauseMiningCommand.cs new file mode 100644 index 000000000..ee163137d --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerPauseMiningCommand.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenDistribution; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoMinerContract +{ + public class AlgoMinerPauseMiningCommand : EthInvokeTransactionalFunctionCommand + { + protected override async Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3) + { + var algoMiner = new AlgoMiner(contractAddress, web3, context.GasPriceProvider); + + return await algoMiner.PauseMiningAsync(); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerResetMinerCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerResetMinerCommand.cs new file mode 100644 index 000000000..f66dde831 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerResetMinerCommand.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenDistribution; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoMinerContract +{ + public class AlgoMinerResetMinerCommand : EthInvokeTransactionalFunctionCommand + { + public string NewOwnerAddress { get; set; } + + protected override async Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3) + { + var algoMiner = new AlgoMiner(contractAddress, web3, context.GasPriceProvider); + + return await algoMiner.ResetMinerAsync(context.ResolveAccountReference(NewOwnerAddress)); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerResumeMiningCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerResumeMiningCommand.cs new file mode 100644 index 000000000..82e2b5b79 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerResumeMiningCommand.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenDistribution; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoMinerContract +{ + public class AlgoMinerResumeMiningCommand : EthInvokeTransactionalFunctionCommand + { + protected override async Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3) + { + var algoMiner = new AlgoMiner(contractAddress, web3, context.GasPriceProvider); + + return await algoMiner.ResumeMiningAsync(); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerStartMiningCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerStartMiningCommand.cs new file mode 100644 index 000000000..eca781a6c --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerStartMiningCommand.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenDistribution; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoMinerContract +{ + public class AlgoMinerStartMiningCommand : EthInvokeTransactionalFunctionCommand + { + protected override async Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3) + { + var algoMiner = new AlgoMiner(contractAddress, web3, context.GasPriceProvider); + + return await algoMiner.StartMiningAsync(); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerStopAndRemoveOwnershipCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerStopAndRemoveOwnershipCommand.cs new file mode 100644 index 000000000..496213588 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerStopAndRemoveOwnershipCommand.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenDistribution; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoMinerContract +{ + public class AlgoMinerStopAndRemoveOwnershipCommand : EthInvokeTransactionalFunctionCommand + { + protected override async Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3) + { + var algoMiner = new AlgoMiner(contractAddress, web3, context.GasPriceProvider); + + return await algoMiner.StopAndRemoveOwnershipAsync(); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerStopMiningCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerStopMiningCommand.cs new file mode 100644 index 000000000..8ce66f982 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerStopMiningCommand.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenDistribution; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoMinerContract +{ + public class AlgoMinerStopMiningCommand : EthInvokeTransactionalFunctionCommand + { + protected override async Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3) + { + var algoMiner = new AlgoMiner(contractAddress, web3, context.GasPriceProvider); + + return await algoMiner.StopMiningAsync(); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoPoolContract/AlgoPoolDeployCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoPoolContract/AlgoPoolDeployCommand.cs new file mode 100644 index 000000000..e2ca14b22 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoPoolContract/AlgoPoolDeployCommand.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenDistribution; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoPoolContract +{ + public class AlgoPoolDeployCommand : DeployContractCommand + { + public override string DefaultName => "AlgoPool"; + + public ushort PoolType { get; set; } + public string TokenAddress { get; set; } + + protected override async Task DeployContractAsync(RuntimeContext context, Web3 web3) + { + var algoPool = new AlgoPool(web3, context.GasPriceProvider); + return await algoPool.DeployAsync(PoolType, context.ResolveContractReference(TokenAddress)); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoPoolContract/AlgoPoolTrasferToMinerCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoPoolContract/AlgoPoolTrasferToMinerCommand.cs new file mode 100644 index 000000000..6dd2fd989 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoPoolContract/AlgoPoolTrasferToMinerCommand.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenDistribution; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoPoolContract +{ + public class AlgoPoolTrasferToMinerCommand : EthInvokeTransactionalFunctionCommand + { + public string MinerAddress { get; set; } + + protected override async Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3) + { + var algoPool = new AlgoPool(contractAddress, web3, context.GasPriceProvider); + + return await algoPool.TrasferToMinerAsync(context.ResolveContractReference(MinerAddress)); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoTokenContract/AlgoTokenBalanceOfCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoTokenContract/AlgoTokenBalanceOfCommand.cs new file mode 100644 index 000000000..5a55db87d --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoTokenContract/AlgoTokenBalanceOfCommand.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoErc20Token; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoTokenContract +{ + public class AlgoTokenBalanceOfCommand : EthInvokeCallFunctionCommand + { + public string OwnerAddress { get; set; } + + protected override async Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3) + { + var algoToken = new AlgoTokenV1(contractAddress, web3, context.GasPriceProvider); + return await algoToken.BalanceOfAsync(context.ResolveAccountOrContractReference(OwnerAddress)); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoTokenContract/AlgoTokenDeployCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoTokenContract/AlgoTokenDeployCommand.cs new file mode 100644 index 000000000..eec93f058 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoTokenContract/AlgoTokenDeployCommand.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoErc20Token; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoTokenContract +{ + public class AlgoTokenDeployCommand : DeployContractCommand + { + public override string DefaultName => "AlgoToken"; + + protected override async Task DeployContractAsync(RuntimeContext context, Web3 web3) + { + var algoToken = new AlgoTokenV1(web3, context.GasPriceProvider); + return await algoToken.DeployAsync(); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoTokenContract/AlgoTokenPauseCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoTokenContract/AlgoTokenPauseCommand.cs new file mode 100644 index 000000000..3455188c2 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoTokenContract/AlgoTokenPauseCommand.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoErc20Token; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoTokenContract +{ + public class AlgoTokenPauseCommand : EthInvokeTransactionalFunctionCommand + { + protected override Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3) + { + var algoToken = new AlgoTokenV1(contractAddress, web3, context.GasPriceProvider); + return algoToken.PauseAsync(); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoTokenContract/AlgoTokenTransferCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoTokenContract/AlgoTokenTransferCommand.cs new file mode 100644 index 000000000..6f3bf36e5 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoTokenContract/AlgoTokenTransferCommand.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoErc20Token; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoTokenContract +{ + public class AlgoTokenTransferCommand : EthInvokeTransactionalFunctionCommand + { + public string To { get; set; } + public BigInteger Value { get; set; } + + protected override async Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3) + { + var algoToken = new AlgoTokenV1(contractAddress, web3, context.GasPriceProvider); + return await algoToken.TransferAsync(context.ResolveAccountOrContractReference(To), Value); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoTokenContract/AlgoTokenUnpauseCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoTokenContract/AlgoTokenUnpauseCommand.cs new file mode 100644 index 000000000..555f6175e --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoTokenContract/AlgoTokenUnpauseCommand.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoErc20Token; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoTokenContract +{ + public class AlgoTokenUnpauseCommand : EthInvokeTransactionalFunctionCommand + { + protected override Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3) + { + var algoToken = new AlgoTokenV1(contractAddress, web3, context.GasPriceProvider); + return algoToken.UnpauseAsync(); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/ContractManagement/ContractCounter.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/ContractManagement/ContractCounter.cs new file mode 100644 index 000000000..b6f673697 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/ContractManagement/ContractCounter.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement +{ + public static class ContractCounter + { + private static long _count = 0; + + public static long Next() + { + Interlocked.Increment(ref _count); + return _count; + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/ContractManagement/DeployContractCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/ContractManagement/DeployContractCommand.cs new file mode 100644 index 000000000..1be07c16a --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/ContractManagement/DeployContractCommand.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.EthTransactions; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using AdvancedAlgos.AlgoToken.Framework.Ethereum.Exceptions; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement +{ + public abstract class DeployContractCommand : EthTransactionalCommand + { + private const string DEFAULT_NAME_FORMAT = "{0}#{1}"; + + public string Name { get; set; } + + public abstract string DefaultName { get; } + + protected abstract Task DeployContractAsync(RuntimeContext context, Web3 web3); + + protected override async Task ExecuteAsync(RuntimeContext context, Web3 web3) + { + string name = string.IsNullOrWhiteSpace(Name) ? + string.Format(CultureInfo.InvariantCulture, DEFAULT_NAME_FORMAT, DefaultName, ContractCounter.Next()) : Name; + + if (context.Contracts.ContainsKey(name)) throw new Exception($"The name '{name}' already exists."); + + try + { + var transactionReceipt = await DeployContractAsync(context, web3); + + if (transactionReceipt == null) return null; + + context.Contracts.Add(name, new EthContractDescriptor(name, transactionReceipt.ContractAddress)); + + Console.WriteLine("Contract successfully deployed."); + Console.WriteLine($"- Contract Name: '{name}'."); + Console.WriteLine($"- Contract Address: '{transactionReceipt.ContractAddress}'."); + + return transactionReceipt; + } + catch + { + Console.WriteLine("Failed to deploy the contract."); + throw; + } + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/ContractManagement/EthInvokeCallFunctionCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/ContractManagement/EthInvokeCallFunctionCommand.cs new file mode 100644 index 000000000..619b14161 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/ContractManagement/EthInvokeCallFunctionCommand.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using AdvancedAlgos.AlgoToken.Framework.Ethereum; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement +{ + public abstract class EthInvokeCallFunctionCommand : ICommand + { + public string ContractReference { get; set; } + + public async Task ExecuteAsync(RuntimeContext context) + { + var web3 = new Web3(context.EthNetworkUrl); + + try + { + var result = await ExecuteAsync(context, context.ResolveContractReference(ContractReference), web3); + + Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "- Result: {0}.", result)); + } + catch + { + Console.WriteLine("Failed to execute the call."); + throw; + } + } + + protected abstract Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3); + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/ContractManagement/EthInvokeTransactionalFunctionCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/ContractManagement/EthInvokeTransactionalFunctionCommand.cs new file mode 100644 index 000000000..94d4cc2fb --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/ContractManagement/EthInvokeTransactionalFunctionCommand.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.EthTransactions; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement +{ + public abstract class EthInvokeTransactionalFunctionCommand : EthTransactionalCommand + { + public string ContractReference { get; set; } + + protected abstract Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3); + + protected override async Task ExecuteAsync(RuntimeContext context, Web3 web3) + { + try + { + var transactionReceipt = await ExecuteAsync(context, context.ResolveContractReference(ContractReference), web3); + + Console.WriteLine("Function successfully executed."); + + return transactionReceipt; + } + catch + { + Console.WriteLine("Failed to execute the transaction."); + throw; + } + } + } +} \ No newline at end of file diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/ContractManagement/ListContractsCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/ContractManagement/ListContractsCommand.cs new file mode 100644 index 000000000..28f1a6cda --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/ContractManagement/ListContractsCommand.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement +{ + public class ListContractsCommand : ICommand + { + public Task ExecuteAsync(RuntimeContext context) + { + foreach (var ethContractDescriptor in context.Contracts.Values) + { + Console.WriteLine($"- {ethContractDescriptor.Name}:{ethContractDescriptor.ContractAddress}"); + } + + return Task.CompletedTask; + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/EthNetwork/ListEnvironmentCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/EthNetwork/ListEnvironmentCommand.cs new file mode 100644 index 000000000..b269fccfd --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/EthNetwork/ListEnvironmentCommand.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using AdvancedAlgos.AlgoToken.Framework.Ethereum; +using Nethereum.Util; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.EthNetwork +{ + public class ListEnvironmentCommand : ICommand + { + public Task ExecuteAsync(RuntimeContext context) + { + Console.WriteLine($"- Network Url: '{context.EthNetworkUrl}'."); + Console.WriteLine($"- Gas Price: {UnitConversion.Convert.FromWei(context.GasPriceProvider.GetGasPrice(), UnitConversion.EthUnit.Gwei)}Gwei."); + + return Task.CompletedTask; + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/EthNetwork/SetGasPriceCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/EthNetwork/SetGasPriceCommand.cs new file mode 100644 index 000000000..e99b7344c --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/EthNetwork/SetGasPriceCommand.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.EthNetwork +{ + public class SetGasPriceCommand : ICommand + { + public BigInteger GasPrice { get; set; } + + public Task ExecuteAsync(RuntimeContext context) + { + context.GasPriceProvider.SetGasPrice(GasPrice); + + Console.WriteLine($"Gas Price set to {GasPrice}Gwei."); + + return Task.CompletedTask; + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/EthNetwork/SetNetworkCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/EthNetwork/SetNetworkCommand.cs new file mode 100644 index 000000000..0af43225e --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/EthNetwork/SetNetworkCommand.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.EthNetwork +{ + public class SetNetworkCommand : ICommand + { + public string NetworkUrl { get; set; } + + public Task ExecuteAsync(RuntimeContext context) + { + if (string.Equals(NetworkUrl, RuntimeContext.LOCAL_NETWORK_ID, StringComparison.OrdinalIgnoreCase)) + { + NetworkUrl = RuntimeContext.LOCAL_NETWORK_URL; + } + + context.EthNetworkUrl = NetworkUrl; + + Console.WriteLine($"Network set to '{NetworkUrl}'."); + + return Task.CompletedTask; + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/EthTransactions/EthGetBalanceCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/EthTransactions/EthGetBalanceCommand.cs new file mode 100644 index 000000000..e5d34de99 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/EthTransactions/EthGetBalanceCommand.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoErc20Token; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.EthTransactions; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.Hex.HexTypes; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.EthTransactions +{ + public class EthGetBalanceCommand : ICommand + { + public string Account { get; set; } + + public async Task ExecuteAsync(RuntimeContext context) + { + var web3 = new Web3(context.EthNetworkUrl); + + try + { + var balance = await web3.Eth.GetBalance.SendRequestAsync(context.ResolveAccountOrContractReference(Account)); + + Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "- Balance: {0}.", balance.Value)); + } + catch + { + Console.WriteLine("Failed to get balance."); + throw; + } + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/EthTransactions/EthTransactionalCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/EthTransactions/EthTransactionalCommand.cs new file mode 100644 index 000000000..82448ae11 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/EthTransactions/EthTransactionalCommand.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.EthTransactions +{ + public abstract class EthTransactionalCommand : ICommand + { + public async Task ExecuteAsync(RuntimeContext context) + { + if (context.CurrentAccount == null) throw new Exception("Current account is not set."); + + var web3 = new Web3(context.CurrentAccount.Account, context.EthNetworkUrl); + + var transactionReceipt = await ExecuteAsync(context, web3); + + if (transactionReceipt != null) + { + Console.WriteLine($"- Gas used: {transactionReceipt.GasUsed.Value}."); + } + } + + protected abstract Task ExecuteAsync(RuntimeContext context, Web3 web3); + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/EthTransactions/EthTransferCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/EthTransactions/EthTransferCommand.cs new file mode 100644 index 000000000..5f13855f5 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/EthTransactions/EthTransferCommand.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoErc20Token; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.EthTransactions; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.Hex.HexTypes; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.EthTransactions +{ + public class EthTransferCommand : EthTransactionalCommand + { + public string To { get; set; } + public BigInteger Value { get; set; } + + protected override async Task ExecuteAsync(RuntimeContext context, Web3 web3) + { + return await web3.TransactionManager.TransactionReceiptService.SendRequestAndWaitForReceiptAsync(() => + web3.TransactionManager.SendTransactionAsync( + context.CurrentAccount.Account.Address, + context.ResolveAccountOrContractReference(To), + new HexBigInteger(Value))); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/ICommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/ICommand.cs new file mode 100644 index 000000000..38151aa46 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/ICommand.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands +{ + public interface ICommand + { + Task ExecuteAsync(RuntimeContext context); + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AccountManagementParsers.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AccountManagementParsers.cs new file mode 100644 index 000000000..7f3d003d2 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AccountManagementParsers.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.Text; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AccountManagement; +using Sprache; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Parsers +{ + public static class AccountManagementParsers + { + public static void Register() + { + (from command in CommonParsers.Token("new-account") + from name in CommonParsers.Switch('n', "name", CommonParsers.Identifier).Optional() + select new NewAccountCommand + { + Name = name.GetOrDefault() + }).Register(); + + (from command in CommonParsers.Token("import-account") + from privateKey in CommonParsers.StringValue + from name in CommonParsers.Switch('n', "name", CommonParsers.Identifier).Optional() + select new ImportAccountCommand + { + Name = name.GetOrDefault(), + PrivateKey = privateKey + }).Register(); + + (from command in CommonParsers.Token("list-accounts") + select new ListAccountsCommand() + ).Register(); + + (from command in CommonParsers.Token("set-account") + from name in CommonParsers.Identifier + select new SetAccountCommand + { + Name = name + }).Register(); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoMinerParsers.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoMinerParsers.cs new file mode 100644 index 000000000..b0988f086 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoMinerParsers.cs @@ -0,0 +1,117 @@ +using System; +using System.Collections.Generic; +using System.Text; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoMinerContract; +using Sprache; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Parsers +{ + public static class AlgoMinerParsers + { + public static void Register() + { + (from command in CommonParsers.Token("deploy-algominer") + from minerType in CommonParsers.IntegerValue + from category in CommonParsers.IntegerValue + from ownerAddress in CommonParsers.StringValue + from tokenAddress in CommonParsers.StringValue + from name in CommonParsers.Switch('n', "name", CommonParsers.Identifier).Optional() + select new AlgoMinerDeployCommand + { + Name = name.GetOrDefault(), + MinerType = (ushort)minerType, + Category = (byte)category, + OwnerAddress = ownerAddress, + TokenAddress = tokenAddress + }).Register(); + + (from contractReference in CommonParsers.Invoke("algominer-activateminer") + select new AlgoMinerActivateMinerCommand + { + ContractReference = contractReference, + }).Register(); + + (from contractReference in CommonParsers.Invoke("algominer-deactivateminer") + select new AlgoMinerDeactivateMinerCommand + { + ContractReference = contractReference, + }).Register(); + + (from contractReference in CommonParsers.Invoke("algominer-migrateminer") + from newMinerAddress in CommonParsers.StringValue + select new AlgoMinerMigrateMinerCommand + { + ContractReference = contractReference, + NewMinerAddress = newMinerAddress + }).Register(); + + (from contractReference in CommonParsers.Invoke("algominer-pausemining") + select new AlgoMinerPauseMiningCommand + { + ContractReference = contractReference, + }).Register(); + + (from contractReference in CommonParsers.Invoke("algominer-resumemining") + select new AlgoMinerResumeMiningCommand + { + ContractReference = contractReference, + }).Register(); + + (from contractReference in CommonParsers.Invoke("algominer-stopandremoveownership") + select new AlgoMinerStopAndRemoveOwnershipCommand + { + ContractReference = contractReference, + }).Register(); + + (from contractReference in CommonParsers.Invoke("algominer-resetminer") + from newOwnerAddress in CommonParsers.StringValue + select new AlgoMinerResetMinerCommand + { + ContractReference = contractReference, + NewOwnerAddress = newOwnerAddress + }).Register(); + + (from contractReference in CommonParsers.Invoke("algominer-startmining") + select new AlgoMinerStartMiningCommand + { + ContractReference = contractReference, + }).Register(); + + (from contractReference in CommonParsers.Invoke("algominer-stopmining") + select new AlgoMinerStopMiningCommand + { + ContractReference = contractReference, + }).Register(); + + (from contractReference in CommonParsers.Invoke("algominer-mine") + select new AlgoMinerMineCommand + { + ContractReference = contractReference, + }).Register(); + + (from contractReference in CommonParsers.Invoke("algominer-addsystem") + from account in CommonParsers.StringValue + select new AlgoMinerAddSystemCommand + { + ContractReference = contractReference, + Account = account + }).Register(); + + (from contractReference in CommonParsers.Invoke("algominer-addcoreteam") + from account in CommonParsers.StringValue + select new AlgoMinerAddCoreTeamCommand + { + ContractReference = contractReference, + Account = account + }).Register(); + + (from contractReference in CommonParsers.Invoke("algominer-addsupervisor") + from account in CommonParsers.StringValue + select new AlgoMinerAddSupervisorCommand + { + ContractReference = contractReference, + Account = account + }).Register(); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoPoolParsers.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoPoolParsers.cs new file mode 100644 index 000000000..abb30cee0 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoPoolParsers.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Text; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoPoolContract; +using Sprache; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Parsers +{ + public static class AlgoPoolParsers + { + public static void Register() + { + (from command in CommonParsers.Token("deploy-algopool") + from poolType in CommonParsers.IntegerValue + from tokenAddress in CommonParsers.StringValue + from name in CommonParsers.Switch('n', "name", CommonParsers.Identifier).Optional() + select new AlgoPoolDeployCommand + { + Name = name.GetOrDefault(), + PoolType = (ushort)poolType, + TokenAddress = tokenAddress + }).Register(); + + (from contractReference in CommonParsers.Invoke("algopool-trasfertominer") + from minerAddress in CommonParsers.StringValue + select new AlgoPoolTrasferToMinerCommand + { + ContractReference = contractReference, + MinerAddress = minerAddress + }).Register(); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoTokenParsers.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoTokenParsers.cs new file mode 100644 index 000000000..1e0592995 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoTokenParsers.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.Text; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoTokenContract; +using Sprache; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Parsers +{ + public static class AlgoTokenParsers + { + public static void Register() + { + (from command in CommonParsers.Token("deploy-algotoken") + from name in CommonParsers.Switch('n', "name", CommonParsers.Identifier).Optional() + select new AlgoTokenDeployCommand + { + Name = name.GetOrDefault() + }).Register(); + + (from contractReference in CommonParsers.Invoke("algotoken-transfer") + from to in CommonParsers.StringValue + from value in EthUnitParsers.EthValue + select new AlgoTokenTransferCommand + { + ContractReference = contractReference, + To = to, + Value = value + }).Register(); + + (from contractReference in CommonParsers.Invoke("algotoken-balanceof") + from owner in CommonParsers.StringValue + select new AlgoTokenBalanceOfCommand + { + ContractReference = contractReference, + OwnerAddress = owner + }).Register(); + + (from contractReference in CommonParsers.Invoke("algotoken-pause") + select new AlgoTokenPauseCommand + { + ContractReference = contractReference, + }).Register(); + + (from contractReference in CommonParsers.Invoke("algotoken-unpause") + select new AlgoTokenUnpauseCommand + { + ContractReference = contractReference, + }).Register(); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/CommonParsers.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/CommonParsers.cs new file mode 100644 index 000000000..67ffea648 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/CommonParsers.cs @@ -0,0 +1,77 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Numerics; +using System.Text; +using Sprache; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Parsers +{ + public static class CommonParsers + { + public static readonly Parser ReservedChar = + Parse.Char(' ').XOr(Parse.Char(':')).XOr(Parse.Char('/')).XOr(Parse.Char('-')).XOr(Parse.Char('.')).XOr(Parse.Char(',')); + + public static readonly Parser Integer = + Parse.Digit.AtLeastOnce().Text().Token(); + + public static readonly Parser> String = + Parse.AnyChar.Except(ReservedChar).AtLeastOnce().Text(); + + public static readonly Parser> QuotedString = + from open in Parse.Char('"') + from content in Parse.CharExcept('"').Many().Text() + from close in Parse.Char('"') + select content; + + public static readonly Parser IntegerValue = + Integer.Select(x => int.Parse(x, CultureInfo.InvariantCulture)); + + public static readonly Parser BigIntegerValue = + Integer.Select(x => BigInteger.Parse(x, CultureInfo.InvariantCulture)); + + public static readonly Parser DecimalValue = + Parse.DecimalInvariant.Token().Select(x => decimal.Parse(x, CultureInfo.InvariantCulture)); + + public static readonly Parser StringValue = + QuotedString.XOr(String).Text().Token(); + + public static readonly Parser Identifier = + Parse.AnyChar.Except(ReservedChar).AtLeastOnce().Text().Token(); + + public static Parser Token(string name) + => Parse.IgnoreCase(name).Text().Token().Select(_ => true); + + public static Parser Switch(char shortName, string longName) + => (from switchIdentifier in ShortSwitch(shortName).Or(LongSwitch(longName)) + select true).Token(); + + public static Parser Switch(char shortName, string longName, Parser valueParser) + => (from switchIdentifier in ShortSwitch(shortName).Or(LongSwitch(longName)) + from separator in Parse.Char(' ').XOr(Parse.Char(':')).Optional() + from value in valueParser + select value).Token(); + + public static Parser> List(Parser itemParser) + => itemParser.DelimitedBy(Parse.Char(',')).Token(); + + public static Parser EnumValue() where T : struct + => StringValue.Select(x => Enum.Parse(x, true)); + + public static Parser ShortSwitch(char shortName) + => from prefix in Parse.Char('/').XOr(Parse.Char('-')) + from switchIdentifier in Parse.IgnoreCase(shortName) + select true; + + public static Parser LongSwitch(string longName) + => from prefix in Parse.String("--") + from switchIdentifier in Parse.IgnoreCase(longName) + select true; + + public static Parser Invoke(string functionName) + => from target in Identifier + from separator in Parse.Char('.') + from _ in Token(functionName) + select target; + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/ContractManagementParsers.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/ContractManagementParsers.cs new file mode 100644 index 000000000..2a28224a9 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/ContractManagementParsers.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Text; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using Sprache; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Parsers +{ + public static class ContractManagementParsers + { + public static void Register() + { + (from command in CommonParsers.Token("list-contracts") + select new ListContractsCommand() + ).Register(); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/EthNetworkParsers.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/EthNetworkParsers.cs new file mode 100644 index 000000000..822ea6f46 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/EthNetworkParsers.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Text; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.EthNetwork; +using Sprache; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Parsers +{ + public static class EthNetworkParsers + { + public static void Register() + { + (from command in CommonParsers.Token("set-network") + from networkUrl in CommonParsers.StringValue + select new SetNetworkCommand + { + NetworkUrl = networkUrl + }).Register(); + + (from command in CommonParsers.Token("set-gasprice") + from gasPrice in CommonParsers.BigIntegerValue + select new SetGasPriceCommand + { + GasPrice = gasPrice + }).Register(); + + (from command in CommonParsers.Token("list-env") + select new ListEnvironmentCommand() + ).Register(); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/EthTransactionsParsers.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/EthTransactionsParsers.cs new file mode 100644 index 000000000..d80c6f41a --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/EthTransactionsParsers.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Text; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.EthTransactions; +using Sprache; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Parsers +{ + public static class EthTransactionsParsers + { + public static void Register() + { + (from command in CommonParsers.Token("eth-transfer") + from to in CommonParsers.StringValue + from value in EthUnitParsers.EthValue + select new EthTransferCommand + { + To = to, + Value = value + }).Register(); + + (from command in CommonParsers.Token("eth-getbalance") + from account in CommonParsers.StringValue + select new EthGetBalanceCommand + { + Account = account + }).Register(); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/EthUnitParsers.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/EthUnitParsers.cs new file mode 100644 index 000000000..1a415186b --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/EthUnitParsers.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using Nethereum.Util; +using Sprache; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Parsers +{ + public static class EthUnitParsers + { + public static readonly Parser EthValue = + EthUnit("wei") + .Or(EthUnit("gwei")) + .Or(EthUnit("eth")) + .Or(EthUnit("ether")) + .Or(EthUnit("m")) + .Or(EthUnit("mether")) + .Or(CommonParsers.BigIntegerValue); + + public static Parser EthUnit(string unitName) + => from value in CommonParsers.BigIntegerValue + from unit in Parse.IgnoreCase(unitName).Text() + select Convert(value, unit); + + private static BigInteger Convert(BigInteger value, string unitName) + { + switch (unitName.ToLowerInvariant()) + { + case "wei": + return value; + case "gwei": + return UnitConversion.Convert.ToWei(value, UnitConversion.EthUnit.Gwei); + case "eth": + case "ether": + return UnitConversion.Convert.ToWei(value, UnitConversion.EthUnit.Ether); + case "m": + case "mether": + return UnitConversion.Convert.ToWei(value, UnitConversion.EthUnit.Mether); + } + + throw new Exception("Invalid unit."); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/ParserExtensions.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/ParserExtensions.cs new file mode 100644 index 000000000..5344846f1 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/ParserExtensions.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Text; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands; +using Sprache; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Parsers +{ + public static class ParserExtensions + { + public static void Register(this Parser parser) + => REPL.Instance.RegisterParser(parser); + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Program.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Program.cs new file mode 100644 index 000000000..21bf29707 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Program.cs @@ -0,0 +1,13 @@ +using System; +using System.Threading.Tasks; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground +{ + public static class Program + { + public static async Task Main(string[] args) + { + await REPL.Instance.RunAsync(); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/REPL.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/REPL.cs new file mode 100644 index 000000000..5755c8eff --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/REPL.cs @@ -0,0 +1,97 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Parsers; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Sprache; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground +{ + public class REPL + { + public static readonly REPL Instance = new REPL(); + + private readonly List> _parsers = new List>(); + private readonly RuntimeContext _context = new RuntimeContext(); + + static REPL() + { + EthNetworkParsers.Register(); + EthTransactionsParsers.Register(); + AccountManagementParsers.Register(); + ContractManagementParsers.Register(); + AlgoTokenParsers.Register(); + AlgoPoolParsers.Register(); + AlgoMinerParsers.Register(); + } + + private REPL() { } + + public void RegisterParser(Parser parser) => _parsers.Add(parser); + + public async Task RunAsync() + { + Console.WriteLine("Ready."); + + do + { + PrintPrompt(); + } while (await ProcessAsync(Console.ReadLine())); + } + + private void PrintPrompt() + { + var prompt = new StringBuilder(); + + if (_context.CurrentAccount != null) + { + prompt.Append(_context.CurrentAccount.Name); + } + + prompt.Append(">"); + + Console.Write(prompt.ToString()); + } + + private async Task ProcessAsync(string commandLine) + { + if (string.IsNullOrWhiteSpace(commandLine)) return true; + + if (commandLine.Equals("cls", StringComparison.OrdinalIgnoreCase) || + commandLine.Equals("clear", StringComparison.OrdinalIgnoreCase)) + { + Console.Clear(); + return true; + } + + if (commandLine.Equals("exit", StringComparison.OrdinalIgnoreCase) || + commandLine.Equals("quit", StringComparison.OrdinalIgnoreCase)) return false; + + foreach (var parser in _parsers) + { + var result = parser.TryParse(commandLine); + + if (!result.WasSuccessful) continue; + + try + { + await result.Value.ExecuteAsync(_context); + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + } + + return true; + } + + Console.WriteLine("Syntax error."); + + return true; + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Runtime/EthAccountDescriptor.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Runtime/EthAccountDescriptor.cs new file mode 100644 index 000000000..7bb921916 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Runtime/EthAccountDescriptor.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Nethereum.Web3.Accounts; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime +{ + public class EthAccountDescriptor + { + public EthAccountDescriptor(string name, Account account) + { + Name = name ?? throw new ArgumentNullException(nameof(name)); + Account = account ?? throw new ArgumentNullException(nameof(account)); + } + + public string Name { get; set; } + public Account Account { get; set; } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Runtime/EthContractDescriptor.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Runtime/EthContractDescriptor.cs new file mode 100644 index 000000000..439f9eb01 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Runtime/EthContractDescriptor.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Nethereum.Web3.Accounts; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime +{ + public class EthContractDescriptor + { + public EthContractDescriptor(string name, string contractAddress) + { + Name = name ?? throw new ArgumentNullException(nameof(name)); + ContractAddress = contractAddress ?? throw new ArgumentNullException(nameof(contractAddress)); + } + + public string Name { get; set; } + public string ContractAddress { get; set; } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Runtime/RuntimeContext.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Runtime/RuntimeContext.cs new file mode 100644 index 000000000..1a7cb66e0 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Runtime/RuntimeContext.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections.Generic; +using System.Text; +using AdvancedAlgos.AlgoToken.Framework.Ethereum; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime +{ + public class RuntimeContext + { + public const string LOCAL_NETWORK_ID = "local"; + public const string LOCAL_NETWORK_URL = "http://127.0.0.1:8545"; + + public string EthNetworkUrl { get; set; } = LOCAL_NETWORK_URL; + public EthAccountDescriptor CurrentAccount { get; set; } + public Dictionary Accounts { get; } = new Dictionary(StringComparer.OrdinalIgnoreCase); + public Dictionary Contracts { get; } = new Dictionary(StringComparer.OrdinalIgnoreCase); + public StaticGasPriceProvider GasPriceProvider { get; } = new StaticGasPriceProvider(); + + public string ResolveAccountReference(string reference) + { + if (TryResolveAccountReference(reference, out string address)) return address; + + throw new Exception($"Invalid account name or address: '{reference}'."); + } + + public string ResolveContractReference(string reference) + { + if (TryResolveContractReference(reference, out string address)) return address; + + throw new Exception($"Invalid contract name or address: '{reference}'."); + } + + public string ResolveAccountOrContractReference(string reference) + { + if (TryResolveAccountOrContractReference(reference, out string address)) return address; + + throw new Exception($"Invalid name or address: '{reference}'."); + } + + public bool TryResolveAccountReference(string reference, out string address) + { + if (Accounts.ContainsKey(reference)) + { + address = Accounts[reference].Account.Address; + return true; + } + + if (EthAddressParser.ValidateAddress(reference)) + { + address = reference; + return true; + } + + address = null; + return false; + } + + public bool TryResolveContractReference(string reference, out string address) + { + if (Contracts.ContainsKey(reference)) + { + address = Contracts[reference].ContractAddress; + return true; + } + + if (EthAddressParser.ValidateAddress(reference)) + { + address = reference; + return true; + } + + address = null; + return false; + } + + public bool TryResolveAccountOrContractReference(string reference, out string address) + { + if (TryResolveAccountReference(reference, out address)) return true; + if (TryResolveContractReference(reference, out address)) return true; + return false; + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Runtime/StaticGasPriceProvider.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Runtime/StaticGasPriceProvider.cs new file mode 100644 index 000000000..08bb368b3 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Runtime/StaticGasPriceProvider.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using AdvancedAlgos.AlgoToken.Framework.Ethereum; +using Nethereum.Util; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime +{ + public class StaticGasPriceProvider : IGasPriceProvider + { + private BigInteger _gasPrice; + + public StaticGasPriceProvider() + { + _gasPrice = UnitConversion.Convert.ToWei(20, UnitConversion.EthUnit.Gwei); + } + + public BigInteger GetGasPrice() => _gasPrice; + public void SetGasPrice(BigInteger valueGwei) => _gasPrice = UnitConversion.Convert.ToWei(valueGwei, UnitConversion.EthUnit.Gwei); + } +} diff --git a/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest.csproj b/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest.csproj new file mode 100644 index 000000000..ccbb08c19 --- /dev/null +++ b/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest.csproj @@ -0,0 +1,16 @@ + + + + netcoreapp2.1 + latest + + + + + + + + + + + diff --git a/labs/algo-erc20-token/test/AdvancedAlgos.AlgoErc20Token.IntegrationTests/EthNetwork.cs b/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest/EthNetwork.cs similarity index 81% rename from labs/algo-erc20-token/test/AdvancedAlgos.AlgoErc20Token.IntegrationTests/EthNetwork.cs rename to labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest/EthNetwork.cs index b34dbe31d..8f1675e54 100644 --- a/labs/algo-erc20-token/test/AdvancedAlgos.AlgoErc20Token.IntegrationTests/EthNetwork.cs +++ b/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest/EthNetwork.cs @@ -10,7 +10,7 @@ using Nethereum.Util; using Nethereum.Web3; using Nethereum.Web3.Accounts; -namespace AdvancedAlgos.AlgoErc20Token.IntegrationTests +namespace AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest { public class EthNetwork { @@ -23,8 +23,8 @@ namespace AdvancedAlgos.AlgoErc20Token.IntegrationTests public string Url { get; private set; } public string PrefundedAddress { get; private set; } public string PrefundedPrivateKey { get; private set; } - public BigInteger GasPrice { get; private set; } - public BigInteger TxBaseFeeWei => GasPrice * TRANSACTION_BASE_FEE; + public IGasPriceProvider GasPriceProvider { get; private set; } + public BigInteger TxBaseFeeWei => GasPriceProvider.GetGasPrice() * TRANSACTION_BASE_FEE; public static void UseGanacheTestNet() { @@ -33,7 +33,7 @@ namespace AdvancedAlgos.AlgoErc20Token.IntegrationTests Url = "http://127.0.0.1:8545", PrefundedAddress = "0x06bB4674A4b08d07186b721378C7e241eD85443b", PrefundedPrivateKey = "0936af475d2701538aad321f87e0a51f2b297634653393e8cab7290a674009a5", - GasPrice = 2000000000 + GasPriceProvider = new StaticGasPriceProvider(2000000000) }; } @@ -44,10 +44,13 @@ namespace AdvancedAlgos.AlgoErc20Token.IntegrationTests Url = "http://10.4.0.4:8545", PrefundedAddress = "0x88474Ec3cfddfC943d3E42C94763D43f181A5a83", PrefundedPrivateKey = "0x69970bd6c1b6cfbffea16656c27ff7b330b751ed5e46c1644b54a642871f4bbb", - GasPrice = 2000000000 + GasPriceProvider = new StaticGasPriceProvider(2000000000) }; } + public Web3 GetWeb3() => new Web3(Url); + public Web3 GetWeb3(IAccount account) => new Web3(account, Url); + public Task RefillAsync(IAccount account) { return RefillAsync(account, UnitConversion.Convert.ToWei(1)); diff --git a/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest/StaticGasPriceProvider.cs b/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest/StaticGasPriceProvider.cs new file mode 100644 index 000000000..e8cc59df8 --- /dev/null +++ b/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest/StaticGasPriceProvider.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; + +namespace AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest +{ + public class StaticGasPriceProvider : IGasPriceProvider + { + private BigInteger _gasPrice; + + public StaticGasPriceProvider(BigInteger gasPrice) + { + _gasPrice = gasPrice; + } + + public BigInteger GetGasPrice() => _gasPrice; + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/AdvancedAlgos.AlgoErc20Token.EthClientExtensions.csproj b/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/AdvancedAlgos.AlgoToken.Framework.Ethereum.csproj similarity index 100% rename from labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/AdvancedAlgos.AlgoErc20Token.EthClientExtensions.csproj rename to labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/AdvancedAlgos.AlgoToken.Framework.Ethereum.csproj diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/EthAccountFactory.cs b/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/EthAccountFactory.cs similarity index 88% rename from labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/EthAccountFactory.cs rename to labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/EthAccountFactory.cs index 6e022fdde..c3933ce1b 100644 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/EthAccountFactory.cs +++ b/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/EthAccountFactory.cs @@ -5,7 +5,7 @@ using Nethereum.Hex.HexConvertors.Extensions; using Nethereum.Signer; using Nethereum.Web3.Accounts; -namespace AdvancedAlgos.AlgoErc20Token.EthClientExtensions +namespace AdvancedAlgos.AlgoToken.Framework.Ethereum { public static class EthAccountFactory { diff --git a/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/EthAddressParser.cs b/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/EthAddressParser.cs new file mode 100644 index 000000000..d8e9a5c8e --- /dev/null +++ b/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/EthAddressParser.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Nethereum.Hex.HexConvertors.Extensions; +using Nethereum.Util; + +namespace AdvancedAlgos.AlgoToken.Framework.Ethereum +{ + public static class EthAddressParser + { + private static readonly AddressUtil _addressUtil = new AddressUtil(); + + public static bool ValidateAddress(string address) + { + try + { + if (!_addressUtil.IsValidAddressLength(address)) return false; + address = _addressUtil.ConvertToChecksumAddress(address); + return _addressUtil.IsChecksumAddress(address); + } + catch + { + return false; + } + } + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/Exceptions/TransactionRejectedException.cs b/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/Exceptions/TransactionRejectedException.cs similarity index 80% rename from labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/Exceptions/TransactionRejectedException.cs rename to labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/Exceptions/TransactionRejectedException.cs index c18a8c0bf..7aaf4592f 100644 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/Exceptions/TransactionRejectedException.cs +++ b/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/Exceptions/TransactionRejectedException.cs @@ -5,11 +5,11 @@ using System.Collections.Generic; using System.Text; using Nethereum.RPC.Eth.DTOs; -namespace AdvancedAlgos.AlgoErc20Token.EthClientExtensions.Exceptions +namespace AdvancedAlgos.AlgoToken.Framework.Ethereum.Exceptions { public class TransactionRejectedException : Exception { - private const string ERROR_MESSAGE = "Failed to execute the transaction."; + private const string ERROR_MESSAGE = "The transaction was rejected."; public TransactionRejectedException(TransactionReceipt transactionReceipt) : base(ERROR_MESSAGE) diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/Extensions/TransactionReceiptExtensions.cs b/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/Extensions/TransactionReceiptExtensions.cs similarity index 74% rename from labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/Extensions/TransactionReceiptExtensions.cs rename to labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/Extensions/TransactionReceiptExtensions.cs index 2ce8dec83..47d5ebc24 100644 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/Extensions/TransactionReceiptExtensions.cs +++ b/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/Extensions/TransactionReceiptExtensions.cs @@ -2,9 +2,9 @@ using System.Collections.Generic; using System.Text; using Nethereum.RPC.Eth.DTOs; -using AdvancedAlgos.AlgoErc20Token.EthClientExtensions.Exceptions; +using AdvancedAlgos.AlgoToken.Framework.Ethereum.Exceptions; -namespace AdvancedAlgos.AlgoErc20Token.EthClientExtensions.Extensions +namespace AdvancedAlgos.AlgoToken.Framework.Ethereum.Extensions { public static class TransactionReceiptExtensions { diff --git a/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/IGasPriceProvider.cs b/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/IGasPriceProvider.cs new file mode 100644 index 000000000..1a16a0b9c --- /dev/null +++ b/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/IGasPriceProvider.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; + +namespace AdvancedAlgos.AlgoToken.Framework.Ethereum +{ + public interface IGasPriceProvider + { + BigInteger GetGasPrice(); + } +} diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/Reflection/AssemblyExtensions.cs b/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/Reflection/AssemblyExtensions.cs similarity index 89% rename from labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/Reflection/AssemblyExtensions.cs rename to labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/Reflection/AssemblyExtensions.cs index 219d7160b..9fc668554 100644 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/Reflection/AssemblyExtensions.cs +++ b/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/Reflection/AssemblyExtensions.cs @@ -4,7 +4,7 @@ using System.IO; using System.Reflection; using System.Text; -namespace AdvancedAlgos.AlgoErc20Token.EthClientExtensions.Reflection +namespace AdvancedAlgos.AlgoToken.Framework.Ethereum.Reflection { public static class AssemblyExtensions { diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/SmartContract.cs b/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/SmartContract.cs similarity index 55% rename from labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/SmartContract.cs rename to labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/SmartContract.cs index a2bebbef4..deed26c1e 100644 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoErc20Token.EthClientExtensions/SmartContract.cs +++ b/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/SmartContract.cs @@ -1,79 +1,91 @@ using System; using System.Numerics; using System.Threading.Tasks; -using AdvancedAlgos.AlgoErc20Token.EthClientExtensions.Extensions; -using AdvancedAlgos.AlgoErc20Token.EthClientExtensions.Reflection; +using AdvancedAlgos.AlgoToken.Framework.Ethereum.Extensions; +using AdvancedAlgos.AlgoToken.Framework.Ethereum.Reflection; using Nethereum.Contracts; using Nethereum.Hex.HexTypes; using Nethereum.RPC.Eth.DTOs; using Nethereum.Web3; -namespace AdvancedAlgos.AlgoErc20Token.EthClientExtensions +namespace AdvancedAlgos.AlgoToken.Framework.Ethereum { - public abstract class SmartContract where TContract : SmartContract, new() + public abstract class SmartContract where TContract : SmartContract { private static readonly object _syncForResourceLoader = new object(); private static string _abi; private static string _bin; + public SmartContract(Web3 web3, IGasPriceProvider gasPriceProvider) + { + Web3 = web3 ?? throw new ArgumentNullException(nameof(web3)); + GasPriceProvider = gasPriceProvider ?? throw new ArgumentNullException(nameof(gasPriceProvider)); + + LoadAbiAndBin(); + } + + public SmartContract(string contractAddress, Web3 web3, IGasPriceProvider gasPriceProvider) + { + Web3 = web3 ?? throw new ArgumentNullException(nameof(web3)); + GasPriceProvider = gasPriceProvider ?? throw new ArgumentNullException(nameof(gasPriceProvider)); + ContractAddress = contractAddress ?? throw new ArgumentNullException(nameof(contractAddress)); + + LoadAbiAndBin(); + + var contractDescriptor = web3.Eth.GetContract(_abi, contractAddress); + + Initialize(contractDescriptor); + } + public Web3 Web3 { get; private set; } + public IGasPriceProvider GasPriceProvider { get; } public string ContractAddress { get; private set; } protected abstract string AbiResourceName { get; } protected abstract string BinResourceName { get; } protected abstract BigInteger DeploymentGasUnits { get; } - protected virtual void Initialize(Contract contractDescriptor) { } - - public static TContract Get(Web3 web3, string contractAddress) + public void Bind(Web3 web3) { - var contractInstance = new TContract(); + Web3 = web3 ?? throw new ArgumentNullException(nameof(web3)); - contractInstance.LoadAbiAndBin(); + var contractDescriptor = Web3.Eth.GetContract(_abi, ContractAddress); - contractInstance.Web3 = web3; - contractInstance.ContractAddress = contractAddress; - - var contractDescriptor = web3.Eth.GetContract(_abi, contractAddress); - - contractInstance.Initialize(contractDescriptor); - - return contractInstance; + Initialize(contractDescriptor); } - public async Task DeployAsync(Web3 web3, BigInteger gasPrice, params object[] constructorParameters) - { - LoadAbiAndBin(); + protected virtual void Initialize(Contract contractDescriptor) { } - var transactionReceipt = await web3.Eth.DeployContract.SendRequestAndWaitForReceiptAsync( + protected async Task DeployAsync(params object[] constructorParameters) + { + var transactionReceipt = await Web3.Eth.DeployContract.SendRequestAndWaitForReceiptAsync( _abi, _bin, - web3.TransactionManager.Account.Address, + Web3.TransactionManager.Account.Address, new HexBigInteger(DeploymentGasUnits), - new HexBigInteger(gasPrice), + new HexBigInteger(GasPriceProvider.GetGasPrice()), null, null, constructorParameters); transactionReceipt.EnsureSucceededStatus(); - var contractDescriptor = web3.Eth.GetContract(_abi, transactionReceipt.ContractAddress); + var contractDescriptor = Web3.Eth.GetContract(_abi, transactionReceipt.ContractAddress); Initialize(contractDescriptor); - Web3 = web3; ContractAddress = transactionReceipt.ContractAddress; return transactionReceipt; } - protected async Task InvokeAsync(Function function, BigInteger gasUnits, BigInteger gasPrice, params object[] parameters) + protected async Task InvokeAsync(Function function, BigInteger gasUnits, params object[] parameters) { var transactionReceipt = await function.SendTransactionAndWaitForReceiptAsync( Web3.TransactionManager.Account.Address, new HexBigInteger(gasUnits), - new HexBigInteger(gasPrice), + new HexBigInteger(GasPriceProvider.GetGasPrice()), null, null, parameters); From f33f4def50c2dbdc244e0d38b6b497c70561dfab Mon Sep 17 00:00:00 2001 From: pmmax Date: Mon, 3 Dec 2018 23:05:22 -0300 Subject: [PATCH 07/17] Added documentation for the playground, fixed some compilation issues, added new minor features --- ...ancedAlgos.AlgoToken.AlgoErc20Token.csproj | 1 + ...ken.AlgoErc20Token.IntegrationTests.csproj | 1 + ...gos.AlgoToken.AlgoTokenDistribution.csproj | 1 + .../SmartContracts/src/AlgoMiner.sol | 2 + ...oTokenDistribution.IntegrationTests.csproj | 1 + labs/algo-token-playground/README.md | 345 ++++++++++++++++++ .../build/build-osx-x64.cmd | 2 +- .../build/build-osx-x64.sh | 2 + .../build/build-win-x64.cmd | 2 +- .../build/build-win-x64.sh | 2 + ...Algos.AlgoToken.AlgoTokenPlayground.csproj | 1 + .../RegisterContractCommand.cs | 27 ++ .../Parsers/ContractManagementParsers.cs | 9 + ....Framework.Ethereum.IntegrationTest.csproj | 1 + ...dAlgos.AlgoToken.Framework.Ethereum.csproj | 1 + 15 files changed, 396 insertions(+), 2 deletions(-) create mode 100644 labs/algo-token-playground/README.md create mode 100644 labs/algo-token-playground/build/build-osx-x64.sh create mode 100644 labs/algo-token-playground/build/build-win-x64.sh create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/ContractManagement/RegisterContractCommand.cs diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/AdvancedAlgos.AlgoToken.AlgoErc20Token.csproj b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/AdvancedAlgos.AlgoToken.AlgoErc20Token.csproj index f5790d550..aee19e22d 100644 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/AdvancedAlgos.AlgoToken.AlgoErc20Token.csproj +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/AdvancedAlgos.AlgoToken.AlgoErc20Token.csproj @@ -2,6 +2,7 @@ netcoreapp2.1 + true latest diff --git a/labs/algo-erc20-token/test/AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests/AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests.csproj b/labs/algo-erc20-token/test/AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests/AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests.csproj index a32a8a284..923b75de0 100644 --- a/labs/algo-erc20-token/test/AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests/AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests.csproj +++ b/labs/algo-erc20-token/test/AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests/AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests.csproj @@ -2,6 +2,7 @@ netcoreapp2.1 + true latest false diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.csproj b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.csproj index fcd5029c3..e4165875b 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.csproj +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.csproj @@ -2,6 +2,7 @@ netcoreapp2.1 + true latest diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol index 69263a732..0ab2f1d47 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol @@ -36,6 +36,8 @@ contract AlgoMiner is AlgoSystemRole, AlgoCoreTeamRole, AlgoSupervisorRole, IAlg AlgoCoreTeamRole() AlgoSupervisorRole() public { + + require(category >= 0 && category <= 5); _minerType = minerType; _category = category; diff --git a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests.csproj b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests.csproj index 362f1c46a..df6775c30 100644 --- a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests.csproj +++ b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests.csproj @@ -2,6 +2,7 @@ netcoreapp2.1 + true latest false diff --git a/labs/algo-token-playground/README.md b/labs/algo-token-playground/README.md new file mode 100644 index 000000000..6fbe74eb1 --- /dev/null +++ b/labs/algo-token-playground/README.md @@ -0,0 +1,345 @@ +# AlgoToken Playground + +## Building the application + +1. Download and install the netcore 2.1 SDK from +1. Build the application running the proper build script located in the `build` directory (`/labs/algo-token-playground/build`) according to your OS +1. The compiled binaries will be located in the `release/{platform}` directory +1. Once the application is compiled, the generated binaries do not require the netcore SDK to run. All dependencies, including the netcore runtime, are included in the generated directory. + +## Running the application + +* Run the application by executing proper binary file for your OS. The file name is `AdvancedAlgos.AlgoToken.AlgoTokenPlayground` plus the `.exe` extension on Windows. + +## Using the application + +### Environment + +By default the application is configured to run using the following configuration: + +* Eth Network URL: `http://127.0.0.1:8545` +* Gas Price: `20Gwei` + +You can check the configuration by running the command `list-env`. + +* Use the command `set-network ` to change the current network. +* Use the command `set-gasprice ` to change the gas price used for the transactions. The value is expected in Gweis. + +### Using Ganache to emulate a local testnet + +You can emulate a local testnet by installing Ganache in your machine. + +* Download and install the Ganache application from + * Ensure you set the port to 8545, which is the default port for GETH nodes + * Ensure you disable the setting "ERROR ON TRANSACTION FAILURE" to emulate the behavior of the GETH client + * Ensure you disable the setting "LOCK ACCOUNTS" to avoid locking the prefunded accounts +* If you prefer the command line version, you need to install nodejs and then you can use the scripts located in `/labs/tools/ganache-cli-setup` to install and run the application + * The Windows version of the script expect the directory `C:\Temp` to be available for the Ganache DB + * The Linux version of the script expect the directory `ganache-db` to be available in the current directory for the Ganache DB + * You can change the Ganache DB directory by using the `--db` switch + +### Managing accounts + +#### Creating a new account + +Use the `new-account [-n ]` command to create a new account. + +The optional `-n` switch let you set a friendly name for the new account, later can be used as an alias for the account address when is necessary. + +>Example: `new-account -n miner_1_account` + +#### Importing an existing account + +Use the command `import-account [-n ]` to import an existing account. + +>Example: `import-account 0936af475d2701538aad321f87e0a51f2b297634653393e8cab7290a674009a5 -n prefunded` + +#### Selecting an account for singing transactions + +Before executing any transaction, you need to set the account to be used for signing the transaction. + +Use the `set-account ` command to set the signing account. All subsequent transactions will be signed using this account. + +>Example: `set-account miner_1_account` + +The `new-account` and `import-account` commands will set the current account automatically. + +Notice that the current account name is shown in the command prompt. + +#### Listing the accounts registered in the playground + +The `list-accounts` command shows the list of accounts registered in the Playground. + +>Example: `list-accounts` + +### Ether management + +Before using an account to sing a transaction you need to send some ethers to that account. + +#### Transfer ethers to an account + +Use the `eth-transfer ` command to transfer ethers to an account: +* `to`: the destination account address (or name if the account is registered in the playground) +* `value`: the amount to transfer. By default this value is expected in weis, you can specify the following suffixes to use a different unit: + * `wei`: base unit + * `gwei`: 1000000000 weis + * `ether` or `eth`: 1000000000000000000 weis + * `mether` or `m`: 1000000000000000000000000 weis or 1M eth + +>Example: `eth-transfer miner_1_account 1eth` + +#### Getting the balance of an account + +Use the `eth-getbalance ` command to get the balance of the specified account. + +>Example: `eth-getbalance miner_1_account` + +### Using aliases + +The playground support aliases for account or contract addresses, in every place where an address is expected, the name given to the account or the contract can be used in place. Notice that this is an internal feature of the playground, neither accounts or contracts register this name in Ethereum. + +Some commands allow you to specify an alias, for example when an account is created or when a contract is deployed. + +Usually the `-n ` switch is the standard way to create an alias for an address. If you omit the switch the command will set an alias automatically. + +Valid chars for alias identifiers are any char except reserved chars. + +### Working with contracts + +#### Deploying contracts + +Ensure the current account is set before invoking a transaction (see `set-account` command). + +Every contract provides an specific command to deploy a new instance of the contract, the pattern used by the playground is `deploy-`, followed by the constructor parameters if they are required by the contract. Also the `-n ` switch is avaible to create an alias for the new instance address. + +To list the contracts created during the playground session use the command `list-contracts`. + +#### Invoking a transactional operation + +In order to invoke transactional operations, the pattern used is: + +`. ` + +Where `contract` is the contract address or an alias, the `operation` is the function you are calling, and `` is the list of parameters required by the operation, separated by spaces. + +String type parameters can be enclosed in double quotes, but is not mandatory, unless the string contains a reserved char. + +#### Invoking a call function + +The invoke syntax is the same used for transactional operations, the only difference is that the current account is not used, since the call functions do not need to be signed. + +#### Creating an alias for an contract address + +Use the command `register-contract
` to create an alias for an existing contract address: +* `address`: the address of the contract +* `name`: the alias name for the specified contract address + +## Algo Contracts + +The detailed specification of the following contracts can be found in the "Smart Contracts Requirements / Specifications" document. + +The goal of this document is to describe the commands available in the playground. For the behavior/business rules check the mentioned document. + +### AlgoToken + +AlgoToken is an standard ERC20 token contract. All available functions belong the ERC20 specification. + +The following commands are supported for the `AlgoToken` contract: + +#### deploy-algotoken + +`deploy-algotoken [-n ]` + +Creates a new instance of the `AlgoToken` contract. + +>Example: `deploy-algotoken -n token` + +#### algotoken-transfer + +`.algotoken-transfer ` + +Transfer tokens to the specified address: +* `to`: the destination account address +* `value`: the amount to transfer + +*These parameters follow the same rules listed in the `eth-transfer` command.* + +>Example: `token.algotoken-transfer dev_pool 100m` + +#### algotoken-balanceof + +`.algotoken-balanceof ` + +Get the balance for the specified address: +* `owner`: the account address to check + +>Example: `token.algotoken-balanceof dev_pool` + +#### algotoken-pause + +`.algotoken-pause` + +Pauses the token. All transactions will be suspended. + +>Example: `token.algotoken-pause` + +#### algotoken-unpause + +`.algotoken-unpause` + +Unpauses the token. All transactions will be resumed. + +>Example: `token.algotoken-unpause` + +### AlgoPool + +The following commands are supported for the `AlgoPool` contract: + +#### deploy-algopool + +`deploy-algopool [-n ]` + +Creates a new instance of the `AlgoPool` contract. +* `poolType`: the type of pool (uint16) +* `tokenAddress`: the address of the AlgoToken contract + +>Example: `deploy-algopool 1 token -n dev_pool` + +#### algopool-trasfertominer + +`.algopool-trasfertominer ` + +Transfer tokens from the AlgoPool balance to the AlgoMiner balance. The amount of tokens to be transfered is determined by the AlgoMiner category (see the specification document). +* `minerAddress`: the address of the AlgoMiner contract + +>Example: `dev_pool.algopool-trasfertominer miner_1` + +### AlgoMiner + +The following commands are supported for the `AlgoMiner` contract: + +#### deploy-algominer + +`deploy-algominer [-n ]` + +Creates a new instance of the `AlgoPool` contract. +* `minerType`: the type of miner (uint16) +* `category`: the category of miner (uint8: valid from 0 to 5) +* `ownerAddress`: the address of the miner's owner +* `tokenAddress`: the address of the AlgoToken contract + +>Example: `deploy-algominer 1 2 miner_1_account token -n miner_1` + +#### algominer-activateminer + +`.algominer-activateminer` + +Activates the miner. + +>Example: `miner_1.algominer-activateminer` + +#### algominer-deactivateminer + +`.algominer-deactivateminer` + +Deactivates the miner. + +>Example: `miner_1.algominer-deactivateminer` + +#### algominer-migrateminer + +`.algominer-migrateminer ` + +Transfer all tokens from this AlgoMiner another AlgoMiner. The miner must be deactivated before running this operation +* `newMinerAddress`: the address of the new AlgoMiner contract + +>Example: `miner_1.algominer-migrateminer miner_2` + +#### algominer-pausemining + +`.algominer-pausemining` + +Pauses the miner. + +>Example: `miner_1.algominer-pausemining` + +#### algominer-resumemining + +`.algominer-resumemining` + +Resumes the miner. + +>Example: `miner_1.algominer-resumemining` + +#### algominer-stopandremoveownership + +`.algominer-stopandremoveownership` + +Sets the miner to the stopped state and remove the ownership, a new owner will be assigned using the `resetMiner` operation. + +>Example: `miner_1.algominer-stopandremoveownership` + +#### algominer-resetminer + +`.algominer-resetminer ` + +Resets the miner. +* `newOwnerAddress`: the address of the new owner + +>Example: `miner_1.algominer-resetminer` + +#### algominer-startmining + +`.algominer-startmining` + +Starts the miner (used by the owner). + +>Example: `miner_1.algominer-startmining` + +#### algominer-stopmining + +`.algominer-stopmining` + +Stops the miner (used by the owner). + +>Example: `miner_1.algominer-stopmining` + +#### algominer-mine + +`.algominer-mine` + +This operation is executed by the system to request a payment from the AlgoMiner to the owner. The amount to pay is computed using the rules specified in the "Smart Contracts Requirements / Specifications" document. + +>Example: `miner_1.algominer-mine` + +#### algominer-addsystem + +`.algominer-addsystem ` + +Adds the specified account to the "System" role. +* `account`: the address of account to be added to the role. + +>Example: `miner_1.algominer-addsystem 0x862f8938949e4A1aA82Cd427d87E4fc76940e7a1` + +#### algominer-addcoreteam + +`.algominer-addcoreteam ` + +Adds the specified account to the "Core Team" role. +* `account`: the address of account to be added to the role. + +>Example: `miner_1.algominer-addcoreteam 0x862f8938949e4A1aA82Cd427d87E4fc76940e7a1` + +#### algominer-addsupervisor + +`.algominer-addsupervisor ` + +Adds the specified account to the "Supervisor" role. +* `account`: the address of account to be added to the role. + +>Example: `miner_1.algominer-addsupervisor 0x862f8938949e4A1aA82Cd427d87E4fc76940e7a1` + +### Notes + +* Reserved chars: the following chars are reserved chars and cannot be used in identifiers or strings not enclosed in quotes: "space" ":" "/" "-" "." "," +* Commands, operations and identifiers are case insensitive diff --git a/labs/algo-token-playground/build/build-osx-x64.cmd b/labs/algo-token-playground/build/build-osx-x64.cmd index 61a0aadc3..cefa1d982 100644 --- a/labs/algo-token-playground/build/build-osx-x64.cmd +++ b/labs/algo-token-playground/build/build-osx-x64.cmd @@ -1 +1 @@ -dotnet publish ../src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj -c Release -o ../../build/release/osx-x64 --self-contained -r osx-x64 +dotnet publish ../src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj -c Release -o ../../build/release/osx-x64 --self-contained -r osx-x64 --no-restore diff --git a/labs/algo-token-playground/build/build-osx-x64.sh b/labs/algo-token-playground/build/build-osx-x64.sh new file mode 100644 index 000000000..026a7234f --- /dev/null +++ b/labs/algo-token-playground/build/build-osx-x64.sh @@ -0,0 +1,2 @@ +#!/bin/bash +dotnet publish ../src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj -c Release -o ../../build/release/osx-x64 --self-contained -r osx-x64 --no-restore diff --git a/labs/algo-token-playground/build/build-win-x64.cmd b/labs/algo-token-playground/build/build-win-x64.cmd index ea75e2ad0..145d0900f 100644 --- a/labs/algo-token-playground/build/build-win-x64.cmd +++ b/labs/algo-token-playground/build/build-win-x64.cmd @@ -1 +1 @@ -dotnet publish ../src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj -c Release -o ../../build/release/win-x64 --self-contained -r win-x64 +dotnet publish ../src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj -c Release -o ../../build/release/win-x64 --self-contained -r win-x64 --no-restore diff --git a/labs/algo-token-playground/build/build-win-x64.sh b/labs/algo-token-playground/build/build-win-x64.sh new file mode 100644 index 000000000..360c2d46b --- /dev/null +++ b/labs/algo-token-playground/build/build-win-x64.sh @@ -0,0 +1,2 @@ +#!/bin/bash +dotnet publish ../src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj -c Release -o ../../build/release/win-x64 --self-contained -r win-x64 --no-restore diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj index f86ca587b..8b51d428d 100644 --- a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj @@ -3,6 +3,7 @@ Exe netcoreapp2.1 + true latest diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/ContractManagement/RegisterContractCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/ContractManagement/RegisterContractCommand.cs new file mode 100644 index 000000000..00868c667 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/ContractManagement/RegisterContractCommand.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using AdvancedAlgos.AlgoToken.Framework.Ethereum; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement +{ + public class RegisterContractCommand : ICommand + { + public string Name { get; set; } + public string Address { get; set; } + + public Task ExecuteAsync(RuntimeContext context) + { + if (context.Contracts.ContainsKey(Name)) throw new Exception($"The name '{Name}' already exists."); + if (!EthAddressParser.ValidateAddress(Address)) throw new Exception($"The address '{Address}' is invalid."); + + context.Contracts.Add(Name, new EthContractDescriptor(Name, Address)); + + Console.WriteLine($"Contract at '{Address}' registered as '{Name}'."); + + return Task.CompletedTask; + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/ContractManagementParsers.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/ContractManagementParsers.cs index 2a28224a9..aa2ee6f90 100644 --- a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/ContractManagementParsers.cs +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/ContractManagementParsers.cs @@ -10,6 +10,15 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Parsers { public static void Register() { + (from command in CommonParsers.Token("register-contract") + from address in CommonParsers.StringValue + from name in CommonParsers.StringValue + select new RegisterContractCommand + { + Name = name, + Address = address + }).Register(); + (from command in CommonParsers.Token("list-contracts") select new ListContractsCommand() ).Register(); diff --git a/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest.csproj b/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest.csproj index ccbb08c19..fe23923a5 100644 --- a/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest.csproj +++ b/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest.csproj @@ -2,6 +2,7 @@ netcoreapp2.1 + true latest diff --git a/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/AdvancedAlgos.AlgoToken.Framework.Ethereum.csproj b/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/AdvancedAlgos.AlgoToken.Framework.Ethereum.csproj index daa61afdf..d98ed2e6d 100644 --- a/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/AdvancedAlgos.AlgoToken.Framework.Ethereum.csproj +++ b/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum/AdvancedAlgos.AlgoToken.Framework.Ethereum.csproj @@ -2,6 +2,7 @@ netcoreapp2.1 + true latest From 57918b6e2b560b86a453c5c23963ec8be50d04f3 Mon Sep 17 00:00:00 2001 From: pmmax Date: Tue, 11 Dec 2018 20:34:42 -0300 Subject: [PATCH 08/17] Created AlgoFees contract, tests and playground commands. Added some fixes for AlgoPool and AlgoMiner. --- .../AlgoFees.cs | 69 + .../Algorithms/FeesDistributionAlgorithm.cs | 45 + .../SmartContracts/src/AlgoFees.sol | 138 + .../SmartContracts/src/AlgoMiner.sol | 10 + .../SmartContracts/src/AlgoPool.sol | 4 + .../SmartContracts/src/IAlgoMiner.sol | 2 + .../src/bin/AlgoFees-sol-output.json | 15505 ++++++++++++++++ .../SmartContracts/src/bin/AlgoFees.abi | 1 + .../SmartContracts/src/bin/AlgoFees.bin | 1 + .../SmartContracts/src/bin/AlgoFees.json | 203 + .../src/bin/AlgoMiner-sol-output.json | 5023 ++--- .../SmartContracts/src/bin/AlgoMiner.abi | 2 +- .../SmartContracts/src/bin/AlgoMiner.bin | 2 +- .../SmartContracts/src/bin/AlgoMiner.json | 44 +- .../src/bin/AlgoPool-sol-output.json | 2451 +-- .../SmartContracts/src/bin/AlgoPool.bin | 2 +- .../SmartContracts/src/bin/AlgoPool.json | 4 +- .../AlgoFeesTests.cs | 180 + .../FeesDistributionAlgorithmTests.cs | 56 + labs/algo-token-playground/algofees-script.md | 61 + .../{script.md => algotoken-script.md} | 0 .../AlgoFeesContract/AlgoFeesDeployCommand.cs | 25 + .../AlgoFeesContract/AlgoFeesMineCommand.cs | 23 + .../AlgoFeesRegisterMinerCommand.cs | 25 + .../AlgoFeesUnregisterMinerCommand.cs | 25 + .../Parsers/AlgoFeesParsers.cs | 45 + .../REPL.cs | 1 + 27 files changed, 20647 insertions(+), 3300 deletions(-) create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoFees.cs create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/Algorithms/FeesDistributionAlgorithm.cs create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.abi create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.bin create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.json create mode 100644 labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoFeesTests.cs create mode 100644 labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/Algorithms/FeesDistributionAlgorithmTests.cs create mode 100644 labs/algo-token-playground/algofees-script.md rename labs/algo-token-playground/{script.md => algotoken-script.md} (100%) create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesDeployCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesMineCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesRegisterMinerCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesUnregisterMinerCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoFeesParsers.cs diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoFees.cs b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoFees.cs new file mode 100644 index 000000000..a16f4cc6a --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoFees.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.Framework.Ethereum; +using Nethereum.Contracts; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution +{ + public class AlgoFees : SmartContract + { + private Function _registerMiner; + private Function _unregisterMiner; + private Function _mine; + + private Function _addSystem; + private Function _addCoreTeam; + + private Function _getMinerCount; + private Function _getMinerByIndex; + + public AlgoFees(Web3 web3, IGasPriceProvider gasPriceProvider) : base(web3, gasPriceProvider) { } + public AlgoFees(string contractAddress, Web3 web3, IGasPriceProvider gasPriceProvider) : base(contractAddress, web3, gasPriceProvider) { } + + protected override string AbiResourceName => $"SmartContracts.src.bin.{nameof(AlgoFees)}.abi"; + protected override string BinResourceName => $"SmartContracts.src.bin.{nameof(AlgoFees)}.bin"; + protected override BigInteger DeploymentGasUnits => 1200000; + + public Task DeployAsync(string tokenAddress) + => base.DeployAsync(tokenAddress); + + protected override void Initialize(Contract contractDescriptor) + { + _registerMiner = contractDescriptor.GetFunction("registerMiner"); + _unregisterMiner = contractDescriptor.GetFunction("unregisterMiner"); + _mine = contractDescriptor.GetFunction("mine"); + + _addSystem = contractDescriptor.GetFunction("addSystem"); + _addCoreTeam = contractDescriptor.GetFunction("addCoreTeam"); + + _getMinerCount = contractDescriptor.GetFunction("getMinerCount"); + _getMinerByIndex = contractDescriptor.GetFunction("getMinerByIndex"); + } + + public Task RegisterMinerAsync(string minerAddress) => + InvokeAsync(_registerMiner, 900000, minerAddress); + + public Task UnregisterMinerAsync(string minerAddress) => + InvokeAsync(_unregisterMiner, 900000, minerAddress); + + public Task MineAsync() => + InvokeAsync(_mine, 1500000); + + public Task AddSystemAsync(string account) => + InvokeAsync(_addSystem, 900000, account); + + public Task AddCoreTeamAsync(string account) => + InvokeAsync(_addCoreTeam, 900000, account); + + public Task GetMinerCountAsync() => + _getMinerCount.CallAsync(); + + public Task GetMinerByIndexAsync(BigInteger index) => + _getMinerByIndex.CallAsync(index); + } +} diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/Algorithms/FeesDistributionAlgorithm.cs b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/Algorithms/FeesDistributionAlgorithm.cs new file mode 100644 index 000000000..6fc608b5c --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/Algorithms/FeesDistributionAlgorithm.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.Algorithms +{ + public static class FeesDistributionAlgorithm + { + private static decimal[] _categoryProportions = new decimal[] + { + 1, + 10, + 20, + 30, + 40, + 50 + }; + + public static decimal[] Distribute(decimal totalAmount, long[] miners) + { + decimal totalProportion = 0; + + for (int i = 0; i < 6; i++) + { + totalProportion += _categoryProportions[i] * miners[i]; + } + + var allocationPercentage = new decimal[6]; + + for (int i = 0; i < 6; i++) + { + if (miners[i] > 0) allocationPercentage[i] = _categoryProportions[i] / totalProportion; + } + + var feePerMiner = new decimal[6]; + + for (int i = 0; i < 6; i++) + { + if (miners[i] > 0) feePerMiner[i] = Math.Round(totalAmount * allocationPercentage[i]); + } + + return feePerMiner; + } + } +} diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol new file mode 100644 index 000000000..b9b350377 --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol @@ -0,0 +1,138 @@ +pragma solidity 0.4.24; + +import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol"; +import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol"; + +import "./IAlgoMiner.sol"; +import "./AlgoSystemRole.sol"; +import "./AlgoCoreTeamRole.sol"; + +contract AlgoFees is AlgoSystemRole, AlgoCoreTeamRole { + using SafeERC20 for IERC20; + + uint256 constant CAT_0_VALUE_PROPORTION = 1; + uint256 constant CAT_1_VALUE_PROPORTION = 10; + uint256 constant CAT_2_VALUE_PROPORTION = 20; + uint256 constant CAT_3_VALUE_PROPORTION = 30; + uint256 constant CAT_4_VALUE_PROPORTION = 40; + uint256 constant CAT_5_VALUE_PROPORTION = 50; + + IERC20 private _token; + address[] private _miners; + mapping(address => uint256) private _minersByAddress; + + constructor(address tokenAddress) + AlgoSystemRole() + AlgoCoreTeamRole() + public { + _token = IERC20(tokenAddress); + _miners.push(address(0)); // Reserved as a marker for unregistered miner. + } + + function registerMiner(address minerAddress) public onlyCoreTeam { + require(_minersByAddress[minerAddress] == 0); + + IAlgoMiner algoMiner = IAlgoMiner(minerAddress); + + require(algoMiner.isAlgoMiner()); + + uint8 minerCategory = algoMiner.getCategory(); + + require(minerCategory >= 0 && minerCategory <= 5); + + _minersByAddress[minerAddress] = _miners.length; + _miners.push(minerAddress); + } + + function unregisterMiner(address minerAddress) public onlyCoreTeam { + require(_miners.length > 1); + + if(_miners.length == 2) { + + // Just remove the only registered miner... + delete _miners[1]; + _miners.length = 1; + delete _minersByAddress[minerAddress]; + + } else { + + if(_minersByAddress[minerAddress] != _miners.length) { + // Move the latest miner to the gap... + _miners[_minersByAddress[minerAddress]] = _miners[_miners.length - 1]; + } + + delete _miners[_miners.length - 1]; + _miners.length--; + delete _minersByAddress[minerAddress]; + } + } + + function mine() public onlySystem { + require(_miners.length > 1); + + uint256 currentFeesBalance = _token.balanceOf(address(this)); + + require(currentFeesBalance > 0); + + // Count how many ENABLED miners we have for each category... + uint256[6] memory miners; + + for(uint256 i = 1; i < _miners.length; i++) { + IAlgoMiner algoMiner = IAlgoMiner(_miners[i]); + + if(!algoMiner.isMining()) continue; + + uint8 minerCategory = algoMiner.getCategory(); + + if(minerCategory == 0) { + miners[0]++; + } else if(minerCategory == 1) { + miners[1]++; + } else if(minerCategory == 2) { + miners[2]++; + } else if(minerCategory == 3) { + miners[3]++; + } else if(minerCategory == 4) { + miners[4]++; + } else if(minerCategory == 5) { + miners[5]++; + } + } + + // Calculate the fee to pay per miner according to its category... + uint256 totalProportion = CAT_0_VALUE_PROPORTION * miners[0] + + CAT_1_VALUE_PROPORTION * miners[1] + + CAT_2_VALUE_PROPORTION * miners[2] + + CAT_3_VALUE_PROPORTION * miners[3] + + CAT_4_VALUE_PROPORTION * miners[4] + + CAT_5_VALUE_PROPORTION * miners[5]; + + uint256[6] memory feePerMiner; + + feePerMiner[0] = currentFeesBalance * CAT_0_VALUE_PROPORTION / totalProportion; + feePerMiner[1] = currentFeesBalance * CAT_1_VALUE_PROPORTION / totalProportion; + feePerMiner[2] = currentFeesBalance * CAT_2_VALUE_PROPORTION / totalProportion; + feePerMiner[3] = currentFeesBalance * CAT_3_VALUE_PROPORTION / totalProportion; + feePerMiner[4] = currentFeesBalance * CAT_4_VALUE_PROPORTION / totalProportion; + feePerMiner[5] = currentFeesBalance * CAT_5_VALUE_PROPORTION / totalProportion; + + // Transfer the fees to ENABLED miners... + for(i = 1; i < _miners.length; i++) { + algoMiner = IAlgoMiner(_miners[i]); + + if(!algoMiner.isMining()) continue; + + minerCategory = algoMiner.getCategory(); + + _token.safeTransfer(algoMiner.getMiner(), feePerMiner[minerCategory]); + } + } + + function getMinerCount() public view returns (uint256) { + return _miners.length - 1; + } + + function getMinerByIndex(uint256 index) public view returns (address) { + return _miners[index + 1]; + } +} \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol index 0ab2f1d47..76aa60bf1 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol @@ -136,6 +136,8 @@ contract AlgoMiner is AlgoSystemRole, AlgoCoreTeamRole, AlgoSupervisorRole, IAlg uint256 tokens = _currentYearSupply / DAYS_PER_YEAR; + require(tokens > 0); + _token.safeTransfer(_miner, tokens); } @@ -146,4 +148,12 @@ contract AlgoMiner is AlgoSystemRole, AlgoCoreTeamRole, AlgoSupervisorRole, IAlg function getCategory() public view returns (uint8) { return _category; } + + function isMining() public view returns (bool) { + return _state == MinerState.Activated && _mining; + } + + function getMiner() public view returns (address) { + return _miner; + } } diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol index 2ac21b48f..0ad4c2324 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol @@ -19,6 +19,7 @@ contract AlgoPool is AlgoCoreTeamRole { uint16 private _poolType; IERC20 private _token; + mapping(address => bool) _fundedMiners; constructor(uint16 poolType, address tokenAddress) AlgoCoreTeamRole() @@ -28,6 +29,8 @@ contract AlgoPool is AlgoCoreTeamRole { } function trasferToMiner(address minerAddress) public onlyCoreTeam { + require(!_fundedMiners[minerAddress]); + IAlgoMiner algoMiner = IAlgoMiner(minerAddress); require(algoMiner.isAlgoMiner()); @@ -54,6 +57,7 @@ contract AlgoPool is AlgoCoreTeamRole { require(value > 0); + _fundedMiners[minerAddress] = true; _token.safeTransfer(minerAddress, value); } } diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol index cc98a0c6a..109671f2b 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol @@ -3,4 +3,6 @@ pragma solidity 0.4.24; contract IAlgoMiner { function isAlgoMiner() public pure returns (bool); function getCategory() public view returns (uint8); + function isMining() public view returns (bool); + function getMiner() public view returns (address); } \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json new file mode 100644 index 000000000..384826148 --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json @@ -0,0 +1,15505 @@ +{ + "contracts": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol": { + "AlgoCoreTeamRole": { + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isCoreTeam", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "addCoreTeam(address)": "2e6b6849", + "isCoreTeam(address)": "608d3d3d", + "renounceCoreTeam()": "d43acc79" + } + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol": { + "AlgoFees": { + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "minerAddress", + "type": "address" + } + ], + "name": "registerMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isSystem", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "index", + "type": "uint256" + } + ], + "name": "getMinerByIndex", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isCoreTeam", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addSystem", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "minerAddress", + "type": "address" + } + ], + "name": "unregisterMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "mine", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getMinerCount", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceSystem", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "name": "tokenAddress", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50604051602080610edc8339810160405251610034336401000000006100a2810204565b610046336401000000006100bd810204565b60028054600160a060020a03909216600160a060020a0319928316179055600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091169055610163565b6100ba600082640100000000610c436100d582021704565b50565b6100ba600182640100000000610c436100d582021704565b600160a060020a03811615156100ea57600080fd5b6100fd828264010000000061012c810204565b1561010757600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561014357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610d6a806101726000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632e6b6849811461009a578063341ccfcb146100bd57806334cdcf26146100de5780633d19ab1314610113578063608d3d3d1461014757806374be75921461016857806381f909f31461018957806399f4b251146101aa578063bb52c137146101bf578063d43acc79146101e6578063e9d61859146101fb575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a0360043516610210565b005b3480156100c957600080fd5b506100bb600160a060020a0360043516610230565b3480156100ea57600080fd5b506100ff600160a060020a03600435166103e1565b604080519115158252519081900360200190f35b34801561011f57600080fd5b5061012b6004356103f9565b60408051600160a060020a039092168252519081900360200190f35b34801561015357600080fd5b506100ff600160a060020a0360043516610428565b34801561017457600080fd5b506100bb600160a060020a036004351661043b565b34801561019557600080fd5b506100bb600160a060020a0360043516610458565b3480156101b657600080fd5b506100bb6105e7565b3480156101cb57600080fd5b506101d4610b0a565b60408051918252519081900360200190f35b3480156101f257600080fd5b506100bb610b15565b34801561020757600080fd5b506100bb610b20565b61021933610428565b151561022457600080fd5b61022d81610b29565b50565b60008061023c33610428565b151561024757600080fd5b600160a060020a0383166000908152600460205260409020541561026a57600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b505050506040513d60208110156102d557600080fd5b505115156102e257600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032057600080fd5b505af1158015610334573d6000803e3d6000fd5b505050506040513d602081101561034a57600080fd5b50519050600060ff821610801590610366575060058160ff1611155b151561037157600080fd5b505060038054600160a060020a039092166000818152600460205260408120849055600184018355919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b60006103f3818363ffffffff610b3a16565b92915050565b600060038260010181548110151561040d57fe5b600091825260209091200154600160a060020a031692915050565b60006103f360018363ffffffff610b3a16565b610444336103e1565b151561044f57600080fd5b61022d81610b71565b61046133610428565b151561046c57600080fd5b60035460011061047b57600080fd5b600354600214156104e75760038054600190811061049557fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560016104c8600382610cdd565b50600160a060020a03811660009081526004602052604081205561022d565b600354600160a060020a038216600090815260046020526040902054146105815760038054600019810190811061051a57fe5b6000918252602080832090910154600160a060020a038481168452600490925260409092205460038054929093169291811061055257fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60038054600019810190811061059357fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560038054906105cc906000198301610cdd565b50600160a060020a0316600090815260046020526040812055565b60006105f1610d01565b6000806000806105ff610d01565b610608336103e1565b151561061357600080fd5b60035460011061062257600080fd5b600254604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561068857600080fd5b505af115801561069c573d6000803e3d6000fd5b505050506040513d60208110156106b257600080fd5b50519650600087116106c357600080fd5b600194505b6003548510156108725760038054869081106106e057fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561073e57600080fd5b505af1158015610752573d6000803e3d6000fd5b505050506040513d602081101561076857600080fd5b5051151561077557610867565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156107b357600080fd5b505af11580156107c7573d6000803e3d6000fd5b505050506040513d60208110156107dd57600080fd5b5051925060ff831615156107ff578560005b6020020180516001019052610867565b8260ff1660011415610813578560016107ef565b8260ff1660021415610827578560026107ef565b8260ff166003141561083b578560036107ef565b8260ff166004141561084f578560046107ef565b8260ff16600514156108675760a08601805160010190525b6001909401936106c8565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e90910201602890910201603290910201915081878115156108b857fe5b04815281600a88028115156108c957fe5b04602082015281601488028115156108dd57fe5b04604082015281601e88028115156108f157fe5b046060820152816028880281151561090557fe5b046080820152816032880281151561091957fe5b0460a0820152600194505b600354851015610b0157600380548690811061093c57fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561099a57600080fd5b505af11580156109ae573d6000803e3d6000fd5b505050506040513d60208110156109c457600080fd5b505115156109d157610af6565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a0f57600080fd5b505af1158015610a23573d6000803e3d6000fd5b505050506040513d6020811015610a3957600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610af691600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610a9d57600080fd5b505af1158015610ab1573d6000803e3d6000fd5b505050506040513d6020811015610ac757600080fd5b50518260ff861660068110610ad857fe5b6020020151600254600160a060020a0316919063ffffffff610b8216565b600190940193610924565b50505050505050565b600354600019015b90565b610b1e33610c21565b565b610b1e33610c32565b61022d60018263ffffffff610c4316565b6000600160a060020a0382161515610b5157600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61022d60008263ffffffff610c4316565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610be557600080fd5b505af1158015610bf9573d6000803e3d6000fd5b505050506040513d6020811015610c0f57600080fd5b50511515610c1c57600080fd5b505050565b61022d60018263ffffffff610c9116565b61022d60008263ffffffff610c9116565b600160a060020a0381161515610c5857600080fd5b610c628282610b3a565b15610c6c57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610ca657600080fd5b610cb08282610b3a565b1515610cbb57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610c1c57600083815260209020610c1c918101908301610d20565b60c0604051908101604052806006906020820280388339509192915050565b610b1291905b80821115610d3a5760008155600101610d26565b50905600a165627a7a72305820a50e84e4f20df15b74a513c238b268f416d4f45f8632af54e0cb02d0aaff72790029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP1 PUSH2 0xEDC DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE MLOAD PUSH2 0x34 CALLER PUSH5 0x100000000 PUSH2 0xA2 DUP2 MUL DIV JUMP JUMPDEST PUSH2 0x46 CALLER PUSH5 0x100000000 PUSH2 0xBD DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B ADD DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH2 0x163 JUMP JUMPDEST PUSH2 0xBA PUSH1 0x0 DUP3 PUSH5 0x100000000 PUSH2 0xC43 PUSH2 0xD5 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0xBA PUSH1 0x1 DUP3 PUSH5 0x100000000 PUSH2 0xC43 PUSH2 0xD5 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFD DUP3 DUP3 PUSH5 0x100000000 PUSH2 0x12C DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH2 0x107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x143 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xD6A DUP1 PUSH2 0x172 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x95 JUMPI PUSH4 0xFFFFFFFF PUSH1 0xE0 PUSH1 0x2 EXP PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x2E6B6849 DUP2 EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0x341CCFCB EQ PUSH2 0xBD JUMPI DUP1 PUSH4 0x34CDCF26 EQ PUSH2 0xDE JUMPI DUP1 PUSH4 0x3D19AB13 EQ PUSH2 0x113 JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x74BE7592 EQ PUSH2 0x168 JUMPI DUP1 PUSH4 0x81F909F3 EQ PUSH2 0x189 JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0xBB52C137 EQ PUSH2 0x1BF JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0xE9D61859 EQ PUSH2 0x1FB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x210 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x230 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFF PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x3E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12B PUSH1 0x4 CALLDATALOAD PUSH2 0x3F9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x153 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFF PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x428 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x43B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x458 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH2 0x5E7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D4 PUSH2 0xB0A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH2 0xB15 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH2 0xB20 JUMP JUMPDEST PUSH2 0x219 CALLER PUSH2 0x428 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x224 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x22D DUP2 PUSH2 0xB29 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x23C CALLER PUSH2 0x428 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x26A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x2E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x334 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0xFF DUP3 AND LT DUP1 ISZERO SWAP1 PUSH2 0x366 JUMPI POP PUSH1 0x5 DUP2 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0x371 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP5 SWAP1 SSTORE PUSH1 0x1 DUP5 ADD DUP4 SSTORE SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP1 SWAP2 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F3 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xB3A AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 PUSH1 0x1 ADD DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x40D JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F3 PUSH1 0x1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xB3A AND JUMP JUMPDEST PUSH2 0x444 CALLER PUSH2 0x3E1 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x44F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x22D DUP2 PUSH2 0xB71 JUMP JUMPDEST PUSH2 0x461 CALLER PUSH2 0x428 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x46C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 LT PUSH2 0x47B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x2 EQ ISZERO PUSH2 0x4E7 JUMPI PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 SWAP1 DUP2 LT PUSH2 0x495 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE PUSH1 0x1 PUSH2 0x4C8 PUSH1 0x3 DUP3 PUSH2 0xCDD JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH2 0x22D JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ PUSH2 0x581 JUMPI PUSH1 0x3 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x51A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 DUP2 AND DUP5 MSTORE PUSH1 0x4 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 SWAP3 KECCAK256 SLOAD PUSH1 0x3 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP3 SWAP2 DUP2 LT PUSH2 0x552 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x593 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD SWAP1 PUSH2 0x5CC SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0xCDD JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F1 PUSH2 0xD01 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x5FF PUSH2 0xD01 JUMP JUMPDEST PUSH2 0x608 CALLER PUSH2 0x3E1 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x613 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 LT PUSH2 0x622 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x688 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x69C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP7 POP PUSH1 0x0 DUP8 GT PUSH2 0x6C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SWAP5 POP JUMPDEST PUSH1 0x3 SLOAD DUP6 LT ISZERO PUSH2 0x872 JUMPI PUSH1 0x3 DUP1 SLOAD DUP7 SWAP1 DUP2 LT PUSH2 0x6E0 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP4 POP DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x19A74AB3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x73E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x752 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x768 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x775 JUMPI PUSH2 0x867 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7C7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP PUSH1 0xFF DUP4 AND ISZERO ISZERO PUSH2 0x7FF JUMPI DUP6 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE PUSH2 0x867 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x813 JUMPI DUP6 PUSH1 0x1 PUSH2 0x7EF JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x827 JUMPI DUP6 PUSH1 0x2 PUSH2 0x7EF JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x83B JUMPI DUP6 PUSH1 0x3 PUSH2 0x7EF JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x84F JUMPI DUP6 PUSH1 0x4 PUSH2 0x7EF JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x867 JUMPI PUSH1 0xA0 DUP7 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE JUMPDEST PUSH1 0x1 SWAP1 SWAP5 ADD SWAP4 PUSH2 0x6C8 JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x40 DUP10 ADD MLOAD PUSH1 0x20 DUP11 ADD MLOAD DUP11 MLOAD PUSH1 0xA SWAP1 SWAP2 MUL ADD PUSH1 0x14 SWAP1 SWAP2 MUL ADD PUSH1 0x1E SWAP1 SWAP2 MUL ADD PUSH1 0x28 SWAP1 SWAP2 MUL ADD PUSH1 0x32 SWAP1 SWAP2 MUL ADD SWAP2 POP DUP2 DUP8 DUP2 ISZERO ISZERO PUSH2 0x8B8 JUMPI INVALID JUMPDEST DIV DUP2 MSTORE DUP2 PUSH1 0xA DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x8C9 JUMPI INVALID JUMPDEST DIV PUSH1 0x20 DUP3 ADD MSTORE DUP2 PUSH1 0x14 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x8DD JUMPI INVALID JUMPDEST DIV PUSH1 0x40 DUP3 ADD MSTORE DUP2 PUSH1 0x1E DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x8F1 JUMPI INVALID JUMPDEST DIV PUSH1 0x60 DUP3 ADD MSTORE DUP2 PUSH1 0x28 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x905 JUMPI INVALID JUMPDEST DIV PUSH1 0x80 DUP3 ADD MSTORE DUP2 PUSH1 0x32 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x919 JUMPI INVALID JUMPDEST DIV PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x1 SWAP5 POP JUMPDEST PUSH1 0x3 SLOAD DUP6 LT ISZERO PUSH2 0xB01 JUMPI PUSH1 0x3 DUP1 SLOAD DUP7 SWAP1 DUP2 LT PUSH2 0x93C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP4 POP DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x19A74AB3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x99A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9AE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x9D1 JUMPI PUSH2 0xAF6 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA23 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x302C11CA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP5 POP PUSH2 0xAF6 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND SWAP2 PUSH4 0x302C11CA SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAB1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 PUSH1 0xFF DUP7 AND PUSH1 0x6 DUP2 LT PUSH2 0xAD8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xB82 AND JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP5 ADD SWAP4 PUSH2 0x924 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 NOT ADD JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB1E CALLER PUSH2 0xC21 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xB1E CALLER PUSH2 0xC32 JUMP JUMPDEST PUSH2 0x22D PUSH1 0x1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xC43 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xB51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x22D PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xC43 AND JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBF9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xC1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x22D PUSH1 0x1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xC91 AND JUMP JUMPDEST PUSH2 0x22D PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xC91 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xC58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC62 DUP3 DUP3 PUSH2 0xB3A JUMP JUMPDEST ISZERO PUSH2 0xC6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xCA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCB0 DUP3 DUP3 PUSH2 0xB3A JUMP JUMPDEST ISZERO ISZERO PUSH2 0xCBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0xC1C JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH2 0xC1C SWAP2 DUP2 ADD SWAP1 DUP4 ADD PUSH2 0xD20 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xB12 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xD3A JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xD26 JUMP JUMPDEST POP SWAP1 JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xa5 0xe DUP5 0xe4 CALLCODE 0xd CALL JUMPDEST PUSH21 0xA513C238B268F416D4F45F8632AF54E0CB02D0AAFF PUSH19 0x79002900000000000000000000000000000000 ", + "sourceMap": "522:4571:1:-;;;1046:235;8:9:-1;5:2;;;30:1;27;20:12;5:2;1046:235:1;;;;;;;;;;;;;364:22:2;375:10;364;;;;:22;:::i;:::-;368:24:0;381:10;368:12;;;;:24;:::i;:::-;1161:6:1;:29;;-1:-1:-1;;;;;1161:29:1;;;-1:-1:-1;;;;;;1161:29:1;;;;;;1201:7;27:10:-1;;1161:29:1;23:18:-1;;45:23;;1161:6:1;1201:24;;;;;;;;;;;;;522:4571;;800:92:2;857:27;:14;876:7;857:18;;;;;;:27;:::i;:::-;800:92;:::o;824:96:0:-;883:29;:16;904:7;883:20;;;;;;:29;:::i;244:167:4:-;-1:-1:-1;;;;;316:21:4;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:4;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:4;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:4;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:4;:11;:20;;;;;;;;;;;;;;;725:166::o;522:4571:1:-;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "686800", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "addCoreTeam(address)": "infinite", + "addSystem(address)": "infinite", + "getMinerByIndex(uint256)": "980", + "getMinerCount()": "633", + "isCoreTeam(address)": "infinite", + "isSystem(address)": "infinite", + "mine()": "infinite", + "registerMiner(address)": "infinite", + "renounceCoreTeam()": "infinite", + "renounceSystem()": "infinite", + "unregisterMiner(address)": "infinite" + } + }, + "methodIdentifiers": { + "addCoreTeam(address)": "2e6b6849", + "addSystem(address)": "74be7592", + "getMinerByIndex(uint256)": "3d19ab13", + "getMinerCount()": "bb52c137", + "isCoreTeam(address)": "608d3d3d", + "isSystem(address)": "34cdcf26", + "mine()": "99f4b251", + "registerMiner(address)": "341ccfcb", + "renounceCoreTeam()": "d43acc79", + "renounceSystem()": "e9d61859", + "unregisterMiner(address)": "81f909f3" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"registerMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSystem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getMinerByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"unregisterMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMinerCount\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol\":\"AlgoFees\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol\":{\"keccak256\":\"0x44afcd80827ee5d04f516395a4e0455c27c449ced894852a613fb605a96eb60c\",\"urls\":[\"bzzr://dd89f111ef301d812e7a5eb40ceb283652e0755cbde33b58742ceee33246bc4f\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol\":{\"keccak256\":\"0x6fffe504e6805d95ca42269cc995a3de9401a12bc037068b056c186ce8569d8d\",\"urls\":[\"bzzr://a0923a2d2b1e4992f552ce49638b19d6d8328950c1d5dc1395f0d625daf21c68\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0x94c226040dfda257ee61c1455bbb920db28b6ad0f5cba33ecc76319c003630b7\",\"urls\":[\"bzzr://bdd0568ed74054f0f91933dab7fbba6789cceb60ab2f5200d719347161e8feed\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol": { + "AlgoSystemRole": { + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isSystem", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addSystem", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceSystem", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "addSystem(address)": "74be7592", + "isSystem(address)": "34cdcf26", + "renounceSystem()": "e9d61859" + } + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol": { + "IAlgoMiner": { + "abi": [ + { + "constant": true, + "inputs": [], + "name": "isAlgoMiner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isMining", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getMiner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getCategory", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "getCategory()": "80258e47", + "getMiner()": "302c11ca", + "isAlgoMiner()": "1777fb4b", + "isMining()": "19a74ab3" + } + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { + "Roles": { + "abi": [], + "devdoc": { + "methods": {}, + "title": "Roles" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820ba9d82b11504517181f938ed511f09c0a22046ef39e2e32460a2175b508e16a80029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xba SWAP14 DUP3 0xb1 ISZERO DIV MLOAD PUSH18 0x81F938ED511F09C0A22046EF39E2E32460A2 OR JUMPDEST POP DUP15 AND 0xa8 STOP 0x29 ", + "sourceMap": "109:784:4:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "15200", + "executionCost": "116", + "totalCost": "15316" + }, + "internal": { + "add(struct Roles.Role storage pointer,address)": "infinite", + "has(struct Roles.Role storage pointer,address)": "infinite", + "remove(struct Roles.Role storage pointer,address)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"Roles\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":\"Roles\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { + "SafeMath": { + "abi": [], + "devdoc": { + "methods": {}, + "title": "SafeMath" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820da2bd0dd3588878574232c2d13f92e16f4b0e8ad94ede9adb0d087f862d4f8cf0029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xda 0x2b 0xd0 0xdd CALLDATALOAD DUP9 DUP8 DUP6 PUSH21 0x232C2D13F92E16F4B0E8AD94EDE9ADB0D087F862D4 0xf8 0xcf STOP 0x29 ", + "sourceMap": "117:1531:5:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "15200", + "executionCost": "116", + "totalCost": "15316" + }, + "internal": { + "add(uint256,uint256)": "infinite", + "div(uint256,uint256)": "infinite", + "mod(uint256,uint256)": "infinite", + "mul(uint256,uint256)": "infinite", + "sub(uint256,uint256)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"SafeMath\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol": { + "IERC20": { + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "who", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + } + ], + "devdoc": { + "methods": {}, + "title": "ERC20 interface" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol": { + "SafeERC20": { + "abi": [], + "devdoc": { + "methods": {}, + "title": "SafeERC20" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820c0f55d8db2bd761049fa5ba6b6c207a4d595b758946aba3715580373517606710029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xc0 0xf5 0x5d DUP14 0xb2 0xbd PUSH23 0x1049FA5BA6B6C207A4D595B758946ABA37155803735176 MOD PUSH18 0x2900000000000000000000000000000000 ", + "sourceMap": "353:1296:7:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "15200", + "executionCost": "116", + "totalCost": "15316" + }, + "internal": { + "safeApprove(contract IERC20,address,uint256)": "infinite", + "safeDecreaseAllowance(contract IERC20,address,uint256)": "infinite", + "safeIncreaseAllowance(contract IERC20,address,uint256)": "infinite", + "safeTransfer(contract IERC20,address,uint256)": "infinite", + "safeTransferFrom(contract IERC20,address,address,uint256)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"SafeERC20\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + } + }, + "sources": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol", + "exportedSymbols": { + "AlgoCoreTeamRole": [ + 86 + ] + }, + "id": 87, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:0" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "id": 2, + "nodeType": "ImportDirective", + "scope": 87, + "sourceUnit": 791, + "src": "28:189:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 86, + "linearizedBaseContracts": [ + 86 + ], + "name": "AlgoCoreTeamRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 5, + "libraryName": { + "contractScope": null, + "id": 3, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 790, + "src": "260:5:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$790", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "254:27:0", + "typeName": { + "contractScope": null, + "id": 4, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 703, + "src": "270:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "constant": false, + "id": 7, + "name": "_coreTeamMembers", + "nodeType": "VariableDeclaration", + "scope": 86, + "src": "289:35:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 6, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 703, + "src": "289:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 15, + "nodeType": "Block", + "src": "357:43:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1146, + "src": "381:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 12, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "381:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10, + "name": "_addCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "368:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 13, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "368:24:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14, + "nodeType": "ExpressionStatement", + "src": "368:24:0" + } + ] + }, + "documentation": null, + "id": 16, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8, + "nodeType": "ParameterList", + "parameters": [], + "src": "345:2:0" + }, + "payable": false, + "returnParameters": { + "id": 9, + "nodeType": "ParameterList", + "parameters": [], + "src": "357:0:0" + }, + "scope": 86, + "src": "333:67:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 26, + "nodeType": "Block", + "src": "432:62:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 20, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1146, + "src": "462:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 21, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "462:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 19, + "name": "isCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "451:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 22, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "451:22:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 18, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "443:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 23, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "443:31:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 24, + "nodeType": "ExpressionStatement", + "src": "443:31:0" + }, + { + "id": 25, + "nodeType": "PlaceholderStatement", + "src": "485:1:0" + } + ] + }, + "documentation": null, + "id": 27, + "name": "onlyCoreTeam", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 17, + "nodeType": "ParameterList", + "parameters": [], + "src": "429:2:0" + }, + "src": "408:86:0", + "visibility": "internal" + }, + { + "body": { + "id": 39, + "nodeType": "Block", + "src": "566:55:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 36, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 29, + "src": "605:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 34, + "name": "_coreTeamMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "584:16:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 35, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 789, + "src": "584:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$703_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 37, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "584:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 33, + "id": 38, + "nodeType": "Return", + "src": "577:36:0" + } + ] + }, + "documentation": null, + "id": 40, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 30, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 29, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 40, + "src": "522:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 28, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "522:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "521:17:0" + }, + "payable": false, + "returnParameters": { + "id": 33, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 32, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 40, + "src": "560:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 31, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "560:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "559:6:0" + }, + "scope": 86, + "src": "502:119:0", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 51, + "nodeType": "Block", + "src": "687:40:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 48, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "711:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 47, + "name": "_addCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "698:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 49, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "698:21:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 50, + "nodeType": "ExpressionStatement", + "src": "698:21:0" + } + ] + }, + "documentation": null, + "id": 52, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 45, + "modifierName": { + "argumentTypes": null, + "id": 44, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "674:12:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "674:12:0" + } + ], + "name": "addCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 42, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 52, + "src": "650:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 41, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "650:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "649:17:0" + }, + "payable": false, + "returnParameters": { + "id": 46, + "nodeType": "ParameterList", + "parameters": [], + "src": "687:0:0" + }, + "scope": 86, + "src": "629:98:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 60, + "nodeType": "Block", + "src": "770:46:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 56, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1146, + "src": "797:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 57, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "797:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 55, + "name": "_removeCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "781:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 58, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "781:27:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 59, + "nodeType": "ExpressionStatement", + "src": "781:27:0" + } + ] + }, + "documentation": null, + "id": 61, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "renounceCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 53, + "nodeType": "ParameterList", + "parameters": [], + "src": "760:2:0" + }, + "payable": false, + "returnParameters": { + "id": 54, + "nodeType": "ParameterList", + "parameters": [], + "src": "770:0:0" + }, + "scope": 86, + "src": "735:81:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 72, + "nodeType": "Block", + "src": "872:48:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 69, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 63, + "src": "904:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 66, + "name": "_coreTeamMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "883:16:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 68, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 735, + "src": "883:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$703_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 70, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "883:29:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 71, + "nodeType": "ExpressionStatement", + "src": "883:29:0" + } + ] + }, + "documentation": null, + "id": 73, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_addCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 64, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 63, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 73, + "src": "846:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 62, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "846:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "845:17:0" + }, + "payable": false, + "returnParameters": { + "id": 65, + "nodeType": "ParameterList", + "parameters": [], + "src": "872:0:0" + }, + "scope": 86, + "src": "824:96:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 84, + "nodeType": "Block", + "src": "979:51:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 81, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 75, + "src": "1014:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 78, + "name": "_coreTeamMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "990:16:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 80, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 766, + "src": "990:23:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$703_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 82, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "990:32:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 83, + "nodeType": "ExpressionStatement", + "src": "990:32:0" + } + ] + }, + "documentation": null, + "id": 85, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_removeCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 76, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 75, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 85, + "src": "953:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 74, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "953:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "952:17:0" + }, + "payable": false, + "returnParameters": { + "id": 77, + "nodeType": "ParameterList", + "parameters": [], + "src": "979:0:0" + }, + "scope": 86, + "src": "928:102:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 87, + "src": "221:812:0" + } + ], + "src": "0:1035:0" + }, + "id": 0 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol", + "exportedSymbols": { + "AlgoFees": [ + 586 + ] + }, + "id": 587, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 88, + "literals": [ + "solidity", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:23:1" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "id": 89, + "nodeType": "ImportDirective", + "scope": 587, + "sourceUnit": 988, + "src": "27:195:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "id": 90, + "nodeType": "ImportDirective", + "scope": 587, + "sourceUnit": 1132, + "src": "224:198:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", + "file": "./IAlgoMiner.sol", + "id": 91, + "nodeType": "ImportDirective", + "scope": 587, + "sourceUnit": 697, + "src": "426:26:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol", + "file": "./AlgoSystemRole.sol", + "id": 92, + "nodeType": "ImportDirective", + "scope": 587, + "sourceUnit": 674, + "src": "454:30:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol", + "file": "./AlgoCoreTeamRole.sol", + "id": 93, + "nodeType": "ImportDirective", + "scope": 587, + "sourceUnit": 87, + "src": "486:32:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 94, + "name": "AlgoSystemRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 673, + "src": "543:14:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AlgoSystemRole_$673", + "typeString": "contract AlgoSystemRole" + } + }, + "id": 95, + "nodeType": "InheritanceSpecifier", + "src": "543:14:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 96, + "name": "AlgoCoreTeamRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 86, + "src": "559:16:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AlgoCoreTeamRole_$86", + "typeString": "contract AlgoCoreTeamRole" + } + }, + "id": 97, + "nodeType": "InheritanceSpecifier", + "src": "559:16:1" + } + ], + "contractDependencies": [ + 86, + 673 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 586, + "linearizedBaseContracts": [ + 586, + 86, + 673 + ], + "name": "AlgoFees", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 100, + "libraryName": { + "contractScope": null, + "id": 98, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1131, + "src": "589:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$1131", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "583:27:1", + "typeName": { + "contractScope": null, + "id": 99, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 987, + "src": "603:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + } + }, + { + "constant": true, + "id": 103, + "name": "CAT_0_VALUE_PROPORTION", + "nodeType": "VariableDeclaration", + "scope": 586, + "src": "618:43:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 101, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "618:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "31", + "id": 102, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "660:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 106, + "name": "CAT_1_VALUE_PROPORTION", + "nodeType": "VariableDeclaration", + "scope": 586, + "src": "668:44:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 104, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "668:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3130", + "id": 105, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "710:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 109, + "name": "CAT_2_VALUE_PROPORTION", + "nodeType": "VariableDeclaration", + "scope": 586, + "src": "719:44:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 107, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "719:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3230", + "id": 108, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "761:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_20_by_1", + "typeString": "int_const 20" + }, + "value": "20" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 112, + "name": "CAT_3_VALUE_PROPORTION", + "nodeType": "VariableDeclaration", + "scope": 586, + "src": "770:44:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 110, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "770:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3330", + "id": 111, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "812:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_30_by_1", + "typeString": "int_const 30" + }, + "value": "30" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 115, + "name": "CAT_4_VALUE_PROPORTION", + "nodeType": "VariableDeclaration", + "scope": 586, + "src": "821:44:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 113, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "821:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3430", + "id": 114, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "863:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_40_by_1", + "typeString": "int_const 40" + }, + "value": "40" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 118, + "name": "CAT_5_VALUE_PROPORTION", + "nodeType": "VariableDeclaration", + "scope": 586, + "src": "872:44:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 116, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "872:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3530", + "id": 117, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "914:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_50_by_1", + "typeString": "int_const 50" + }, + "value": "50" + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 120, + "name": "_token", + "nodeType": "VariableDeclaration", + "scope": 586, + "src": "925:21:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 119, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 987, + "src": "925:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 123, + "name": "_miners", + "nodeType": "VariableDeclaration", + "scope": 586, + "src": "953:25:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 121, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "953:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 122, + "length": null, + "nodeType": "ArrayTypeName", + "src": "953:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 127, + "name": "_minersByAddress", + "nodeType": "VariableDeclaration", + "scope": 586, + "src": "985:52:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 126, + "keyType": { + "id": 124, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "993:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "985:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 125, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1004:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 150, + "nodeType": "Block", + "src": "1150:131:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 136, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "1161:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 138, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "1177:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 137, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 987, + "src": "1170:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$987_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1170:20:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "src": "1161:29:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "id": 141, + "nodeType": "ExpressionStatement", + "src": "1161:29:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 146, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1222:1:1", + "subdenomination": null, + "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": 145, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1214:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 147, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1214:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 142, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "1201:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1201:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) returns (uint256)" + } + }, + "id": 148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1201:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 149, + "nodeType": "ExpressionStatement", + "src": "1201:24:1" + } + ] + }, + "documentation": null, + "id": 151, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 132, + "modifierName": { + "argumentTypes": null, + "id": 131, + "name": "AlgoSystemRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 673, + "src": "1089:14:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_AlgoSystemRole_$673_$", + "typeString": "type(contract AlgoSystemRole)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1089:16:1" + }, + { + "arguments": [], + "id": 134, + "modifierName": { + "argumentTypes": null, + "id": 133, + "name": "AlgoCoreTeamRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 86, + "src": "1115:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_AlgoCoreTeamRole_$86_$", + "typeString": "type(contract AlgoCoreTeamRole)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1115:18:1" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 130, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 129, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 151, + "src": "1058:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 128, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1058:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1057:22:1" + }, + "payable": false, + "returnParameters": { + "id": 135, + "nodeType": "ParameterList", + "parameters": [], + "src": "1150:0:1" + }, + "scope": 586, + "src": "1046:235:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 207, + "nodeType": "Block", + "src": "1354:401:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 159, + "name": "_minersByAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 127, + "src": "1373:16:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 161, + "indexExpression": { + "argumentTypes": null, + "id": 160, + "name": "minerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 153, + "src": "1390:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1373:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 162, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1407:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1373:35:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 158, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "1365:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1365:44:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 165, + "nodeType": "ExpressionStatement", + "src": "1365:44:1" + }, + { + "assignments": [ + 167 + ], + "declarations": [ + { + "constant": false, + "id": 167, + "name": "algoMiner", + "nodeType": "VariableDeclaration", + "scope": 208, + "src": "1422:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + }, + "typeName": { + "contractScope": null, + "id": 166, + "name": "IAlgoMiner", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 696, + "src": "1422:10:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 171, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 169, + "name": "minerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 153, + "src": "1456:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 168, + "name": "IAlgoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "1445:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$696_$", + "typeString": "type(contract IAlgoMiner)" + } + }, + "id": 170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1445:24:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1422:47:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 173, + "name": "algoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "1498:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + } + }, + "id": 174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isAlgoMiner", + "nodeType": "MemberAccess", + "referencedDeclaration": 680, + "src": "1498:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_pure$__$returns$_t_bool_$", + "typeString": "function () pure external returns (bool)" + } + }, + "id": 175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1498:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 172, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "1490:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1490:32:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 177, + "nodeType": "ExpressionStatement", + "src": "1490:32:1" + }, + { + "assignments": [ + 179 + ], + "declarations": [ + { + "constant": false, + "id": 179, + "name": "minerCategory", + "nodeType": "VariableDeclaration", + "scope": 208, + "src": "1543:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 178, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1543:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 183, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 180, + "name": "algoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "1565:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + } + }, + "id": 181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getCategory", + "nodeType": "MemberAccess", + "referencedDeclaration": 685, + "src": "1565:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", + "typeString": "function () view external returns (uint8)" + } + }, + "id": 182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1565:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1543:45:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 185, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 179, + "src": "1609:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 186, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1626:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1609:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 188, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 179, + "src": "1631:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "35", + "id": 189, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1648:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "src": "1631:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1609:40:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 184, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "1601:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1601:49:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 193, + "nodeType": "ExpressionStatement", + "src": "1601:49:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 194, + "name": "_minersByAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 127, + "src": "1663:16:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 196, + "indexExpression": { + "argumentTypes": null, + "id": 195, + "name": "minerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 153, + "src": "1680:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1663:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 197, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "1696:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 198, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1696:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1663:47:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 200, + "nodeType": "ExpressionStatement", + "src": "1663:47:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 204, + "name": "minerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 153, + "src": "1734:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 201, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "1721:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1721:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) returns (uint256)" + } + }, + "id": 205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1721:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 206, + "nodeType": "ExpressionStatement", + "src": "1721:26:1" + } + ] + }, + "documentation": null, + "id": 208, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 156, + "modifierName": { + "argumentTypes": null, + "id": 155, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "1341:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1341:12:1" + } + ], + "name": "registerMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 154, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 153, + "name": "minerAddress", + "nodeType": "VariableDeclaration", + "scope": 208, + "src": "1312:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 152, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1312:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1311:22:1" + }, + "payable": false, + "returnParameters": { + "id": 157, + "nodeType": "ParameterList", + "parameters": [], + "src": "1354:0:1" + }, + "scope": 586, + "src": "1289:466:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 284, + "nodeType": "Block", + "src": "1830:682:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 216, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "1849:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 217, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1849:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 218, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1866:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1849:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 215, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "1841:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1841:27:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 221, + "nodeType": "ExpressionStatement", + "src": "1841:27:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 222, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "1884:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 223, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1884:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 224, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1902:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "1884:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 282, + "nodeType": "Block", + "src": "2117:388:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 243, + "name": "_minersByAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 127, + "src": "2149:16:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 245, + "indexExpression": { + "argumentTypes": null, + "id": 244, + "name": "minerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 210, + "src": "2166:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2149:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 246, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2183:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 247, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2183:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2149:48:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 263, + "nodeType": "IfStatement", + "src": "2146:214:1", + "trueBody": { + "id": 262, + "nodeType": "Block", + "src": "2199:161:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 249, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2275:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 253, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 250, + "name": "_minersByAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 127, + "src": "2283:16:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 252, + "indexExpression": { + "argumentTypes": null, + "id": 251, + "name": "minerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 210, + "src": "2300:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2283:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2275:39:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 254, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2317:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 259, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 255, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2325:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 256, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2325:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 257, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2342:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2325:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2317:27:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2275:69:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 261, + "nodeType": "ExpressionStatement", + "src": "2275:69:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "2376:34:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 264, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2383:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 269, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 265, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2391:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 266, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2391:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 267, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2408:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2391:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2383:27:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 271, + "nodeType": "ExpressionStatement", + "src": "2376:34:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "2425:16:1", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 272, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2425:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 274, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2425:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 276, + "nodeType": "ExpressionStatement", + "src": "2425:16:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "2456:37:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 277, + "name": "_minersByAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 127, + "src": "2463:16:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 279, + "indexExpression": { + "argumentTypes": null, + "id": 278, + "name": "minerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 210, + "src": "2480:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2463:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 281, + "nodeType": "ExpressionStatement", + "src": "2456:37:1" + } + ] + }, + "id": 283, + "nodeType": "IfStatement", + "src": "1881:624:1", + "trueBody": { + "id": 242, + "nodeType": "Block", + "src": "1905:206:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "1987:17:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 226, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "1994:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 228, + "indexExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 227, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2002:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1994:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 230, + "nodeType": "ExpressionStatement", + "src": "1987:17:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 231, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2019:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 233, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2019:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 234, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2036:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2019:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 236, + "nodeType": "ExpressionStatement", + "src": "2019:18:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "2052:37:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 237, + "name": "_minersByAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 127, + "src": "2059:16:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 239, + "indexExpression": { + "argumentTypes": null, + "id": 238, + "name": "minerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 210, + "src": "2076:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2059:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 241, + "nodeType": "ExpressionStatement", + "src": "2052:37:1" + } + ] + } + } + ] + }, + "documentation": null, + "id": 285, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 213, + "modifierName": { + "argumentTypes": null, + "id": 212, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "1817:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1817:12:1" + } + ], + "name": "unregisterMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 211, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 210, + "name": "minerAddress", + "nodeType": "VariableDeclaration", + "scope": 285, + "src": "1788:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 209, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1788:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1787:22:1" + }, + "payable": false, + "returnParameters": { + "id": 214, + "nodeType": "ParameterList", + "parameters": [], + "src": "1830:0:1" + }, + "scope": 586, + "src": "1763:749:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 559, + "nodeType": "Block", + "src": "2554:2307:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 291, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2573:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 292, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2573:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 293, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2590:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2573:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 290, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "2565:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2565:27:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 296, + "nodeType": "ExpressionStatement", + "src": "2565:27:1" + }, + { + "assignments": [ + 298 + ], + "declarations": [ + { + "constant": false, + "id": 298, + "name": "currentFeesBalance", + "nodeType": "VariableDeclaration", + "scope": 560, + "src": "2605:26:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 297, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2605:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 305, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 302, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1173, + "src": "2659:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AlgoFees_$586", + "typeString": "contract AlgoFees" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_AlgoFees_$586", + "typeString": "contract AlgoFees" + } + ], + "id": 301, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2651:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2651:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 299, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "2634:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "id": 300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 932, + "src": "2634:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2634:31:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2605:60:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 307, + "name": "currentFeesBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 298, + "src": "2680:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 308, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2701:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2680:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 306, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "2672:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2672:31:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 311, + "nodeType": "ExpressionStatement", + "src": "2672:31:1" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 316, + "name": "miners", + "nodeType": "VariableDeclaration", + "scope": 560, + "src": "2787:24:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6]" + }, + "typeName": { + "baseType": { + "id": 314, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2787:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 315, + "length": { + "argumentTypes": null, + "hexValue": "36", + "id": 313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2795:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + }, + "value": "6" + }, + "nodeType": "ArrayTypeName", + "src": "2787:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr", + "typeString": "uint256[6]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 317, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "2787:24:1" + }, + { + "body": { + "id": 409, + "nodeType": "Block", + "src": "2868:657:1", + "statements": [ + { + "assignments": [ + 330 + ], + "declarations": [ + { + "constant": false, + "id": 330, + "name": "algoMiner", + "nodeType": "VariableDeclaration", + "scope": 560, + "src": "2883:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + }, + "typeName": { + "contractScope": null, + "id": 329, + "name": "IAlgoMiner", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 696, + "src": "2883:10:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 336, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 332, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2917:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 334, + "indexExpression": { + "argumentTypes": null, + "id": 333, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 319, + "src": "2925:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2917:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 331, + "name": "IAlgoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "2906:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$696_$", + "typeString": "type(contract IAlgoMiner)" + } + }, + "id": 335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2906:22:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2883:45:1" + }, + { + "condition": { + "argumentTypes": null, + "id": 340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2948:21:1", + "subExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 337, + "name": "algoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "2949:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + } + }, + "id": 338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isMining", + "nodeType": "MemberAccess", + "referencedDeclaration": 690, + "src": "2949:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$", + "typeString": "function () view external returns (bool)" + } + }, + "id": 339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2949:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 342, + "nodeType": "IfStatement", + "src": "2945:34:1", + "trueBody": { + "id": 341, + "nodeType": "Continue", + "src": "2971:8:1" + } + }, + { + "assignments": [ + 344 + ], + "declarations": [ + { + "constant": false, + "id": 344, + "name": "minerCategory", + "nodeType": "VariableDeclaration", + "scope": 560, + "src": "2996:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 343, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2996:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 348, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 345, + "name": "algoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "3018:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + } + }, + "id": 346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getCategory", + "nodeType": "MemberAccess", + "referencedDeclaration": 685, + "src": "3018:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", + "typeString": "function () view external returns (uint8)" + } + }, + "id": 347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3018:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2996:45:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 349, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 344, + "src": "3061:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 350, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3078:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3061:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 360, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 358, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 344, + "src": "3136:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 359, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3153:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3136:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 369, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 367, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 344, + "src": "3211:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 368, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3228:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "3211:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 376, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 344, + "src": "3286:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "33", + "id": 377, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3303:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "src": "3286:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 385, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 344, + "src": "3361:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "34", + "id": 386, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3378:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "3361:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 394, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 344, + "src": "3436:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "35", + "id": 395, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3453:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "src": "3436:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 403, + "nodeType": "IfStatement", + "src": "3433:69:1", + "trueBody": { + "id": 402, + "nodeType": "Block", + "src": "3456:46:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3475:11:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 397, + "name": "miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 316, + "src": "3475:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 399, + "indexExpression": { + "argumentTypes": null, + "hexValue": "35", + "id": 398, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3482:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3475:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 401, + "nodeType": "ExpressionStatement", + "src": "3475:11:1" + } + ] + } + }, + "id": 404, + "nodeType": "IfStatement", + "src": "3358:144:1", + "trueBody": { + "id": 393, + "nodeType": "Block", + "src": "3381:46:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 391, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3400:11:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 388, + "name": "miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 316, + "src": "3400:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 390, + "indexExpression": { + "argumentTypes": null, + "hexValue": "34", + "id": 389, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3407:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3400:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 392, + "nodeType": "ExpressionStatement", + "src": "3400:11:1" + } + ] + } + }, + "id": 405, + "nodeType": "IfStatement", + "src": "3283:219:1", + "trueBody": { + "id": 384, + "nodeType": "Block", + "src": "3306:46:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3325:11:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 379, + "name": "miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 316, + "src": "3325:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 381, + "indexExpression": { + "argumentTypes": null, + "hexValue": "33", + "id": 380, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3332:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3325:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 383, + "nodeType": "ExpressionStatement", + "src": "3325:11:1" + } + ] + } + }, + "id": 406, + "nodeType": "IfStatement", + "src": "3208:294:1", + "trueBody": { + "id": 375, + "nodeType": "Block", + "src": "3231:46:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3250:11:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 370, + "name": "miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 316, + "src": "3250:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 372, + "indexExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 371, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3257:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3250:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 374, + "nodeType": "ExpressionStatement", + "src": "3250:11:1" + } + ] + } + }, + "id": 407, + "nodeType": "IfStatement", + "src": "3133:369:1", + "trueBody": { + "id": 366, + "nodeType": "Block", + "src": "3156:46:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3175:11:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 361, + "name": "miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 316, + "src": "3175:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 363, + "indexExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 362, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3182:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3175:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 365, + "nodeType": "ExpressionStatement", + "src": "3175:11:1" + } + ] + } + }, + "id": 408, + "nodeType": "IfStatement", + "src": "3058:444:1", + "trueBody": { + "id": 357, + "nodeType": "Block", + "src": "3081:46:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3100:11:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 352, + "name": "miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 316, + "src": "3100:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 354, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3107:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3100:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 356, + "nodeType": "ExpressionStatement", + "src": "3100:11:1" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 322, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 319, + "src": "2843:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 323, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2847:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 324, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2847:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2843:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 410, + "initializationExpression": { + "assignments": [ + 319 + ], + "declarations": [ + { + "constant": false, + "id": 319, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 560, + "src": "2828:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 318, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2828:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 321, + "initialValue": { + "argumentTypes": null, + "hexValue": "31", + "id": 320, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2840:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2828:13:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2863:3:1", + "subExpression": { + "argumentTypes": null, + "id": 326, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 319, + "src": "2863:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 328, + "nodeType": "ExpressionStatement", + "src": "2863:3:1" + }, + "nodeType": "ForStatement", + "src": "2824:701:1" + }, + { + "assignments": [ + 412 + ], + "declarations": [ + { + "constant": false, + "id": 412, + "name": "totalProportion", + "nodeType": "VariableDeclaration", + "scope": 560, + "src": "3613:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 411, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3613:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 448, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 413, + "name": "CAT_0_VALUE_PROPORTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "3639:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 414, + "name": "miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 316, + "src": "3664:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 416, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 415, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3671:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3664:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3639:34:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 418, + "name": "CAT_1_VALUE_PROPORTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 106, + "src": "3689:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 419, + "name": "miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 316, + "src": "3714:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 421, + "indexExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 420, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3721:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3714:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3689:34:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3639:84:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 424, + "name": "CAT_2_VALUE_PROPORTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 109, + "src": "3739:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 425, + "name": "miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 316, + "src": "3764:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 427, + "indexExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 426, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3771:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3764:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3739:34:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3639:134:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 430, + "name": "CAT_3_VALUE_PROPORTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 112, + "src": "3789:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 431, + "name": "miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 316, + "src": "3814:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 433, + "indexExpression": { + "argumentTypes": null, + "hexValue": "33", + "id": 432, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3821:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3814:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3789:34:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3639:184:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 436, + "name": "CAT_4_VALUE_PROPORTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 115, + "src": "3839:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 437, + "name": "miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 316, + "src": "3864:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 439, + "indexExpression": { + "argumentTypes": null, + "hexValue": "34", + "id": 438, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3871:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3864:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3839:34:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3639:234:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 442, + "name": "CAT_5_VALUE_PROPORTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118, + "src": "3889:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 443, + "name": "miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 316, + "src": "3914:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 445, + "indexExpression": { + "argumentTypes": null, + "hexValue": "35", + "id": 444, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3921:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3914:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3889:34:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3639:284:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3613:310:1" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 453, + "name": "feePerMiner", + "nodeType": "VariableDeclaration", + "scope": 560, + "src": "3944:29:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6]" + }, + "typeName": { + "baseType": { + "id": 451, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3944:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 452, + "length": { + "argumentTypes": null, + "hexValue": "36", + "id": 450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3952:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + }, + "value": "6" + }, + "nodeType": "ArrayTypeName", + "src": "3944:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr", + "typeString": "uint256[6]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 454, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "3944:29:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 455, + "name": "feePerMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 453, + "src": "3986:11:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 457, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 456, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3998:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3986:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 458, + "name": "currentFeesBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 298, + "src": "4003:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 459, + "name": "CAT_0_VALUE_PROPORTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "4024:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4003:43:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 461, + "name": "totalProportion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "4049:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4003:61:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3986:78:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 464, + "nodeType": "ExpressionStatement", + "src": "3986:78:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 465, + "name": "feePerMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 453, + "src": "4075:11:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 467, + "indexExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 466, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4087:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4075:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 468, + "name": "currentFeesBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 298, + "src": "4092:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 469, + "name": "CAT_1_VALUE_PROPORTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 106, + "src": "4113:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4092:43:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 471, + "name": "totalProportion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "4138:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4092:61:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4075:78:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 474, + "nodeType": "ExpressionStatement", + "src": "4075:78:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 475, + "name": "feePerMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 453, + "src": "4164:11:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 477, + "indexExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 476, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4176:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4164:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 478, + "name": "currentFeesBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 298, + "src": "4181:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 479, + "name": "CAT_2_VALUE_PROPORTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 109, + "src": "4202:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4181:43:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 481, + "name": "totalProportion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "4227:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4181:61:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4164:78:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 484, + "nodeType": "ExpressionStatement", + "src": "4164:78:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 485, + "name": "feePerMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 453, + "src": "4253:11:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 487, + "indexExpression": { + "argumentTypes": null, + "hexValue": "33", + "id": 486, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4265:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4253:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 488, + "name": "currentFeesBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 298, + "src": "4270:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 489, + "name": "CAT_3_VALUE_PROPORTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 112, + "src": "4291:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4270:43:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 491, + "name": "totalProportion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "4316:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4270:61:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4253:78:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 494, + "nodeType": "ExpressionStatement", + "src": "4253:78:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 495, + "name": "feePerMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 453, + "src": "4342:11:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 497, + "indexExpression": { + "argumentTypes": null, + "hexValue": "34", + "id": 496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4354:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4342:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 498, + "name": "currentFeesBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 298, + "src": "4359:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 499, + "name": "CAT_4_VALUE_PROPORTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 115, + "src": "4380:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4359:43:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 501, + "name": "totalProportion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "4405:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4359:61:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4342:78:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 504, + "nodeType": "ExpressionStatement", + "src": "4342:78:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 505, + "name": "feePerMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 453, + "src": "4431:11:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 507, + "indexExpression": { + "argumentTypes": null, + "hexValue": "35", + "id": 506, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4443:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4431:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 508, + "name": "currentFeesBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 298, + "src": "4448:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 509, + "name": "CAT_5_VALUE_PROPORTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118, + "src": "4469:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4448:43:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 511, + "name": "totalProportion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "4494:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4448:61:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4431:78:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 514, + "nodeType": "ExpressionStatement", + "src": "4431:78:1" + }, + { + "body": { + "id": 557, + "nodeType": "Block", + "src": "4609:245:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 526, + "name": "algoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "4624:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 528, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "4647:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 530, + "indexExpression": { + "argumentTypes": null, + "id": 529, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 319, + "src": "4655:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4647:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 527, + "name": "IAlgoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "4636:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$696_$", + "typeString": "type(contract IAlgoMiner)" + } + }, + "id": 531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4636:22:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + } + }, + "src": "4624:34:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + } + }, + "id": 533, + "nodeType": "ExpressionStatement", + "src": "4624:34:1" + }, + { + "condition": { + "argumentTypes": null, + "id": 537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4678:21:1", + "subExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 534, + "name": "algoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "4679:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + } + }, + "id": 535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isMining", + "nodeType": "MemberAccess", + "referencedDeclaration": 690, + "src": "4679:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$", + "typeString": "function () view external returns (bool)" + } + }, + "id": 536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4679:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 539, + "nodeType": "IfStatement", + "src": "4675:34:1", + "trueBody": { + "id": 538, + "nodeType": "Continue", + "src": "4701:8:1" + } + }, + { + "expression": { + "argumentTypes": null, + "id": 544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 540, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 344, + "src": "4726:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 541, + "name": "algoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "4742:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + } + }, + "id": 542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getCategory", + "nodeType": "MemberAccess", + "referencedDeclaration": 685, + "src": "4742:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", + "typeString": "function () view external returns (uint8)" + } + }, + "id": 543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4742:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "4726:39:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 545, + "nodeType": "ExpressionStatement", + "src": "4726:39:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 549, + "name": "algoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "4793:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeString": "contract IAlgoMiner" + } + }, + "id": 550, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getMiner", + "nodeType": "MemberAccess", + "referencedDeclaration": 695, + "src": "4793:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 551, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4793:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 552, + "name": "feePerMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 453, + "src": "4815:11:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 554, + "indexExpression": { + "argumentTypes": null, + "id": 553, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 344, + "src": "4827:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4815:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 546, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "4773:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "id": 548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1012, + "src": "4773:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$987_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$987_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4773:69:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 556, + "nodeType": "ExpressionStatement", + "src": "4773:69:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 522, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 519, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 319, + "src": "4584:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 520, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "4588:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 521, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4588:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4584:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 558, + "initializationExpression": { + "expression": { + "argumentTypes": null, + "id": 517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 515, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 319, + "src": "4577:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 516, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4581:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4577:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 518, + "nodeType": "ExpressionStatement", + "src": "4577:5:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4604:3:1", + "subExpression": { + "argumentTypes": null, + "id": 523, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 319, + "src": "4604:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 525, + "nodeType": "ExpressionStatement", + "src": "4604:3:1" + }, + "nodeType": "ForStatement", + "src": "4573:281:1" + } + ] + }, + "documentation": null, + "id": 560, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 288, + "modifierName": { + "argumentTypes": null, + "id": 287, + "name": "onlySystem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 614, + "src": "2543:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2543:10:1" + } + ], + "name": "mine", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 286, + "nodeType": "ParameterList", + "parameters": [], + "src": "2533:2:1" + }, + "payable": false, + "returnParameters": { + "id": 289, + "nodeType": "ParameterList", + "parameters": [], + "src": "2554:0:1" + }, + "scope": 586, + "src": "2520:2341:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 570, + "nodeType": "Block", + "src": "4924:44:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 565, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "4942:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 566, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4942:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 567, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4959:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4942:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 564, + "id": 569, + "nodeType": "Return", + "src": "4935:25:1" + } + ] + }, + "documentation": null, + "id": 571, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getMinerCount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 561, + "nodeType": "ParameterList", + "parameters": [], + "src": "4891:2:1" + }, + "payable": false, + "returnParameters": { + "id": 564, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 563, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 571, + "src": "4915:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 562, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4915:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4914:9:1" + }, + "scope": 586, + "src": "4869:99:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 584, + "nodeType": "Block", + "src": "5046:44:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 578, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "5064:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 582, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 579, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 573, + "src": "5072:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 580, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5080:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "5072:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5064:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 577, + "id": 583, + "nodeType": "Return", + "src": "5057:25:1" + } + ] + }, + "documentation": null, + "id": 585, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getMinerByIndex", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 574, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 573, + "name": "index", + "nodeType": "VariableDeclaration", + "scope": 585, + "src": "5001:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 572, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5001:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5000:15:1" + }, + "payable": false, + "returnParameters": { + "id": 577, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 576, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 585, + "src": "5037:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 575, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5037:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5036:9:1" + }, + "scope": 586, + "src": "4976:114:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 587, + "src": "522:4571:1" + } + ], + "src": "0:5093:1" + }, + "id": 1 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol", + "exportedSymbols": { + "AlgoSystemRole": [ + 673 + ] + }, + "id": 674, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 588, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:2" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "id": 589, + "nodeType": "ImportDirective", + "scope": 674, + "sourceUnit": 791, + "src": "28:189:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 673, + "linearizedBaseContracts": [ + 673 + ], + "name": "AlgoSystemRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 592, + "libraryName": { + "contractScope": null, + "id": 590, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 790, + "src": "258:5:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$790", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "252:27:2", + "typeName": { + "contractScope": null, + "id": 591, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 703, + "src": "268:10:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "constant": false, + "id": 594, + "name": "_systemMembers", + "nodeType": "VariableDeclaration", + "scope": 673, + "src": "287:33:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 593, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 703, + "src": "287:10:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 602, + "nodeType": "Block", + "src": "353:41:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 598, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1146, + "src": "375:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "375:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 597, + "name": "_addSystem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 660, + "src": "364:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "364:22:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 601, + "nodeType": "ExpressionStatement", + "src": "364:22:2" + } + ] + }, + "documentation": null, + "id": 603, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 595, + "nodeType": "ParameterList", + "parameters": [], + "src": "341:2:2" + }, + "payable": false, + "returnParameters": { + "id": 596, + "nodeType": "ParameterList", + "parameters": [], + "src": "353:0:2" + }, + "scope": 673, + "src": "329:65:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 613, + "nodeType": "Block", + "src": "424:60:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 607, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1146, + "src": "452:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "452:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 606, + "name": "isSystem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 627, + "src": "443:8:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "443:20:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 605, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "435:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "435:29:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 611, + "nodeType": "ExpressionStatement", + "src": "435:29:2" + }, + { + "id": 612, + "nodeType": "PlaceholderStatement", + "src": "475:1:2" + } + ] + }, + "documentation": null, + "id": 614, + "name": "onlySystem", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 604, + "nodeType": "ParameterList", + "parameters": [], + "src": "421:2:2" + }, + "src": "402:82:2", + "visibility": "internal" + }, + { + "body": { + "id": 626, + "nodeType": "Block", + "src": "554:53:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 623, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 616, + "src": "591:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 621, + "name": "_systemMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 594, + "src": "572:14:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 622, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 789, + "src": "572:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$703_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "572:27:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 620, + "id": 625, + "nodeType": "Return", + "src": "565:34:2" + } + ] + }, + "documentation": null, + "id": 627, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isSystem", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 617, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 616, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 627, + "src": "510:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 615, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "510:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "509:17:2" + }, + "payable": false, + "returnParameters": { + "id": 620, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 619, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 627, + "src": "548:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 618, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "548:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "547:6:2" + }, + "scope": 673, + "src": "492:115:2", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 638, + "nodeType": "Block", + "src": "669:38:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 635, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 629, + "src": "691:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 634, + "name": "_addSystem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 660, + "src": "680:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "680:19:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 637, + "nodeType": "ExpressionStatement", + "src": "680:19:2" + } + ] + }, + "documentation": null, + "id": 639, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 632, + "modifierName": { + "argumentTypes": null, + "id": 631, + "name": "onlySystem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 614, + "src": "658:10:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "658:10:2" + } + ], + "name": "addSystem", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 630, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 629, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 639, + "src": "634:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 628, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "634:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "633:17:2" + }, + "payable": false, + "returnParameters": { + "id": 633, + "nodeType": "ParameterList", + "parameters": [], + "src": "669:0:2" + }, + "scope": 673, + "src": "615:92:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 647, + "nodeType": "Block", + "src": "748:44:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 643, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1146, + "src": "773:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "773:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 642, + "name": "_removeSystem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 672, + "src": "759:13:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "759:25:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 646, + "nodeType": "ExpressionStatement", + "src": "759:25:2" + } + ] + }, + "documentation": null, + "id": 648, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "renounceSystem", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 640, + "nodeType": "ParameterList", + "parameters": [], + "src": "738:2:2" + }, + "payable": false, + "returnParameters": { + "id": 641, + "nodeType": "ParameterList", + "parameters": [], + "src": "748:0:2" + }, + "scope": 673, + "src": "715:77:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 659, + "nodeType": "Block", + "src": "846:46:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 656, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 650, + "src": "876:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 653, + "name": "_systemMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 594, + "src": "857:14:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 655, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 735, + "src": "857:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$703_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "857:27:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 658, + "nodeType": "ExpressionStatement", + "src": "857:27:2" + } + ] + }, + "documentation": null, + "id": 660, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_addSystem", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 651, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 650, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 660, + "src": "820:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 649, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "820:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "819:17:2" + }, + "payable": false, + "returnParameters": { + "id": 652, + "nodeType": "ParameterList", + "parameters": [], + "src": "846:0:2" + }, + "scope": 673, + "src": "800:92:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 671, + "nodeType": "Block", + "src": "949:49:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 668, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 662, + "src": "982:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 665, + "name": "_systemMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 594, + "src": "960:14:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 667, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 766, + "src": "960:21:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$703_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "960:30:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 670, + "nodeType": "ExpressionStatement", + "src": "960:30:2" + } + ] + }, + "documentation": null, + "id": 672, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_removeSystem", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 663, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 662, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 672, + "src": "923:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 661, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "923:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "922:17:2" + }, + "payable": false, + "returnParameters": { + "id": 664, + "nodeType": "ParameterList", + "parameters": [], + "src": "949:0:2" + }, + "scope": 673, + "src": "900:98:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 674, + "src": "221:780:2" + } + ], + "src": "0:1003:2" + }, + "id": 2 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", + "exportedSymbols": { + "IAlgoMiner": [ + 696 + ] + }, + "id": 697, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 675, + "literals": [ + "solidity", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:23:3" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": false, + "id": 696, + "linearizedBaseContracts": [ + 696 + ], + "name": "IAlgoMiner", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 680, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isAlgoMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 676, + "nodeType": "ParameterList", + "parameters": [], + "src": "74:2:3" + }, + "payable": false, + "returnParameters": { + "id": 679, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 678, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 680, + "src": "98:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 677, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "98:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "97:6:3" + }, + "scope": 696, + "src": "54:50:3", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 685, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getCategory", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 681, + "nodeType": "ParameterList", + "parameters": [], + "src": "130:2:3" + }, + "payable": false, + "returnParameters": { + "id": 684, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 683, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 685, + "src": "154:5:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 682, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "154:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "153:7:3" + }, + "scope": 696, + "src": "110:51:3", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 690, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isMining", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 686, + "nodeType": "ParameterList", + "parameters": [], + "src": "184:2:3" + }, + "payable": false, + "returnParameters": { + "id": 689, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 688, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 690, + "src": "208:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 687, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "208:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "207:6:3" + }, + "scope": 696, + "src": "167:47:3", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 695, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 691, + "nodeType": "ParameterList", + "parameters": [], + "src": "237:2:3" + }, + "payable": false, + "returnParameters": { + "id": 694, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 693, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 695, + "src": "261:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 692, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "261:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "260:9:3" + }, + "scope": 696, + "src": "220:50:3", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 697, + "src": "27:246:3" + } + ], + "src": "0:273:3" + }, + "id": 3 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "exportedSymbols": { + "Roles": [ + 790 + ] + }, + "id": 791, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 698, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:4" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", + "fullyImplemented": true, + "id": 790, + "linearizedBaseContracts": [ + 790 + ], + "name": "Roles", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "Roles.Role", + "id": 703, + "members": [ + { + "constant": false, + "id": 702, + "name": "bearer", + "nodeType": "VariableDeclaration", + "scope": 703, + "src": "145:32:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 701, + "keyType": { + "id": 699, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "154:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "145:25:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 700, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "165:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Role", + "nodeType": "StructDefinition", + "scope": 790, + "src": "127:55:4", + "visibility": "public" + }, + { + "body": { + "id": 734, + "nodeType": "Block", + "src": "302:109:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 711, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 707, + "src": "316:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 713, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "335:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 712, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "327:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 714, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "327:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "316:21:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 710, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "308:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "308:30:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 717, + "nodeType": "ExpressionStatement", + "src": "308:30:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 723, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "352:19:4", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 720, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 705, + "src": "357:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 721, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 707, + "src": "363:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 719, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 789, + "src": "353:3:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "353:18:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 718, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "344:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "344:28:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 725, + "nodeType": "ExpressionStatement", + "src": "344:28:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 732, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 726, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 705, + "src": "379:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 729, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 702, + "src": "379:11:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 730, + "indexExpression": { + "argumentTypes": null, + "id": 728, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 707, + "src": "391:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "379:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 731, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "402:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "379:27:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 733, + "nodeType": "ExpressionStatement", + "src": "379:27:4" + } + ] + }, + "documentation": "@dev give an account access to this role", + "id": 735, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 708, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 705, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 735, + "src": "257:17:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 704, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 703, + "src": "257:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 707, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 735, + "src": "276:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 706, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "276:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "256:36:4" + }, + "payable": false, + "returnParameters": { + "id": 709, + "nodeType": "ParameterList", + "parameters": [], + "src": "302:0:4" + }, + "scope": 790, + "src": "244:167:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 765, + "nodeType": "Block", + "src": "538:109:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 743, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 739, + "src": "552:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 745, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "571:1:4", + "subdenomination": null, + "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": 744, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "563:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 746, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "563:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "552:21:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 742, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "544:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "544:30:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 749, + "nodeType": "ExpressionStatement", + "src": "544:30:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 752, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 737, + "src": "592:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 753, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 739, + "src": "598:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 751, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 789, + "src": "588:3:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "588:18:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 750, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "580:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "580:27:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 756, + "nodeType": "ExpressionStatement", + "src": "580:27:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 757, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 737, + "src": "614:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 760, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 702, + "src": "614:11:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 761, + "indexExpression": { + "argumentTypes": null, + "id": 759, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 739, + "src": "626:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "614:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 762, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "637:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "614:28:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 764, + "nodeType": "ExpressionStatement", + "src": "614:28:4" + } + ] + }, + "documentation": "@dev remove an account's access to this role", + "id": 766, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "remove", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 740, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 737, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 766, + "src": "493:17:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 736, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 703, + "src": "493:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 739, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 766, + "src": "512:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 738, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "512:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "492:36:4" + }, + "payable": false, + "returnParameters": { + "id": 741, + "nodeType": "ParameterList", + "parameters": [], + "src": "538:0:4" + }, + "scope": 790, + "src": "477:170:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 788, + "nodeType": "Block", + "src": "817:74:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 776, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 770, + "src": "831:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 778, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "850:1:4", + "subdenomination": null, + "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": 777, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "842:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 779, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "842:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "831:21:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 775, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "823:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "823:30:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 782, + "nodeType": "ExpressionStatement", + "src": "823:30:4" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 783, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 768, + "src": "866:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 784, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 702, + "src": "866:11:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 786, + "indexExpression": { + "argumentTypes": null, + "id": 785, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 770, + "src": "878:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "866:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 774, + "id": 787, + "nodeType": "Return", + "src": "859:27:4" + } + ] + }, + "documentation": "@dev check if an account has this role\n@return bool", + "id": 789, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "has", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 771, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 768, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 789, + "src": "738:17:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 767, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 703, + "src": "738:4:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 770, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 789, + "src": "757:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 769, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "757:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "737:36:4" + }, + "payable": false, + "returnParameters": { + "id": 774, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 773, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 789, + "src": "809:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 772, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "809:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "808:6:4" + }, + "scope": 790, + "src": "725:166:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 791, + "src": "109:784:4" + } + ], + "src": "0:894:4" + }, + "id": 4 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", + "exportedSymbols": { + "SafeMath": [ + 918 + ] + }, + "id": 919, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 792, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:5" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", + "fullyImplemented": true, + "id": 918, + "linearizedBaseContracts": [ + 918 + ], + "name": "SafeMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 824, + "nodeType": "Block", + "src": "271:314:5", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 801, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 794, + "src": "486:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 802, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "491:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "486:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 807, + "nodeType": "IfStatement", + "src": "482:35:5", + "trueBody": { + "id": 806, + "nodeType": "Block", + "src": "494:23:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 804, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "509:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 800, + "id": 805, + "nodeType": "Return", + "src": "502:8:5" + } + ] + } + }, + { + "assignments": [ + 809 + ], + "declarations": [ + { + "constant": false, + "id": 809, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 825, + "src": "523:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 808, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "523:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 813, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 810, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 794, + "src": "535:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 811, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 796, + "src": "539:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "535:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "523:17:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 815, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "554:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 816, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 794, + "src": "558:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "554:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 818, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 796, + "src": "563:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "554:10:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 814, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "546:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 820, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "546:19:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 821, + "nodeType": "ExpressionStatement", + "src": "546:19:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 822, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "579:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 800, + "id": 823, + "nodeType": "Return", + "src": "572:8:5" + } + ] + }, + "documentation": "@dev Multiplies two numbers, reverts on overflow.", + "id": 825, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "mul", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 797, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 794, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 825, + "src": "217:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 793, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "217:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 796, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 825, + "src": "228:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 795, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "228:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "216:22:5" + }, + "payable": false, + "returnParameters": { + "id": 800, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 799, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 825, + "src": "262:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 798, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "262:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "261:9:5" + }, + "scope": 918, + "src": "204:381:5", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 848, + "nodeType": "Block", + "src": "762:203:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 837, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 835, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 829, + "src": "776:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 836, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "780:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "776:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 834, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "768:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "768:14:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 839, + "nodeType": "ExpressionStatement", + "src": "768:14:5" + }, + { + "assignments": [ + 841 + ], + "declarations": [ + { + "constant": false, + "id": 841, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 849, + "src": "846:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 840, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "846:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 845, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 844, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 842, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 827, + "src": "858:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 843, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 829, + "src": "862:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "858:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "846:17:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 846, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 841, + "src": "959:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 833, + "id": 847, + "nodeType": "Return", + "src": "952:8:5" + } + ] + }, + "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", + "id": 849, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 830, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 827, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 849, + "src": "708:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 826, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "708:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 829, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 849, + "src": "719:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 828, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "719:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "707:22:5" + }, + "payable": false, + "returnParameters": { + "id": 833, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 832, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 849, + "src": "753:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 831, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "753:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "752:9:5" + }, + "scope": 918, + "src": "695:270:5", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 872, + "nodeType": "Block", + "src": "1145:64:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 859, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 853, + "src": "1159:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 860, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 851, + "src": "1164:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1159:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 858, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "1151:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1151:15:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 863, + "nodeType": "ExpressionStatement", + "src": "1151:15:5" + }, + { + "assignments": [ + 865 + ], + "declarations": [ + { + "constant": false, + "id": 865, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 873, + "src": "1172:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 864, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1172:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 869, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 866, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 851, + "src": "1184:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 867, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 853, + "src": "1188:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1184:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1172:17:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 870, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 865, + "src": "1203:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 857, + "id": 871, + "nodeType": "Return", + "src": "1196:8:5" + } + ] + }, + "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", + "id": 873, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 854, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 851, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 873, + "src": "1091:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 850, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1091:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 853, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 873, + "src": "1102:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 852, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1102:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1090:22:5" + }, + "payable": false, + "returnParameters": { + "id": 857, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 856, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 873, + "src": "1136:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 855, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1136:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1135:9:5" + }, + "scope": 918, + "src": "1078:131:5", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 896, + "nodeType": "Block", + "src": "1339:64:5", + "statements": [ + { + "assignments": [ + 883 + ], + "declarations": [ + { + "constant": false, + "id": 883, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 897, + "src": "1345:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 882, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1345:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 887, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 884, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 875, + "src": "1357:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 885, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 877, + "src": "1361:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1357:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1345:17:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 889, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 883, + "src": "1376:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 890, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 875, + "src": "1381:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1376:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 888, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "1368:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1368:15:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 893, + "nodeType": "ExpressionStatement", + "src": "1368:15:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 894, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 883, + "src": "1397:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 881, + "id": 895, + "nodeType": "Return", + "src": "1390:8:5" + } + ] + }, + "documentation": "@dev Adds two numbers, reverts on overflow.", + "id": 897, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 878, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 875, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 897, + "src": "1285:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 874, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1285:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 877, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 897, + "src": "1296:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 876, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1296:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1284:22:5" + }, + "payable": false, + "returnParameters": { + "id": 881, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 880, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 897, + "src": "1330:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 879, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1330:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1329:9:5" + }, + "scope": 918, + "src": "1272:131:5", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 916, + "nodeType": "Block", + "src": "1602:44:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 907, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 901, + "src": "1616:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 908, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1621:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1616:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 906, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "1608:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 910, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1608:15:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 911, + "nodeType": "ExpressionStatement", + "src": "1608:15:5" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 912, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 899, + "src": "1636:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "id": 913, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 901, + "src": "1640:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1636:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 905, + "id": 915, + "nodeType": "Return", + "src": "1629:12:5" + } + ] + }, + "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", + "id": 917, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "mod", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 902, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 899, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 917, + "src": "1548:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 898, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1548:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 901, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 917, + "src": "1559:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 900, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1559:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1547:22:5" + }, + "payable": false, + "returnParameters": { + "id": 905, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 904, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 917, + "src": "1593:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 903, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1593:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1592:9:5" + }, + "scope": 918, + "src": "1535:111:5", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 919, + "src": "117:1531:5" + } + ], + "src": "0:1649:5" + }, + "id": 5 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "exportedSymbols": { + "IERC20": [ + 987 + ] + }, + "id": 988, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 920, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:6" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", + "fullyImplemented": false, + "id": 987, + "linearizedBaseContracts": [ + 987 + ], + "name": "IERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 925, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 921, + "nodeType": "ParameterList", + "parameters": [], + "src": "156:2:6" + }, + "payable": false, + "returnParameters": { + "id": 924, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 923, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 925, + "src": "182:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 922, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "182:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "181:9:6" + }, + "scope": 987, + "src": "136:55:6", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 932, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 928, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 927, + "name": "who", + "nodeType": "VariableDeclaration", + "scope": 932, + "src": "214:11:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 926, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "214:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "213:13:6" + }, + "payable": false, + "returnParameters": { + "id": 931, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 930, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 932, + "src": "250:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 929, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "250:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "249:9:6" + }, + "scope": 987, + "src": "195:64:6", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 941, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 937, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 934, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 941, + "src": "282:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 933, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "282:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 936, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 941, + "src": "297:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 935, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "297:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "281:32:6" + }, + "payable": false, + "returnParameters": { + "id": 940, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 939, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 941, + "src": "341:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 938, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "341:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "340:9:6" + }, + "scope": 987, + "src": "263:87:6", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 950, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 946, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 943, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 950, + "src": "372:10:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 942, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "372:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 945, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 950, + "src": "384:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 944, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "384:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "371:27:6" + }, + "payable": false, + "returnParameters": { + "id": 949, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 948, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 950, + "src": "417:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 947, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "417:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "416:6:6" + }, + "scope": 987, + "src": "354:69:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 959, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 955, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 952, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 959, + "src": "444:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 951, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "444:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 954, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 959, + "src": "461:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 953, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "461:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "443:32:6" + }, + "payable": false, + "returnParameters": { + "id": 958, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 957, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 959, + "src": "498:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 956, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "498:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "497:6:6" + }, + "scope": 987, + "src": "427:77:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 970, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 966, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 961, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 970, + "src": "530:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 960, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "530:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 963, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 970, + "src": "544:10:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 962, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "544:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 965, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 970, + "src": "556:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 964, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "556:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "529:41:6" + }, + "payable": false, + "returnParameters": { + "id": 969, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 968, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 970, + "src": "593:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 967, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "593:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "592:6:6" + }, + "scope": 987, + "src": "508:91:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": null, + "id": 978, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 977, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 972, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 978, + "src": "623:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 971, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "623:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 974, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 978, + "src": "649:18:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 973, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "649:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 976, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 978, + "src": "673:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 975, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "673:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "617:73:6" + }, + "src": "603:88:6" + }, + { + "anonymous": false, + "documentation": null, + "id": 986, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 985, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 980, + "indexed": true, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 986, + "src": "715:21:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 979, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "715:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 982, + "indexed": true, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 986, + "src": "742:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 981, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "742:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 984, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 986, + "src": "771:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 983, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "771:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "709:79:6" + }, + "src": "695:94:6" + } + ], + "scope": 988, + "src": "115:676:6" + } + ], + "src": "0:792:6" + }, + "id": 6 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "exportedSymbols": { + "SafeERC20": [ + 1131 + ] + }, + "id": 1132, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 989, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:7" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 990, + "nodeType": "ImportDirective", + "scope": 1132, + "sourceUnit": 988, + "src": "26:22:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 991, + "nodeType": "ImportDirective", + "scope": 1132, + "sourceUnit": 919, + "src": "49:33:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.", + "fullyImplemented": true, + "id": 1131, + "linearizedBaseContracts": [ + 1131 + ], + "name": "SafeERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 994, + "libraryName": { + "contractScope": null, + "id": 992, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 918, + "src": "382:8:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$918", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "376:27:7", + "typeName": { + "id": 993, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "395:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "body": { + "id": 1011, + "nodeType": "Block", + "src": "501:45:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1006, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 998, + "src": "530:2:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1007, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1000, + "src": "534:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1004, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 996, + "src": "515:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "id": 1005, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 950, + "src": "515:14:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "515:25:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1003, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "507:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1009, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "507:34:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1010, + "nodeType": "ExpressionStatement", + "src": "507:34:7" + } + ] + }, + "documentation": null, + "id": 1012, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeTransfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1001, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 996, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1012, + "src": "434:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 995, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 987, + "src": "434:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 998, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1012, + "src": "452:10:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 997, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "452:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1000, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1012, + "src": "468:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 999, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "468:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "428:57:7" + }, + "payable": false, + "returnParameters": { + "id": 1002, + "nodeType": "ParameterList", + "parameters": [], + "src": "501:0:7" + }, + "scope": 1131, + "src": "407:139:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1032, + "nodeType": "Block", + "src": "666:55:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1026, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1016, + "src": "699:4:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1027, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1018, + "src": "705:2:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1028, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1020, + "src": "709:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1024, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1014, + "src": "680:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "id": 1025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 970, + "src": "680:18:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 1029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "680:35:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1023, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "672:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "672:44:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1031, + "nodeType": "ExpressionStatement", + "src": "672:44:7" + } + ] + }, + "documentation": null, + "id": 1033, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1021, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1014, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1033, + "src": "581:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 1013, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 987, + "src": "581:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1016, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 1033, + "src": "599:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1015, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "599:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1018, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1033, + "src": "617:10:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1017, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "617:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1020, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1033, + "src": "633:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1019, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "633:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "575:75:7" + }, + "payable": false, + "returnParameters": { + "id": 1022, + "nodeType": "ParameterList", + "parameters": [], + "src": "666:0:7" + }, + "scope": 1131, + "src": "550:171:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1067, + "nodeType": "Block", + "src": "823:330:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1056, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1043, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "1045:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1044, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1054:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1045:10:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1046, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1044:12:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1054, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1049, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1146, + "src": "1077:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1050, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1077:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1051, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1037, + "src": "1089:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1047, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1035, + "src": "1061:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "id": 1048, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 941, + "src": "1061:15:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 1052, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1061:36:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1053, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1101:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1061:41:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1055, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1060:43:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1044:59:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1042, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "1036:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1036:68:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1058, + "nodeType": "ExpressionStatement", + "src": "1036:68:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1062, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1037, + "src": "1132:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1063, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "1141:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1060, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1035, + "src": "1118:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "id": 1061, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 959, + "src": "1118:13:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1118:29:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1059, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "1110:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1065, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1110:38:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1066, + "nodeType": "ExpressionStatement", + "src": "1110:38:7" + } + ] + }, + "documentation": null, + "id": 1068, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeApprove", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1040, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1035, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1068, + "src": "751:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 1034, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 987, + "src": "751:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1037, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1068, + "src": "769:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1036, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "769:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1039, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1068, + "src": "790:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1038, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "790:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "745:62:7" + }, + "payable": false, + "returnParameters": { + "id": 1041, + "nodeType": "ParameterList", + "parameters": [], + "src": "823:0:7" + }, + "scope": 1131, + "src": "725:428:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1098, + "nodeType": "Block", + "src": "1265:135:7", + "statements": [ + { + "assignments": [ + 1078 + ], + "declarations": [ + { + "constant": false, + "id": 1078, + "name": "newAllowance", + "nodeType": "VariableDeclaration", + "scope": 1099, + "src": "1271:20:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1077, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1271:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1089, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1087, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1074, + "src": "1338:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1082, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1167, + "src": "1318:4:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$1131", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$1131", + "typeString": "library SafeERC20" + } + ], + "id": 1081, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1310:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1310:13:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1084, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1072, + "src": "1325:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1079, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1070, + "src": "1294:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "id": 1080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 941, + "src": "1294:15:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 1085, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1294:39:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1086, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 897, + "src": "1294:43:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1294:50:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1271:73:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1093, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1072, + "src": "1372:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1094, + "name": "newAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1078, + "src": "1381:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1091, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1070, + "src": "1358:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "id": 1092, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 959, + "src": "1358:13:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1358:36:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1090, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "1350:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1096, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1350:45:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1097, + "nodeType": "ExpressionStatement", + "src": "1350:45:7" + } + ] + }, + "documentation": null, + "id": 1099, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeIncreaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1075, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1070, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1099, + "src": "1193:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 1069, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 987, + "src": "1193:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1072, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1099, + "src": "1211:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1071, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1211:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1074, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1099, + "src": "1232:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1073, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1232:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1187:62:7" + }, + "payable": false, + "returnParameters": { + "id": 1076, + "nodeType": "ParameterList", + "parameters": [], + "src": "1265:0:7" + }, + "scope": 1131, + "src": "1157:243:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1129, + "nodeType": "Block", + "src": "1512:135:7", + "statements": [ + { + "assignments": [ + 1109 + ], + "declarations": [ + { + "constant": false, + "id": 1109, + "name": "newAllowance", + "nodeType": "VariableDeclaration", + "scope": 1130, + "src": "1518:20:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1108, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1518:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1120, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1118, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1105, + "src": "1585:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1113, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1167, + "src": "1565:4:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$1131", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$1131", + "typeString": "library SafeERC20" + } + ], + "id": 1112, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1557:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1557:13:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1115, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1103, + "src": "1572:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1110, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1101, + "src": "1541:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "id": 1111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 941, + "src": "1541:15:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 1116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1541:39:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 873, + "src": "1541:43:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1541:50:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1518:73:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1124, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1103, + "src": "1619:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1125, + "name": "newAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1109, + "src": "1628:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1122, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1101, + "src": "1605:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "id": 1123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 959, + "src": "1605:13:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1605:36:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1121, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1149, + 1150 + ], + "referencedDeclaration": 1149, + "src": "1597:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1597:45:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1128, + "nodeType": "ExpressionStatement", + "src": "1597:45:7" + } + ] + }, + "documentation": null, + "id": 1130, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeDecreaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1106, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1101, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1130, + "src": "1440:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 1100, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 987, + "src": "1440:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$987", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1103, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1130, + "src": "1458:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1102, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1458:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1105, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1130, + "src": "1479:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1104, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1479:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1434:62:7" + }, + "payable": false, + "returnParameters": { + "id": 1107, + "nodeType": "ParameterList", + "parameters": [], + "src": "1512:0:7" + }, + "scope": 1131, + "src": "1404:243:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 1132, + "src": "353:1296:7" + } + ], + "src": "0:1650:7" + }, + "id": 7 + } + } +} \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.abi b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.abi new file mode 100644 index 000000000..f5543d549 --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.abi @@ -0,0 +1 @@ +[{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"minerAddress","type":"address"}],"name":"registerMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSystem","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getMinerByIndex","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"minerAddress","type":"address"}],"name":"unregisterMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"mine","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMinerCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.bin b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.bin new file mode 100644 index 000000000..97fcd2fb9 --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.bin @@ -0,0 +1 @@ +608060405234801561001057600080fd5b50604051602080610edc8339810160405251610034336401000000006100a2810204565b610046336401000000006100bd810204565b60028054600160a060020a03909216600160a060020a0319928316179055600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091169055610163565b6100ba600082640100000000610c436100d582021704565b50565b6100ba600182640100000000610c436100d582021704565b600160a060020a03811615156100ea57600080fd5b6100fd828264010000000061012c810204565b1561010757600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561014357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610d6a806101726000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632e6b6849811461009a578063341ccfcb146100bd57806334cdcf26146100de5780633d19ab1314610113578063608d3d3d1461014757806374be75921461016857806381f909f31461018957806399f4b251146101aa578063bb52c137146101bf578063d43acc79146101e6578063e9d61859146101fb575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a0360043516610210565b005b3480156100c957600080fd5b506100bb600160a060020a0360043516610230565b3480156100ea57600080fd5b506100ff600160a060020a03600435166103e1565b604080519115158252519081900360200190f35b34801561011f57600080fd5b5061012b6004356103f9565b60408051600160a060020a039092168252519081900360200190f35b34801561015357600080fd5b506100ff600160a060020a0360043516610428565b34801561017457600080fd5b506100bb600160a060020a036004351661043b565b34801561019557600080fd5b506100bb600160a060020a0360043516610458565b3480156101b657600080fd5b506100bb6105e7565b3480156101cb57600080fd5b506101d4610b0a565b60408051918252519081900360200190f35b3480156101f257600080fd5b506100bb610b15565b34801561020757600080fd5b506100bb610b20565b61021933610428565b151561022457600080fd5b61022d81610b29565b50565b60008061023c33610428565b151561024757600080fd5b600160a060020a0383166000908152600460205260409020541561026a57600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b505050506040513d60208110156102d557600080fd5b505115156102e257600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032057600080fd5b505af1158015610334573d6000803e3d6000fd5b505050506040513d602081101561034a57600080fd5b50519050600060ff821610801590610366575060058160ff1611155b151561037157600080fd5b505060038054600160a060020a039092166000818152600460205260408120849055600184018355919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b60006103f3818363ffffffff610b3a16565b92915050565b600060038260010181548110151561040d57fe5b600091825260209091200154600160a060020a031692915050565b60006103f360018363ffffffff610b3a16565b610444336103e1565b151561044f57600080fd5b61022d81610b71565b61046133610428565b151561046c57600080fd5b60035460011061047b57600080fd5b600354600214156104e75760038054600190811061049557fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560016104c8600382610cdd565b50600160a060020a03811660009081526004602052604081205561022d565b600354600160a060020a038216600090815260046020526040902054146105815760038054600019810190811061051a57fe5b6000918252602080832090910154600160a060020a038481168452600490925260409092205460038054929093169291811061055257fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60038054600019810190811061059357fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560038054906105cc906000198301610cdd565b50600160a060020a0316600090815260046020526040812055565b60006105f1610d01565b6000806000806105ff610d01565b610608336103e1565b151561061357600080fd5b60035460011061062257600080fd5b600254604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561068857600080fd5b505af115801561069c573d6000803e3d6000fd5b505050506040513d60208110156106b257600080fd5b50519650600087116106c357600080fd5b600194505b6003548510156108725760038054869081106106e057fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561073e57600080fd5b505af1158015610752573d6000803e3d6000fd5b505050506040513d602081101561076857600080fd5b5051151561077557610867565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156107b357600080fd5b505af11580156107c7573d6000803e3d6000fd5b505050506040513d60208110156107dd57600080fd5b5051925060ff831615156107ff578560005b6020020180516001019052610867565b8260ff1660011415610813578560016107ef565b8260ff1660021415610827578560026107ef565b8260ff166003141561083b578560036107ef565b8260ff166004141561084f578560046107ef565b8260ff16600514156108675760a08601805160010190525b6001909401936106c8565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e90910201602890910201603290910201915081878115156108b857fe5b04815281600a88028115156108c957fe5b04602082015281601488028115156108dd57fe5b04604082015281601e88028115156108f157fe5b046060820152816028880281151561090557fe5b046080820152816032880281151561091957fe5b0460a0820152600194505b600354851015610b0157600380548690811061093c57fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561099a57600080fd5b505af11580156109ae573d6000803e3d6000fd5b505050506040513d60208110156109c457600080fd5b505115156109d157610af6565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a0f57600080fd5b505af1158015610a23573d6000803e3d6000fd5b505050506040513d6020811015610a3957600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610af691600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610a9d57600080fd5b505af1158015610ab1573d6000803e3d6000fd5b505050506040513d6020811015610ac757600080fd5b50518260ff861660068110610ad857fe5b6020020151600254600160a060020a0316919063ffffffff610b8216565b600190940193610924565b50505050505050565b600354600019015b90565b610b1e33610c21565b565b610b1e33610c32565b61022d60018263ffffffff610c4316565b6000600160a060020a0382161515610b5157600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61022d60008263ffffffff610c4316565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610be557600080fd5b505af1158015610bf9573d6000803e3d6000fd5b505050506040513d6020811015610c0f57600080fd5b50511515610c1c57600080fd5b505050565b61022d60018263ffffffff610c9116565b61022d60008263ffffffff610c9116565b600160a060020a0381161515610c5857600080fd5b610c628282610b3a565b15610c6c57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610ca657600080fd5b610cb08282610b3a565b1515610cbb57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610c1c57600083815260209020610c1c918101908301610d20565b60c0604051908101604052806006906020820280388339509192915050565b610b1291905b80821115610d3a5760008155600101610d26565b50905600a165627a7a72305820a50e84e4f20df15b74a513c238b268f416d4f45f8632af54e0cb02d0aaff72790029 \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.json new file mode 100644 index 000000000..3ede830af --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.json @@ -0,0 +1,203 @@ +{ + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "minerAddress", + "type": "address" + } + ], + "name": "registerMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isSystem", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "index", + "type": "uint256" + } + ], + "name": "getMinerByIndex", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isCoreTeam", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addSystem", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "minerAddress", + "type": "address" + } + ], + "name": "unregisterMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "mine", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getMinerCount", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceCoreTeam", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceSystem", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "name": "tokenAddress", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "bytecode": "608060405234801561001057600080fd5b50604051602080610edc8339810160405251610034336401000000006100a2810204565b610046336401000000006100bd810204565b60028054600160a060020a03909216600160a060020a0319928316179055600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091169055610163565b6100ba600082640100000000610c436100d582021704565b50565b6100ba600182640100000000610c436100d582021704565b600160a060020a03811615156100ea57600080fd5b6100fd828264010000000061012c810204565b1561010757600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561014357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610d6a806101726000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632e6b6849811461009a578063341ccfcb146100bd57806334cdcf26146100de5780633d19ab1314610113578063608d3d3d1461014757806374be75921461016857806381f909f31461018957806399f4b251146101aa578063bb52c137146101bf578063d43acc79146101e6578063e9d61859146101fb575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a0360043516610210565b005b3480156100c957600080fd5b506100bb600160a060020a0360043516610230565b3480156100ea57600080fd5b506100ff600160a060020a03600435166103e1565b604080519115158252519081900360200190f35b34801561011f57600080fd5b5061012b6004356103f9565b60408051600160a060020a039092168252519081900360200190f35b34801561015357600080fd5b506100ff600160a060020a0360043516610428565b34801561017457600080fd5b506100bb600160a060020a036004351661043b565b34801561019557600080fd5b506100bb600160a060020a0360043516610458565b3480156101b657600080fd5b506100bb6105e7565b3480156101cb57600080fd5b506101d4610b0a565b60408051918252519081900360200190f35b3480156101f257600080fd5b506100bb610b15565b34801561020757600080fd5b506100bb610b20565b61021933610428565b151561022457600080fd5b61022d81610b29565b50565b60008061023c33610428565b151561024757600080fd5b600160a060020a0383166000908152600460205260409020541561026a57600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b505050506040513d60208110156102d557600080fd5b505115156102e257600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032057600080fd5b505af1158015610334573d6000803e3d6000fd5b505050506040513d602081101561034a57600080fd5b50519050600060ff821610801590610366575060058160ff1611155b151561037157600080fd5b505060038054600160a060020a039092166000818152600460205260408120849055600184018355919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b60006103f3818363ffffffff610b3a16565b92915050565b600060038260010181548110151561040d57fe5b600091825260209091200154600160a060020a031692915050565b60006103f360018363ffffffff610b3a16565b610444336103e1565b151561044f57600080fd5b61022d81610b71565b61046133610428565b151561046c57600080fd5b60035460011061047b57600080fd5b600354600214156104e75760038054600190811061049557fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560016104c8600382610cdd565b50600160a060020a03811660009081526004602052604081205561022d565b600354600160a060020a038216600090815260046020526040902054146105815760038054600019810190811061051a57fe5b6000918252602080832090910154600160a060020a038481168452600490925260409092205460038054929093169291811061055257fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60038054600019810190811061059357fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560038054906105cc906000198301610cdd565b50600160a060020a0316600090815260046020526040812055565b60006105f1610d01565b6000806000806105ff610d01565b610608336103e1565b151561061357600080fd5b60035460011061062257600080fd5b600254604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561068857600080fd5b505af115801561069c573d6000803e3d6000fd5b505050506040513d60208110156106b257600080fd5b50519650600087116106c357600080fd5b600194505b6003548510156108725760038054869081106106e057fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561073e57600080fd5b505af1158015610752573d6000803e3d6000fd5b505050506040513d602081101561076857600080fd5b5051151561077557610867565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156107b357600080fd5b505af11580156107c7573d6000803e3d6000fd5b505050506040513d60208110156107dd57600080fd5b5051925060ff831615156107ff578560005b6020020180516001019052610867565b8260ff1660011415610813578560016107ef565b8260ff1660021415610827578560026107ef565b8260ff166003141561083b578560036107ef565b8260ff166004141561084f578560046107ef565b8260ff16600514156108675760a08601805160010190525b6001909401936106c8565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e90910201602890910201603290910201915081878115156108b857fe5b04815281600a88028115156108c957fe5b04602082015281601488028115156108dd57fe5b04604082015281601e88028115156108f157fe5b046060820152816028880281151561090557fe5b046080820152816032880281151561091957fe5b0460a0820152600194505b600354851015610b0157600380548690811061093c57fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561099a57600080fd5b505af11580156109ae573d6000803e3d6000fd5b505050506040513d60208110156109c457600080fd5b505115156109d157610af6565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a0f57600080fd5b505af1158015610a23573d6000803e3d6000fd5b505050506040513d6020811015610a3957600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610af691600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610a9d57600080fd5b505af1158015610ab1573d6000803e3d6000fd5b505050506040513d6020811015610ac757600080fd5b50518260ff861660068110610ad857fe5b6020020151600254600160a060020a0316919063ffffffff610b8216565b600190940193610924565b50505050505050565b600354600019015b90565b610b1e33610c21565b565b610b1e33610c32565b61022d60018263ffffffff610c4316565b6000600160a060020a0382161515610b5157600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61022d60008263ffffffff610c4316565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610be557600080fd5b505af1158015610bf9573d6000803e3d6000fd5b505050506040513d6020811015610c0f57600080fd5b50511515610c1c57600080fd5b505050565b61022d60018263ffffffff610c9116565b61022d60008263ffffffff610c9116565b600160a060020a0381161515610c5857600080fd5b610c628282610b3a565b15610c6c57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610ca657600080fd5b610cb08282610b3a565b1515610cbb57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610c1c57600083815260209020610c1c918101908301610d20565b60c0604051908101604052806006906020820280388339509192915050565b610b1291905b80821115610d3a5760008155600101610d26565b50905600a165627a7a72305820a50e84e4f20df15b74a513c238b268f416d4f45f8632af54e0cb02d0aaff72790029", + "functionHashes": { + "addCoreTeam(address)": "2e6b6849", + "addSystem(address)": "74be7592", + "getMinerByIndex(uint256)": "3d19ab13", + "getMinerCount()": "bb52c137", + "isCoreTeam(address)": "608d3d3d", + "isSystem(address)": "34cdcf26", + "mine()": "99f4b251", + "registerMiner(address)": "341ccfcb", + "renounceCoreTeam()": "d43acc79", + "renounceSystem()": "e9d61859", + "unregisterMiner(address)": "81f909f3" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "686800", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "addCoreTeam(address)": "infinite", + "addSystem(address)": "infinite", + "getMinerByIndex(uint256)": "980", + "getMinerCount()": "633", + "isCoreTeam(address)": "infinite", + "isSystem(address)": "infinite", + "mine()": "infinite", + "registerMiner(address)": "infinite", + "renounceCoreTeam()": "infinite", + "renounceSystem()": "infinite", + "unregisterMiner(address)": "infinite" + } + } +} \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json index 55865265d..873957ff2 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json @@ -101,6 +101,20 @@ "stateMutability": "pure", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "isMining", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": false, "inputs": [], @@ -152,6 +166,20 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "getMiner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [ @@ -376,26 +404,28 @@ "evm": { "bytecode": { "linkReferences": {}, - "object": "60806040523480156200001157600080fd5b5060405160808062000fb883398101604090815281516020830151918301516060909301519092906200004d33640100000000620000de810204565b6200006133640100000000620000fc810204565b620000753364010000000062000117810204565b6003805461ffff191661ffff959095169490941762ff000019166201000060ff949094169390930292909217630100000060b860020a0319166301000000600160a060020a03928316021790925560048054600160a060020a03191691909216179055620001c5565b620000f960008264010000000062000d1d6200013282021704565b50565b620000f960018264010000000062000d1d6200013282021704565b620000f960028264010000000062000d1d6200013282021704565b600160a060020a03811615156200014857600080fd5b6200015d82826401000000006200018d810204565b156200016857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001a557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610de380620001d56000396000f3006080604052600436106101275763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663162f986d811461012c5780631777fb4b1461014357806321b79d981461016c578063231d4e2a1461018157806329d10b6e146101a25780632e6b6849146101c357806334cdcf26146101e4578063363aa6c714610205578063427534a41461021a578063608d3d3d1461022f57806374be75921461025057806380258e471461027157806381a244591461029c57806399f4b251146102bd5780639e614ca0146102d2578063ada436e9146102e7578063b2a32cd514610308578063be9524941461031d578063c6846ef814610332578063d43acc7914610359578063da4086791461036e578063e9d6185914610383575b600080fd5b34801561013857600080fd5b50610141610398565b005b34801561014f57600080fd5b506101586103fe565b604080519115158252519081900360200190f35b34801561017857600080fd5b50610141610403565b34801561018d57600080fd5b50610141600160a060020a03600435166104a7565b3480156101ae57600080fd5b50610141600160a060020a0360043516610593565b3480156101cf57600080fd5b50610141600160a060020a03600435166105b0565b3480156101f057600080fd5b50610158600160a060020a03600435166105cd565b34801561021157600080fd5b506101416105e5565b34801561022657600080fd5b5061014161068e565b34801561023b57600080fd5b50610158600160a060020a03600435166106f1565b34801561025c57600080fd5b50610141600160a060020a0360043516610704565b34801561027d57600080fd5b50610286610721565b6040805160ff9092168252519081900360200190f35b3480156102a857600080fd5b50610158600160a060020a0360043516610730565b3480156102c957600080fd5b50610141610743565b3480156102de57600080fd5b50610141610915565b3480156102f357600080fd5b50610141600160a060020a036004351661096f565b34801561031457600080fd5b50610141610a05565b34801561032957600080fd5b50610141610b18565b34801561033e57600080fd5b50610347610b23565b60408051918252519081900360200190f35b34801561036557600080fd5b50610141610b29565b34801561037a57600080fd5b50610141610b32565b34801561038f57600080fd5b50610141610bbf565b6103a133610730565b15156103ac57600080fd5b600160045460a060020a900460ff1660038111156103c657fe5b146103d057600080fd5b600480546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550565b600190565b60035463010000009004600160a060020a0316331461042157600080fd5b600160045460a060020a900460ff16600381111561043b57fe5b1461044557600080fd5b6004547501000000000000000000000000000000000000000000900460ff161561046e57600080fd5b6004805475ff00000000000000000000000000000000000000000019167501000000000000000000000000000000000000000000179055565b6104b0336106f1565b15156104bb57600080fd5b600060045460a060020a900460ff1660038111156104d557fe5b146104df57600080fd5b60048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251610590928492600160a060020a0316916370a08231916024808201926020929091908290030181600087803b15801561054b57600080fd5b505af115801561055f573d6000803e3d6000fd5b505050506040513d602081101561057557600080fd5b5051600454600160a060020a0316919063ffffffff610bc816565b50565b61059c33610730565b15156105a757600080fd5b61059081610c80565b6105b9336106f1565b15156105c457600080fd5b61059081610c91565b60006105df818363ffffffff610ca216565b92915050565b6105ee33610730565b15156105f957600080fd5b600360045460a060020a900460ff16600381111561061357fe5b141561061e57600080fd5b6004805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001775ff000000000000000000000000000000000000000000191690556003805476ffffffffffffffffffffffffffffffffffffffff00000019169055565b61069733610730565b15156106a257600080fd5b600260045460a060020a900460ff1660038111156106bc57fe5b146106c657600080fd5b600480546001919074ff0000000000000000000000000000000000000000191660a060020a836103f7565b60006105df60018363ffffffff610ca216565b61070d336105cd565b151561071857600080fd5b61059081610cd9565b60035462010000900460ff1690565b60006105df60028363ffffffff610ca216565b600061074e336105cd565b151561075957600080fd5b600160045460a060020a900460ff16600381111561077357fe5b1461077d57600080fd5b6004547501000000000000000000000000000000000000000000900460ff1615156107a757600080fd5b60045460b860020a900461ffff16151561081d576004805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a1790556108e5565b60048054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e14156108e5576004805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600554600290046005555b5060055460035460045461016d9092049161059091600160a060020a039182169163010000009091041683610bc8565b61091e336106f1565b151561092957600080fd5b600060045460a060020a900460ff16600381111561094357fe5b141561094e57600080fd5b6004805475ffff000000000000000000000000000000000000000019169055565b61097833610730565b151561098357600080fd5b600360045460a060020a900460ff16600381111561099d57fe5b146109a757600080fd5b6004805474ff0000000000000000000000000000000000000000191660a060020a17905560038054600160a060020a039290921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b6000610a10336106f1565b1515610a1b57600080fd5b600060045460a060020a900460ff166003811115610a3557fe5b14610a3f57600080fd5b6005541515610af15760048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251600160a060020a03909116916370a082319160248083019260209291908290030181600087803b158015610aaf57600080fd5b505af1158015610ac3573d6000803e3d6000fd5b505050506040513d6020811015610ad957600080fd5b50519050801515610ae957600080fd5b600281046005555b506004805474ff0000000000000000000000000000000000000000191660a060020a179055565b610b2133610cea565b565b61016d81565b610b2133610cfb565b60035463010000009004600160a060020a03163314610b5057600080fd5b600160045460a060020a900460ff166003811115610b6a57fe5b14610b7457600080fd5b6004547501000000000000000000000000000000000000000000900460ff161515610b9e57600080fd5b6004805475ff00000000000000000000000000000000000000000019169055565b610b2133610d0c565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610c4457600080fd5b505af1158015610c58573d6000803e3d6000fd5b505050506040513d6020811015610c6e57600080fd5b50511515610c7b57600080fd5b505050565b61059060028263ffffffff610d1d16565b61059060018263ffffffff610d1d16565b6000600160a060020a0382161515610cb957600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61059060008263ffffffff610d1d16565b61059060028263ffffffff610d6b16565b61059060018263ffffffff610d6b16565b61059060008263ffffffff610d6b16565b600160a060020a0381161515610d3257600080fd5b610d3c8282610ca2565b15610d4657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610d8057600080fd5b610d8a8282610ca2565b1515610d9557600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820346733bed0f72b16c5bb967042b5930d38e536cc6adf26f0a2b6cc22aaa8069d0029", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x80 DUP1 PUSH3 0xFB8 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 SWAP1 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD SWAP2 DUP4 ADD MLOAD PUSH1 0x60 SWAP1 SWAP4 ADD MLOAD SWAP1 SWAP3 SWAP1 PUSH3 0x4D CALLER PUSH5 0x100000000 PUSH3 0xDE DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x61 CALLER PUSH5 0x100000000 PUSH3 0xFC DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x75 CALLER PUSH5 0x100000000 PUSH3 0x117 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH2 0xFFFF SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR PUSH3 0xFF0000 NOT AND PUSH3 0x10000 PUSH1 0xFF SWAP5 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 MUL SWAP3 SWAP1 SWAP3 OR PUSH4 0x1000000 PUSH1 0xB8 PUSH1 0x2 EXP SUB NOT AND PUSH4 0x1000000 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP3 DUP4 AND MUL OR SWAP1 SWAP3 SSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH3 0x1C5 JUMP JUMPDEST PUSH3 0xF9 PUSH1 0x0 DUP3 PUSH5 0x100000000 PUSH3 0xD1D PUSH3 0x132 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0xF9 PUSH1 0x1 DUP3 PUSH5 0x100000000 PUSH3 0xD1D PUSH3 0x132 DUP3 MUL OR DIV JUMP JUMPDEST PUSH3 0xF9 PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH3 0xD1D PUSH3 0x132 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH3 0x148 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x15D DUP3 DUP3 PUSH5 0x100000000 PUSH3 0x18D DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH3 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x1A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xDE3 DUP1 PUSH3 0x1D5 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x127 JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x162F986D DUP2 EQ PUSH2 0x12C JUMPI DUP1 PUSH4 0x1777FB4B EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x21B79D98 EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x231D4E2A EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0x29D10B6E EQ PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x34CDCF26 EQ PUSH2 0x1E4 JUMPI DUP1 PUSH4 0x363AA6C7 EQ PUSH2 0x205 JUMPI DUP1 PUSH4 0x427534A4 EQ PUSH2 0x21A JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x22F JUMPI DUP1 PUSH4 0x74BE7592 EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0x80258E47 EQ PUSH2 0x271 JUMPI DUP1 PUSH4 0x81A24459 EQ PUSH2 0x29C JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x2BD JUMPI DUP1 PUSH4 0x9E614CA0 EQ PUSH2 0x2D2 JUMPI DUP1 PUSH4 0xADA436E9 EQ PUSH2 0x2E7 JUMPI DUP1 PUSH4 0xB2A32CD5 EQ PUSH2 0x308 JUMPI DUP1 PUSH4 0xBE952494 EQ PUSH2 0x31D JUMPI DUP1 PUSH4 0xC6846EF8 EQ PUSH2 0x332 JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x359 JUMPI DUP1 PUSH4 0xDA408679 EQ PUSH2 0x36E JUMPI DUP1 PUSH4 0xE9D61859 EQ PUSH2 0x383 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x138 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0x398 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x14F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x3FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0x403 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x4A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x593 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x5B0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x5CD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x211 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0x5E5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x226 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0x68E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x6F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x704 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x286 PUSH2 0x721 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x730 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0x743 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0x915 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x96F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0xA05 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x329 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0xB18 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x347 PUSH2 0xB23 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x365 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0xB29 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0xB32 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x38F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH2 0xBBF JUMP JUMPDEST PUSH2 0x3A1 CALLER PUSH2 0x730 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x3AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3C6 JUMPI INVALID JUMPDEST EQ PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x2 SWAP2 SWAP1 PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 JUMPDEST MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0x421 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x43B JUMPI INVALID JUMPDEST EQ PUSH2 0x445 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x46E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND PUSH22 0x1000000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x4B0 CALLER PUSH2 0x6F1 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x4BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4D5 JUMPI INVALID JUMPDEST EQ PUSH2 0x4DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x590 SWAP3 DUP5 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x54B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x55F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x575 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xBC8 AND JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x59C CALLER PUSH2 0x730 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x5A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x590 DUP2 PUSH2 0xC80 JUMP JUMPDEST PUSH2 0x5B9 CALLER PUSH2 0x6F1 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x5C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x590 DUP2 PUSH2 0xC91 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DF DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xCA2 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x5EE CALLER PUSH2 0x730 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x5F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x613 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x61E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH21 0x30000000000000000000000000000000000000000 OR PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH23 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x697 CALLER PUSH2 0x730 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x6A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x6BC JUMPI INVALID JUMPDEST EQ PUSH2 0x6C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 SWAP2 SWAP1 PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 PUSH2 0x3F7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DF PUSH1 0x1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xCA2 AND JUMP JUMPDEST PUSH2 0x70D CALLER PUSH2 0x5CD JUMP JUMPDEST ISZERO ISZERO PUSH2 0x718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x590 DUP2 PUSH2 0xCD9 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DF PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xCA2 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x74E CALLER PUSH2 0x5CD JUMP JUMPDEST ISZERO ISZERO PUSH2 0x759 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x773 JUMPI INVALID JUMPDEST EQ PUSH2 0x77D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0x7A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH2 0xFFFF AND ISZERO ISZERO PUSH2 0x81D JUMPI PUSH1 0x4 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP2 AND PUSH23 0x100000000000000000000000000000000000000000000 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH2 0x8E5 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH2 0xFFFF PUSH1 0xB8 PUSH1 0x2 EXP DUP1 DUP5 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD DUP2 AND DUP3 MUL PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE SWAP1 SWAP2 DIV AND PUSH2 0x16E EQ ISZERO PUSH2 0x8E5 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH1 0x1 PUSH1 0xFF PUSH23 0x100000000000000000000000000000000000000000000 DUP1 DUP6 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD AND MUL PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH1 0x5 SLOAD PUSH1 0x2 SWAP1 DIV PUSH1 0x5 SSTORE JUMPDEST POP PUSH1 0x5 SLOAD PUSH1 0x3 SLOAD PUSH1 0x4 SLOAD PUSH2 0x16D SWAP1 SWAP3 DIV SWAP2 PUSH2 0x590 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 PUSH4 0x1000000 SWAP1 SWAP2 DIV AND DUP4 PUSH2 0xBC8 JUMP JUMPDEST PUSH2 0x91E CALLER PUSH2 0x6F1 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x929 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x943 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x94E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH22 0xFFFF0000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x978 CALLER PUSH2 0x730 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x983 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x99D JUMPI INVALID JUMPDEST EQ PUSH2 0x9A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP3 SWAP1 SWAP3 AND PUSH4 0x1000000 MUL PUSH23 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA10 CALLER PUSH2 0x6F1 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xA1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA35 JUMPI INVALID JUMPDEST EQ PUSH2 0xA3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD ISZERO ISZERO PUSH2 0xAF1 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAC3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO ISZERO PUSH2 0xAE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 DUP2 DIV PUSH1 0x5 SSTORE JUMPDEST POP PUSH1 0x4 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xB21 CALLER PUSH2 0xCEA JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x16D DUP2 JUMP JUMPDEST PUSH2 0xB21 CALLER PUSH2 0xCFB JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0xB50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xB6A JUMPI INVALID JUMPDEST EQ PUSH2 0xB74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0xB9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xB21 CALLER PUSH2 0xD0C JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC58 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xC7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x590 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD1D AND JUMP JUMPDEST PUSH2 0x590 PUSH1 0x1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD1D AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xCB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x590 PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD1D AND JUMP JUMPDEST PUSH2 0x590 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD6B AND JUMP JUMPDEST PUSH2 0x590 PUSH1 0x1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD6B AND JUMP JUMPDEST PUSH2 0x590 PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD6B AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xD32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD3C DUP3 DUP3 PUSH2 0xCA2 JUMP JUMPDEST ISZERO PUSH2 0xD46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xD80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD8A DUP3 DUP3 PUSH2 0xCA2 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xD95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 CALLVALUE PUSH8 0x33BED0F72B16C5BB SWAP7 PUSH17 0x42B5930D38E536CC6ADF26F0A2B6CC22AA 0xa8 MOD SWAP14 STOP 0x29 ", - "sourceMap": "558:3657:1:-;;;1139:336;8:9:-1;5:2;;;30:1;27;20:12;5:2;1139:336:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;364:22:3;375:10;364;;;;:22;:::i;:::-;368:24:0;381:10;368:12;;;;:24;:::i;:::-;366:26:2;381:10;366:14;;;;:26;:::i;:::-;1342:10:1;:22;;-1:-1:-1;;1342:22:1;;;;;;;;;;-1:-1:-1;;1375:20:1;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1406:21:1;;-1:-1:-1;;;;;1406:21:1;;;;;;;;1438:6;:29;;-1:-1:-1;;;;;;1438:29:1;;;;;;;;558:3657;;800:92:3;857:27;:14;876:7;857:18;;;;;;:27;:::i;:::-;800:92;:::o;824:96:0:-;883:29;:16;904:7;883:20;;;;;;:29;:::i;836:94:2:-;897:25;:12;914:7;897:16;;;;;;:25;:::i;244:167:5:-;-1:-1:-1;;;;;316:21:5;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:5;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:5;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:5;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:5;:11;:20;;;;;;;;;;;;;;;725:166::o;558:3657:1:-;;;;;;;" + "object": "60806040523480156200001157600080fd5b506040516080806200104f83398101604090815281516020830151918301516060909301519092906200004d3364010000000062000103810204565b620000613364010000000062000121810204565b62000075336401000000006200013c810204565b60008360ff16101580156200008e575060058360ff1611155b15156200009a57600080fd5b6003805461ffff191661ffff959095169490941762ff000019166201000060ff949094169390930292909217630100000060b860020a0319166301000000600160a060020a03928316021790925560048054600160a060020a03191691909216179055620001ea565b6200011e60008264010000000062000d8f6200015782021704565b50565b6200011e60018264010000000062000d8f6200015782021704565b6200011e60028264010000000062000d8f6200015782021704565b600160a060020a03811615156200016d57600080fd5b620001828282640100000000620001b2810204565b156200018d57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001ca57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610e5580620001fa6000396000f30060806040526004361061013d5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663162f986d81146101425780631777fb4b1461015957806319a74ab31461018257806321b79d9814610197578063231d4e2a146101ac57806329d10b6e146101cd5780632e6b6849146101ee578063302c11ca1461020f57806334cdcf2614610240578063363aa6c714610261578063427534a414610276578063608d3d3d1461028b57806374be7592146102ac57806380258e47146102cd57806381a24459146102f857806399f4b251146103195780639e614ca01461032e578063ada436e914610343578063b2a32cd514610364578063be95249414610379578063c6846ef81461038e578063d43acc79146103b5578063da408679146103ca578063e9d61859146103df575b600080fd5b34801561014e57600080fd5b506101576103f4565b005b34801561016557600080fd5b5061016e61045a565b604080519115158252519081900360200190f35b34801561018e57600080fd5b5061016e61045f565b3480156101a357600080fd5b50610157610496565b3480156101b857600080fd5b50610157600160a060020a0360043516610516565b3480156101d957600080fd5b50610157600160a060020a0360043516610602565b3480156101fa57600080fd5b50610157600160a060020a036004351661061f565b34801561021b57600080fd5b5061022461063c565b60408051600160a060020a039092168252519081900360200190f35b34801561024c57600080fd5b5061016e600160a060020a0360043516610652565b34801561026d57600080fd5b5061015761066a565b34801561028257600080fd5b50610157610713565b34801561029757600080fd5b5061016e600160a060020a0360043516610776565b3480156102b857600080fd5b50610157600160a060020a0360043516610789565b3480156102d957600080fd5b506102e26107a6565b6040805160ff9092168252519081900360200190f35b34801561030457600080fd5b5061016e600160a060020a03600435166107b5565b34801561032557600080fd5b506101576107c8565b34801561033a57600080fd5b50610157610999565b34801561034f57600080fd5b50610157600160a060020a03600435166109f3565b34801561037057600080fd5b50610157610a89565b34801561038557600080fd5b50610157610b9c565b34801561039a57600080fd5b506103a3610ba7565b60408051918252519081900360200190f35b3480156103c157600080fd5b50610157610bad565b3480156103d657600080fd5b50610157610bb6565b3480156103eb57600080fd5b50610157610c31565b6103fd336107b5565b151561040857600080fd5b600160045460a060020a900460ff16600381111561042257fe5b1461042c57600080fd5b600480546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550565b600190565b6000600160045460a060020a900460ff16600381111561047b57fe5b148015610491575060045460a860020a900460ff165b905090565b60035463010000009004600160a060020a031633146104b457600080fd5b600160045460a060020a900460ff1660038111156104ce57fe5b146104d857600080fd5b60045460a860020a900460ff16156104ef57600080fd5b6004805475ff000000000000000000000000000000000000000000191660a860020a179055565b61051f33610776565b151561052a57600080fd5b600060045460a060020a900460ff16600381111561054457fe5b1461054e57600080fd5b60048054604080517f70a082310000000000000000000000000000000000000000000000000000000081523093810193909352516105ff928492600160a060020a0316916370a08231916024808201926020929091908290030181600087803b1580156105ba57600080fd5b505af11580156105ce573d6000803e3d6000fd5b505050506040513d60208110156105e457600080fd5b5051600454600160a060020a0316919063ffffffff610c3a16565b50565b61060b336107b5565b151561061657600080fd5b6105ff81610cf2565b61062833610776565b151561063357600080fd5b6105ff81610d03565b60035463010000009004600160a060020a031690565b6000610664818363ffffffff610d1416565b92915050565b610673336107b5565b151561067e57600080fd5b600360045460a060020a900460ff16600381111561069857fe5b14156106a357600080fd5b6004805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001775ff000000000000000000000000000000000000000000191690556003805476ffffffffffffffffffffffffffffffffffffffff00000019169055565b61071c336107b5565b151561072757600080fd5b600260045460a060020a900460ff16600381111561074157fe5b1461074b57600080fd5b600480546001919074ff0000000000000000000000000000000000000000191660a060020a83610453565b600061066460018363ffffffff610d1416565b61079233610652565b151561079d57600080fd5b6105ff81610d4b565b60035462010000900460ff1690565b600061066460028363ffffffff610d1416565b60006107d333610652565b15156107de57600080fd5b600160045460a060020a900460ff1660038111156107f857fe5b1461080257600080fd5b60045460a860020a900460ff16151561081a57600080fd5b60045460b860020a900461ffff161515610890576004805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610958565b60048054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610958576004805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600554600290046005555b5060055461016d90046000811161096e57600080fd5b6003546004546105ff91600160a060020a03918216916301000000909104168363ffffffff610c3a16565b6109a233610776565b15156109ad57600080fd5b600060045460a060020a900460ff1660038111156109c757fe5b14156109d257600080fd5b6004805475ffff000000000000000000000000000000000000000019169055565b6109fc336107b5565b1515610a0757600080fd5b600360045460a060020a900460ff166003811115610a2157fe5b14610a2b57600080fd5b6004805474ff0000000000000000000000000000000000000000191660a060020a17905560038054600160a060020a039290921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b6000610a9433610776565b1515610a9f57600080fd5b600060045460a060020a900460ff166003811115610ab957fe5b14610ac357600080fd5b6005541515610b755760048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251600160a060020a03909116916370a082319160248083019260209291908290030181600087803b158015610b3357600080fd5b505af1158015610b47573d6000803e3d6000fd5b505050506040513d6020811015610b5d57600080fd5b50519050801515610b6d57600080fd5b600281046005555b506004805474ff0000000000000000000000000000000000000000191660a060020a179055565b610ba533610d5c565b565b61016d81565b610ba533610d6d565b60035463010000009004600160a060020a03163314610bd457600080fd5b600160045460a060020a900460ff166003811115610bee57fe5b14610bf857600080fd5b60045460a860020a900460ff161515610c1057600080fd5b6004805475ff00000000000000000000000000000000000000000019169055565b610ba533610d7e565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610cb657600080fd5b505af1158015610cca573d6000803e3d6000fd5b505050506040513d6020811015610ce057600080fd5b50511515610ced57600080fd5b505050565b6105ff60028263ffffffff610d8f16565b6105ff60018263ffffffff610d8f16565b6000600160a060020a0382161515610d2b57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6105ff60008263ffffffff610d8f16565b6105ff60028263ffffffff610ddd16565b6105ff60018263ffffffff610ddd16565b6105ff60008263ffffffff610ddd16565b600160a060020a0381161515610da457600080fd5b610dae8282610d14565b15610db857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610df257600080fd5b610dfc8282610d14565b1515610e0757600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058201294b6d23ba0b99db018d2b973943cf860ea9ceb1232ea85e77d5e6f5d5a2e890029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x80 DUP1 PUSH3 0x104F DUP4 CODECOPY DUP2 ADD PUSH1 0x40 SWAP1 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD SWAP2 DUP4 ADD MLOAD PUSH1 0x60 SWAP1 SWAP4 ADD MLOAD SWAP1 SWAP3 SWAP1 PUSH3 0x4D CALLER PUSH5 0x100000000 PUSH3 0x103 DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x61 CALLER PUSH5 0x100000000 PUSH3 0x121 DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x75 CALLER PUSH5 0x100000000 PUSH3 0x13C DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0xFF AND LT ISZERO DUP1 ISZERO PUSH3 0x8E JUMPI POP PUSH1 0x5 DUP4 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH3 0x9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH2 0xFFFF SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR PUSH3 0xFF0000 NOT AND PUSH3 0x10000 PUSH1 0xFF SWAP5 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 MUL SWAP3 SWAP1 SWAP3 OR PUSH4 0x1000000 PUSH1 0xB8 PUSH1 0x2 EXP SUB NOT AND PUSH4 0x1000000 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP3 DUP4 AND MUL OR SWAP1 SWAP3 SSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH3 0x1EA JUMP JUMPDEST PUSH3 0x11E PUSH1 0x0 DUP3 PUSH5 0x100000000 PUSH3 0xD8F PUSH3 0x157 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x11E PUSH1 0x1 DUP3 PUSH5 0x100000000 PUSH3 0xD8F PUSH3 0x157 DUP3 MUL OR DIV JUMP JUMPDEST PUSH3 0x11E PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH3 0xD8F PUSH3 0x157 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH3 0x16D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x182 DUP3 DUP3 PUSH5 0x100000000 PUSH3 0x1B2 DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH3 0x18D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x1CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xE55 DUP1 PUSH3 0x1FA PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x13D JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x162F986D DUP2 EQ PUSH2 0x142 JUMPI DUP1 PUSH4 0x1777FB4B EQ PUSH2 0x159 JUMPI DUP1 PUSH4 0x19A74AB3 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0x21B79D98 EQ PUSH2 0x197 JUMPI DUP1 PUSH4 0x231D4E2A EQ PUSH2 0x1AC JUMPI DUP1 PUSH4 0x29D10B6E EQ PUSH2 0x1CD JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0x302C11CA EQ PUSH2 0x20F JUMPI DUP1 PUSH4 0x34CDCF26 EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0x363AA6C7 EQ PUSH2 0x261 JUMPI DUP1 PUSH4 0x427534A4 EQ PUSH2 0x276 JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0x74BE7592 EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0x80258E47 EQ PUSH2 0x2CD JUMPI DUP1 PUSH4 0x81A24459 EQ PUSH2 0x2F8 JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x319 JUMPI DUP1 PUSH4 0x9E614CA0 EQ PUSH2 0x32E JUMPI DUP1 PUSH4 0xADA436E9 EQ PUSH2 0x343 JUMPI DUP1 PUSH4 0xB2A32CD5 EQ PUSH2 0x364 JUMPI DUP1 PUSH4 0xBE952494 EQ PUSH2 0x379 JUMPI DUP1 PUSH4 0xC6846EF8 EQ PUSH2 0x38E JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x3B5 JUMPI DUP1 PUSH4 0xDA408679 EQ PUSH2 0x3CA JUMPI DUP1 PUSH4 0xE9D61859 EQ PUSH2 0x3DF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x14E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0x3F4 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x165 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x45A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x45F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0x496 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x516 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x602 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x61F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x224 PUSH2 0x63C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x652 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0x66A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0x713 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x297 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x776 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x789 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2E2 PUSH2 0x7A6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x304 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x7B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x325 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0x7C8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0x999 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x9F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x370 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0xA89 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x385 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0xB9C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A3 PUSH2 0xBA7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0xBAD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0xBB6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0xC31 JUMP JUMPDEST PUSH2 0x3FD CALLER PUSH2 0x7B5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x408 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x422 JUMPI INVALID JUMPDEST EQ PUSH2 0x42C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x2 SWAP2 SWAP1 PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 JUMPDEST MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x47B JUMPI INVALID JUMPDEST EQ DUP1 ISZERO PUSH2 0x491 JUMPI POP PUSH1 0x4 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0x4B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4CE JUMPI INVALID JUMPDEST EQ PUSH2 0x4D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x4EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND PUSH1 0xA8 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x51F CALLER PUSH2 0x776 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x52A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x544 JUMPI INVALID JUMPDEST EQ PUSH2 0x54E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x5FF SWAP3 DUP5 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xC3A AND JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x60B CALLER PUSH2 0x7B5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x616 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5FF DUP2 PUSH2 0xCF2 JUMP JUMPDEST PUSH2 0x628 CALLER PUSH2 0x776 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x633 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5FF DUP2 PUSH2 0xD03 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x664 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xD14 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x673 CALLER PUSH2 0x7B5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x67E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x698 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x6A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH21 0x30000000000000000000000000000000000000000 OR PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH23 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x71C CALLER PUSH2 0x7B5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x727 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x741 JUMPI INVALID JUMPDEST EQ PUSH2 0x74B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 SWAP2 SWAP1 PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 PUSH2 0x453 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x664 PUSH1 0x1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xD14 AND JUMP JUMPDEST PUSH2 0x792 CALLER PUSH2 0x652 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x79D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5FF DUP2 PUSH2 0xD4B JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x664 PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xD14 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D3 CALLER PUSH2 0x652 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x7DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x7F8 JUMPI INVALID JUMPDEST EQ PUSH2 0x802 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0x81A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH2 0xFFFF AND ISZERO ISZERO PUSH2 0x890 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP2 AND PUSH23 0x100000000000000000000000000000000000000000000 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH2 0x958 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH2 0xFFFF PUSH1 0xB8 PUSH1 0x2 EXP DUP1 DUP5 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD DUP2 AND DUP3 MUL PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE SWAP1 SWAP2 DIV AND PUSH2 0x16E EQ ISZERO PUSH2 0x958 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH1 0x1 PUSH1 0xFF PUSH23 0x100000000000000000000000000000000000000000000 DUP1 DUP6 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD AND MUL PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH1 0x5 SLOAD PUSH1 0x2 SWAP1 DIV PUSH1 0x5 SSTORE JUMPDEST POP PUSH1 0x5 SLOAD PUSH2 0x16D SWAP1 DIV PUSH1 0x0 DUP2 GT PUSH2 0x96E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x4 SLOAD PUSH2 0x5FF SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 PUSH4 0x1000000 SWAP1 SWAP2 DIV AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xC3A AND JUMP JUMPDEST PUSH2 0x9A2 CALLER PUSH2 0x776 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x9AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x9C7 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x9D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH22 0xFFFF0000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x9FC CALLER PUSH2 0x7B5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xA07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA21 JUMPI INVALID JUMPDEST EQ PUSH2 0xA2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP3 SWAP1 SWAP3 AND PUSH4 0x1000000 MUL PUSH23 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA94 CALLER PUSH2 0x776 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xA9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xAB9 JUMPI INVALID JUMPDEST EQ PUSH2 0xAC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD ISZERO ISZERO PUSH2 0xB75 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB47 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO ISZERO PUSH2 0xB6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 DUP2 DIV PUSH1 0x5 SSTORE JUMPDEST POP PUSH1 0x4 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xBA5 CALLER PUSH2 0xD5C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x16D DUP2 JUMP JUMPDEST PUSH2 0xBA5 CALLER PUSH2 0xD6D JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0xBD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xBEE JUMPI INVALID JUMPDEST EQ PUSH2 0xBF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0xC10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xBA5 CALLER PUSH2 0xD7E JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xCCA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xCED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x5FF PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD8F AND JUMP JUMPDEST PUSH2 0x5FF PUSH1 0x1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD8F AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xD2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x5FF PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD8F AND JUMP JUMPDEST PUSH2 0x5FF PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xDDD AND JUMP JUMPDEST PUSH2 0x5FF PUSH1 0x1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xDDD AND JUMP JUMPDEST PUSH2 0x5FF PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xDDD AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xDA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDAE DUP3 DUP3 PUSH2 0xD14 JUMP JUMPDEST ISZERO PUSH2 0xDB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xDF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDFC DUP3 DUP3 PUSH2 0xD14 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xE07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 SLT SWAP5 0xb6 0xd2 EXTCODESIZE LOG0 0xb9 SWAP14 0xb0 XOR 0xd2 0xb9 PUSH20 0x943CF860EA9CEB1232EA85E77D5E6F5D5A2E8900 0x29 ", + "sourceMap": "558:3961:1:-;;;1139:396;8:9:-1;5:2;;;30:1;27;20:12;5:2;1139:396:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;364:22:3;375:10;364;;;;:22;:::i;:::-;368:24:0;381:10;368:12;;;;:24;:::i;:::-;366:26:2;381:10;366:14;;;;:26;:::i;:::-;1370:1:1;1358:8;:13;;;;:30;;;;;1387:1;1375:8;:13;;;;1358:30;1350:39;;;;;;;;1402:10;:22;;-1:-1:-1;;1402:22:1;;;;;;;;;;-1:-1:-1;;1435:20:1;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1466:21:1;;-1:-1:-1;;;;;1466:21:1;;;;;;;;1498:6;:29;;-1:-1:-1;;;;;;1498:29:1;;;;;;;;558:3961;;800:92:3;857:27;:14;876:7;857:18;;;;;;:27;:::i;:::-;800:92;:::o;824:96:0:-;883:29;:16;904:7;883:20;;;;;;:29;:::i;836:94:2:-;897:25;:12;914:7;897:16;;;;;;:25;:::i;244:167:5:-;-1:-1:-1;;;;;316:21:5;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:5;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:5;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:5;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:5;:11;:20;;;;;;;;;;;;;;;725:166::o;558:3961:1:-;;;;;;;" }, "gasEstimates": { "creation": { - "codeDepositCost": "711000", + "codeDepositCost": "733800", "executionCost": "infinite", "totalCost": "infinite" }, "external": { - "DAYS_PER_YEAR()": "580", + "DAYS_PER_YEAR()": "624", "activateMiner()": "infinite", "addCoreTeam(address)": "infinite", "addSupervisor(address)": "infinite", "addSystem(address)": "infinite", "deactivateMiner()": "infinite", - "getCategory()": "652", + "getCategory()": "696", + "getMiner()": "702", "isAlgoMiner()": "212", "isCoreTeam(address)": "infinite", + "isMining()": "859", "isSupervisor(address)": "infinite", "isSystem(address)": "infinite", "migrateMiner(address)": "infinite", @@ -406,9 +436,9 @@ "renounceSystem()": "infinite", "resetMiner(address)": "infinite", "resumeMining()": "infinite", - "startMining()": "21272", + "startMining()": "21420", "stopAndRemoveOwnership()": "infinite", - "stopMining()": "21665" + "stopMining()": "21772" } }, "methodIdentifiers": { @@ -419,8 +449,10 @@ "addSystem(address)": "74be7592", "deactivateMiner()": "9e614ca0", "getCategory()": "80258e47", + "getMiner()": "302c11ca", "isAlgoMiner()": "1777fb4b", "isCoreTeam(address)": "608d3d3d", + "isMining()": "19a74ab3", "isSupervisor(address)": "81a24459", "isSystem(address)": "34cdcf26", "migrateMiner(address)": "231d4e2a", @@ -436,7 +468,7 @@ "stopMining()": "da408679" } }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"pauseMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isAlgoMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"startMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newMinerAddress\",\"type\":\"address\"}],\"name\":\"migrateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSystem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopAndRemoveOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"resumeMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCategory\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSupervisor\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"deactivateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwnerAddress\",\"type\":\"address\"}],\"name\":\"resetMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"activateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DAYS_PER_YEAR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"minerType\",\"type\":\"uint16\"},{\"name\":\"category\",\"type\":\"uint8\"},{\"name\":\"ownerAddress\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":\"AlgoMiner\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":{\"keccak256\":\"0xe5a1ae438e7d54f613a381816bda4959884722adfbf3976f99b7d7d35b5377c3\",\"urls\":[\"bzzr://e96b24515fcb5324ccbabb61424fbc290ace1636afa28f479a1e666bb06abc42\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol\":{\"keccak256\":\"0x20955eaf60f79f885c941d97e208320c9e0bc1f05b8121342f8187f9a39fd46b\",\"urls\":[\"bzzr://8e30e53aa0322307873f8c0a4fc3c58b7562a0fde92a0921a52bdef4e129ec4b\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol\":{\"keccak256\":\"0x6fffe504e6805d95ca42269cc995a3de9401a12bc037068b056c186ce8569d8d\",\"urls\":[\"bzzr://a0923a2d2b1e4992f552ce49638b19d6d8328950c1d5dc1395f0d625daf21c68\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0xb457e39e512b5475c3e70193ab0a751f6626a50417954247f0cf47c7ca15eff7\",\"urls\":[\"bzzr://3b585a4055121fee393f2b691538036c87f56556f43f0b6e851a88de7b8275e6\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"pauseMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isAlgoMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isMining\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"startMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newMinerAddress\",\"type\":\"address\"}],\"name\":\"migrateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSystem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopAndRemoveOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"resumeMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCategory\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSupervisor\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"deactivateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwnerAddress\",\"type\":\"address\"}],\"name\":\"resetMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"activateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DAYS_PER_YEAR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"minerType\",\"type\":\"uint16\"},{\"name\":\"category\",\"type\":\"uint8\"},{\"name\":\"ownerAddress\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":\"AlgoMiner\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":{\"keccak256\":\"0x3ac3214ab22215c557c0d9142bea5ee16bcedce1d06f4d36dded90b7c14e830a\",\"urls\":[\"bzzr://bf787e40723cedd9971737e335d4fe5d7cefef399c5de208ed362e7e336a624b\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol\":{\"keccak256\":\"0x20955eaf60f79f885c941d97e208320c9e0bc1f05b8121342f8187f9a39fd46b\",\"urls\":[\"bzzr://8e30e53aa0322307873f8c0a4fc3c58b7562a0fde92a0921a52bdef4e129ec4b\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol\":{\"keccak256\":\"0x6fffe504e6805d95ca42269cc995a3de9401a12bc037068b056c186ce8569d8d\",\"urls\":[\"bzzr://a0923a2d2b1e4992f552ce49638b19d6d8328950c1d5dc1395f0d625daf21c68\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0x94c226040dfda257ee61c1455bbb920db28b6ad0f5cba33ecc76319c003630b7\",\"urls\":[\"bzzr://bdd0568ed74054f0f91933dab7fbba6789cceb60ab2f5200d719347161e8feed\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -609,6 +641,34 @@ "stateMutability": "pure", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "isMining", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getMiner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [], @@ -637,7 +697,9 @@ "gasEstimates": null, "methodIdentifiers": { "getCategory()": "80258e47", - "isAlgoMiner()": "1777fb4b" + "getMiner()": "302c11ca", + "isAlgoMiner()": "1777fb4b", + "isMining()": "19a74ab3" } }, "metadata": "", @@ -986,7 +1048,7 @@ "id": 2, "nodeType": "ImportDirective", "scope": 87, - "sourceUnit": 769, + "sourceUnit": 816, "src": "28:189:0", "symbolAliases": [], "unitAlias": "" @@ -1011,10 +1073,10 @@ "id": 3, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 768, + "referencedDeclaration": 815, "src": "260:5:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$768", + "typeIdentifier": "t_contract$_Roles_$815", "typeString": "library Roles" } }, @@ -1025,10 +1087,10 @@ "id": 4, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 681, + "referencedDeclaration": 728, "src": "270:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role" } } @@ -1043,7 +1105,7 @@ "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage", + "typeIdentifier": "t_struct$_Role_$728_storage", "typeString": "struct Roles.Role" }, "typeName": { @@ -1051,10 +1113,10 @@ "id": 6, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 681, + "referencedDeclaration": 728, "src": "289:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -1079,7 +1141,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1124, + "referencedDeclaration": 1171, "src": "381:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1187,7 +1249,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1124, + "referencedDeclaration": 1171, "src": "462:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1253,10 +1315,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "443:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -1341,7 +1403,7 @@ "referencedDeclaration": 7, "src": "584:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage", + "typeIdentifier": "t_struct$_Role_$728_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1352,10 +1414,10 @@ "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 767, + "referencedDeclaration": 814, "src": "584:20:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$681_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$728_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, @@ -1615,7 +1677,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1124, + "referencedDeclaration": 1171, "src": "797:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1742,7 +1804,7 @@ "referencedDeclaration": 7, "src": "883:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage", + "typeIdentifier": "t_struct$_Role_$728_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1753,10 +1815,10 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 713, + "referencedDeclaration": 760, "src": "883:20:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$681_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$728_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -1874,7 +1936,7 @@ "referencedDeclaration": 7, "src": "990:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage", + "typeIdentifier": "t_struct$_Role_$728_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1885,10 +1947,10 @@ "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 744, + "referencedDeclaration": 791, "src": "990:23:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$681_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$728_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -1980,10 +2042,10 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol", "exportedSymbols": { "AlgoMiner": [ - 487 + 524 ] }, - "id": 488, + "id": 525, "nodeType": "SourceUnit", "nodes": [ { @@ -2001,8 +2063,8 @@ "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "id": 89, "nodeType": "ImportDirective", - "scope": 488, - "sourceUnit": 966, + "scope": 525, + "sourceUnit": 1013, "src": "27:195:1", "symbolAliases": [], "unitAlias": "" @@ -2012,8 +2074,8 @@ "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "id": 90, "nodeType": "ImportDirective", - "scope": 488, - "sourceUnit": 1110, + "scope": 525, + "sourceUnit": 1157, "src": "224:198:1", "symbolAliases": [], "unitAlias": "" @@ -2023,8 +2085,8 @@ "file": "./IAlgoMiner.sol", "id": 91, "nodeType": "ImportDirective", - "scope": 488, - "sourceUnit": 675, + "scope": 525, + "sourceUnit": 722, "src": "426:26:1", "symbolAliases": [], "unitAlias": "" @@ -2034,8 +2096,8 @@ "file": "./AlgoSystemRole.sol", "id": 92, "nodeType": "ImportDirective", - "scope": 488, - "sourceUnit": 662, + "scope": 525, + "sourceUnit": 699, "src": "454:30:1", "symbolAliases": [], "unitAlias": "" @@ -2045,7 +2107,7 @@ "file": "./AlgoCoreTeamRole.sol", "id": 93, "nodeType": "ImportDirective", - "scope": 488, + "scope": 525, "sourceUnit": 87, "src": "486:32:1", "symbolAliases": [], @@ -2056,8 +2118,8 @@ "file": "./AlgoSupervisorRole.sol", "id": 94, "nodeType": "ImportDirective", - "scope": 488, - "sourceUnit": 575, + "scope": 525, + "sourceUnit": 612, "src": "520:34:1", "symbolAliases": [], "unitAlias": "" @@ -2071,10 +2133,10 @@ "id": 95, "name": "AlgoSystemRole", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 661, + "referencedDeclaration": 698, "src": "580:14:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoSystemRole_$661", + "typeIdentifier": "t_contract$_AlgoSystemRole_$698", "typeString": "contract AlgoSystemRole" } }, @@ -2107,10 +2169,10 @@ "id": 99, "name": "AlgoSupervisorRole", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 574, + "referencedDeclaration": 611, "src": "614:18:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoSupervisorRole_$574", + "typeIdentifier": "t_contract$_AlgoSupervisorRole_$611", "typeString": "contract AlgoSupervisorRole" } }, @@ -2125,10 +2187,10 @@ "id": 101, "name": "IAlgoMiner", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 674, + "referencedDeclaration": 721, "src": "634:10:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$674", + "typeIdentifier": "t_contract$_IAlgoMiner_$721", "typeString": "contract IAlgoMiner" } }, @@ -2139,20 +2201,20 @@ ], "contractDependencies": [ 86, - 574, - 661, - 674 + 611, + 698, + 721 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 487, + "id": 524, "linearizedBaseContracts": [ - 487, - 674, - 574, + 524, + 721, + 611, 86, - 661 + 698 ], "name": "AlgoMiner", "nodeType": "ContractDefinition", @@ -2164,10 +2226,10 @@ "id": 103, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1109, + "referencedDeclaration": 1156, "src": "658:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1109", + "typeIdentifier": "t_contract$_SafeERC20_$1156", "typeString": "library SafeERC20" } }, @@ -2178,10 +2240,10 @@ "id": 104, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 965, + "referencedDeclaration": 1012, "src": "672:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } } @@ -2191,7 +2253,7 @@ "id": 108, "name": "DAYS_PER_YEAR", "nodeType": "VariableDeclaration", - "scope": 487, + "scope": 524, "src": "687:43:1", "stateVariable": true, "storageLocation": "default", @@ -2267,7 +2329,7 @@ "id": 115, "name": "_minerType", "nodeType": "VariableDeclaration", - "scope": 487, + "scope": 524, "src": "850:25:1", "stateVariable": true, "storageLocation": "default", @@ -2293,7 +2355,7 @@ "id": 117, "name": "_category", "nodeType": "VariableDeclaration", - "scope": 487, + "scope": 524, "src": "882:23:1", "stateVariable": true, "storageLocation": "default", @@ -2319,7 +2381,7 @@ "id": 119, "name": "_miner", "nodeType": "VariableDeclaration", - "scope": 487, + "scope": 524, "src": "912:22:1", "stateVariable": true, "storageLocation": "default", @@ -2345,12 +2407,12 @@ "id": 121, "name": "_token", "nodeType": "VariableDeclaration", - "scope": 487, + "scope": 524, "src": "941:21:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" }, "typeName": { @@ -2358,10 +2420,10 @@ "id": 120, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 965, + "referencedDeclaration": 1012, "src": "941:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, @@ -2373,7 +2435,7 @@ "id": 123, "name": "_state", "nodeType": "VariableDeclaration", - "scope": 487, + "scope": 524, "src": "971:25:1", "stateVariable": true, "storageLocation": "default", @@ -2401,7 +2463,7 @@ "id": 125, "name": "_mining", "nodeType": "VariableDeclaration", - "scope": 487, + "scope": 524, "src": "1003:20:1", "stateVariable": true, "storageLocation": "default", @@ -2427,7 +2489,7 @@ "id": 127, "name": "_currentYear", "nodeType": "VariableDeclaration", - "scope": 487, + "scope": 524, "src": "1030:26:1", "stateVariable": true, "storageLocation": "default", @@ -2453,7 +2515,7 @@ "id": 129, "name": "_currentDay", "nodeType": "VariableDeclaration", - "scope": 487, + "scope": 524, "src": "1063:26:1", "stateVariable": true, "storageLocation": "default", @@ -2479,7 +2541,7 @@ "id": 131, "name": "_currentYearSupply", "nodeType": "VariableDeclaration", - "scope": 487, + "scope": 524, "src": "1096:34:1", "stateVariable": true, "storageLocation": "default", @@ -2502,26 +2564,189 @@ }, { "body": { - "id": 166, + "id": 176, "nodeType": "Block", - "src": "1329:146:1", + "src": "1329:206:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 150, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 149, + "name": "category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 135, + "src": "1358:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 150, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1370:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1358:13:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 152, + "name": "category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 135, + "src": "1375:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "35", + "id": 153, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1387:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "src": "1375:13:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1358:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 148, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1174, + 1175 + ], + "referencedDeclaration": 1174, + "src": "1350:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1350:39:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 157, + "nodeType": "ExpressionStatement", + "src": "1350:39:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 160, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 148, + "id": 158, "name": "_minerType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 115, - "src": "1342:10:1", + "src": "1402:10:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -2531,118 +2756,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 149, + "id": 159, "name": "minerType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 133, - "src": "1355:9:1", + "src": "1415:9:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "src": "1342:22:1", + "src": "1402:22:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 151, + "id": 161, "nodeType": "ExpressionStatement", - "src": "1342:22:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 154, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 152, - "name": "_category", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 117, - "src": "1375:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 153, - "name": "category", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 135, - "src": "1387:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "1375:20:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 155, - "nodeType": "ExpressionStatement", - "src": "1375:20:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 158, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 156, - "name": "_miner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119, - "src": "1406:6:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 157, - "name": "ownerAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 137, - "src": "1415:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1406:21:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 159, - "nodeType": "ExpressionStatement", - "src": "1406:21:1" + "src": "1402:22:1" }, { "expression": { @@ -2654,14 +2787,106 @@ "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 160, + "id": 162, + "name": "_category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 117, + "src": "1435:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 163, + "name": "category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 135, + "src": "1447:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "1435:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 165, + "nodeType": "ExpressionStatement", + "src": "1435:20:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 166, + "name": "_miner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "1466:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 167, + "name": "ownerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 137, + "src": "1475:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1466:21:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 169, + "nodeType": "ExpressionStatement", + "src": "1466:21:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 170, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 121, - "src": "1438:6:1", + "src": "1498:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, @@ -2672,12 +2897,12 @@ "arguments": [ { "argumentTypes": null, - "id": 162, + "id": 172, "name": "tokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 139, - "src": "1454:12:1", + "src": "1514:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2691,18 +2916,18 @@ "typeString": "address" } ], - "id": 161, + "id": 171, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 965, - "src": "1447:6:1", + "referencedDeclaration": 1012, + "src": "1507:6:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$965_$", + "typeIdentifier": "t_type$_t_contract$_IERC20_$1012_$", "typeString": "type(contract IERC20)" } }, - "id": 163, + "id": 173, "isConstant": false, "isLValue": false, "isPure": false, @@ -2710,26 +2935,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1447:20:1", + "src": "1507:20:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, - "src": "1438:29:1", + "src": "1498:29:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, - "id": 165, + "id": 175, "nodeType": "ExpressionStatement", - "src": "1438:29:1" + "src": "1498:29:1" } ] }, "documentation": null, - "id": 167, + "id": 177, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -2743,10 +2968,10 @@ "name": "AlgoSystemRole", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 661, + "referencedDeclaration": 698, "src": "1238:14:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AlgoSystemRole_$661_$", + "typeIdentifier": "t_type$_t_contract$_AlgoSystemRole_$698_$", "typeString": "type(contract AlgoSystemRole)" } }, @@ -2781,10 +3006,10 @@ "name": "AlgoSupervisorRole", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 574, + "referencedDeclaration": 611, "src": "1292:18:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AlgoSupervisorRole_$574_$", + "typeIdentifier": "t_type$_t_contract$_AlgoSupervisorRole_$611_$", "typeString": "type(contract AlgoSupervisorRole)" } }, @@ -2803,7 +3028,7 @@ "id": 133, "name": "minerType", "nodeType": "VariableDeclaration", - "scope": 167, + "scope": 177, "src": "1151:16:1", "stateVariable": false, "storageLocation": "default", @@ -2829,7 +3054,7 @@ "id": 135, "name": "category", "nodeType": "VariableDeclaration", - "scope": 167, + "scope": 177, "src": "1169:14:1", "stateVariable": false, "storageLocation": "default", @@ -2855,7 +3080,7 @@ "id": 137, "name": "ownerAddress", "nodeType": "VariableDeclaration", - "scope": 167, + "scope": 177, "src": "1185:20:1", "stateVariable": false, "storageLocation": "default", @@ -2881,7 +3106,7 @@ "id": 139, "name": "tokenAddress", "nodeType": "VariableDeclaration", - "scope": 167, + "scope": 177, "src": "1207:20:1", "stateVariable": false, "storageLocation": "default", @@ -2912,17 +3137,17 @@ "parameters": [], "src": "1329:0:1" }, - "scope": 487, - "src": "1139:336:1", + "scope": 524, + "src": "1139:396:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 177, + "id": 187, "nodeType": "Block", - "src": "1504:60:1", + "src": "1564:60:1", "statements": [ { "expression": { @@ -2934,7 +3159,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 173, + "id": 183, "isConstant": false, "isLValue": false, "isPure": false, @@ -2943,18 +3168,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 170, + "id": 180, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1124, - "src": "1523:3:1", + "referencedDeclaration": 1171, + "src": "1583:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 171, + "id": 181, "isConstant": false, "isLValue": false, "isPure": false, @@ -2962,7 +3187,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1523:10:1", + "src": "1583:10:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2972,18 +3197,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 172, + "id": 182, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 119, - "src": "1537:6:1", + "src": "1597:6:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1523:20:1", + "src": "1583:20:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2997,21 +3222,21 @@ "typeString": "bool" } ], - "id": 169, + "id": 179, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "1515:7:1", + "referencedDeclaration": 1174, + "src": "1575:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 174, + "id": 184, "isConstant": false, "isLValue": false, "isPure": false, @@ -3019,41 +3244,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1515:29:1", + "src": "1575:29:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 175, + "id": 185, "nodeType": "ExpressionStatement", - "src": "1515:29:1" + "src": "1575:29:1" }, { - "id": 176, + "id": 186, "nodeType": "PlaceholderStatement", - "src": "1555:1:1" + "src": "1615:1:1" } ] }, "documentation": null, - "id": 178, + "id": 188, "name": "onlyMiner", "nodeType": "ModifierDefinition", "parameters": { - "id": 168, + "id": 178, "nodeType": "ParameterList", "parameters": [], - "src": "1501:2:1" + "src": "1561:2:1" }, - "src": "1483:81:1", + "src": "1543:81:1", "visibility": "internal" }, { "body": { - "id": 221, + "id": 231, "nodeType": "Block", - "src": "1621:326:1", + "src": "1681:326:1", "statements": [ { "expression": { @@ -3065,19 +3290,19 @@ "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" }, - "id": 187, + "id": 197, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 184, + "id": 194, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "1640:6:1", + "src": "1700:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -3089,18 +3314,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 185, + "id": 195, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "1650:10:1", + "src": "1710:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 186, + "id": 196, "isConstant": false, "isLValue": false, "isPure": true, @@ -3108,13 +3333,13 @@ "memberName": "Deactivated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1650:22:1", + "src": "1710:22:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "1640:32:1", + "src": "1700:32:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3128,21 +3353,21 @@ "typeString": "bool" } ], - "id": 183, + "id": 193, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "1632:7:1", + "referencedDeclaration": 1174, + "src": "1692:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 188, + "id": 198, "isConstant": false, "isLValue": false, "isPure": false, @@ -3150,15 +3375,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1632:41:1", + "src": "1692:41:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 189, + "id": 199, "nodeType": "ExpressionStatement", - "src": "1632:41:1" + "src": "1692:41:1" }, { "condition": { @@ -3167,19 +3392,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 192, + "id": 202, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 190, + "id": 200, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 131, - "src": "1689:18:1", + "src": "1749:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3190,14 +3415,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 191, + "id": 201, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1711:1:1", + "src": "1771:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3205,33 +3430,33 @@ }, "value": "0" }, - "src": "1689:23:1", + "src": "1749:23:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 215, + "id": 225, "nodeType": "IfStatement", - "src": "1686:212:1", + "src": "1746:212:1", "trueBody": { - "id": 214, + "id": 224, "nodeType": "Block", - "src": "1714:184:1", + "src": "1774:184:1", "statements": [ { "assignments": [ - 194 + 204 ], "declarations": [ { "constant": false, - "id": 194, + "id": 204, "name": "currentBalance", "nodeType": "VariableDeclaration", - "scope": 222, - "src": "1729:22:1", + "scope": 232, + "src": "1789:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3239,10 +3464,10 @@ "typeString": "uint256" }, "typeName": { - "id": 193, + "id": 203, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1729:7:1", + "src": "1789:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3252,7 +3477,7 @@ "visibility": "internal" } ], - "id": 201, + "id": 211, "initialValue": { "argumentTypes": null, "arguments": [ @@ -3261,14 +3486,14 @@ "arguments": [ { "argumentTypes": null, - "id": 198, + "id": 208, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1153, - "src": "1779:4:1", + "referencedDeclaration": 1200, + "src": "1839:4:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoMiner_$487", + "typeIdentifier": "t_contract$_AlgoMiner_$524", "typeString": "contract AlgoMiner" } } @@ -3276,24 +3501,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_AlgoMiner_$487", + "typeIdentifier": "t_contract$_AlgoMiner_$524", "typeString": "contract AlgoMiner" } ], - "id": 197, + "id": 207, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1771:7:1", + "src": "1831:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 199, + "id": 209, "isConstant": false, "isLValue": false, "isPure": false, @@ -3301,7 +3526,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1771:13:1", + "src": "1831:13:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3317,32 +3542,32 @@ ], "expression": { "argumentTypes": null, - "id": 195, + "id": 205, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 121, - "src": "1754:6:1", + "src": "1814:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, - "id": 196, + "id": 206, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 910, - "src": "1754:16:1", + "referencedDeclaration": 957, + "src": "1814:16:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 200, + "id": 210, "isConstant": false, "isLValue": false, "isPure": false, @@ -3350,14 +3575,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1754:31:1", + "src": "1814:31:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1729:56:1" + "src": "1789:56:1" }, { "expression": { @@ -3369,19 +3594,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 205, + "id": 215, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 203, + "id": 213, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 194, - "src": "1810:14:1", + "referencedDeclaration": 204, + "src": "1870:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3392,14 +3617,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 204, + "id": 214, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1828:1:1", + "src": "1888:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3407,7 +3632,7 @@ }, "value": "0" }, - "src": "1810:19:1", + "src": "1870:19:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3421,21 +3646,21 @@ "typeString": "bool" } ], - "id": 202, + "id": 212, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "1802:7:1", + "referencedDeclaration": 1174, + "src": "1862:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 206, + "id": 216, "isConstant": false, "isLValue": false, "isPure": false, @@ -3443,32 +3668,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1802:28:1", + "src": "1862:28:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 207, + "id": 217, "nodeType": "ExpressionStatement", - "src": "1802:28:1" + "src": "1862:28:1" }, { "expression": { "argumentTypes": null, - "id": 212, + "id": 222, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 208, + "id": 218, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 131, - "src": "1847:18:1", + "src": "1907:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3482,19 +3707,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 211, + "id": 221, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 209, + "id": 219, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 194, - "src": "1868:14:1", + "referencedDeclaration": 204, + "src": "1928:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3505,14 +3730,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 210, + "id": 220, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1885:1:1", + "src": "1945:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -3520,21 +3745,21 @@ }, "value": "2" }, - "src": "1868:18:1", + "src": "1928:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1847:39:1", + "src": "1907:39:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 213, + "id": 223, "nodeType": "ExpressionStatement", - "src": "1847:39:1" + "src": "1907:39:1" } ] } @@ -3542,19 +3767,19 @@ { "expression": { "argumentTypes": null, - "id": 219, + "id": 229, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 216, + "id": 226, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "1910:6:1", + "src": "1970:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -3566,18 +3791,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 217, + "id": 227, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "1919:10:1", + "src": "1979:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 218, + "id": 228, "isConstant": false, "isLValue": false, "isPure": true, @@ -3585,76 +3810,76 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1919:20:1", + "src": "1979:20:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "1910:29:1", + "src": "1970:29:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 220, + "id": 230, "nodeType": "ExpressionStatement", - "src": "1910:29:1" + "src": "1970:29:1" } ] }, "documentation": null, - "id": 222, + "id": 232, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 181, + "id": 191, "modifierName": { "argumentTypes": null, - "id": 180, + "id": 190, "name": "onlyCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, - "src": "1608:12:1", + "src": "1668:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1608:12:1" + "src": "1668:12:1" } ], "name": "activateMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 179, + "id": 189, "nodeType": "ParameterList", "parameters": [], - "src": "1598:2:1" + "src": "1658:2:1" }, "payable": false, "returnParameters": { - "id": 182, + "id": 192, "nodeType": "ParameterList", "parameters": [], - "src": "1621:0:1" + "src": "1681:0:1" }, - "scope": 487, - "src": "1576:371:1", + "scope": 524, + "src": "1636:371:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 243, + "id": 253, "nodeType": "Block", - "src": "2002:138:1", + "src": "2062:138:1", "statements": [ { "expression": { @@ -3666,19 +3891,19 @@ "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" }, - "id": 231, + "id": 241, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 228, + "id": 238, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "2021:6:1", + "src": "2081:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -3690,18 +3915,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 229, + "id": 239, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "2031:10:1", + "src": "2091:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 230, + "id": 240, "isConstant": false, "isLValue": false, "isPure": true, @@ -3709,13 +3934,13 @@ "memberName": "Deactivated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2031:22:1", + "src": "2091:22:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2021:32:1", + "src": "2081:32:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3729,21 +3954,21 @@ "typeString": "bool" } ], - "id": 227, + "id": 237, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "2013:7:1", + "referencedDeclaration": 1174, + "src": "2073:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 232, + "id": 242, "isConstant": false, "isLValue": false, "isPure": false, @@ -3751,32 +3976,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2013:41:1", + "src": "2073:41:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 233, + "id": 243, "nodeType": "ExpressionStatement", - "src": "2013:41:1" + "src": "2073:41:1" }, { "expression": { "argumentTypes": null, - "id": 237, + "id": 247, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 234, + "id": 244, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "2075:6:1", + "src": "2135:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -3788,18 +4013,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 235, + "id": 245, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "2084:10:1", + "src": "2144:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 236, + "id": 246, "isConstant": false, "isLValue": false, "isPure": true, @@ -3807,38 +4032,38 @@ "memberName": "Deactivated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2084:22:1", + "src": "2144:22:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2075:31:1", + "src": "2135:31:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 238, + "id": 248, "nodeType": "ExpressionStatement", - "src": "2075:31:1" + "src": "2135:31:1" }, { "expression": { "argumentTypes": null, - "id": 241, + "id": 251, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 239, + "id": 249, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "2117:7:1", + "src": "2177:7:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3849,14 +4074,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 240, + "id": 250, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2127:5:1", + "src": "2187:5:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3864,70 +4089,70 @@ }, "value": "false" }, - "src": "2117:15:1", + "src": "2177:15:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 242, + "id": 252, "nodeType": "ExpressionStatement", - "src": "2117:15:1" + "src": "2177:15:1" } ] }, "documentation": null, - "id": 244, + "id": 254, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 225, + "id": 235, "modifierName": { "argumentTypes": null, - "id": 224, + "id": 234, "name": "onlyCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, - "src": "1989:12:1", + "src": "2049:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1989:12:1" + "src": "2049:12:1" } ], "name": "deactivateMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 223, + "id": 233, "nodeType": "ParameterList", "parameters": [], - "src": "1979:2:1" + "src": "2039:2:1" }, "payable": false, "returnParameters": { - "id": 226, + "id": 236, "nodeType": "ParameterList", "parameters": [], - "src": "2002:0:1" + "src": "2062:0:1" }, - "scope": 487, - "src": "1955:185:1", + "scope": 524, + "src": "2015:185:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 270, + "id": 280, "nodeType": "Block", - "src": "2215:142:1", + "src": "2275:142:1", "statements": [ { "expression": { @@ -3939,19 +4164,19 @@ "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" }, - "id": 255, + "id": 265, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 252, + "id": 262, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "2234:6:1", + "src": "2294:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -3963,18 +4188,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 253, + "id": 263, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "2244:10:1", + "src": "2304:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 254, + "id": 264, "isConstant": false, "isLValue": false, "isPure": true, @@ -3982,13 +4207,13 @@ "memberName": "Deactivated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2244:22:1", + "src": "2304:22:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2234:32:1", + "src": "2294:32:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4002,21 +4227,21 @@ "typeString": "bool" } ], - "id": 251, + "id": 261, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "2226:7:1", + "referencedDeclaration": 1174, + "src": "2286:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 256, + "id": 266, "isConstant": false, "isLValue": false, "isPure": false, @@ -4024,15 +4249,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2226:41:1", + "src": "2286:41:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 257, + "id": 267, "nodeType": "ExpressionStatement", - "src": "2226:41:1" + "src": "2286:41:1" }, { "expression": { @@ -4040,12 +4265,12 @@ "arguments": [ { "argumentTypes": null, - "id": 261, + "id": 271, "name": "newMinerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 246, - "src": "2300:15:1", + "referencedDeclaration": 256, + "src": "2360:15:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4059,14 +4284,14 @@ "arguments": [ { "argumentTypes": null, - "id": 265, + "id": 275, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1153, - "src": "2342:4:1", + "referencedDeclaration": 1200, + "src": "2402:4:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoMiner_$487", + "typeIdentifier": "t_contract$_AlgoMiner_$524", "typeString": "contract AlgoMiner" } } @@ -4074,24 +4299,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_AlgoMiner_$487", + "typeIdentifier": "t_contract$_AlgoMiner_$524", "typeString": "contract AlgoMiner" } ], - "id": 264, + "id": 274, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2334:7:1", + "src": "2394:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 266, + "id": 276, "isConstant": false, "isLValue": false, "isPure": false, @@ -4099,7 +4324,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2334:13:1", + "src": "2394:13:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4115,32 +4340,32 @@ ], "expression": { "argumentTypes": null, - "id": 262, + "id": 272, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 121, - "src": "2317:6:1", + "src": "2377:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, - "id": 263, + "id": 273, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 910, - "src": "2317:16:1", + "referencedDeclaration": 957, + "src": "2377:16:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 267, + "id": 277, "isConstant": false, "isLValue": false, "isPure": false, @@ -4148,7 +4373,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2317:31:1", + "src": "2377:31:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4168,32 +4393,32 @@ ], "expression": { "argumentTypes": null, - "id": 258, + "id": 268, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 121, - "src": "2280:6:1", + "src": "2340:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, - "id": 260, + "id": 270, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 990, - "src": "2280:19:1", + "referencedDeclaration": 1037, + "src": "2340:19:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$965_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$965_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1012_$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 268, + "id": 278, "isConstant": false, "isLValue": false, "isPure": false, @@ -4201,57 +4426,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2280:69:1", + "src": "2340:69:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 269, + "id": 279, "nodeType": "ExpressionStatement", - "src": "2280:69:1" + "src": "2340:69:1" } ] }, "documentation": null, - "id": 271, + "id": 281, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 249, + "id": 259, "modifierName": { "argumentTypes": null, - "id": 248, + "id": 258, "name": "onlyCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, - "src": "2202:12:1", + "src": "2262:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2202:12:1" + "src": "2262:12:1" } ], "name": "migrateMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 247, + "id": 257, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 246, + "id": 256, "name": "newMinerAddress", "nodeType": "VariableDeclaration", - "scope": 271, - "src": "2170:23:1", + "scope": 281, + "src": "2230:23:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4259,10 +4484,10 @@ "typeString": "address" }, "typeName": { - "id": 245, + "id": 255, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2170:7:1", + "src": "2230:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4272,26 +4497,26 @@ "visibility": "internal" } ], - "src": "2169:25:1" + "src": "2229:25:1" }, "payable": false, "returnParameters": { - "id": 250, + "id": 260, "nodeType": "ParameterList", "parameters": [], - "src": "2215:0:1" + "src": "2275:0:1" }, - "scope": 487, - "src": "2148:209:1", + "scope": 524, + "src": "2208:209:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 288, + "id": 298, "nodeType": "Block", - "src": "2410:108:1", + "src": "2470:108:1", "statements": [ { "expression": { @@ -4303,19 +4528,19 @@ "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" }, - "id": 280, + "id": 290, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 277, + "id": 287, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "2429:6:1", + "src": "2489:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -4327,18 +4552,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 278, + "id": 288, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "2439:10:1", + "src": "2499:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 279, + "id": 289, "isConstant": false, "isLValue": false, "isPure": true, @@ -4346,13 +4571,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2439:20:1", + "src": "2499:20:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2429:30:1", + "src": "2489:30:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4366,21 +4591,21 @@ "typeString": "bool" } ], - "id": 276, + "id": 286, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "2421:7:1", + "referencedDeclaration": 1174, + "src": "2481:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 281, + "id": 291, "isConstant": false, "isLValue": false, "isPure": false, @@ -4388,32 +4613,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2421:39:1", + "src": "2481:39:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 282, + "id": 292, "nodeType": "ExpressionStatement", - "src": "2421:39:1" + "src": "2481:39:1" }, { "expression": { "argumentTypes": null, - "id": 286, + "id": 296, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 283, + "id": 293, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "2481:6:1", + "src": "2541:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -4425,18 +4650,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 284, + "id": 294, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "2490:10:1", + "src": "2550:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 285, + "id": 295, "isConstant": false, "isLValue": false, "isPure": true, @@ -4444,76 +4669,76 @@ "memberName": "Suspended", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2490:20:1", + "src": "2550:20:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2481:29:1", + "src": "2541:29:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 287, + "id": 297, "nodeType": "ExpressionStatement", - "src": "2481:29:1" + "src": "2541:29:1" } ] }, "documentation": null, - "id": 289, + "id": 299, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 274, + "id": 284, "modifierName": { "argumentTypes": null, - "id": 273, + "id": 283, "name": "onlySupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 515, - "src": "2395:14:1", + "referencedDeclaration": 552, + "src": "2455:14:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2395:14:1" + "src": "2455:14:1" } ], "name": "pauseMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 272, + "id": 282, "nodeType": "ParameterList", "parameters": [], - "src": "2385:2:1" + "src": "2445:2:1" }, "payable": false, "returnParameters": { - "id": 275, + "id": 285, "nodeType": "ParameterList", "parameters": [], - "src": "2410:0:1" + "src": "2470:0:1" }, - "scope": 487, - "src": "2365:153:1", + "scope": 524, + "src": "2425:153:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 306, + "id": 316, "nodeType": "Block", - "src": "2572:100:1", + "src": "2632:100:1", "statements": [ { "expression": { @@ -4525,19 +4750,19 @@ "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" }, - "id": 298, + "id": 308, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 295, + "id": 305, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "2591:6:1", + "src": "2651:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -4549,18 +4774,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 296, + "id": 306, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "2601:10:1", + "src": "2661:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 297, + "id": 307, "isConstant": false, "isLValue": false, "isPure": true, @@ -4568,13 +4793,13 @@ "memberName": "Suspended", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2601:20:1", + "src": "2661:20:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2591:30:1", + "src": "2651:30:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4588,21 +4813,21 @@ "typeString": "bool" } ], - "id": 294, + "id": 304, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "2583:7:1", + "referencedDeclaration": 1174, + "src": "2643:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 299, + "id": 309, "isConstant": false, "isLValue": false, "isPure": false, @@ -4610,32 +4835,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2583:39:1", + "src": "2643:39:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 300, + "id": 310, "nodeType": "ExpressionStatement", - "src": "2583:39:1" + "src": "2643:39:1" }, { "expression": { "argumentTypes": null, - "id": 304, + "id": 314, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 301, + "id": 311, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "2635:6:1", + "src": "2695:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -4647,18 +4872,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 302, + "id": 312, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "2644:10:1", + "src": "2704:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 303, + "id": 313, "isConstant": false, "isLValue": false, "isPure": true, @@ -4666,76 +4891,76 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2644:20:1", + "src": "2704:20:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2635:29:1", + "src": "2695:29:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 305, + "id": 315, "nodeType": "ExpressionStatement", - "src": "2635:29:1" + "src": "2695:29:1" } ] }, "documentation": null, - "id": 307, + "id": 317, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 292, + "id": 302, "modifierName": { "argumentTypes": null, - "id": 291, + "id": 301, "name": "onlySupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 515, - "src": "2557:14:1", + "referencedDeclaration": 552, + "src": "2617:14:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2557:14:1" + "src": "2617:14:1" } ], "name": "resumeMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 290, + "id": 300, "nodeType": "ParameterList", "parameters": [], - "src": "2547:2:1" + "src": "2607:2:1" }, "payable": false, "returnParameters": { - "id": 293, + "id": 303, "nodeType": "ParameterList", "parameters": [], - "src": "2572:0:1" + "src": "2632:0:1" }, - "scope": 487, - "src": "2526:146:1", + "scope": 524, + "src": "2586:146:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 334, + "id": 344, "nodeType": "Block", - "src": "2736:160:1", + "src": "2796:160:1", "statements": [ { "expression": { @@ -4747,19 +4972,19 @@ "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" }, - "id": 316, + "id": 326, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 313, + "id": 323, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "2755:6:1", + "src": "2815:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -4771,18 +4996,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 314, + "id": 324, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "2765:10:1", + "src": "2825:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 315, + "id": 325, "isConstant": false, "isLValue": false, "isPure": true, @@ -4790,13 +5015,13 @@ "memberName": "Stopped", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2765:18:1", + "src": "2825:18:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2755:28:1", + "src": "2815:28:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4810,21 +5035,21 @@ "typeString": "bool" } ], - "id": 312, + "id": 322, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "2747:7:1", + "referencedDeclaration": 1174, + "src": "2807:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 317, + "id": 327, "isConstant": false, "isLValue": false, "isPure": false, @@ -4832,128 +5057,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2747:37:1", + "src": "2807:37:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 318, + "id": 328, "nodeType": "ExpressionStatement", - "src": "2747:37:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 322, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 319, - "name": "_state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2805:6:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", - "typeString": "enum AlgoMiner.MinerState" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 320, - "name": "MinerState", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "2814:10:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", - "typeString": "type(enum AlgoMiner.MinerState)" - } - }, - "id": 321, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Stopped", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2814:18:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", - "typeString": "enum AlgoMiner.MinerState" - } - }, - "src": "2805:27:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", - "typeString": "enum AlgoMiner.MinerState" - } - }, - "id": 323, - "nodeType": "ExpressionStatement", - "src": "2805:27:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 326, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 324, - "name": "_mining", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "2843:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 325, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2853:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "2843:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 327, - "nodeType": "ExpressionStatement", - "src": "2843:15:1" + "src": "2807:37:1" }, { "expression": { @@ -4965,12 +5077,125 @@ "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 328, + "id": 329, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "2865:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 330, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "2874:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 331, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Stopped", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2874:18:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "2865:27:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "id": 333, + "nodeType": "ExpressionStatement", + "src": "2865:27:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 334, + "name": "_mining", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125, + "src": "2903:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 335, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2913:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "2903:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 337, + "nodeType": "ExpressionStatement", + "src": "2903:15:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 338, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 119, - "src": "2869:6:1", + "src": "2929:6:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4984,14 +5209,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 330, + "id": 340, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2886:1:1", + "src": "2946:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5007,20 +5232,20 @@ "typeString": "int_const 0" } ], - "id": 329, + "id": 339, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2878:7:1", + "src": "2938:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 331, + "id": 341, "isConstant": false, "isLValue": false, "isPure": true, @@ -5028,76 +5253,76 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2878:10:1", + "src": "2938:10:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2869:19:1", + "src": "2929:19:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 333, + "id": 343, "nodeType": "ExpressionStatement", - "src": "2869:19:1" + "src": "2929:19:1" } ] }, "documentation": null, - "id": 335, + "id": 345, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 310, + "id": 320, "modifierName": { "argumentTypes": null, - "id": 309, + "id": 319, "name": "onlySupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 515, - "src": "2721:14:1", + "referencedDeclaration": 552, + "src": "2781:14:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2721:14:1" + "src": "2781:14:1" } ], "name": "stopAndRemoveOwnership", "nodeType": "FunctionDefinition", "parameters": { - "id": 308, + "id": 318, "nodeType": "ParameterList", "parameters": [], - "src": "2711:2:1" + "src": "2771:2:1" }, "payable": false, "returnParameters": { - "id": 311, + "id": 321, "nodeType": "ParameterList", "parameters": [], - "src": "2736:0:1" + "src": "2796:0:1" }, - "scope": 487, - "src": "2680:216:1", + "scope": 524, + "src": "2740:216:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 358, + "id": 368, "nodeType": "Block", - "src": "2971:133:1", + "src": "3031:133:1", "statements": [ { "expression": { @@ -5109,19 +5334,19 @@ "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" }, - "id": 346, + "id": 356, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 343, + "id": 353, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "2990:6:1", + "src": "3050:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -5133,18 +5358,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 344, + "id": 354, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "3000:10:1", + "src": "3060:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 345, + "id": 355, "isConstant": false, "isLValue": false, "isPure": true, @@ -5152,13 +5377,13 @@ "memberName": "Stopped", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3000:18:1", + "src": "3060:18:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2990:28:1", + "src": "3050:28:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5172,21 +5397,21 @@ "typeString": "bool" } ], - "id": 342, + "id": 352, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "2982:7:1", + "referencedDeclaration": 1174, + "src": "3042:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 347, + "id": 357, "isConstant": false, "isLValue": false, "isPure": false, @@ -5194,32 +5419,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2982:37:1", + "src": "3042:37:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 348, + "id": 358, "nodeType": "ExpressionStatement", - "src": "2982:37:1" + "src": "3042:37:1" }, { "expression": { "argumentTypes": null, - "id": 352, + "id": 362, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 349, + "id": 359, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "3032:6:1", + "src": "3092:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -5231,18 +5456,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 350, + "id": 360, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "3041:10:1", + "src": "3101:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 351, + "id": 361, "isConstant": false, "isLValue": false, "isPure": true, @@ -5250,38 +5475,38 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3041:20:1", + "src": "3101:20:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3032:29:1", + "src": "3092:29:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 353, + "id": 363, "nodeType": "ExpressionStatement", - "src": "3032:29:1" + "src": "3092:29:1" }, { "expression": { "argumentTypes": null, - "id": 356, + "id": 366, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 354, + "id": 364, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 119, - "src": "3072:6:1", + "src": "3132:6:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5291,68 +5516,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 355, + "id": 365, "name": "newOwnerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 337, - "src": "3081:15:1", + "referencedDeclaration": 347, + "src": "3141:15:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3072:24:1", + "src": "3132:24:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 357, + "id": 367, "nodeType": "ExpressionStatement", - "src": "3072:24:1" + "src": "3132:24:1" } ] }, "documentation": null, - "id": 359, + "id": 369, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 340, + "id": 350, "modifierName": { "argumentTypes": null, - "id": 339, + "id": 349, "name": "onlySupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 515, - "src": "2956:14:1", + "referencedDeclaration": 552, + "src": "3016:14:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2956:14:1" + "src": "3016:14:1" } ], "name": "resetMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 338, + "id": 348, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 337, + "id": 347, "name": "newOwnerAddress", "nodeType": "VariableDeclaration", - "scope": 359, - "src": "2924:23:1", + "scope": 369, + "src": "2984:23:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5360,10 +5585,10 @@ "typeString": "address" }, "typeName": { - "id": 336, + "id": 346, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2924:7:1", + "src": "2984:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5373,26 +5598,26 @@ "visibility": "internal" } ], - "src": "2923:25:1" + "src": "2983:25:1" }, "payable": false, "returnParameters": { - "id": 341, + "id": 351, "nodeType": "ParameterList", "parameters": [], - "src": "2971:0:1" + "src": "3031:0:1" }, - "scope": 487, - "src": "2904:200:1", + "scope": 524, + "src": "2964:200:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 380, + "id": 390, "nodeType": "Block", - "src": "3152:121:1", + "src": "3212:121:1", "statements": [ { "expression": { @@ -5404,19 +5629,19 @@ "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" }, - "id": 368, + "id": 378, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 365, + "id": 375, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "3171:6:1", + "src": "3231:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -5428,18 +5653,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 366, + "id": 376, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "3181:10:1", + "src": "3241:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 367, + "id": 377, "isConstant": false, "isLValue": false, "isPure": true, @@ -5447,13 +5672,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3181:20:1", + "src": "3241:20:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3171:30:1", + "src": "3231:30:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5467,21 +5692,21 @@ "typeString": "bool" } ], - "id": 364, + "id": 374, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "3163:7:1", + "referencedDeclaration": 1174, + "src": "3223:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 369, + "id": 379, "isConstant": false, "isLValue": false, "isPure": false, @@ -5489,15 +5714,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3163:39:1", + "src": "3223:39:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 370, + "id": 380, "nodeType": "ExpressionStatement", - "src": "3163:39:1" + "src": "3223:39:1" }, { "expression": { @@ -5505,7 +5730,7 @@ "arguments": [ { "argumentTypes": null, - "id": 373, + "id": 383, "isConstant": false, "isLValue": false, "isPure": false, @@ -5513,15 +5738,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "3221:8:1", + "src": "3281:8:1", "subExpression": { "argumentTypes": null, - "id": 372, + "id": 382, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "3222:7:1", + "src": "3282:7:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5540,21 +5765,21 @@ "typeString": "bool" } ], - "id": 371, + "id": 381, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "3213:7:1", + "referencedDeclaration": 1174, + "src": "3273:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 374, + "id": 384, "isConstant": false, "isLValue": false, "isPure": false, @@ -5562,32 +5787,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3213:17:1", + "src": "3273:17:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 375, + "id": 385, "nodeType": "ExpressionStatement", - "src": "3213:17:1" + "src": "3273:17:1" }, { "expression": { "argumentTypes": null, - "id": 378, + "id": 388, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 376, + "id": 386, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "3251:7:1", + "src": "3311:7:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5598,14 +5823,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 377, + "id": 387, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3261:4:1", + "src": "3321:4:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5613,70 +5838,70 @@ }, "value": "true" }, - "src": "3251:14:1", + "src": "3311:14:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 379, + "id": 389, "nodeType": "ExpressionStatement", - "src": "3251:14:1" + "src": "3311:14:1" } ] }, "documentation": null, - "id": 381, + "id": 391, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 362, + "id": 372, "modifierName": { "argumentTypes": null, - "id": 361, + "id": 371, "name": "onlyMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 178, - "src": "3142:9:1", + "referencedDeclaration": 188, + "src": "3202:9:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3142:9:1" + "src": "3202:9:1" } ], "name": "startMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 360, + "id": 370, "nodeType": "ParameterList", "parameters": [], - "src": "3132:2:1" + "src": "3192:2:1" }, "payable": false, "returnParameters": { - "id": 363, + "id": 373, "nodeType": "ParameterList", "parameters": [], - "src": "3152:0:1" + "src": "3212:0:1" }, - "scope": 487, - "src": "3112:161:1", + "scope": 524, + "src": "3172:161:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 401, + "id": 411, "nodeType": "Block", - "src": "3320:121:1", + "src": "3380:121:1", "statements": [ { "expression": { @@ -5688,19 +5913,19 @@ "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" }, - "id": 390, + "id": 400, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 387, + "id": 397, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "3339:6:1", + "src": "3399:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -5712,18 +5937,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 388, + "id": 398, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "3349:10:1", + "src": "3409:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 389, + "id": 399, "isConstant": false, "isLValue": false, "isPure": true, @@ -5731,13 +5956,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3349:20:1", + "src": "3409:20:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3339:30:1", + "src": "3399:30:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5751,21 +5976,21 @@ "typeString": "bool" } ], - "id": 386, + "id": 396, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "3331:7:1", + "referencedDeclaration": 1174, + "src": "3391:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 391, + "id": 401, "isConstant": false, "isLValue": false, "isPure": false, @@ -5773,15 +5998,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3331:39:1", + "src": "3391:39:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 392, + "id": 402, "nodeType": "ExpressionStatement", - "src": "3331:39:1" + "src": "3391:39:1" }, { "expression": { @@ -5789,12 +6014,12 @@ "arguments": [ { "argumentTypes": null, - "id": 394, + "id": 404, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "3389:7:1", + "src": "3449:7:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5808,21 +6033,21 @@ "typeString": "bool" } ], - "id": 393, + "id": 403, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "3381:7:1", + "referencedDeclaration": 1174, + "src": "3441:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 395, + "id": 405, "isConstant": false, "isLValue": false, "isPure": false, @@ -5830,32 +6055,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3381:16:1", + "src": "3441:16:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 396, + "id": 406, "nodeType": "ExpressionStatement", - "src": "3381:16:1" + "src": "3441:16:1" }, { "expression": { "argumentTypes": null, - "id": 399, + "id": 409, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 397, + "id": 407, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "3418:7:1", + "src": "3478:7:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5866,14 +6091,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 398, + "id": 408, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3428:5:1", + "src": "3488:5:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5881,70 +6106,70 @@ }, "value": "false" }, - "src": "3418:15:1", + "src": "3478:15:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 400, + "id": 410, "nodeType": "ExpressionStatement", - "src": "3418:15:1" + "src": "3478:15:1" } ] }, "documentation": null, - "id": 402, + "id": 412, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 384, + "id": 394, "modifierName": { "argumentTypes": null, - "id": 383, + "id": 393, "name": "onlyMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 178, - "src": "3310:9:1", + "referencedDeclaration": 188, + "src": "3370:9:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3310:9:1" + "src": "3370:9:1" } ], "name": "stopMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 382, + "id": 392, "nodeType": "ParameterList", "parameters": [], - "src": "3300:2:1" + "src": "3360:2:1" }, "payable": false, "returnParameters": { - "id": 385, + "id": 395, "nodeType": "ParameterList", "parameters": [], - "src": "3320:0:1" + "src": "3380:0:1" }, - "scope": 487, - "src": "3281:160:1", + "scope": 524, + "src": "3341:160:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 469, + "id": 485, "nodeType": "Block", - "src": "3483:547:1", + "src": "3543:579:1", "statements": [ { "expression": { @@ -5956,19 +6181,19 @@ "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" }, - "id": 411, + "id": 421, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 408, + "id": 418, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, - "src": "3502:6:1", + "src": "3562:6:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" @@ -5980,18 +6205,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 409, + "id": 419, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, - "src": "3512:10:1", + "src": "3572:10:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 410, + "id": 420, "isConstant": false, "isLValue": false, "isPure": true, @@ -5999,13 +6224,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3512:20:1", + "src": "3572:20:1", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$113", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3502:30:1", + "src": "3562:30:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6019,21 +6244,21 @@ "typeString": "bool" } ], - "id": 407, + "id": 417, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "3494:7:1", + "referencedDeclaration": 1174, + "src": "3554:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 412, + "id": 422, "isConstant": false, "isLValue": false, "isPure": false, @@ -6041,15 +6266,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3494:39:1", + "src": "3554:39:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 413, + "id": 423, "nodeType": "ExpressionStatement", - "src": "3494:39:1" + "src": "3554:39:1" }, { "expression": { @@ -6057,12 +6282,12 @@ "arguments": [ { "argumentTypes": null, - "id": 415, + "id": 425, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "3552:7:1", + "src": "3612:7:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6076,21 +6301,21 @@ "typeString": "bool" } ], - "id": 414, + "id": 424, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, - "src": "3544:7:1", + "referencedDeclaration": 1174, + "src": "3604:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 416, + "id": 426, "isConstant": false, "isLValue": false, "isPure": false, @@ -6098,15 +6323,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3544:16:1", + "src": "3604:16:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 417, + "id": 427, "nodeType": "ExpressionStatement", - "src": "3544:16:1" + "src": "3604:16:1" }, { "condition": { @@ -6115,19 +6340,19 @@ "typeIdentifier": "t_uint16", "typeString": "uint16" }, - "id": 420, + "id": 430, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 418, + "id": 428, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 129, - "src": "3576:11:1", + "src": "3636:11:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -6138,14 +6363,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 419, + "id": 429, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3591:1:1", + "src": "3651:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6153,21 +6378,21 @@ }, "value": "0" }, - "src": "3576:16:1", + "src": "3636:16:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 454, + "id": 464, "nodeType": "Block", - "src": "3673:238:1", + "src": "3733:238:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 431, + "id": 441, "isConstant": false, "isLValue": false, "isPure": false, @@ -6175,15 +6400,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3688:13:1", + "src": "3748:13:1", "subExpression": { "argumentTypes": null, - "id": 430, + "id": 440, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 129, - "src": "3688:11:1", + "src": "3748:11:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -6194,9 +6419,9 @@ "typeString": "uint16" } }, - "id": 432, + "id": 442, "nodeType": "ExpressionStatement", - "src": "3688:13:1" + "src": "3748:13:1" }, { "condition": { @@ -6205,19 +6430,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 438, + "id": 448, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 433, + "id": 443, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 129, - "src": "3719:11:1", + "src": "3779:11:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -6234,19 +6459,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 436, + "id": 446, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 434, + "id": 444, "name": "DAYS_PER_YEAR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108, - "src": "3735:13:1", + "src": "3795:13:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6257,14 +6482,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 435, + "id": 445, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3751:1:1", + "src": "3811:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6272,45 +6497,45 @@ }, "value": "1" }, - "src": "3735:17:1", + "src": "3795:17:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 437, + "id": 447, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3734:19:1", + "src": "3794:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3719:34:1", + "src": "3779:34:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 453, + "id": 463, "nodeType": "IfStatement", - "src": "3716:184:1", + "src": "3776:184:1", "trueBody": { - "id": 452, + "id": 462, "nodeType": "Block", - "src": "3755:145:1", + "src": "3815:145:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 440, + "id": 450, "isConstant": false, "isLValue": false, "isPure": false, @@ -6318,15 +6543,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3774:14:1", + "src": "3834:14:1", "subExpression": { "argumentTypes": null, - "id": 439, + "id": 449, "name": "_currentYear", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 127, - "src": "3774:12:1", + "src": "3834:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6337,26 +6562,26 @@ "typeString": "uint8" } }, - "id": 441, + "id": 451, "nodeType": "ExpressionStatement", - "src": "3774:14:1" + "src": "3834:14:1" }, { "expression": { "argumentTypes": null, - "id": 444, + "id": 454, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 442, + "id": 452, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 129, - "src": "3807:11:1", + "src": "3867:11:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -6367,14 +6592,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 443, + "id": 453, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3821:1:1", + "src": "3881:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6382,32 +6607,32 @@ }, "value": "1" }, - "src": "3807:15:1", + "src": "3867:15:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 445, + "id": 455, "nodeType": "ExpressionStatement", - "src": "3807:15:1" + "src": "3867:15:1" }, { "expression": { "argumentTypes": null, - "id": 450, + "id": 460, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 446, + "id": 456, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 131, - "src": "3841:18:1", + "src": "3901:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6421,19 +6646,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 449, + "id": 459, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 447, + "id": 457, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 131, - "src": "3862:18:1", + "src": "3922:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6444,14 +6669,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 448, + "id": 458, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3883:1:1", + "src": "3943:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -6459,51 +6684,51 @@ }, "value": "2" }, - "src": "3862:22:1", + "src": "3922:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3841:43:1", + "src": "3901:43:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 451, + "id": 461, "nodeType": "ExpressionStatement", - "src": "3841:43:1" + "src": "3901:43:1" } ] } } ] }, - "id": 455, + "id": 465, "nodeType": "IfStatement", - "src": "3573:338:1", + "src": "3633:338:1", "trueBody": { - "id": 429, + "id": 439, "nodeType": "Block", - "src": "3594:73:1", + "src": "3654:73:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 423, + "id": 433, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 421, + "id": 431, "name": "_currentYear", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 127, - "src": "3609:12:1", + "src": "3669:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6514,14 +6739,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 422, + "id": 432, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3624:1:1", + "src": "3684:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6529,32 +6754,32 @@ }, "value": "1" }, - "src": "3609:16:1", + "src": "3669:16:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 424, + "id": 434, "nodeType": "ExpressionStatement", - "src": "3609:16:1" + "src": "3669:16:1" }, { "expression": { "argumentTypes": null, - "id": 427, + "id": 437, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 425, + "id": 435, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 129, - "src": "3640:11:1", + "src": "3700:11:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -6565,14 +6790,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 426, + "id": 436, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3654:1:1", + "src": "3714:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6580,31 +6805,31 @@ }, "value": "1" }, - "src": "3640:15:1", + "src": "3700:15:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 428, + "id": 438, "nodeType": "ExpressionStatement", - "src": "3640:15:1" + "src": "3700:15:1" } ] } }, { "assignments": [ - 457 + 467 ], "declarations": [ { "constant": false, - "id": 457, + "id": 467, "name": "tokens", "nodeType": "VariableDeclaration", - "scope": 470, - "src": "3923:14:1", + "scope": 486, + "src": "3983:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6612,10 +6837,10 @@ "typeString": "uint256" }, "typeName": { - "id": 456, + "id": 466, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3923:7:1", + "src": "3983:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6625,26 +6850,26 @@ "visibility": "internal" } ], - "id": 461, + "id": 471, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 460, + "id": 470, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 458, + "id": 468, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 131, - "src": "3940:18:1", + "src": "4000:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6654,25 +6879,25 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 459, + "id": 469, "name": "DAYS_PER_YEAR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108, - "src": "3961:13:1", + "src": "4021:13:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3940:34:1", + "src": "4000:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "3923:51:1" + "src": "3983:51:1" }, { "expression": { @@ -6680,12 +6905,106 @@ "arguments": [ { "argumentTypes": null, - "id": 465, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 473, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 467, + "src": "4055:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 474, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4064:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4055:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 472, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1174, + 1175 + ], + "referencedDeclaration": 1174, + "src": "4047:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4047:19:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 477, + "nodeType": "ExpressionStatement", + "src": "4047:19:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 481, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 119, - "src": "4007:6:1", + "src": "4099:6:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6693,12 +7012,12 @@ }, { "argumentTypes": null, - "id": 466, + "id": 482, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "4015:6:1", + "referencedDeclaration": 467, + "src": "4107:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6718,32 +7037,32 @@ ], "expression": { "argumentTypes": null, - "id": 462, + "id": 478, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 121, - "src": "3987:6:1", + "src": "4079:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, - "id": 464, + "id": 480, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 990, - "src": "3987:19:1", + "referencedDeclaration": 1037, + "src": "4079:19:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$965_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$965_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1012_$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 467, + "id": 483, "isConstant": false, "isLValue": false, "isPure": false, @@ -6751,175 +7070,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3987:35:1", + "src": "4079:35:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 468, - "nodeType": "ExpressionStatement", - "src": "3987:35:1" - } - ] - }, - "documentation": null, - "id": 470, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": null, - "id": 405, - "modifierName": { - "argumentTypes": null, - "id": 404, - "name": "onlySystem", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 602, - "src": "3472:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "3472:10:1" - } - ], - "name": "mine", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 403, - "nodeType": "ParameterList", - "parameters": [], - "src": "3462:2:1" - }, - "payable": false, - "returnParameters": { - "id": 406, - "nodeType": "ParameterList", - "parameters": [], - "src": "3483:0:1" - }, - "scope": 487, - "src": "3449:581:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 477, - "nodeType": "Block", - "src": "4088:30:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 475, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4106:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 474, - "id": 476, - "nodeType": "Return", - "src": "4099:11:1" - } - ] - }, - "documentation": null, - "id": 478, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "isAlgoMiner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 471, - "nodeType": "ParameterList", - "parameters": [], - "src": "4058:2:1" - }, - "payable": false, - "returnParameters": { - "id": 474, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 473, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 478, - "src": "4082:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 472, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4082:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4081:6:1" - }, - "scope": 487, - "src": "4038:80:1", - "stateMutability": "pure", - "superFunction": 668, - "visibility": "public" - }, - { - "body": { - "id": 485, - "nodeType": "Block", - "src": "4177:35:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 483, - "name": "_category", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 117, - "src": "4195:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "functionReturnParameters": 482, "id": 484, - "nodeType": "Return", - "src": "4188:16:1" + "nodeType": "ExpressionStatement", + "src": "4079:35:1" } ] }, @@ -6927,28 +7086,188 @@ "id": 486, "implemented": true, "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 415, + "modifierName": { + "argumentTypes": null, + "id": 414, + "name": "onlySystem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "3532:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3532:10:1" + } + ], + "name": "mine", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 413, + "nodeType": "ParameterList", + "parameters": [], + "src": "3522:2:1" + }, + "payable": false, + "returnParameters": { + "id": 416, + "nodeType": "ParameterList", + "parameters": [], + "src": "3543:0:1" + }, + "scope": 524, + "src": "3509:613:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 493, + "nodeType": "Block", + "src": "4180:30:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 491, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4198:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 490, + "id": 492, + "nodeType": "Return", + "src": "4191:11:1" + } + ] + }, + "documentation": null, + "id": 494, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isAlgoMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 487, + "nodeType": "ParameterList", + "parameters": [], + "src": "4150:2:1" + }, + "payable": false, + "returnParameters": { + "id": 490, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 489, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 494, + "src": "4174:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 488, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4174:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4173:6:1" + }, + "scope": 524, + "src": "4130:80:1", + "stateMutability": "pure", + "superFunction": 705, + "visibility": "public" + }, + { + "body": { + "id": 501, + "nodeType": "Block", + "src": "4269:35:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 499, + "name": "_category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 117, + "src": "4287:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 498, + "id": 500, + "nodeType": "Return", + "src": "4280:16:1" + } + ] + }, + "documentation": null, + "id": 502, + "implemented": true, + "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "getCategory", "nodeType": "FunctionDefinition", "parameters": { - "id": 479, + "id": 495, "nodeType": "ParameterList", "parameters": [], - "src": "4146:2:1" + "src": "4238:2:1" }, "payable": false, "returnParameters": { - "id": 482, + "id": 498, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 481, + "id": 497, "name": "", "nodeType": "VariableDeclaration", - "scope": 486, - "src": "4170:5:1", + "scope": 502, + "src": "4262:5:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6956,10 +7275,10 @@ "typeString": "uint8" }, "typeName": { - "id": 480, + "id": 496, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4170:5:1", + "src": "4262:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6969,20 +7288,262 @@ "visibility": "internal" } ], - "src": "4169:7:1" + "src": "4261:7:1" }, - "scope": 487, - "src": "4126:86:1", + "scope": 524, + "src": "4218:86:1", "stateMutability": "view", - "superFunction": 673, + "superFunction": 710, + "visibility": "public" + }, + { + "body": { + "id": 514, + "nodeType": "Block", + "src": "4359:67:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + }, + "id": 510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 507, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "4377:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 508, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "4387:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 509, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Activated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4387:20:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$113", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "4377:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "id": 511, + "name": "_mining", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125, + "src": "4411:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4377:41:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 506, + "id": 513, + "nodeType": "Return", + "src": "4370:48:1" + } + ] + }, + "documentation": null, + "id": 515, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isMining", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 503, + "nodeType": "ParameterList", + "parameters": [], + "src": "4329:2:1" + }, + "payable": false, + "returnParameters": { + "id": 506, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 505, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 515, + "src": "4353:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 504, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4353:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4352:6:1" + }, + "scope": 524, + "src": "4312:114:1", + "stateMutability": "view", + "superFunction": 715, + "visibility": "public" + }, + { + "body": { + "id": 522, + "nodeType": "Block", + "src": "4484:32:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 520, + "name": "_miner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "4502:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 519, + "id": 521, + "nodeType": "Return", + "src": "4495:13:1" + } + ] + }, + "documentation": null, + "id": 523, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 516, + "nodeType": "ParameterList", + "parameters": [], + "src": "4451:2:1" + }, + "payable": false, + "returnParameters": { + "id": 519, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 518, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 523, + "src": "4475:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 517, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4475:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4474:9:1" + }, + "scope": 524, + "src": "4434:82:1", + "stateMutability": "view", + "superFunction": 720, "visibility": "public" } ], - "scope": 488, - "src": "558:3657:1" + "scope": 525, + "src": "558:3961:1" } ], - "src": "0:4217:1" + "src": "0:4521:1" }, "id": 1 }, @@ -6991,14 +7552,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol", "exportedSymbols": { "AlgoSupervisorRole": [ - 574 + 611 ] }, - "id": 575, + "id": 612, "nodeType": "SourceUnit", "nodes": [ { - "id": 489, + "id": 526, "literals": [ "solidity", "^", @@ -7011,10 +7572,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", - "id": 490, + "id": 527, "nodeType": "ImportDirective", - "scope": 575, - "sourceUnit": 769, + "scope": 612, + "sourceUnit": 816, "src": "28:189:2", "symbolAliases": [], "unitAlias": "" @@ -7025,24 +7586,24 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 574, + "id": 611, "linearizedBaseContracts": [ - 574 + 611 ], "name": "AlgoSupervisorRole", "nodeType": "ContractDefinition", "nodes": [ { - "id": 493, + "id": 530, "libraryName": { "contractScope": null, - "id": 491, + "id": 528, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 768, + "referencedDeclaration": 815, "src": "262:5:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$768", + "typeIdentifier": "t_contract$_Roles_$815", "typeString": "library Roles" } }, @@ -7050,39 +7611,39 @@ "src": "256:27:2", "typeName": { "contractScope": null, - "id": 492, + "id": 529, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 681, + "referencedDeclaration": 728, "src": "272:10:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role" } } }, { "constant": false, - "id": 495, + "id": 532, "name": "_supervisors", "nodeType": "VariableDeclaration", - "scope": 574, + "scope": 611, "src": "291:31:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage", + "typeIdentifier": "t_struct$_Role_$728_storage", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 494, + "id": 531, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 681, + "referencedDeclaration": 728, "src": "291:10:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -7091,7 +7652,7 @@ }, { "body": { - "id": 503, + "id": 540, "nodeType": "Block", "src": "355:45:2", "statements": [ @@ -7103,18 +7664,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 499, + "id": 536, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1124, + "referencedDeclaration": 1171, "src": "381:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 500, + "id": 537, "isConstant": false, "isLValue": false, "isPure": false, @@ -7136,18 +7697,18 @@ "typeString": "address" } ], - "id": 498, + "id": 535, "name": "_addSupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 561, + "referencedDeclaration": 598, "src": "366:14:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 501, + "id": 538, "isConstant": false, "isLValue": false, "isPure": false, @@ -7161,14 +7722,14 @@ "typeString": "tuple()" } }, - "id": 502, + "id": 539, "nodeType": "ExpressionStatement", "src": "366:26:2" } ] }, "documentation": null, - "id": 504, + "id": 541, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -7176,19 +7737,19 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 496, + "id": 533, "nodeType": "ParameterList", "parameters": [], "src": "343:2:2" }, "payable": false, "returnParameters": { - "id": 497, + "id": 534, "nodeType": "ParameterList", "parameters": [], "src": "355:0:2" }, - "scope": 574, + "scope": 611, "src": "331:69:2", "stateMutability": "nonpayable", "superFunction": null, @@ -7196,7 +7757,7 @@ }, { "body": { - "id": 514, + "id": 551, "nodeType": "Block", "src": "434:64:2", "statements": [ @@ -7211,18 +7772,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 508, + "id": 545, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1124, + "referencedDeclaration": 1171, "src": "466:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 509, + "id": 546, "isConstant": false, "isLValue": false, "isPure": false, @@ -7244,18 +7805,18 @@ "typeString": "address" } ], - "id": 507, + "id": 544, "name": "isSupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 528, + "referencedDeclaration": 565, "src": "453:12:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)" } }, - "id": 510, + "id": 547, "isConstant": false, "isLValue": false, "isPure": false, @@ -7277,21 +7838,21 @@ "typeString": "bool" } ], - "id": 506, + "id": 543, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "445:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 511, + "id": 548, "isConstant": false, "isLValue": false, "isPure": false, @@ -7305,23 +7866,23 @@ "typeString": "tuple()" } }, - "id": 512, + "id": 549, "nodeType": "ExpressionStatement", "src": "445:33:2" }, { - "id": 513, + "id": 550, "nodeType": "PlaceholderStatement", "src": "489:1:2" } ] }, "documentation": null, - "id": 515, + "id": 552, "name": "onlySupervisor", "nodeType": "ModifierDefinition", "parameters": { - "id": 505, + "id": 542, "nodeType": "ParameterList", "parameters": [], "src": "431:2:2" @@ -7331,7 +7892,7 @@ }, { "body": { - "id": 527, + "id": 564, "nodeType": "Block", "src": "572:51:2", "statements": [ @@ -7341,11 +7902,11 @@ "arguments": [ { "argumentTypes": null, - "id": 524, + "id": 561, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 517, + "referencedDeclaration": 554, "src": "607:7:2", "typeDescriptions": { "typeIdentifier": "t_address", @@ -7362,32 +7923,32 @@ ], "expression": { "argumentTypes": null, - "id": 522, + "id": 559, "name": "_supervisors", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 495, + "referencedDeclaration": 532, "src": "590:12:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage", + "typeIdentifier": "t_struct$_Role_$728_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 523, + "id": 560, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 767, + "referencedDeclaration": 814, "src": "590:16:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$681_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$728_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 525, + "id": 562, "isConstant": false, "isLValue": false, "isPure": false, @@ -7401,15 +7962,15 @@ "typeString": "bool" } }, - "functionReturnParameters": 521, - "id": 526, + "functionReturnParameters": 558, + "id": 563, "nodeType": "Return", "src": "583:32:2" } ] }, "documentation": null, - "id": 528, + "id": 565, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7417,15 +7978,15 @@ "name": "isSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 518, + "id": 555, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 517, + "id": 554, "name": "account", "nodeType": "VariableDeclaration", - "scope": 528, + "scope": 565, "src": "528:15:2", "stateVariable": false, "storageLocation": "default", @@ -7434,7 +7995,7 @@ "typeString": "address" }, "typeName": { - "id": 516, + "id": 553, "name": "address", "nodeType": "ElementaryTypeName", "src": "528:7:2", @@ -7451,15 +8012,15 @@ }, "payable": false, "returnParameters": { - "id": 521, + "id": 558, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 520, + "id": 557, "name": "", "nodeType": "VariableDeclaration", - "scope": 528, + "scope": 565, "src": "566:4:2", "stateVariable": false, "storageLocation": "default", @@ -7468,7 +8029,7 @@ "typeString": "bool" }, "typeName": { - "id": 519, + "id": 556, "name": "bool", "nodeType": "ElementaryTypeName", "src": "566:4:2", @@ -7483,7 +8044,7 @@ ], "src": "565:6:2" }, - "scope": 574, + "scope": 611, "src": "506:117:2", "stateMutability": "view", "superFunction": null, @@ -7491,7 +8052,7 @@ }, { "body": { - "id": 539, + "id": 576, "nodeType": "Block", "src": "693:42:2", "statements": [ @@ -7501,11 +8062,11 @@ "arguments": [ { "argumentTypes": null, - "id": 536, + "id": 573, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 530, + "referencedDeclaration": 567, "src": "719:7:2", "typeDescriptions": { "typeIdentifier": "t_address", @@ -7520,18 +8081,18 @@ "typeString": "address" } ], - "id": 535, + "id": 572, "name": "_addSupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 561, + "referencedDeclaration": 598, "src": "704:14:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 537, + "id": 574, "isConstant": false, "isLValue": false, "isPure": false, @@ -7545,28 +8106,28 @@ "typeString": "tuple()" } }, - "id": 538, + "id": 575, "nodeType": "ExpressionStatement", "src": "704:23:2" } ] }, "documentation": null, - "id": 540, + "id": 577, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 533, + "id": 570, "modifierName": { "argumentTypes": null, - "id": 532, + "id": 569, "name": "onlySupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 515, + "referencedDeclaration": 552, "src": "678:14:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -7580,15 +8141,15 @@ "name": "addSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 531, + "id": 568, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 530, + "id": 567, "name": "account", "nodeType": "VariableDeclaration", - "scope": 540, + "scope": 577, "src": "654:15:2", "stateVariable": false, "storageLocation": "default", @@ -7597,7 +8158,7 @@ "typeString": "address" }, "typeName": { - "id": 529, + "id": 566, "name": "address", "nodeType": "ElementaryTypeName", "src": "654:7:2", @@ -7614,12 +8175,12 @@ }, "payable": false, "returnParameters": { - "id": 534, + "id": 571, "nodeType": "ParameterList", "parameters": [], "src": "693:0:2" }, - "scope": 574, + "scope": 611, "src": "631:104:2", "stateMutability": "nonpayable", "superFunction": null, @@ -7627,7 +8188,7 @@ }, { "body": { - "id": 548, + "id": 585, "nodeType": "Block", "src": "780:48:2", "statements": [ @@ -7639,18 +8200,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 544, + "id": 581, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1124, + "referencedDeclaration": 1171, "src": "809:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 545, + "id": 582, "isConstant": false, "isLValue": false, "isPure": false, @@ -7672,18 +8233,18 @@ "typeString": "address" } ], - "id": 543, + "id": 580, "name": "_removeSupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 573, + "referencedDeclaration": 610, "src": "791:17:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 546, + "id": 583, "isConstant": false, "isLValue": false, "isPure": false, @@ -7697,14 +8258,14 @@ "typeString": "tuple()" } }, - "id": 547, + "id": 584, "nodeType": "ExpressionStatement", "src": "791:29:2" } ] }, "documentation": null, - "id": 549, + "id": 586, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -7712,19 +8273,19 @@ "name": "renounceSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 541, + "id": 578, "nodeType": "ParameterList", "parameters": [], "src": "770:2:2" }, "payable": false, "returnParameters": { - "id": 542, + "id": 579, "nodeType": "ParameterList", "parameters": [], "src": "780:0:2" }, - "scope": 574, + "scope": 611, "src": "743:85:2", "stateMutability": "nonpayable", "superFunction": null, @@ -7732,7 +8293,7 @@ }, { "body": { - "id": 560, + "id": 597, "nodeType": "Block", "src": "886:44:2", "statements": [ @@ -7742,11 +8303,11 @@ "arguments": [ { "argumentTypes": null, - "id": 557, + "id": 594, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 551, + "referencedDeclaration": 588, "src": "914:7:2", "typeDescriptions": { "typeIdentifier": "t_address", @@ -7763,32 +8324,32 @@ ], "expression": { "argumentTypes": null, - "id": 554, + "id": 591, "name": "_supervisors", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 495, + "referencedDeclaration": 532, "src": "897:12:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage", + "typeIdentifier": "t_struct$_Role_$728_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 556, + "id": 593, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 713, + "referencedDeclaration": 760, "src": "897:16:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$681_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$728_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 558, + "id": 595, "isConstant": false, "isLValue": false, "isPure": false, @@ -7802,14 +8363,14 @@ "typeString": "tuple()" } }, - "id": 559, + "id": 596, "nodeType": "ExpressionStatement", "src": "897:25:2" } ] }, "documentation": null, - "id": 561, + "id": 598, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -7817,15 +8378,15 @@ "name": "_addSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 552, + "id": 589, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 551, + "id": 588, "name": "account", "nodeType": "VariableDeclaration", - "scope": 561, + "scope": 598, "src": "860:15:2", "stateVariable": false, "storageLocation": "default", @@ -7834,7 +8395,7 @@ "typeString": "address" }, "typeName": { - "id": 550, + "id": 587, "name": "address", "nodeType": "ElementaryTypeName", "src": "860:7:2", @@ -7851,12 +8412,12 @@ }, "payable": false, "returnParameters": { - "id": 553, + "id": 590, "nodeType": "ParameterList", "parameters": [], "src": "886:0:2" }, - "scope": 574, + "scope": 611, "src": "836:94:2", "stateMutability": "nonpayable", "superFunction": null, @@ -7864,7 +8425,7 @@ }, { "body": { - "id": 572, + "id": 609, "nodeType": "Block", "src": "991:47:2", "statements": [ @@ -7874,11 +8435,11 @@ "arguments": [ { "argumentTypes": null, - "id": 569, + "id": 606, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 563, + "referencedDeclaration": 600, "src": "1022:7:2", "typeDescriptions": { "typeIdentifier": "t_address", @@ -7895,32 +8456,32 @@ ], "expression": { "argumentTypes": null, - "id": 566, + "id": 603, "name": "_supervisors", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 495, + "referencedDeclaration": 532, "src": "1002:12:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage", + "typeIdentifier": "t_struct$_Role_$728_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 568, + "id": 605, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 744, + "referencedDeclaration": 791, "src": "1002:19:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$681_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$728_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 570, + "id": 607, "isConstant": false, "isLValue": false, "isPure": false, @@ -7934,14 +8495,14 @@ "typeString": "tuple()" } }, - "id": 571, + "id": 608, "nodeType": "ExpressionStatement", "src": "1002:28:2" } ] }, "documentation": null, - "id": 573, + "id": 610, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -7949,15 +8510,15 @@ "name": "_removeSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 564, + "id": 601, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 563, + "id": 600, "name": "account", "nodeType": "VariableDeclaration", - "scope": 573, + "scope": 610, "src": "965:15:2", "stateVariable": false, "storageLocation": "default", @@ -7966,7 +8527,7 @@ "typeString": "address" }, "typeName": { - "id": 562, + "id": 599, "name": "address", "nodeType": "ElementaryTypeName", "src": "965:7:2", @@ -7983,19 +8544,19 @@ }, "payable": false, "returnParameters": { - "id": 565, + "id": 602, "nodeType": "ParameterList", "parameters": [], "src": "991:0:2" }, - "scope": 574, + "scope": 611, "src": "938:100:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 575, + "scope": 612, "src": "221:820:2" } ], @@ -8008,14 +8569,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol", "exportedSymbols": { "AlgoSystemRole": [ - 661 + 698 ] }, - "id": 662, + "id": 699, "nodeType": "SourceUnit", "nodes": [ { - "id": 576, + "id": 613, "literals": [ "solidity", "^", @@ -8028,10 +8589,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", - "id": 577, + "id": 614, "nodeType": "ImportDirective", - "scope": 662, - "sourceUnit": 769, + "scope": 699, + "sourceUnit": 816, "src": "28:189:3", "symbolAliases": [], "unitAlias": "" @@ -8042,24 +8603,24 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 661, + "id": 698, "linearizedBaseContracts": [ - 661 + 698 ], "name": "AlgoSystemRole", "nodeType": "ContractDefinition", "nodes": [ { - "id": 580, + "id": 617, "libraryName": { "contractScope": null, - "id": 578, + "id": 615, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 768, + "referencedDeclaration": 815, "src": "258:5:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$768", + "typeIdentifier": "t_contract$_Roles_$815", "typeString": "library Roles" } }, @@ -8067,39 +8628,39 @@ "src": "252:27:3", "typeName": { "contractScope": null, - "id": 579, + "id": 616, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 681, + "referencedDeclaration": 728, "src": "268:10:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role" } } }, { "constant": false, - "id": 582, + "id": 619, "name": "_systemMembers", "nodeType": "VariableDeclaration", - "scope": 661, + "scope": 698, "src": "287:33:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage", + "typeIdentifier": "t_struct$_Role_$728_storage", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 581, + "id": 618, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 681, + "referencedDeclaration": 728, "src": "287:10:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -8108,7 +8669,7 @@ }, { "body": { - "id": 590, + "id": 627, "nodeType": "Block", "src": "353:41:3", "statements": [ @@ -8120,18 +8681,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 586, + "id": 623, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1124, + "referencedDeclaration": 1171, "src": "375:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 587, + "id": 624, "isConstant": false, "isLValue": false, "isPure": false, @@ -8153,18 +8714,18 @@ "typeString": "address" } ], - "id": 585, + "id": 622, "name": "_addSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 648, + "referencedDeclaration": 685, "src": "364:10:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 588, + "id": 625, "isConstant": false, "isLValue": false, "isPure": false, @@ -8178,14 +8739,14 @@ "typeString": "tuple()" } }, - "id": 589, + "id": 626, "nodeType": "ExpressionStatement", "src": "364:22:3" } ] }, "documentation": null, - "id": 591, + "id": 628, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -8193,19 +8754,19 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 583, + "id": 620, "nodeType": "ParameterList", "parameters": [], "src": "341:2:3" }, "payable": false, "returnParameters": { - "id": 584, + "id": 621, "nodeType": "ParameterList", "parameters": [], "src": "353:0:3" }, - "scope": 661, + "scope": 698, "src": "329:65:3", "stateMutability": "nonpayable", "superFunction": null, @@ -8213,7 +8774,7 @@ }, { "body": { - "id": 601, + "id": 638, "nodeType": "Block", "src": "424:60:3", "statements": [ @@ -8228,18 +8789,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 595, + "id": 632, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1124, + "referencedDeclaration": 1171, "src": "452:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 596, + "id": 633, "isConstant": false, "isLValue": false, "isPure": false, @@ -8261,18 +8822,18 @@ "typeString": "address" } ], - "id": 594, + "id": 631, "name": "isSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 615, + "referencedDeclaration": 652, "src": "443:8:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)" } }, - "id": 597, + "id": 634, "isConstant": false, "isLValue": false, "isPure": false, @@ -8294,21 +8855,21 @@ "typeString": "bool" } ], - "id": 593, + "id": 630, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "435:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 598, + "id": 635, "isConstant": false, "isLValue": false, "isPure": false, @@ -8322,23 +8883,23 @@ "typeString": "tuple()" } }, - "id": 599, + "id": 636, "nodeType": "ExpressionStatement", "src": "435:29:3" }, { - "id": 600, + "id": 637, "nodeType": "PlaceholderStatement", "src": "475:1:3" } ] }, "documentation": null, - "id": 602, + "id": 639, "name": "onlySystem", "nodeType": "ModifierDefinition", "parameters": { - "id": 592, + "id": 629, "nodeType": "ParameterList", "parameters": [], "src": "421:2:3" @@ -8348,7 +8909,7 @@ }, { "body": { - "id": 614, + "id": 651, "nodeType": "Block", "src": "554:53:3", "statements": [ @@ -8358,11 +8919,11 @@ "arguments": [ { "argumentTypes": null, - "id": 611, + "id": 648, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 604, + "referencedDeclaration": 641, "src": "591:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8379,32 +8940,32 @@ ], "expression": { "argumentTypes": null, - "id": 609, + "id": 646, "name": "_systemMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 582, + "referencedDeclaration": 619, "src": "572:14:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage", + "typeIdentifier": "t_struct$_Role_$728_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 610, + "id": 647, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 767, + "referencedDeclaration": 814, "src": "572:18:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$681_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$728_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 612, + "id": 649, "isConstant": false, "isLValue": false, "isPure": false, @@ -8418,15 +8979,15 @@ "typeString": "bool" } }, - "functionReturnParameters": 608, - "id": 613, + "functionReturnParameters": 645, + "id": 650, "nodeType": "Return", "src": "565:34:3" } ] }, "documentation": null, - "id": 615, + "id": 652, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -8434,15 +8995,15 @@ "name": "isSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 605, + "id": 642, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 604, + "id": 641, "name": "account", "nodeType": "VariableDeclaration", - "scope": 615, + "scope": 652, "src": "510:15:3", "stateVariable": false, "storageLocation": "default", @@ -8451,7 +9012,7 @@ "typeString": "address" }, "typeName": { - "id": 603, + "id": 640, "name": "address", "nodeType": "ElementaryTypeName", "src": "510:7:3", @@ -8468,15 +9029,15 @@ }, "payable": false, "returnParameters": { - "id": 608, + "id": 645, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 607, + "id": 644, "name": "", "nodeType": "VariableDeclaration", - "scope": 615, + "scope": 652, "src": "548:4:3", "stateVariable": false, "storageLocation": "default", @@ -8485,7 +9046,7 @@ "typeString": "bool" }, "typeName": { - "id": 606, + "id": 643, "name": "bool", "nodeType": "ElementaryTypeName", "src": "548:4:3", @@ -8500,7 +9061,7 @@ ], "src": "547:6:3" }, - "scope": 661, + "scope": 698, "src": "492:115:3", "stateMutability": "view", "superFunction": null, @@ -8508,7 +9069,7 @@ }, { "body": { - "id": 626, + "id": 663, "nodeType": "Block", "src": "669:38:3", "statements": [ @@ -8518,11 +9079,11 @@ "arguments": [ { "argumentTypes": null, - "id": 623, + "id": 660, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 617, + "referencedDeclaration": 654, "src": "691:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8537,18 +9098,18 @@ "typeString": "address" } ], - "id": 622, + "id": 659, "name": "_addSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 648, + "referencedDeclaration": 685, "src": "680:10:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 624, + "id": 661, "isConstant": false, "isLValue": false, "isPure": false, @@ -8562,28 +9123,28 @@ "typeString": "tuple()" } }, - "id": 625, + "id": 662, "nodeType": "ExpressionStatement", "src": "680:19:3" } ] }, "documentation": null, - "id": 627, + "id": 664, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 620, + "id": 657, "modifierName": { "argumentTypes": null, - "id": 619, + "id": 656, "name": "onlySystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 602, + "referencedDeclaration": 639, "src": "658:10:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -8597,15 +9158,15 @@ "name": "addSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 618, + "id": 655, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 617, + "id": 654, "name": "account", "nodeType": "VariableDeclaration", - "scope": 627, + "scope": 664, "src": "634:15:3", "stateVariable": false, "storageLocation": "default", @@ -8614,7 +9175,7 @@ "typeString": "address" }, "typeName": { - "id": 616, + "id": 653, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:3", @@ -8631,12 +9192,12 @@ }, "payable": false, "returnParameters": { - "id": 621, + "id": 658, "nodeType": "ParameterList", "parameters": [], "src": "669:0:3" }, - "scope": 661, + "scope": 698, "src": "615:92:3", "stateMutability": "nonpayable", "superFunction": null, @@ -8644,7 +9205,7 @@ }, { "body": { - "id": 635, + "id": 672, "nodeType": "Block", "src": "748:44:3", "statements": [ @@ -8656,18 +9217,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 631, + "id": 668, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1124, + "referencedDeclaration": 1171, "src": "773:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 632, + "id": 669, "isConstant": false, "isLValue": false, "isPure": false, @@ -8689,18 +9250,18 @@ "typeString": "address" } ], - "id": 630, + "id": 667, "name": "_removeSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 660, + "referencedDeclaration": 697, "src": "759:13:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 633, + "id": 670, "isConstant": false, "isLValue": false, "isPure": false, @@ -8714,14 +9275,14 @@ "typeString": "tuple()" } }, - "id": 634, + "id": 671, "nodeType": "ExpressionStatement", "src": "759:25:3" } ] }, "documentation": null, - "id": 636, + "id": 673, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8729,19 +9290,19 @@ "name": "renounceSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 628, + "id": 665, "nodeType": "ParameterList", "parameters": [], "src": "738:2:3" }, "payable": false, "returnParameters": { - "id": 629, + "id": 666, "nodeType": "ParameterList", "parameters": [], "src": "748:0:3" }, - "scope": 661, + "scope": 698, "src": "715:77:3", "stateMutability": "nonpayable", "superFunction": null, @@ -8749,7 +9310,7 @@ }, { "body": { - "id": 647, + "id": 684, "nodeType": "Block", "src": "846:46:3", "statements": [ @@ -8759,11 +9320,11 @@ "arguments": [ { "argumentTypes": null, - "id": 644, + "id": 681, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 638, + "referencedDeclaration": 675, "src": "876:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8780,32 +9341,32 @@ ], "expression": { "argumentTypes": null, - "id": 641, + "id": 678, "name": "_systemMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 582, + "referencedDeclaration": 619, "src": "857:14:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage", + "typeIdentifier": "t_struct$_Role_$728_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 643, + "id": 680, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 713, + "referencedDeclaration": 760, "src": "857:18:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$681_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$728_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 645, + "id": 682, "isConstant": false, "isLValue": false, "isPure": false, @@ -8819,14 +9380,14 @@ "typeString": "tuple()" } }, - "id": 646, + "id": 683, "nodeType": "ExpressionStatement", "src": "857:27:3" } ] }, "documentation": null, - "id": 648, + "id": 685, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8834,15 +9395,15 @@ "name": "_addSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 639, + "id": 676, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 638, + "id": 675, "name": "account", "nodeType": "VariableDeclaration", - "scope": 648, + "scope": 685, "src": "820:15:3", "stateVariable": false, "storageLocation": "default", @@ -8851,7 +9412,7 @@ "typeString": "address" }, "typeName": { - "id": 637, + "id": 674, "name": "address", "nodeType": "ElementaryTypeName", "src": "820:7:3", @@ -8868,12 +9429,12 @@ }, "payable": false, "returnParameters": { - "id": 640, + "id": 677, "nodeType": "ParameterList", "parameters": [], "src": "846:0:3" }, - "scope": 661, + "scope": 698, "src": "800:92:3", "stateMutability": "nonpayable", "superFunction": null, @@ -8881,7 +9442,7 @@ }, { "body": { - "id": 659, + "id": 696, "nodeType": "Block", "src": "949:49:3", "statements": [ @@ -8891,11 +9452,11 @@ "arguments": [ { "argumentTypes": null, - "id": 656, + "id": 693, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 650, + "referencedDeclaration": 687, "src": "982:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8912,32 +9473,32 @@ ], "expression": { "argumentTypes": null, - "id": 653, + "id": 690, "name": "_systemMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 582, + "referencedDeclaration": 619, "src": "960:14:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage", + "typeIdentifier": "t_struct$_Role_$728_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 655, + "id": 692, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 744, + "referencedDeclaration": 791, "src": "960:21:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$681_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$728_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 657, + "id": 694, "isConstant": false, "isLValue": false, "isPure": false, @@ -8951,14 +9512,14 @@ "typeString": "tuple()" } }, - "id": 658, + "id": 695, "nodeType": "ExpressionStatement", "src": "960:30:3" } ] }, "documentation": null, - "id": 660, + "id": 697, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8966,15 +9527,15 @@ "name": "_removeSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 651, + "id": 688, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 650, + "id": 687, "name": "account", "nodeType": "VariableDeclaration", - "scope": 660, + "scope": 697, "src": "923:15:3", "stateVariable": false, "storageLocation": "default", @@ -8983,7 +9544,7 @@ "typeString": "address" }, "typeName": { - "id": 649, + "id": 686, "name": "address", "nodeType": "ElementaryTypeName", "src": "923:7:3", @@ -9000,19 +9561,19 @@ }, "payable": false, "returnParameters": { - "id": 652, + "id": 689, "nodeType": "ParameterList", "parameters": [], "src": "949:0:3" }, - "scope": 661, + "scope": 698, "src": "900:98:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 662, + "scope": 699, "src": "221:780:3" } ], @@ -9025,14 +9586,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", "exportedSymbols": { "IAlgoMiner": [ - 674 + 721 ] }, - "id": 675, + "id": 722, "nodeType": "SourceUnit", "nodes": [ { - "id": 663, + "id": 700, "literals": [ "solidity", "0.4", @@ -9047,9 +9608,9 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 674, + "id": 721, "linearizedBaseContracts": [ - 674 + 721 ], "name": "IAlgoMiner", "nodeType": "ContractDefinition", @@ -9057,7 +9618,7 @@ { "body": null, "documentation": null, - "id": 668, + "id": 705, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -9065,22 +9626,22 @@ "name": "isAlgoMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 664, + "id": 701, "nodeType": "ParameterList", "parameters": [], "src": "74:2:4" }, "payable": false, "returnParameters": { - "id": 667, + "id": 704, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 666, + "id": 703, "name": "", "nodeType": "VariableDeclaration", - "scope": 668, + "scope": 705, "src": "98:4:4", "stateVariable": false, "storageLocation": "default", @@ -9089,7 +9650,7 @@ "typeString": "bool" }, "typeName": { - "id": 665, + "id": 702, "name": "bool", "nodeType": "ElementaryTypeName", "src": "98:4:4", @@ -9104,7 +9665,7 @@ ], "src": "97:6:4" }, - "scope": 674, + "scope": 721, "src": "54:50:4", "stateMutability": "pure", "superFunction": null, @@ -9113,7 +9674,7 @@ { "body": null, "documentation": null, - "id": 673, + "id": 710, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -9121,22 +9682,22 @@ "name": "getCategory", "nodeType": "FunctionDefinition", "parameters": { - "id": 669, + "id": 706, "nodeType": "ParameterList", "parameters": [], "src": "130:2:4" }, "payable": false, "returnParameters": { - "id": 672, + "id": 709, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 671, + "id": 708, "name": "", "nodeType": "VariableDeclaration", - "scope": 673, + "scope": 710, "src": "154:5:4", "stateVariable": false, "storageLocation": "default", @@ -9145,7 +9706,7 @@ "typeString": "uint8" }, "typeName": { - "id": 670, + "id": 707, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "154:5:4", @@ -9160,18 +9721,130 @@ ], "src": "153:7:4" }, - "scope": 674, + "scope": 721, "src": "110:51:4", "stateMutability": "view", "superFunction": null, "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 715, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isMining", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 711, + "nodeType": "ParameterList", + "parameters": [], + "src": "184:2:4" + }, + "payable": false, + "returnParameters": { + "id": 714, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 713, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 715, + "src": "208:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 712, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "208:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "207:6:4" + }, + "scope": 721, + "src": "167:47:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 720, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 716, + "nodeType": "ParameterList", + "parameters": [], + "src": "237:2:4" + }, + "payable": false, + "returnParameters": { + "id": 719, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 718, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 720, + "src": "261:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 717, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "261:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "260:9:4" + }, + "scope": 721, + "src": "220:50:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" } ], - "scope": 675, - "src": "27:137:4" + "scope": 722, + "src": "27:246:4" } ], - "src": "0:164:4" + "src": "0:273:4" }, "id": 4 }, @@ -9180,14 +9853,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "exportedSymbols": { "Roles": [ - 768 + 815 ] }, - "id": 769, + "id": 816, "nodeType": "SourceUnit", "nodes": [ { - "id": 676, + "id": 723, "literals": [ "solidity", "^", @@ -9203,23 +9876,23 @@ "contractKind": "library", "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", "fullyImplemented": true, - "id": 768, + "id": 815, "linearizedBaseContracts": [ - 768 + 815 ], "name": "Roles", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "Roles.Role", - "id": 681, + "id": 728, "members": [ { "constant": false, - "id": 680, + "id": 727, "name": "bearer", "nodeType": "VariableDeclaration", - "scope": 681, + "scope": 728, "src": "145:32:5", "stateVariable": false, "storageLocation": "default", @@ -9228,9 +9901,9 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 679, + "id": 726, "keyType": { - "id": 677, + "id": 724, "name": "address", "nodeType": "ElementaryTypeName", "src": "154:7:5", @@ -9246,7 +9919,7 @@ "typeString": "mapping(address => bool)" }, "valueType": { - "id": 678, + "id": 725, "name": "bool", "nodeType": "ElementaryTypeName", "src": "165:4:5", @@ -9262,13 +9935,13 @@ ], "name": "Role", "nodeType": "StructDefinition", - "scope": 768, + "scope": 815, "src": "127:55:5", "visibility": "public" }, { "body": { - "id": 712, + "id": 759, "nodeType": "Block", "src": "302:109:5", "statements": [ @@ -9282,18 +9955,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 693, + "id": 740, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 689, + "id": 736, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 685, + "referencedDeclaration": 732, "src": "316:7:5", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9308,7 +9981,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 691, + "id": 738, "isConstant": false, "isLValue": false, "isPure": true, @@ -9331,7 +10004,7 @@ "typeString": "int_const 0" } ], - "id": 690, + "id": 737, "isConstant": false, "isLValue": false, "isPure": true, @@ -9344,7 +10017,7 @@ }, "typeName": "address" }, - "id": 692, + "id": 739, "isConstant": false, "isLValue": false, "isPure": true, @@ -9372,21 +10045,21 @@ "typeString": "bool" } ], - "id": 688, + "id": 735, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "308:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 694, + "id": 741, "isConstant": false, "isLValue": false, "isPure": false, @@ -9400,7 +10073,7 @@ "typeString": "tuple()" } }, - "id": 695, + "id": 742, "nodeType": "ExpressionStatement", "src": "308:30:5" }, @@ -9410,7 +10083,7 @@ "arguments": [ { "argumentTypes": null, - "id": 701, + "id": 748, "isConstant": false, "isLValue": false, "isPure": false, @@ -9424,24 +10097,24 @@ "arguments": [ { "argumentTypes": null, - "id": 698, + "id": 745, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 683, + "referencedDeclaration": 730, "src": "357:4:5", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, { "argumentTypes": null, - "id": 699, + "id": 746, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 685, + "referencedDeclaration": 732, "src": "363:7:5", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9452,7 +10125,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role storage pointer" }, { @@ -9460,18 +10133,18 @@ "typeString": "address" } ], - "id": 697, + "id": 744, "name": "has", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 767, + "referencedDeclaration": 814, "src": "353:3:5", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 700, + "id": 747, "isConstant": false, "isLValue": false, "isPure": false, @@ -9498,21 +10171,21 @@ "typeString": "bool" } ], - "id": 696, + "id": 743, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "344:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 702, + "id": 749, "isConstant": false, "isLValue": false, "isPure": false, @@ -9526,14 +10199,14 @@ "typeString": "tuple()" } }, - "id": 703, + "id": 750, "nodeType": "ExpressionStatement", "src": "344:28:5" }, { "expression": { "argumentTypes": null, - "id": 710, + "id": 757, "isConstant": false, "isLValue": false, "isPure": false, @@ -9544,39 +10217,39 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 704, + "id": 751, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 683, + "referencedDeclaration": 730, "src": "379:4:5", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 707, + "id": 754, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 680, + "referencedDeclaration": 727, "src": "379:11:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 708, + "id": 755, "indexExpression": { "argumentTypes": null, - "id": 706, + "id": 753, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 685, + "referencedDeclaration": 732, "src": "391:7:5", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9599,7 +10272,7 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 709, + "id": 756, "isConstant": false, "isLValue": false, "isPure": true, @@ -9620,14 +10293,14 @@ "typeString": "bool" } }, - "id": 711, + "id": 758, "nodeType": "ExpressionStatement", "src": "379:27:5" } ] }, "documentation": "@dev give an account access to this role", - "id": 713, + "id": 760, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -9635,31 +10308,31 @@ "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 686, + "id": 733, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 683, + "id": 730, "name": "role", "nodeType": "VariableDeclaration", - "scope": 713, + "scope": 760, "src": "257:17:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 682, + "id": 729, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 681, + "referencedDeclaration": 728, "src": "257:4:5", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -9668,10 +10341,10 @@ }, { "constant": false, - "id": 685, + "id": 732, "name": "account", "nodeType": "VariableDeclaration", - "scope": 713, + "scope": 760, "src": "276:15:5", "stateVariable": false, "storageLocation": "default", @@ -9680,7 +10353,7 @@ "typeString": "address" }, "typeName": { - "id": 684, + "id": 731, "name": "address", "nodeType": "ElementaryTypeName", "src": "276:7:5", @@ -9697,12 +10370,12 @@ }, "payable": false, "returnParameters": { - "id": 687, + "id": 734, "nodeType": "ParameterList", "parameters": [], "src": "302:0:5" }, - "scope": 768, + "scope": 815, "src": "244:167:5", "stateMutability": "nonpayable", "superFunction": null, @@ -9710,7 +10383,7 @@ }, { "body": { - "id": 743, + "id": 790, "nodeType": "Block", "src": "538:109:5", "statements": [ @@ -9724,18 +10397,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 725, + "id": 772, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 721, + "id": 768, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, + "referencedDeclaration": 764, "src": "552:7:5", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9750,7 +10423,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 723, + "id": 770, "isConstant": false, "isLValue": false, "isPure": true, @@ -9773,7 +10446,7 @@ "typeString": "int_const 0" } ], - "id": 722, + "id": 769, "isConstant": false, "isLValue": false, "isPure": true, @@ -9786,7 +10459,7 @@ }, "typeName": "address" }, - "id": 724, + "id": 771, "isConstant": false, "isLValue": false, "isPure": true, @@ -9814,21 +10487,21 @@ "typeString": "bool" } ], - "id": 720, + "id": 767, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "544:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 726, + "id": 773, "isConstant": false, "isLValue": false, "isPure": false, @@ -9842,7 +10515,7 @@ "typeString": "tuple()" } }, - "id": 727, + "id": 774, "nodeType": "ExpressionStatement", "src": "544:30:5" }, @@ -9855,24 +10528,24 @@ "arguments": [ { "argumentTypes": null, - "id": 730, + "id": 777, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 715, + "referencedDeclaration": 762, "src": "592:4:5", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, { "argumentTypes": null, - "id": 731, + "id": 778, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, + "referencedDeclaration": 764, "src": "598:7:5", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9883,7 +10556,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role storage pointer" }, { @@ -9891,18 +10564,18 @@ "typeString": "address" } ], - "id": 729, + "id": 776, "name": "has", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 767, + "referencedDeclaration": 814, "src": "588:3:5", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$681_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 732, + "id": 779, "isConstant": false, "isLValue": false, "isPure": false, @@ -9924,21 +10597,21 @@ "typeString": "bool" } ], - "id": 728, + "id": 775, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "580:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 733, + "id": 780, "isConstant": false, "isLValue": false, "isPure": false, @@ -9952,14 +10625,14 @@ "typeString": "tuple()" } }, - "id": 734, + "id": 781, "nodeType": "ExpressionStatement", "src": "580:27:5" }, { "expression": { "argumentTypes": null, - "id": 741, + "id": 788, "isConstant": false, "isLValue": false, "isPure": false, @@ -9970,39 +10643,39 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 735, + "id": 782, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 715, + "referencedDeclaration": 762, "src": "614:4:5", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 738, + "id": 785, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 680, + "referencedDeclaration": 727, "src": "614:11:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 739, + "id": 786, "indexExpression": { "argumentTypes": null, - "id": 737, + "id": 784, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, + "referencedDeclaration": 764, "src": "626:7:5", "typeDescriptions": { "typeIdentifier": "t_address", @@ -10025,7 +10698,7 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 740, + "id": 787, "isConstant": false, "isLValue": false, "isPure": true, @@ -10046,14 +10719,14 @@ "typeString": "bool" } }, - "id": 742, + "id": 789, "nodeType": "ExpressionStatement", "src": "614:28:5" } ] }, "documentation": "@dev remove an account's access to this role", - "id": 744, + "id": 791, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -10061,31 +10734,31 @@ "name": "remove", "nodeType": "FunctionDefinition", "parameters": { - "id": 718, + "id": 765, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 715, + "id": 762, "name": "role", "nodeType": "VariableDeclaration", - "scope": 744, + "scope": 791, "src": "493:17:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 714, + "id": 761, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 681, + "referencedDeclaration": 728, "src": "493:4:5", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -10094,10 +10767,10 @@ }, { "constant": false, - "id": 717, + "id": 764, "name": "account", "nodeType": "VariableDeclaration", - "scope": 744, + "scope": 791, "src": "512:15:5", "stateVariable": false, "storageLocation": "default", @@ -10106,7 +10779,7 @@ "typeString": "address" }, "typeName": { - "id": 716, + "id": 763, "name": "address", "nodeType": "ElementaryTypeName", "src": "512:7:5", @@ -10123,12 +10796,12 @@ }, "payable": false, "returnParameters": { - "id": 719, + "id": 766, "nodeType": "ParameterList", "parameters": [], "src": "538:0:5" }, - "scope": 768, + "scope": 815, "src": "477:170:5", "stateMutability": "nonpayable", "superFunction": null, @@ -10136,7 +10809,7 @@ }, { "body": { - "id": 766, + "id": 813, "nodeType": "Block", "src": "817:74:5", "statements": [ @@ -10150,18 +10823,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 758, + "id": 805, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 754, + "id": 801, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 748, + "referencedDeclaration": 795, "src": "831:7:5", "typeDescriptions": { "typeIdentifier": "t_address", @@ -10176,7 +10849,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 756, + "id": 803, "isConstant": false, "isLValue": false, "isPure": true, @@ -10199,7 +10872,7 @@ "typeString": "int_const 0" } ], - "id": 755, + "id": 802, "isConstant": false, "isLValue": false, "isPure": true, @@ -10212,7 +10885,7 @@ }, "typeName": "address" }, - "id": 757, + "id": 804, "isConstant": false, "isLValue": false, "isPure": true, @@ -10240,21 +10913,21 @@ "typeString": "bool" } ], - "id": 753, + "id": 800, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "823:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 759, + "id": 806, "isConstant": false, "isLValue": false, "isPure": false, @@ -10268,7 +10941,7 @@ "typeString": "tuple()" } }, - "id": 760, + "id": 807, "nodeType": "ExpressionStatement", "src": "823:30:5" }, @@ -10279,39 +10952,39 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 761, + "id": 808, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 746, + "referencedDeclaration": 793, "src": "866:4:5", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 762, + "id": 809, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 680, + "referencedDeclaration": 727, "src": "866:11:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 764, + "id": 811, "indexExpression": { "argumentTypes": null, - "id": 763, + "id": 810, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 748, + "referencedDeclaration": 795, "src": "878:7:5", "typeDescriptions": { "typeIdentifier": "t_address", @@ -10329,15 +11002,15 @@ "typeString": "bool" } }, - "functionReturnParameters": 752, - "id": 765, + "functionReturnParameters": 799, + "id": 812, "nodeType": "Return", "src": "859:27:5" } ] }, "documentation": "@dev check if an account has this role\n@return bool", - "id": 767, + "id": 814, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -10345,31 +11018,31 @@ "name": "has", "nodeType": "FunctionDefinition", "parameters": { - "id": 749, + "id": 796, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 746, + "id": 793, "name": "role", "nodeType": "VariableDeclaration", - "scope": 767, + "scope": 814, "src": "738:17:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 745, + "id": 792, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 681, + "referencedDeclaration": 728, "src": "738:4:5", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$681_storage_ptr", + "typeIdentifier": "t_struct$_Role_$728_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -10378,10 +11051,10 @@ }, { "constant": false, - "id": 748, + "id": 795, "name": "account", "nodeType": "VariableDeclaration", - "scope": 767, + "scope": 814, "src": "757:15:5", "stateVariable": false, "storageLocation": "default", @@ -10390,7 +11063,7 @@ "typeString": "address" }, "typeName": { - "id": 747, + "id": 794, "name": "address", "nodeType": "ElementaryTypeName", "src": "757:7:5", @@ -10407,15 +11080,15 @@ }, "payable": false, "returnParameters": { - "id": 752, + "id": 799, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 751, + "id": 798, "name": "", "nodeType": "VariableDeclaration", - "scope": 767, + "scope": 814, "src": "809:4:5", "stateVariable": false, "storageLocation": "default", @@ -10424,7 +11097,7 @@ "typeString": "bool" }, "typeName": { - "id": 750, + "id": 797, "name": "bool", "nodeType": "ElementaryTypeName", "src": "809:4:5", @@ -10439,14 +11112,14 @@ ], "src": "808:6:5" }, - "scope": 768, + "scope": 815, "src": "725:166:5", "stateMutability": "view", "superFunction": null, "visibility": "internal" } ], - "scope": 769, + "scope": 816, "src": "109:784:5" } ], @@ -10459,14 +11132,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "exportedSymbols": { "SafeMath": [ - 896 + 943 ] }, - "id": 897, + "id": 944, "nodeType": "SourceUnit", "nodes": [ { - "id": 770, + "id": 817, "literals": [ "solidity", "^", @@ -10482,16 +11155,16 @@ "contractKind": "library", "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", "fullyImplemented": true, - "id": 896, + "id": 943, "linearizedBaseContracts": [ - 896 + 943 ], "name": "SafeMath", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 802, + "id": 849, "nodeType": "Block", "src": "271:314:6", "statements": [ @@ -10502,18 +11175,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 781, + "id": 828, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 779, + "id": 826, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, + "referencedDeclaration": 819, "src": "486:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -10525,7 +11198,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 780, + "id": 827, "isConstant": false, "isLValue": false, "isPure": true, @@ -10547,11 +11220,11 @@ } }, "falseBody": null, - "id": 785, + "id": 832, "nodeType": "IfStatement", "src": "482:35:6", "trueBody": { - "id": 784, + "id": 831, "nodeType": "Block", "src": "494:23:6", "statements": [ @@ -10559,7 +11232,7 @@ "expression": { "argumentTypes": null, "hexValue": "30", - "id": 782, + "id": 829, "isConstant": false, "isLValue": false, "isPure": true, @@ -10574,8 +11247,8 @@ }, "value": "0" }, - "functionReturnParameters": 778, - "id": 783, + "functionReturnParameters": 825, + "id": 830, "nodeType": "Return", "src": "502:8:6" } @@ -10584,15 +11257,15 @@ }, { "assignments": [ - 787 + 834 ], "declarations": [ { "constant": false, - "id": 787, + "id": 834, "name": "c", "nodeType": "VariableDeclaration", - "scope": 803, + "scope": 850, "src": "523:9:6", "stateVariable": false, "storageLocation": "default", @@ -10601,7 +11274,7 @@ "typeString": "uint256" }, "typeName": { - "id": 786, + "id": 833, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "523:7:6", @@ -10614,25 +11287,25 @@ "visibility": "internal" } ], - "id": 791, + "id": 838, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 790, + "id": 837, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 788, + "id": 835, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, + "referencedDeclaration": 819, "src": "535:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -10643,11 +11316,11 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 789, + "id": 836, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 774, + "referencedDeclaration": 821, "src": "539:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -10673,7 +11346,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 797, + "id": 844, "isConstant": false, "isLValue": false, "isPure": false, @@ -10684,18 +11357,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 795, + "id": 842, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 793, + "id": 840, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 787, + "referencedDeclaration": 834, "src": "554:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -10706,11 +11379,11 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 794, + "id": 841, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, + "referencedDeclaration": 819, "src": "558:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -10727,11 +11400,11 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 796, + "id": 843, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 774, + "referencedDeclaration": 821, "src": "563:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -10752,21 +11425,21 @@ "typeString": "bool" } ], - "id": 792, + "id": 839, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "546:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 798, + "id": 845, "isConstant": false, "isLValue": false, "isPure": false, @@ -10780,33 +11453,33 @@ "typeString": "tuple()" } }, - "id": 799, + "id": 846, "nodeType": "ExpressionStatement", "src": "546:19:6" }, { "expression": { "argumentTypes": null, - "id": 800, + "id": 847, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 787, + "referencedDeclaration": 834, "src": "579:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 778, - "id": 801, + "functionReturnParameters": 825, + "id": 848, "nodeType": "Return", "src": "572:8:6" } ] }, "documentation": "@dev Multiplies two numbers, reverts on overflow.", - "id": 803, + "id": 850, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -10814,15 +11487,15 @@ "name": "mul", "nodeType": "FunctionDefinition", "parameters": { - "id": 775, + "id": 822, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 772, + "id": 819, "name": "a", "nodeType": "VariableDeclaration", - "scope": 803, + "scope": 850, "src": "217:9:6", "stateVariable": false, "storageLocation": "default", @@ -10831,7 +11504,7 @@ "typeString": "uint256" }, "typeName": { - "id": 771, + "id": 818, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "217:7:6", @@ -10845,10 +11518,10 @@ }, { "constant": false, - "id": 774, + "id": 821, "name": "b", "nodeType": "VariableDeclaration", - "scope": 803, + "scope": 850, "src": "228:9:6", "stateVariable": false, "storageLocation": "default", @@ -10857,7 +11530,7 @@ "typeString": "uint256" }, "typeName": { - "id": 773, + "id": 820, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "228:7:6", @@ -10874,15 +11547,15 @@ }, "payable": false, "returnParameters": { - "id": 778, + "id": 825, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 777, + "id": 824, "name": "", "nodeType": "VariableDeclaration", - "scope": 803, + "scope": 850, "src": "262:7:6", "stateVariable": false, "storageLocation": "default", @@ -10891,7 +11564,7 @@ "typeString": "uint256" }, "typeName": { - "id": 776, + "id": 823, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "262:7:6", @@ -10906,7 +11579,7 @@ ], "src": "261:9:6" }, - "scope": 896, + "scope": 943, "src": "204:381:6", "stateMutability": "pure", "superFunction": null, @@ -10914,7 +11587,7 @@ }, { "body": { - "id": 826, + "id": 873, "nodeType": "Block", "src": "762:203:6", "statements": [ @@ -10928,18 +11601,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 815, + "id": 862, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 813, + "id": 860, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 807, + "referencedDeclaration": 854, "src": "776:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -10951,7 +11624,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 814, + "id": 861, "isConstant": false, "isLValue": false, "isPure": true, @@ -10980,21 +11653,21 @@ "typeString": "bool" } ], - "id": 812, + "id": 859, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "768:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 816, + "id": 863, "isConstant": false, "isLValue": false, "isPure": false, @@ -11008,21 +11681,21 @@ "typeString": "tuple()" } }, - "id": 817, + "id": 864, "nodeType": "ExpressionStatement", "src": "768:14:6" }, { "assignments": [ - 819 + 866 ], "declarations": [ { "constant": false, - "id": 819, + "id": 866, "name": "c", "nodeType": "VariableDeclaration", - "scope": 827, + "scope": 874, "src": "846:9:6", "stateVariable": false, "storageLocation": "default", @@ -11031,7 +11704,7 @@ "typeString": "uint256" }, "typeName": { - "id": 818, + "id": 865, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "846:7:6", @@ -11044,25 +11717,25 @@ "visibility": "internal" } ], - "id": 823, + "id": 870, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 822, + "id": 869, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 820, + "id": 867, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 805, + "referencedDeclaration": 852, "src": "858:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11073,11 +11746,11 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 821, + "id": 868, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 807, + "referencedDeclaration": 854, "src": "862:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11096,26 +11769,26 @@ { "expression": { "argumentTypes": null, - "id": 824, + "id": 871, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 819, + "referencedDeclaration": 866, "src": "959:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 811, - "id": 825, + "functionReturnParameters": 858, + "id": 872, "nodeType": "Return", "src": "952:8:6" } ] }, "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", - "id": 827, + "id": 874, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -11123,15 +11796,15 @@ "name": "div", "nodeType": "FunctionDefinition", "parameters": { - "id": 808, + "id": 855, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 805, + "id": 852, "name": "a", "nodeType": "VariableDeclaration", - "scope": 827, + "scope": 874, "src": "708:9:6", "stateVariable": false, "storageLocation": "default", @@ -11140,7 +11813,7 @@ "typeString": "uint256" }, "typeName": { - "id": 804, + "id": 851, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "708:7:6", @@ -11154,10 +11827,10 @@ }, { "constant": false, - "id": 807, + "id": 854, "name": "b", "nodeType": "VariableDeclaration", - "scope": 827, + "scope": 874, "src": "719:9:6", "stateVariable": false, "storageLocation": "default", @@ -11166,7 +11839,7 @@ "typeString": "uint256" }, "typeName": { - "id": 806, + "id": 853, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "719:7:6", @@ -11183,15 +11856,15 @@ }, "payable": false, "returnParameters": { - "id": 811, + "id": 858, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 810, + "id": 857, "name": "", "nodeType": "VariableDeclaration", - "scope": 827, + "scope": 874, "src": "753:7:6", "stateVariable": false, "storageLocation": "default", @@ -11200,7 +11873,7 @@ "typeString": "uint256" }, "typeName": { - "id": 809, + "id": 856, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "753:7:6", @@ -11215,7 +11888,7 @@ ], "src": "752:9:6" }, - "scope": 896, + "scope": 943, "src": "695:270:6", "stateMutability": "pure", "superFunction": null, @@ -11223,7 +11896,7 @@ }, { "body": { - "id": 850, + "id": 897, "nodeType": "Block", "src": "1145:64:6", "statements": [ @@ -11237,18 +11910,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 839, + "id": 886, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 837, + "id": 884, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 831, + "referencedDeclaration": 878, "src": "1159:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11259,11 +11932,11 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 838, + "id": 885, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 829, + "referencedDeclaration": 876, "src": "1164:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11284,21 +11957,21 @@ "typeString": "bool" } ], - "id": 836, + "id": 883, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "1151:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 840, + "id": 887, "isConstant": false, "isLValue": false, "isPure": false, @@ -11312,21 +11985,21 @@ "typeString": "tuple()" } }, - "id": 841, + "id": 888, "nodeType": "ExpressionStatement", "src": "1151:15:6" }, { "assignments": [ - 843 + 890 ], "declarations": [ { "constant": false, - "id": 843, + "id": 890, "name": "c", "nodeType": "VariableDeclaration", - "scope": 851, + "scope": 898, "src": "1172:9:6", "stateVariable": false, "storageLocation": "default", @@ -11335,7 +12008,7 @@ "typeString": "uint256" }, "typeName": { - "id": 842, + "id": 889, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1172:7:6", @@ -11348,25 +12021,25 @@ "visibility": "internal" } ], - "id": 847, + "id": 894, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 846, + "id": 893, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 844, + "id": 891, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 829, + "referencedDeclaration": 876, "src": "1184:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11377,11 +12050,11 @@ "operator": "-", "rightExpression": { "argumentTypes": null, - "id": 845, + "id": 892, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 831, + "referencedDeclaration": 878, "src": "1188:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11400,26 +12073,26 @@ { "expression": { "argumentTypes": null, - "id": 848, + "id": 895, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 843, + "referencedDeclaration": 890, "src": "1203:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 835, - "id": 849, + "functionReturnParameters": 882, + "id": 896, "nodeType": "Return", "src": "1196:8:6" } ] }, "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", - "id": 851, + "id": 898, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -11427,15 +12100,15 @@ "name": "sub", "nodeType": "FunctionDefinition", "parameters": { - "id": 832, + "id": 879, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 829, + "id": 876, "name": "a", "nodeType": "VariableDeclaration", - "scope": 851, + "scope": 898, "src": "1091:9:6", "stateVariable": false, "storageLocation": "default", @@ -11444,7 +12117,7 @@ "typeString": "uint256" }, "typeName": { - "id": 828, + "id": 875, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1091:7:6", @@ -11458,10 +12131,10 @@ }, { "constant": false, - "id": 831, + "id": 878, "name": "b", "nodeType": "VariableDeclaration", - "scope": 851, + "scope": 898, "src": "1102:9:6", "stateVariable": false, "storageLocation": "default", @@ -11470,7 +12143,7 @@ "typeString": "uint256" }, "typeName": { - "id": 830, + "id": 877, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1102:7:6", @@ -11487,15 +12160,15 @@ }, "payable": false, "returnParameters": { - "id": 835, + "id": 882, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 834, + "id": 881, "name": "", "nodeType": "VariableDeclaration", - "scope": 851, + "scope": 898, "src": "1136:7:6", "stateVariable": false, "storageLocation": "default", @@ -11504,7 +12177,7 @@ "typeString": "uint256" }, "typeName": { - "id": 833, + "id": 880, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1136:7:6", @@ -11519,7 +12192,7 @@ ], "src": "1135:9:6" }, - "scope": 896, + "scope": 943, "src": "1078:131:6", "stateMutability": "pure", "superFunction": null, @@ -11527,21 +12200,21 @@ }, { "body": { - "id": 874, + "id": 921, "nodeType": "Block", "src": "1339:64:6", "statements": [ { "assignments": [ - 861 + 908 ], "declarations": [ { "constant": false, - "id": 861, + "id": 908, "name": "c", "nodeType": "VariableDeclaration", - "scope": 875, + "scope": 922, "src": "1345:9:6", "stateVariable": false, "storageLocation": "default", @@ -11550,7 +12223,7 @@ "typeString": "uint256" }, "typeName": { - "id": 860, + "id": 907, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1345:7:6", @@ -11563,25 +12236,25 @@ "visibility": "internal" } ], - "id": 865, + "id": 912, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 864, + "id": 911, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 862, + "id": 909, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 853, + "referencedDeclaration": 900, "src": "1357:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11592,11 +12265,11 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 863, + "id": 910, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 855, + "referencedDeclaration": 902, "src": "1361:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11622,18 +12295,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 869, + "id": 916, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 867, + "id": 914, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 861, + "referencedDeclaration": 908, "src": "1376:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11644,11 +12317,11 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 868, + "id": 915, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 853, + "referencedDeclaration": 900, "src": "1381:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11669,21 +12342,21 @@ "typeString": "bool" } ], - "id": 866, + "id": 913, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "1368:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 870, + "id": 917, "isConstant": false, "isLValue": false, "isPure": false, @@ -11697,33 +12370,33 @@ "typeString": "tuple()" } }, - "id": 871, + "id": 918, "nodeType": "ExpressionStatement", "src": "1368:15:6" }, { "expression": { "argumentTypes": null, - "id": 872, + "id": 919, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 861, + "referencedDeclaration": 908, "src": "1397:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 859, - "id": 873, + "functionReturnParameters": 906, + "id": 920, "nodeType": "Return", "src": "1390:8:6" } ] }, "documentation": "@dev Adds two numbers, reverts on overflow.", - "id": 875, + "id": 922, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -11731,15 +12404,15 @@ "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 856, + "id": 903, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 853, + "id": 900, "name": "a", "nodeType": "VariableDeclaration", - "scope": 875, + "scope": 922, "src": "1285:9:6", "stateVariable": false, "storageLocation": "default", @@ -11748,7 +12421,7 @@ "typeString": "uint256" }, "typeName": { - "id": 852, + "id": 899, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1285:7:6", @@ -11762,10 +12435,10 @@ }, { "constant": false, - "id": 855, + "id": 902, "name": "b", "nodeType": "VariableDeclaration", - "scope": 875, + "scope": 922, "src": "1296:9:6", "stateVariable": false, "storageLocation": "default", @@ -11774,7 +12447,7 @@ "typeString": "uint256" }, "typeName": { - "id": 854, + "id": 901, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1296:7:6", @@ -11791,15 +12464,15 @@ }, "payable": false, "returnParameters": { - "id": 859, + "id": 906, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 858, + "id": 905, "name": "", "nodeType": "VariableDeclaration", - "scope": 875, + "scope": 922, "src": "1330:7:6", "stateVariable": false, "storageLocation": "default", @@ -11808,7 +12481,7 @@ "typeString": "uint256" }, "typeName": { - "id": 857, + "id": 904, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1330:7:6", @@ -11823,7 +12496,7 @@ ], "src": "1329:9:6" }, - "scope": 896, + "scope": 943, "src": "1272:131:6", "stateMutability": "pure", "superFunction": null, @@ -11831,7 +12504,7 @@ }, { "body": { - "id": 894, + "id": 941, "nodeType": "Block", "src": "1602:44:6", "statements": [ @@ -11845,18 +12518,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 887, + "id": 934, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 885, + "id": 932, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 879, + "referencedDeclaration": 926, "src": "1616:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11868,7 +12541,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 886, + "id": 933, "isConstant": false, "isLValue": false, "isPure": true, @@ -11897,21 +12570,21 @@ "typeString": "bool" } ], - "id": 884, + "id": 931, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "1608:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 888, + "id": 935, "isConstant": false, "isLValue": false, "isPure": false, @@ -11925,7 +12598,7 @@ "typeString": "tuple()" } }, - "id": 889, + "id": 936, "nodeType": "ExpressionStatement", "src": "1608:15:6" }, @@ -11936,18 +12609,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 892, + "id": 939, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 890, + "id": 937, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 877, + "referencedDeclaration": 924, "src": "1636:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11958,11 +12631,11 @@ "operator": "%", "rightExpression": { "argumentTypes": null, - "id": 891, + "id": 938, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 879, + "referencedDeclaration": 926, "src": "1640:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11975,15 +12648,15 @@ "typeString": "uint256" } }, - "functionReturnParameters": 883, - "id": 893, + "functionReturnParameters": 930, + "id": 940, "nodeType": "Return", "src": "1629:12:6" } ] }, "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", - "id": 895, + "id": 942, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -11991,15 +12664,15 @@ "name": "mod", "nodeType": "FunctionDefinition", "parameters": { - "id": 880, + "id": 927, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 877, + "id": 924, "name": "a", "nodeType": "VariableDeclaration", - "scope": 895, + "scope": 942, "src": "1548:9:6", "stateVariable": false, "storageLocation": "default", @@ -12008,7 +12681,7 @@ "typeString": "uint256" }, "typeName": { - "id": 876, + "id": 923, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1548:7:6", @@ -12022,10 +12695,10 @@ }, { "constant": false, - "id": 879, + "id": 926, "name": "b", "nodeType": "VariableDeclaration", - "scope": 895, + "scope": 942, "src": "1559:9:6", "stateVariable": false, "storageLocation": "default", @@ -12034,7 +12707,7 @@ "typeString": "uint256" }, "typeName": { - "id": 878, + "id": 925, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1559:7:6", @@ -12051,15 +12724,15 @@ }, "payable": false, "returnParameters": { - "id": 883, + "id": 930, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 882, + "id": 929, "name": "", "nodeType": "VariableDeclaration", - "scope": 895, + "scope": 942, "src": "1593:7:6", "stateVariable": false, "storageLocation": "default", @@ -12068,7 +12741,7 @@ "typeString": "uint256" }, "typeName": { - "id": 881, + "id": 928, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1593:7:6", @@ -12083,14 +12756,14 @@ ], "src": "1592:9:6" }, - "scope": 896, + "scope": 943, "src": "1535:111:6", "stateMutability": "pure", "superFunction": null, "visibility": "internal" } ], - "scope": 897, + "scope": 944, "src": "117:1531:6" } ], @@ -12103,14 +12776,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "exportedSymbols": { "IERC20": [ - 965 + 1012 ] }, - "id": 966, + "id": 1013, "nodeType": "SourceUnit", "nodes": [ { - "id": 898, + "id": 945, "literals": [ "solidity", "^", @@ -12126,9 +12799,9 @@ "contractKind": "interface", "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", "fullyImplemented": false, - "id": 965, + "id": 1012, "linearizedBaseContracts": [ - 965 + 1012 ], "name": "IERC20", "nodeType": "ContractDefinition", @@ -12136,7 +12809,7 @@ { "body": null, "documentation": null, - "id": 903, + "id": 950, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -12144,22 +12817,22 @@ "name": "totalSupply", "nodeType": "FunctionDefinition", "parameters": { - "id": 899, + "id": 946, "nodeType": "ParameterList", "parameters": [], "src": "156:2:7" }, "payable": false, "returnParameters": { - "id": 902, + "id": 949, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 901, + "id": 948, "name": "", "nodeType": "VariableDeclaration", - "scope": 903, + "scope": 950, "src": "182:7:7", "stateVariable": false, "storageLocation": "default", @@ -12168,7 +12841,7 @@ "typeString": "uint256" }, "typeName": { - "id": 900, + "id": 947, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "182:7:7", @@ -12183,7 +12856,7 @@ ], "src": "181:9:7" }, - "scope": 965, + "scope": 1012, "src": "136:55:7", "stateMutability": "view", "superFunction": null, @@ -12192,7 +12865,7 @@ { "body": null, "documentation": null, - "id": 910, + "id": 957, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -12200,15 +12873,15 @@ "name": "balanceOf", "nodeType": "FunctionDefinition", "parameters": { - "id": 906, + "id": 953, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 905, + "id": 952, "name": "who", "nodeType": "VariableDeclaration", - "scope": 910, + "scope": 957, "src": "214:11:7", "stateVariable": false, "storageLocation": "default", @@ -12217,7 +12890,7 @@ "typeString": "address" }, "typeName": { - "id": 904, + "id": 951, "name": "address", "nodeType": "ElementaryTypeName", "src": "214:7:7", @@ -12234,15 +12907,15 @@ }, "payable": false, "returnParameters": { - "id": 909, + "id": 956, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 908, + "id": 955, "name": "", "nodeType": "VariableDeclaration", - "scope": 910, + "scope": 957, "src": "250:7:7", "stateVariable": false, "storageLocation": "default", @@ -12251,7 +12924,7 @@ "typeString": "uint256" }, "typeName": { - "id": 907, + "id": 954, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "250:7:7", @@ -12266,7 +12939,7 @@ ], "src": "249:9:7" }, - "scope": 965, + "scope": 1012, "src": "195:64:7", "stateMutability": "view", "superFunction": null, @@ -12275,7 +12948,7 @@ { "body": null, "documentation": null, - "id": 919, + "id": 966, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -12283,15 +12956,15 @@ "name": "allowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 915, + "id": 962, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 912, + "id": 959, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 919, + "scope": 966, "src": "282:13:7", "stateVariable": false, "storageLocation": "default", @@ -12300,7 +12973,7 @@ "typeString": "address" }, "typeName": { - "id": 911, + "id": 958, "name": "address", "nodeType": "ElementaryTypeName", "src": "282:7:7", @@ -12314,10 +12987,10 @@ }, { "constant": false, - "id": 914, + "id": 961, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 919, + "scope": 966, "src": "297:15:7", "stateVariable": false, "storageLocation": "default", @@ -12326,7 +12999,7 @@ "typeString": "address" }, "typeName": { - "id": 913, + "id": 960, "name": "address", "nodeType": "ElementaryTypeName", "src": "297:7:7", @@ -12343,15 +13016,15 @@ }, "payable": false, "returnParameters": { - "id": 918, + "id": 965, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 917, + "id": 964, "name": "", "nodeType": "VariableDeclaration", - "scope": 919, + "scope": 966, "src": "341:7:7", "stateVariable": false, "storageLocation": "default", @@ -12360,7 +13033,7 @@ "typeString": "uint256" }, "typeName": { - "id": 916, + "id": 963, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "341:7:7", @@ -12375,7 +13048,7 @@ ], "src": "340:9:7" }, - "scope": 965, + "scope": 1012, "src": "263:87:7", "stateMutability": "view", "superFunction": null, @@ -12384,7 +13057,7 @@ { "body": null, "documentation": null, - "id": 928, + "id": 975, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -12392,15 +13065,15 @@ "name": "transfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 924, + "id": 971, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 921, + "id": 968, "name": "to", "nodeType": "VariableDeclaration", - "scope": 928, + "scope": 975, "src": "372:10:7", "stateVariable": false, "storageLocation": "default", @@ -12409,7 +13082,7 @@ "typeString": "address" }, "typeName": { - "id": 920, + "id": 967, "name": "address", "nodeType": "ElementaryTypeName", "src": "372:7:7", @@ -12423,10 +13096,10 @@ }, { "constant": false, - "id": 923, + "id": 970, "name": "value", "nodeType": "VariableDeclaration", - "scope": 928, + "scope": 975, "src": "384:13:7", "stateVariable": false, "storageLocation": "default", @@ -12435,7 +13108,7 @@ "typeString": "uint256" }, "typeName": { - "id": 922, + "id": 969, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "384:7:7", @@ -12452,15 +13125,15 @@ }, "payable": false, "returnParameters": { - "id": 927, + "id": 974, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 926, + "id": 973, "name": "", "nodeType": "VariableDeclaration", - "scope": 928, + "scope": 975, "src": "417:4:7", "stateVariable": false, "storageLocation": "default", @@ -12469,7 +13142,7 @@ "typeString": "bool" }, "typeName": { - "id": 925, + "id": 972, "name": "bool", "nodeType": "ElementaryTypeName", "src": "417:4:7", @@ -12484,7 +13157,7 @@ ], "src": "416:6:7" }, - "scope": 965, + "scope": 1012, "src": "354:69:7", "stateMutability": "nonpayable", "superFunction": null, @@ -12493,7 +13166,7 @@ { "body": null, "documentation": null, - "id": 937, + "id": 984, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -12501,15 +13174,15 @@ "name": "approve", "nodeType": "FunctionDefinition", "parameters": { - "id": 933, + "id": 980, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 930, + "id": 977, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 937, + "scope": 984, "src": "444:15:7", "stateVariable": false, "storageLocation": "default", @@ -12518,7 +13191,7 @@ "typeString": "address" }, "typeName": { - "id": 929, + "id": 976, "name": "address", "nodeType": "ElementaryTypeName", "src": "444:7:7", @@ -12532,10 +13205,10 @@ }, { "constant": false, - "id": 932, + "id": 979, "name": "value", "nodeType": "VariableDeclaration", - "scope": 937, + "scope": 984, "src": "461:13:7", "stateVariable": false, "storageLocation": "default", @@ -12544,7 +13217,7 @@ "typeString": "uint256" }, "typeName": { - "id": 931, + "id": 978, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "461:7:7", @@ -12561,15 +13234,15 @@ }, "payable": false, "returnParameters": { - "id": 936, + "id": 983, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 935, + "id": 982, "name": "", "nodeType": "VariableDeclaration", - "scope": 937, + "scope": 984, "src": "498:4:7", "stateVariable": false, "storageLocation": "default", @@ -12578,7 +13251,7 @@ "typeString": "bool" }, "typeName": { - "id": 934, + "id": 981, "name": "bool", "nodeType": "ElementaryTypeName", "src": "498:4:7", @@ -12593,7 +13266,7 @@ ], "src": "497:6:7" }, - "scope": 965, + "scope": 1012, "src": "427:77:7", "stateMutability": "nonpayable", "superFunction": null, @@ -12602,7 +13275,7 @@ { "body": null, "documentation": null, - "id": 948, + "id": 995, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -12610,15 +13283,15 @@ "name": "transferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 944, + "id": 991, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 939, + "id": 986, "name": "from", "nodeType": "VariableDeclaration", - "scope": 948, + "scope": 995, "src": "530:12:7", "stateVariable": false, "storageLocation": "default", @@ -12627,7 +13300,7 @@ "typeString": "address" }, "typeName": { - "id": 938, + "id": 985, "name": "address", "nodeType": "ElementaryTypeName", "src": "530:7:7", @@ -12641,10 +13314,10 @@ }, { "constant": false, - "id": 941, + "id": 988, "name": "to", "nodeType": "VariableDeclaration", - "scope": 948, + "scope": 995, "src": "544:10:7", "stateVariable": false, "storageLocation": "default", @@ -12653,7 +13326,7 @@ "typeString": "address" }, "typeName": { - "id": 940, + "id": 987, "name": "address", "nodeType": "ElementaryTypeName", "src": "544:7:7", @@ -12667,10 +13340,10 @@ }, { "constant": false, - "id": 943, + "id": 990, "name": "value", "nodeType": "VariableDeclaration", - "scope": 948, + "scope": 995, "src": "556:13:7", "stateVariable": false, "storageLocation": "default", @@ -12679,7 +13352,7 @@ "typeString": "uint256" }, "typeName": { - "id": 942, + "id": 989, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "556:7:7", @@ -12696,15 +13369,15 @@ }, "payable": false, "returnParameters": { - "id": 947, + "id": 994, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 946, + "id": 993, "name": "", "nodeType": "VariableDeclaration", - "scope": 948, + "scope": 995, "src": "593:4:7", "stateVariable": false, "storageLocation": "default", @@ -12713,7 +13386,7 @@ "typeString": "bool" }, "typeName": { - "id": 945, + "id": 992, "name": "bool", "nodeType": "ElementaryTypeName", "src": "593:4:7", @@ -12728,7 +13401,7 @@ ], "src": "592:6:7" }, - "scope": 965, + "scope": 1012, "src": "508:91:7", "stateMutability": "nonpayable", "superFunction": null, @@ -12737,20 +13410,20 @@ { "anonymous": false, "documentation": null, - "id": 956, + "id": 1003, "name": "Transfer", "nodeType": "EventDefinition", "parameters": { - "id": 955, + "id": 1002, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 950, + "id": 997, "indexed": true, "name": "from", "nodeType": "VariableDeclaration", - "scope": 956, + "scope": 1003, "src": "623:20:7", "stateVariable": false, "storageLocation": "default", @@ -12759,7 +13432,7 @@ "typeString": "address" }, "typeName": { - "id": 949, + "id": 996, "name": "address", "nodeType": "ElementaryTypeName", "src": "623:7:7", @@ -12773,11 +13446,11 @@ }, { "constant": false, - "id": 952, + "id": 999, "indexed": true, "name": "to", "nodeType": "VariableDeclaration", - "scope": 956, + "scope": 1003, "src": "649:18:7", "stateVariable": false, "storageLocation": "default", @@ -12786,7 +13459,7 @@ "typeString": "address" }, "typeName": { - "id": 951, + "id": 998, "name": "address", "nodeType": "ElementaryTypeName", "src": "649:7:7", @@ -12800,11 +13473,11 @@ }, { "constant": false, - "id": 954, + "id": 1001, "indexed": false, "name": "value", "nodeType": "VariableDeclaration", - "scope": 956, + "scope": 1003, "src": "673:13:7", "stateVariable": false, "storageLocation": "default", @@ -12813,7 +13486,7 @@ "typeString": "uint256" }, "typeName": { - "id": 953, + "id": 1000, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "673:7:7", @@ -12833,20 +13506,20 @@ { "anonymous": false, "documentation": null, - "id": 964, + "id": 1011, "name": "Approval", "nodeType": "EventDefinition", "parameters": { - "id": 963, + "id": 1010, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 958, + "id": 1005, "indexed": true, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 964, + "scope": 1011, "src": "715:21:7", "stateVariable": false, "storageLocation": "default", @@ -12855,7 +13528,7 @@ "typeString": "address" }, "typeName": { - "id": 957, + "id": 1004, "name": "address", "nodeType": "ElementaryTypeName", "src": "715:7:7", @@ -12869,11 +13542,11 @@ }, { "constant": false, - "id": 960, + "id": 1007, "indexed": true, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 964, + "scope": 1011, "src": "742:23:7", "stateVariable": false, "storageLocation": "default", @@ -12882,7 +13555,7 @@ "typeString": "address" }, "typeName": { - "id": 959, + "id": 1006, "name": "address", "nodeType": "ElementaryTypeName", "src": "742:7:7", @@ -12896,11 +13569,11 @@ }, { "constant": false, - "id": 962, + "id": 1009, "indexed": false, "name": "value", "nodeType": "VariableDeclaration", - "scope": 964, + "scope": 1011, "src": "771:13:7", "stateVariable": false, "storageLocation": "default", @@ -12909,7 +13582,7 @@ "typeString": "uint256" }, "typeName": { - "id": 961, + "id": 1008, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "771:7:7", @@ -12927,7 +13600,7 @@ "src": "695:94:7" } ], - "scope": 966, + "scope": 1013, "src": "115:676:7" } ], @@ -12940,14 +13613,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "exportedSymbols": { "SafeERC20": [ - 1109 + 1156 ] }, - "id": 1110, + "id": 1157, "nodeType": "SourceUnit", "nodes": [ { - "id": 967, + "id": 1014, "literals": [ "solidity", "^", @@ -12960,10 +13633,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "./IERC20.sol", - "id": 968, + "id": 1015, "nodeType": "ImportDirective", - "scope": 1110, - "sourceUnit": 966, + "scope": 1157, + "sourceUnit": 1013, "src": "26:22:8", "symbolAliases": [], "unitAlias": "" @@ -12971,10 +13644,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "file": "../../math/SafeMath.sol", - "id": 969, + "id": 1016, "nodeType": "ImportDirective", - "scope": 1110, - "sourceUnit": 897, + "scope": 1157, + "sourceUnit": 944, "src": "49:33:8", "symbolAliases": [], "unitAlias": "" @@ -12985,31 +13658,31 @@ "contractKind": "library", "documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.", "fullyImplemented": true, - "id": 1109, + "id": 1156, "linearizedBaseContracts": [ - 1109 + 1156 ], "name": "SafeERC20", "nodeType": "ContractDefinition", "nodes": [ { - "id": 972, + "id": 1019, "libraryName": { "contractScope": null, - "id": 970, + "id": 1017, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 896, + "referencedDeclaration": 943, "src": "382:8:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$896", + "typeIdentifier": "t_contract$_SafeMath_$943", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", "src": "376:27:8", "typeName": { - "id": 971, + "id": 1018, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "395:7:8", @@ -13021,7 +13694,7 @@ }, { "body": { - "id": 989, + "id": 1036, "nodeType": "Block", "src": "501:45:8", "statements": [ @@ -13034,11 +13707,11 @@ "arguments": [ { "argumentTypes": null, - "id": 984, + "id": 1031, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 976, + "referencedDeclaration": 1023, "src": "530:2:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -13047,11 +13720,11 @@ }, { "argumentTypes": null, - "id": 985, + "id": 1032, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 978, + "referencedDeclaration": 1025, "src": "534:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13072,32 +13745,32 @@ ], "expression": { "argumentTypes": null, - "id": 982, + "id": 1029, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 974, + "referencedDeclaration": 1021, "src": "515:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, - "id": 983, + "id": 1030, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", - "referencedDeclaration": 928, + "referencedDeclaration": 975, "src": "515:14:8", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 986, + "id": 1033, "isConstant": false, "isLValue": false, "isPure": false, @@ -13119,21 +13792,21 @@ "typeString": "bool" } ], - "id": 981, + "id": 1028, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "507:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 987, + "id": 1034, "isConstant": false, "isLValue": false, "isPure": false, @@ -13147,14 +13820,14 @@ "typeString": "tuple()" } }, - "id": 988, + "id": 1035, "nodeType": "ExpressionStatement", "src": "507:34:8" } ] }, "documentation": null, - "id": 990, + "id": 1037, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -13162,31 +13835,31 @@ "name": "safeTransfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 979, + "id": 1026, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 974, + "id": 1021, "name": "token", "nodeType": "VariableDeclaration", - "scope": 990, + "scope": 1037, "src": "434:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 973, + "id": 1020, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 965, + "referencedDeclaration": 1012, "src": "434:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, @@ -13195,10 +13868,10 @@ }, { "constant": false, - "id": 976, + "id": 1023, "name": "to", "nodeType": "VariableDeclaration", - "scope": 990, + "scope": 1037, "src": "452:10:8", "stateVariable": false, "storageLocation": "default", @@ -13207,7 +13880,7 @@ "typeString": "address" }, "typeName": { - "id": 975, + "id": 1022, "name": "address", "nodeType": "ElementaryTypeName", "src": "452:7:8", @@ -13221,10 +13894,10 @@ }, { "constant": false, - "id": 978, + "id": 1025, "name": "value", "nodeType": "VariableDeclaration", - "scope": 990, + "scope": 1037, "src": "468:13:8", "stateVariable": false, "storageLocation": "default", @@ -13233,7 +13906,7 @@ "typeString": "uint256" }, "typeName": { - "id": 977, + "id": 1024, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "468:7:8", @@ -13250,12 +13923,12 @@ }, "payable": false, "returnParameters": { - "id": 980, + "id": 1027, "nodeType": "ParameterList", "parameters": [], "src": "501:0:8" }, - "scope": 1109, + "scope": 1156, "src": "407:139:8", "stateMutability": "nonpayable", "superFunction": null, @@ -13263,7 +13936,7 @@ }, { "body": { - "id": 1010, + "id": 1057, "nodeType": "Block", "src": "666:55:8", "statements": [ @@ -13276,11 +13949,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1004, + "id": 1051, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 994, + "referencedDeclaration": 1041, "src": "699:4:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -13289,11 +13962,11 @@ }, { "argumentTypes": null, - "id": 1005, + "id": 1052, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 996, + "referencedDeclaration": 1043, "src": "705:2:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -13302,11 +13975,11 @@ }, { "argumentTypes": null, - "id": 1006, + "id": 1053, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 998, + "referencedDeclaration": 1045, "src": "709:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13331,32 +14004,32 @@ ], "expression": { "argumentTypes": null, - "id": 1002, + "id": 1049, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 992, + "referencedDeclaration": 1039, "src": "680:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, - "id": 1003, + "id": 1050, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", - "referencedDeclaration": 948, + "referencedDeclaration": 995, "src": "680:18:8", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)" } }, - "id": 1007, + "id": 1054, "isConstant": false, "isLValue": false, "isPure": false, @@ -13378,21 +14051,21 @@ "typeString": "bool" } ], - "id": 1001, + "id": 1048, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "672:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1008, + "id": 1055, "isConstant": false, "isLValue": false, "isPure": false, @@ -13406,14 +14079,14 @@ "typeString": "tuple()" } }, - "id": 1009, + "id": 1056, "nodeType": "ExpressionStatement", "src": "672:44:8" } ] }, "documentation": null, - "id": 1011, + "id": 1058, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -13421,31 +14094,31 @@ "name": "safeTransferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 999, + "id": 1046, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 992, + "id": 1039, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1011, + "scope": 1058, "src": "581:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 991, + "id": 1038, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 965, + "referencedDeclaration": 1012, "src": "581:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, @@ -13454,10 +14127,10 @@ }, { "constant": false, - "id": 994, + "id": 1041, "name": "from", "nodeType": "VariableDeclaration", - "scope": 1011, + "scope": 1058, "src": "599:12:8", "stateVariable": false, "storageLocation": "default", @@ -13466,7 +14139,7 @@ "typeString": "address" }, "typeName": { - "id": 993, + "id": 1040, "name": "address", "nodeType": "ElementaryTypeName", "src": "599:7:8", @@ -13480,10 +14153,10 @@ }, { "constant": false, - "id": 996, + "id": 1043, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1011, + "scope": 1058, "src": "617:10:8", "stateVariable": false, "storageLocation": "default", @@ -13492,7 +14165,7 @@ "typeString": "address" }, "typeName": { - "id": 995, + "id": 1042, "name": "address", "nodeType": "ElementaryTypeName", "src": "617:7:8", @@ -13506,10 +14179,10 @@ }, { "constant": false, - "id": 998, + "id": 1045, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1011, + "scope": 1058, "src": "633:13:8", "stateVariable": false, "storageLocation": "default", @@ -13518,7 +14191,7 @@ "typeString": "uint256" }, "typeName": { - "id": 997, + "id": 1044, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "633:7:8", @@ -13535,12 +14208,12 @@ }, "payable": false, "returnParameters": { - "id": 1000, + "id": 1047, "nodeType": "ParameterList", "parameters": [], "src": "666:0:8" }, - "scope": 1109, + "scope": 1156, "src": "550:171:8", "stateMutability": "nonpayable", "superFunction": null, @@ -13548,7 +14221,7 @@ }, { "body": { - "id": 1045, + "id": 1092, "nodeType": "Block", "src": "823:330:8", "statements": [ @@ -13562,7 +14235,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1034, + "id": 1081, "isConstant": false, "isLValue": false, "isPure": false, @@ -13576,18 +14249,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1023, + "id": 1070, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1021, + "id": 1068, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1017, + "referencedDeclaration": 1064, "src": "1045:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13599,7 +14272,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1022, + "id": 1069, "isConstant": false, "isLValue": false, "isPure": true, @@ -13621,7 +14294,7 @@ } } ], - "id": 1024, + "id": 1071, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -13645,7 +14318,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1032, + "id": 1079, "isConstant": false, "isLValue": false, "isPure": false, @@ -13657,18 +14330,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1027, + "id": 1074, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1124, + "referencedDeclaration": 1171, "src": "1077:3:8", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1028, + "id": 1075, "isConstant": false, "isLValue": false, "isPure": false, @@ -13684,11 +14357,11 @@ }, { "argumentTypes": null, - "id": 1029, + "id": 1076, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1015, + "referencedDeclaration": 1062, "src": "1089:7:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -13709,32 +14382,32 @@ ], "expression": { "argumentTypes": null, - "id": 1025, + "id": 1072, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1013, + "referencedDeclaration": 1060, "src": "1061:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, - "id": 1026, + "id": 1073, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 919, + "referencedDeclaration": 966, "src": "1061:15:8", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1030, + "id": 1077, "isConstant": false, "isLValue": false, "isPure": false, @@ -13753,7 +14426,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1031, + "id": 1078, "isConstant": false, "isLValue": false, "isPure": true, @@ -13775,7 +14448,7 @@ } } ], - "id": 1033, + "id": 1080, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -13802,21 +14475,21 @@ "typeString": "bool" } ], - "id": 1020, + "id": 1067, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "1036:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1035, + "id": 1082, "isConstant": false, "isLValue": false, "isPure": false, @@ -13830,7 +14503,7 @@ "typeString": "tuple()" } }, - "id": 1036, + "id": 1083, "nodeType": "ExpressionStatement", "src": "1036:68:8" }, @@ -13843,11 +14516,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1040, + "id": 1087, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1015, + "referencedDeclaration": 1062, "src": "1132:7:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -13856,11 +14529,11 @@ }, { "argumentTypes": null, - "id": 1041, + "id": 1088, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1017, + "referencedDeclaration": 1064, "src": "1141:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13881,32 +14554,32 @@ ], "expression": { "argumentTypes": null, - "id": 1038, + "id": 1085, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1013, + "referencedDeclaration": 1060, "src": "1118:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, - "id": 1039, + "id": 1086, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 937, + "referencedDeclaration": 984, "src": "1118:13:8", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1042, + "id": 1089, "isConstant": false, "isLValue": false, "isPure": false, @@ -13928,21 +14601,21 @@ "typeString": "bool" } ], - "id": 1037, + "id": 1084, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "1110:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1043, + "id": 1090, "isConstant": false, "isLValue": false, "isPure": false, @@ -13956,14 +14629,14 @@ "typeString": "tuple()" } }, - "id": 1044, + "id": 1091, "nodeType": "ExpressionStatement", "src": "1110:38:8" } ] }, "documentation": null, - "id": 1046, + "id": 1093, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -13971,31 +14644,31 @@ "name": "safeApprove", "nodeType": "FunctionDefinition", "parameters": { - "id": 1018, + "id": 1065, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1013, + "id": 1060, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1046, + "scope": 1093, "src": "751:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1012, + "id": 1059, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 965, + "referencedDeclaration": 1012, "src": "751:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, @@ -14004,10 +14677,10 @@ }, { "constant": false, - "id": 1015, + "id": 1062, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1046, + "scope": 1093, "src": "769:15:8", "stateVariable": false, "storageLocation": "default", @@ -14016,7 +14689,7 @@ "typeString": "address" }, "typeName": { - "id": 1014, + "id": 1061, "name": "address", "nodeType": "ElementaryTypeName", "src": "769:7:8", @@ -14030,10 +14703,10 @@ }, { "constant": false, - "id": 1017, + "id": 1064, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1046, + "scope": 1093, "src": "790:13:8", "stateVariable": false, "storageLocation": "default", @@ -14042,7 +14715,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1016, + "id": 1063, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "790:7:8", @@ -14059,12 +14732,12 @@ }, "payable": false, "returnParameters": { - "id": 1019, + "id": 1066, "nodeType": "ParameterList", "parameters": [], "src": "823:0:8" }, - "scope": 1109, + "scope": 1156, "src": "725:428:8", "stateMutability": "nonpayable", "superFunction": null, @@ -14072,21 +14745,21 @@ }, { "body": { - "id": 1076, + "id": 1123, "nodeType": "Block", "src": "1265:135:8", "statements": [ { "assignments": [ - 1056 + 1103 ], "declarations": [ { "constant": false, - "id": 1056, + "id": 1103, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 1077, + "scope": 1124, "src": "1271:20:8", "stateVariable": false, "storageLocation": "default", @@ -14095,7 +14768,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1055, + "id": 1102, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1271:7:8", @@ -14108,17 +14781,17 @@ "visibility": "internal" } ], - "id": 1067, + "id": 1114, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1065, + "id": 1112, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1052, + "referencedDeclaration": 1099, "src": "1338:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -14141,14 +14814,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1060, + "id": 1107, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1145, + "referencedDeclaration": 1192, "src": "1318:4:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1109", + "typeIdentifier": "t_contract$_SafeERC20_$1156", "typeString": "library SafeERC20" } } @@ -14156,11 +14829,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$1109", + "typeIdentifier": "t_contract$_SafeERC20_$1156", "typeString": "library SafeERC20" } ], - "id": 1059, + "id": 1106, "isConstant": false, "isLValue": false, "isPure": true, @@ -14173,7 +14846,7 @@ }, "typeName": "address" }, - "id": 1061, + "id": 1108, "isConstant": false, "isLValue": false, "isPure": false, @@ -14189,11 +14862,11 @@ }, { "argumentTypes": null, - "id": 1062, + "id": 1109, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1050, + "referencedDeclaration": 1097, "src": "1325:7:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14214,32 +14887,32 @@ ], "expression": { "argumentTypes": null, - "id": 1057, + "id": 1104, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1048, + "referencedDeclaration": 1095, "src": "1294:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, - "id": 1058, + "id": 1105, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 919, + "referencedDeclaration": 966, "src": "1294:15:8", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1063, + "id": 1110, "isConstant": false, "isLValue": false, "isPure": false, @@ -14253,21 +14926,21 @@ "typeString": "uint256" } }, - "id": 1064, + "id": 1111, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 875, + "referencedDeclaration": 922, "src": "1294:43:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1066, + "id": 1113, "isConstant": false, "isLValue": false, "isPure": false, @@ -14293,11 +14966,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1071, + "id": 1118, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1050, + "referencedDeclaration": 1097, "src": "1372:7:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14306,11 +14979,11 @@ }, { "argumentTypes": null, - "id": 1072, + "id": 1119, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1056, + "referencedDeclaration": 1103, "src": "1381:12:8", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -14331,32 +15004,32 @@ ], "expression": { "argumentTypes": null, - "id": 1069, + "id": 1116, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1048, + "referencedDeclaration": 1095, "src": "1358:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, - "id": 1070, + "id": 1117, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 937, + "referencedDeclaration": 984, "src": "1358:13:8", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1073, + "id": 1120, "isConstant": false, "isLValue": false, "isPure": false, @@ -14378,21 +15051,21 @@ "typeString": "bool" } ], - "id": 1068, + "id": 1115, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "1350:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1074, + "id": 1121, "isConstant": false, "isLValue": false, "isPure": false, @@ -14406,14 +15079,14 @@ "typeString": "tuple()" } }, - "id": 1075, + "id": 1122, "nodeType": "ExpressionStatement", "src": "1350:45:8" } ] }, "documentation": null, - "id": 1077, + "id": 1124, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -14421,31 +15094,31 @@ "name": "safeIncreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1053, + "id": 1100, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1048, + "id": 1095, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1077, + "scope": 1124, "src": "1193:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1047, + "id": 1094, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 965, + "referencedDeclaration": 1012, "src": "1193:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, @@ -14454,10 +15127,10 @@ }, { "constant": false, - "id": 1050, + "id": 1097, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1077, + "scope": 1124, "src": "1211:15:8", "stateVariable": false, "storageLocation": "default", @@ -14466,7 +15139,7 @@ "typeString": "address" }, "typeName": { - "id": 1049, + "id": 1096, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:8", @@ -14480,10 +15153,10 @@ }, { "constant": false, - "id": 1052, + "id": 1099, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1077, + "scope": 1124, "src": "1232:13:8", "stateVariable": false, "storageLocation": "default", @@ -14492,7 +15165,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1051, + "id": 1098, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1232:7:8", @@ -14509,12 +15182,12 @@ }, "payable": false, "returnParameters": { - "id": 1054, + "id": 1101, "nodeType": "ParameterList", "parameters": [], "src": "1265:0:8" }, - "scope": 1109, + "scope": 1156, "src": "1157:243:8", "stateMutability": "nonpayable", "superFunction": null, @@ -14522,21 +15195,21 @@ }, { "body": { - "id": 1107, + "id": 1154, "nodeType": "Block", "src": "1512:135:8", "statements": [ { "assignments": [ - 1087 + 1134 ], "declarations": [ { "constant": false, - "id": 1087, + "id": 1134, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 1108, + "scope": 1155, "src": "1518:20:8", "stateVariable": false, "storageLocation": "default", @@ -14545,7 +15218,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1086, + "id": 1133, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1518:7:8", @@ -14558,17 +15231,17 @@ "visibility": "internal" } ], - "id": 1098, + "id": 1145, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1096, + "id": 1143, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1083, + "referencedDeclaration": 1130, "src": "1585:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -14591,14 +15264,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1091, + "id": 1138, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1145, + "referencedDeclaration": 1192, "src": "1565:4:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1109", + "typeIdentifier": "t_contract$_SafeERC20_$1156", "typeString": "library SafeERC20" } } @@ -14606,11 +15279,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$1109", + "typeIdentifier": "t_contract$_SafeERC20_$1156", "typeString": "library SafeERC20" } ], - "id": 1090, + "id": 1137, "isConstant": false, "isLValue": false, "isPure": true, @@ -14623,7 +15296,7 @@ }, "typeName": "address" }, - "id": 1092, + "id": 1139, "isConstant": false, "isLValue": false, "isPure": false, @@ -14639,11 +15312,11 @@ }, { "argumentTypes": null, - "id": 1093, + "id": 1140, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1081, + "referencedDeclaration": 1128, "src": "1572:7:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14664,32 +15337,32 @@ ], "expression": { "argumentTypes": null, - "id": 1088, + "id": 1135, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1079, + "referencedDeclaration": 1126, "src": "1541:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, - "id": 1089, + "id": 1136, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 919, + "referencedDeclaration": 966, "src": "1541:15:8", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1094, + "id": 1141, "isConstant": false, "isLValue": false, "isPure": false, @@ -14703,21 +15376,21 @@ "typeString": "uint256" } }, - "id": 1095, + "id": 1142, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 851, + "referencedDeclaration": 898, "src": "1541:43:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1097, + "id": 1144, "isConstant": false, "isLValue": false, "isPure": false, @@ -14743,11 +15416,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1102, + "id": 1149, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1081, + "referencedDeclaration": 1128, "src": "1619:7:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14756,11 +15429,11 @@ }, { "argumentTypes": null, - "id": 1103, + "id": 1150, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1087, + "referencedDeclaration": 1134, "src": "1628:12:8", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -14781,32 +15454,32 @@ ], "expression": { "argumentTypes": null, - "id": 1100, + "id": 1147, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1079, + "referencedDeclaration": 1126, "src": "1605:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, - "id": 1101, + "id": 1148, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 937, + "referencedDeclaration": 984, "src": "1605:13:8", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1104, + "id": 1151, "isConstant": false, "isLValue": false, "isPure": false, @@ -14828,21 +15501,21 @@ "typeString": "bool" } ], - "id": 1099, + "id": 1146, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1127, - 1128 + 1174, + 1175 ], - "referencedDeclaration": 1127, + "referencedDeclaration": 1174, "src": "1597:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1105, + "id": 1152, "isConstant": false, "isLValue": false, "isPure": false, @@ -14856,14 +15529,14 @@ "typeString": "tuple()" } }, - "id": 1106, + "id": 1153, "nodeType": "ExpressionStatement", "src": "1597:45:8" } ] }, "documentation": null, - "id": 1108, + "id": 1155, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -14871,31 +15544,31 @@ "name": "safeDecreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1084, + "id": 1131, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1079, + "id": 1126, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1108, + "scope": 1155, "src": "1440:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1078, + "id": 1125, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 965, + "referencedDeclaration": 1012, "src": "1440:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$965", + "typeIdentifier": "t_contract$_IERC20_$1012", "typeString": "contract IERC20" } }, @@ -14904,10 +15577,10 @@ }, { "constant": false, - "id": 1081, + "id": 1128, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1108, + "scope": 1155, "src": "1458:15:8", "stateVariable": false, "storageLocation": "default", @@ -14916,7 +15589,7 @@ "typeString": "address" }, "typeName": { - "id": 1080, + "id": 1127, "name": "address", "nodeType": "ElementaryTypeName", "src": "1458:7:8", @@ -14930,10 +15603,10 @@ }, { "constant": false, - "id": 1083, + "id": 1130, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1108, + "scope": 1155, "src": "1479:13:8", "stateVariable": false, "storageLocation": "default", @@ -14942,7 +15615,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1082, + "id": 1129, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1479:7:8", @@ -14959,19 +15632,19 @@ }, "payable": false, "returnParameters": { - "id": 1085, + "id": 1132, "nodeType": "ParameterList", "parameters": [], "src": "1512:0:8" }, - "scope": 1109, + "scope": 1156, "src": "1404:243:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 1110, + "scope": 1157, "src": "353:1296:8" } ], diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.abi b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.abi index e8b771402..88576e784 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.abi +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.abi @@ -1 +1 @@ -[{"constant":false,"inputs":[],"name":"pauseMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isAlgoMiner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[],"name":"startMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMinerAddress","type":"address"}],"name":"migrateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSystem","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"stopAndRemoveOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"resumeMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCategory","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSupervisor","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"mine","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deactivateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwnerAddress","type":"address"}],"name":"resetMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"activateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"DAYS_PER_YEAR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"stopMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"minerType","type":"uint16"},{"name":"category","type":"uint8"},{"name":"ownerAddress","type":"address"},{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file +[{"constant":false,"inputs":[],"name":"pauseMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isAlgoMiner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"isMining","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"startMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMinerAddress","type":"address"}],"name":"migrateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMiner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSystem","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"stopAndRemoveOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"resumeMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCategory","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSupervisor","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"mine","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deactivateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwnerAddress","type":"address"}],"name":"resetMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"activateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"DAYS_PER_YEAR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"stopMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"minerType","type":"uint16"},{"name":"category","type":"uint8"},{"name":"ownerAddress","type":"address"},{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin index 14cb72e69..481853b90 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b5060405160808062000fb883398101604090815281516020830151918301516060909301519092906200004d33640100000000620000de810204565b6200006133640100000000620000fc810204565b620000753364010000000062000117810204565b6003805461ffff191661ffff959095169490941762ff000019166201000060ff949094169390930292909217630100000060b860020a0319166301000000600160a060020a03928316021790925560048054600160a060020a03191691909216179055620001c5565b620000f960008264010000000062000d1d6200013282021704565b50565b620000f960018264010000000062000d1d6200013282021704565b620000f960028264010000000062000d1d6200013282021704565b600160a060020a03811615156200014857600080fd5b6200015d82826401000000006200018d810204565b156200016857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001a557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610de380620001d56000396000f3006080604052600436106101275763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663162f986d811461012c5780631777fb4b1461014357806321b79d981461016c578063231d4e2a1461018157806329d10b6e146101a25780632e6b6849146101c357806334cdcf26146101e4578063363aa6c714610205578063427534a41461021a578063608d3d3d1461022f57806374be75921461025057806380258e471461027157806381a244591461029c57806399f4b251146102bd5780639e614ca0146102d2578063ada436e9146102e7578063b2a32cd514610308578063be9524941461031d578063c6846ef814610332578063d43acc7914610359578063da4086791461036e578063e9d6185914610383575b600080fd5b34801561013857600080fd5b50610141610398565b005b34801561014f57600080fd5b506101586103fe565b604080519115158252519081900360200190f35b34801561017857600080fd5b50610141610403565b34801561018d57600080fd5b50610141600160a060020a03600435166104a7565b3480156101ae57600080fd5b50610141600160a060020a0360043516610593565b3480156101cf57600080fd5b50610141600160a060020a03600435166105b0565b3480156101f057600080fd5b50610158600160a060020a03600435166105cd565b34801561021157600080fd5b506101416105e5565b34801561022657600080fd5b5061014161068e565b34801561023b57600080fd5b50610158600160a060020a03600435166106f1565b34801561025c57600080fd5b50610141600160a060020a0360043516610704565b34801561027d57600080fd5b50610286610721565b6040805160ff9092168252519081900360200190f35b3480156102a857600080fd5b50610158600160a060020a0360043516610730565b3480156102c957600080fd5b50610141610743565b3480156102de57600080fd5b50610141610915565b3480156102f357600080fd5b50610141600160a060020a036004351661096f565b34801561031457600080fd5b50610141610a05565b34801561032957600080fd5b50610141610b18565b34801561033e57600080fd5b50610347610b23565b60408051918252519081900360200190f35b34801561036557600080fd5b50610141610b29565b34801561037a57600080fd5b50610141610b32565b34801561038f57600080fd5b50610141610bbf565b6103a133610730565b15156103ac57600080fd5b600160045460a060020a900460ff1660038111156103c657fe5b146103d057600080fd5b600480546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550565b600190565b60035463010000009004600160a060020a0316331461042157600080fd5b600160045460a060020a900460ff16600381111561043b57fe5b1461044557600080fd5b6004547501000000000000000000000000000000000000000000900460ff161561046e57600080fd5b6004805475ff00000000000000000000000000000000000000000019167501000000000000000000000000000000000000000000179055565b6104b0336106f1565b15156104bb57600080fd5b600060045460a060020a900460ff1660038111156104d557fe5b146104df57600080fd5b60048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251610590928492600160a060020a0316916370a08231916024808201926020929091908290030181600087803b15801561054b57600080fd5b505af115801561055f573d6000803e3d6000fd5b505050506040513d602081101561057557600080fd5b5051600454600160a060020a0316919063ffffffff610bc816565b50565b61059c33610730565b15156105a757600080fd5b61059081610c80565b6105b9336106f1565b15156105c457600080fd5b61059081610c91565b60006105df818363ffffffff610ca216565b92915050565b6105ee33610730565b15156105f957600080fd5b600360045460a060020a900460ff16600381111561061357fe5b141561061e57600080fd5b6004805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001775ff000000000000000000000000000000000000000000191690556003805476ffffffffffffffffffffffffffffffffffffffff00000019169055565b61069733610730565b15156106a257600080fd5b600260045460a060020a900460ff1660038111156106bc57fe5b146106c657600080fd5b600480546001919074ff0000000000000000000000000000000000000000191660a060020a836103f7565b60006105df60018363ffffffff610ca216565b61070d336105cd565b151561071857600080fd5b61059081610cd9565b60035462010000900460ff1690565b60006105df60028363ffffffff610ca216565b600061074e336105cd565b151561075957600080fd5b600160045460a060020a900460ff16600381111561077357fe5b1461077d57600080fd5b6004547501000000000000000000000000000000000000000000900460ff1615156107a757600080fd5b60045460b860020a900461ffff16151561081d576004805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a1790556108e5565b60048054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e14156108e5576004805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600554600290046005555b5060055460035460045461016d9092049161059091600160a060020a039182169163010000009091041683610bc8565b61091e336106f1565b151561092957600080fd5b600060045460a060020a900460ff16600381111561094357fe5b141561094e57600080fd5b6004805475ffff000000000000000000000000000000000000000019169055565b61097833610730565b151561098357600080fd5b600360045460a060020a900460ff16600381111561099d57fe5b146109a757600080fd5b6004805474ff0000000000000000000000000000000000000000191660a060020a17905560038054600160a060020a039290921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b6000610a10336106f1565b1515610a1b57600080fd5b600060045460a060020a900460ff166003811115610a3557fe5b14610a3f57600080fd5b6005541515610af15760048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251600160a060020a03909116916370a082319160248083019260209291908290030181600087803b158015610aaf57600080fd5b505af1158015610ac3573d6000803e3d6000fd5b505050506040513d6020811015610ad957600080fd5b50519050801515610ae957600080fd5b600281046005555b506004805474ff0000000000000000000000000000000000000000191660a060020a179055565b610b2133610cea565b565b61016d81565b610b2133610cfb565b60035463010000009004600160a060020a03163314610b5057600080fd5b600160045460a060020a900460ff166003811115610b6a57fe5b14610b7457600080fd5b6004547501000000000000000000000000000000000000000000900460ff161515610b9e57600080fd5b6004805475ff00000000000000000000000000000000000000000019169055565b610b2133610d0c565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610c4457600080fd5b505af1158015610c58573d6000803e3d6000fd5b505050506040513d6020811015610c6e57600080fd5b50511515610c7b57600080fd5b505050565b61059060028263ffffffff610d1d16565b61059060018263ffffffff610d1d16565b6000600160a060020a0382161515610cb957600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61059060008263ffffffff610d1d16565b61059060028263ffffffff610d6b16565b61059060018263ffffffff610d6b16565b61059060008263ffffffff610d6b16565b600160a060020a0381161515610d3257600080fd5b610d3c8282610ca2565b15610d4657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610d8057600080fd5b610d8a8282610ca2565b1515610d9557600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820346733bed0f72b16c5bb967042b5930d38e536cc6adf26f0a2b6cc22aaa8069d0029 \ No newline at end of file +60806040523480156200001157600080fd5b506040516080806200104f83398101604090815281516020830151918301516060909301519092906200004d3364010000000062000103810204565b620000613364010000000062000121810204565b62000075336401000000006200013c810204565b60008360ff16101580156200008e575060058360ff1611155b15156200009a57600080fd5b6003805461ffff191661ffff959095169490941762ff000019166201000060ff949094169390930292909217630100000060b860020a0319166301000000600160a060020a03928316021790925560048054600160a060020a03191691909216179055620001ea565b6200011e60008264010000000062000d8f6200015782021704565b50565b6200011e60018264010000000062000d8f6200015782021704565b6200011e60028264010000000062000d8f6200015782021704565b600160a060020a03811615156200016d57600080fd5b620001828282640100000000620001b2810204565b156200018d57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001ca57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610e5580620001fa6000396000f30060806040526004361061013d5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663162f986d81146101425780631777fb4b1461015957806319a74ab31461018257806321b79d9814610197578063231d4e2a146101ac57806329d10b6e146101cd5780632e6b6849146101ee578063302c11ca1461020f57806334cdcf2614610240578063363aa6c714610261578063427534a414610276578063608d3d3d1461028b57806374be7592146102ac57806380258e47146102cd57806381a24459146102f857806399f4b251146103195780639e614ca01461032e578063ada436e914610343578063b2a32cd514610364578063be95249414610379578063c6846ef81461038e578063d43acc79146103b5578063da408679146103ca578063e9d61859146103df575b600080fd5b34801561014e57600080fd5b506101576103f4565b005b34801561016557600080fd5b5061016e61045a565b604080519115158252519081900360200190f35b34801561018e57600080fd5b5061016e61045f565b3480156101a357600080fd5b50610157610496565b3480156101b857600080fd5b50610157600160a060020a0360043516610516565b3480156101d957600080fd5b50610157600160a060020a0360043516610602565b3480156101fa57600080fd5b50610157600160a060020a036004351661061f565b34801561021b57600080fd5b5061022461063c565b60408051600160a060020a039092168252519081900360200190f35b34801561024c57600080fd5b5061016e600160a060020a0360043516610652565b34801561026d57600080fd5b5061015761066a565b34801561028257600080fd5b50610157610713565b34801561029757600080fd5b5061016e600160a060020a0360043516610776565b3480156102b857600080fd5b50610157600160a060020a0360043516610789565b3480156102d957600080fd5b506102e26107a6565b6040805160ff9092168252519081900360200190f35b34801561030457600080fd5b5061016e600160a060020a03600435166107b5565b34801561032557600080fd5b506101576107c8565b34801561033a57600080fd5b50610157610999565b34801561034f57600080fd5b50610157600160a060020a03600435166109f3565b34801561037057600080fd5b50610157610a89565b34801561038557600080fd5b50610157610b9c565b34801561039a57600080fd5b506103a3610ba7565b60408051918252519081900360200190f35b3480156103c157600080fd5b50610157610bad565b3480156103d657600080fd5b50610157610bb6565b3480156103eb57600080fd5b50610157610c31565b6103fd336107b5565b151561040857600080fd5b600160045460a060020a900460ff16600381111561042257fe5b1461042c57600080fd5b600480546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550565b600190565b6000600160045460a060020a900460ff16600381111561047b57fe5b148015610491575060045460a860020a900460ff165b905090565b60035463010000009004600160a060020a031633146104b457600080fd5b600160045460a060020a900460ff1660038111156104ce57fe5b146104d857600080fd5b60045460a860020a900460ff16156104ef57600080fd5b6004805475ff000000000000000000000000000000000000000000191660a860020a179055565b61051f33610776565b151561052a57600080fd5b600060045460a060020a900460ff16600381111561054457fe5b1461054e57600080fd5b60048054604080517f70a082310000000000000000000000000000000000000000000000000000000081523093810193909352516105ff928492600160a060020a0316916370a08231916024808201926020929091908290030181600087803b1580156105ba57600080fd5b505af11580156105ce573d6000803e3d6000fd5b505050506040513d60208110156105e457600080fd5b5051600454600160a060020a0316919063ffffffff610c3a16565b50565b61060b336107b5565b151561061657600080fd5b6105ff81610cf2565b61062833610776565b151561063357600080fd5b6105ff81610d03565b60035463010000009004600160a060020a031690565b6000610664818363ffffffff610d1416565b92915050565b610673336107b5565b151561067e57600080fd5b600360045460a060020a900460ff16600381111561069857fe5b14156106a357600080fd5b6004805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001775ff000000000000000000000000000000000000000000191690556003805476ffffffffffffffffffffffffffffffffffffffff00000019169055565b61071c336107b5565b151561072757600080fd5b600260045460a060020a900460ff16600381111561074157fe5b1461074b57600080fd5b600480546001919074ff0000000000000000000000000000000000000000191660a060020a83610453565b600061066460018363ffffffff610d1416565b61079233610652565b151561079d57600080fd5b6105ff81610d4b565b60035462010000900460ff1690565b600061066460028363ffffffff610d1416565b60006107d333610652565b15156107de57600080fd5b600160045460a060020a900460ff1660038111156107f857fe5b1461080257600080fd5b60045460a860020a900460ff16151561081a57600080fd5b60045460b860020a900461ffff161515610890576004805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610958565b60048054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610958576004805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600554600290046005555b5060055461016d90046000811161096e57600080fd5b6003546004546105ff91600160a060020a03918216916301000000909104168363ffffffff610c3a16565b6109a233610776565b15156109ad57600080fd5b600060045460a060020a900460ff1660038111156109c757fe5b14156109d257600080fd5b6004805475ffff000000000000000000000000000000000000000019169055565b6109fc336107b5565b1515610a0757600080fd5b600360045460a060020a900460ff166003811115610a2157fe5b14610a2b57600080fd5b6004805474ff0000000000000000000000000000000000000000191660a060020a17905560038054600160a060020a039290921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b6000610a9433610776565b1515610a9f57600080fd5b600060045460a060020a900460ff166003811115610ab957fe5b14610ac357600080fd5b6005541515610b755760048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251600160a060020a03909116916370a082319160248083019260209291908290030181600087803b158015610b3357600080fd5b505af1158015610b47573d6000803e3d6000fd5b505050506040513d6020811015610b5d57600080fd5b50519050801515610b6d57600080fd5b600281046005555b506004805474ff0000000000000000000000000000000000000000191660a060020a179055565b610ba533610d5c565b565b61016d81565b610ba533610d6d565b60035463010000009004600160a060020a03163314610bd457600080fd5b600160045460a060020a900460ff166003811115610bee57fe5b14610bf857600080fd5b60045460a860020a900460ff161515610c1057600080fd5b6004805475ff00000000000000000000000000000000000000000019169055565b610ba533610d7e565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610cb657600080fd5b505af1158015610cca573d6000803e3d6000fd5b505050506040513d6020811015610ce057600080fd5b50511515610ced57600080fd5b505050565b6105ff60028263ffffffff610d8f16565b6105ff60018263ffffffff610d8f16565b6000600160a060020a0382161515610d2b57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6105ff60008263ffffffff610d8f16565b6105ff60028263ffffffff610ddd16565b6105ff60018263ffffffff610ddd16565b6105ff60008263ffffffff610ddd16565b600160a060020a0381161515610da457600080fd5b610dae8282610d14565b15610db857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610df257600080fd5b610dfc8282610d14565b1515610e0757600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058201294b6d23ba0b99db018d2b973943cf860ea9ceb1232ea85e77d5e6f5d5a2e890029 \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json index d56d737c5..1533a78f8 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json @@ -23,6 +23,20 @@ "stateMutability": "pure", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "isMining", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": false, "inputs": [], @@ -74,6 +88,20 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "getMiner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [ @@ -292,7 +320,7 @@ "type": "constructor" } ], - "bytecode": "60806040523480156200001157600080fd5b5060405160808062000fb883398101604090815281516020830151918301516060909301519092906200004d33640100000000620000de810204565b6200006133640100000000620000fc810204565b620000753364010000000062000117810204565b6003805461ffff191661ffff959095169490941762ff000019166201000060ff949094169390930292909217630100000060b860020a0319166301000000600160a060020a03928316021790925560048054600160a060020a03191691909216179055620001c5565b620000f960008264010000000062000d1d6200013282021704565b50565b620000f960018264010000000062000d1d6200013282021704565b620000f960028264010000000062000d1d6200013282021704565b600160a060020a03811615156200014857600080fd5b6200015d82826401000000006200018d810204565b156200016857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001a557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610de380620001d56000396000f3006080604052600436106101275763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663162f986d811461012c5780631777fb4b1461014357806321b79d981461016c578063231d4e2a1461018157806329d10b6e146101a25780632e6b6849146101c357806334cdcf26146101e4578063363aa6c714610205578063427534a41461021a578063608d3d3d1461022f57806374be75921461025057806380258e471461027157806381a244591461029c57806399f4b251146102bd5780639e614ca0146102d2578063ada436e9146102e7578063b2a32cd514610308578063be9524941461031d578063c6846ef814610332578063d43acc7914610359578063da4086791461036e578063e9d6185914610383575b600080fd5b34801561013857600080fd5b50610141610398565b005b34801561014f57600080fd5b506101586103fe565b604080519115158252519081900360200190f35b34801561017857600080fd5b50610141610403565b34801561018d57600080fd5b50610141600160a060020a03600435166104a7565b3480156101ae57600080fd5b50610141600160a060020a0360043516610593565b3480156101cf57600080fd5b50610141600160a060020a03600435166105b0565b3480156101f057600080fd5b50610158600160a060020a03600435166105cd565b34801561021157600080fd5b506101416105e5565b34801561022657600080fd5b5061014161068e565b34801561023b57600080fd5b50610158600160a060020a03600435166106f1565b34801561025c57600080fd5b50610141600160a060020a0360043516610704565b34801561027d57600080fd5b50610286610721565b6040805160ff9092168252519081900360200190f35b3480156102a857600080fd5b50610158600160a060020a0360043516610730565b3480156102c957600080fd5b50610141610743565b3480156102de57600080fd5b50610141610915565b3480156102f357600080fd5b50610141600160a060020a036004351661096f565b34801561031457600080fd5b50610141610a05565b34801561032957600080fd5b50610141610b18565b34801561033e57600080fd5b50610347610b23565b60408051918252519081900360200190f35b34801561036557600080fd5b50610141610b29565b34801561037a57600080fd5b50610141610b32565b34801561038f57600080fd5b50610141610bbf565b6103a133610730565b15156103ac57600080fd5b600160045460a060020a900460ff1660038111156103c657fe5b146103d057600080fd5b600480546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550565b600190565b60035463010000009004600160a060020a0316331461042157600080fd5b600160045460a060020a900460ff16600381111561043b57fe5b1461044557600080fd5b6004547501000000000000000000000000000000000000000000900460ff161561046e57600080fd5b6004805475ff00000000000000000000000000000000000000000019167501000000000000000000000000000000000000000000179055565b6104b0336106f1565b15156104bb57600080fd5b600060045460a060020a900460ff1660038111156104d557fe5b146104df57600080fd5b60048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251610590928492600160a060020a0316916370a08231916024808201926020929091908290030181600087803b15801561054b57600080fd5b505af115801561055f573d6000803e3d6000fd5b505050506040513d602081101561057557600080fd5b5051600454600160a060020a0316919063ffffffff610bc816565b50565b61059c33610730565b15156105a757600080fd5b61059081610c80565b6105b9336106f1565b15156105c457600080fd5b61059081610c91565b60006105df818363ffffffff610ca216565b92915050565b6105ee33610730565b15156105f957600080fd5b600360045460a060020a900460ff16600381111561061357fe5b141561061e57600080fd5b6004805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001775ff000000000000000000000000000000000000000000191690556003805476ffffffffffffffffffffffffffffffffffffffff00000019169055565b61069733610730565b15156106a257600080fd5b600260045460a060020a900460ff1660038111156106bc57fe5b146106c657600080fd5b600480546001919074ff0000000000000000000000000000000000000000191660a060020a836103f7565b60006105df60018363ffffffff610ca216565b61070d336105cd565b151561071857600080fd5b61059081610cd9565b60035462010000900460ff1690565b60006105df60028363ffffffff610ca216565b600061074e336105cd565b151561075957600080fd5b600160045460a060020a900460ff16600381111561077357fe5b1461077d57600080fd5b6004547501000000000000000000000000000000000000000000900460ff1615156107a757600080fd5b60045460b860020a900461ffff16151561081d576004805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a1790556108e5565b60048054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e14156108e5576004805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600554600290046005555b5060055460035460045461016d9092049161059091600160a060020a039182169163010000009091041683610bc8565b61091e336106f1565b151561092957600080fd5b600060045460a060020a900460ff16600381111561094357fe5b141561094e57600080fd5b6004805475ffff000000000000000000000000000000000000000019169055565b61097833610730565b151561098357600080fd5b600360045460a060020a900460ff16600381111561099d57fe5b146109a757600080fd5b6004805474ff0000000000000000000000000000000000000000191660a060020a17905560038054600160a060020a039290921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b6000610a10336106f1565b1515610a1b57600080fd5b600060045460a060020a900460ff166003811115610a3557fe5b14610a3f57600080fd5b6005541515610af15760048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251600160a060020a03909116916370a082319160248083019260209291908290030181600087803b158015610aaf57600080fd5b505af1158015610ac3573d6000803e3d6000fd5b505050506040513d6020811015610ad957600080fd5b50519050801515610ae957600080fd5b600281046005555b506004805474ff0000000000000000000000000000000000000000191660a060020a179055565b610b2133610cea565b565b61016d81565b610b2133610cfb565b60035463010000009004600160a060020a03163314610b5057600080fd5b600160045460a060020a900460ff166003811115610b6a57fe5b14610b7457600080fd5b6004547501000000000000000000000000000000000000000000900460ff161515610b9e57600080fd5b6004805475ff00000000000000000000000000000000000000000019169055565b610b2133610d0c565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610c4457600080fd5b505af1158015610c58573d6000803e3d6000fd5b505050506040513d6020811015610c6e57600080fd5b50511515610c7b57600080fd5b505050565b61059060028263ffffffff610d1d16565b61059060018263ffffffff610d1d16565b6000600160a060020a0382161515610cb957600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61059060008263ffffffff610d1d16565b61059060028263ffffffff610d6b16565b61059060018263ffffffff610d6b16565b61059060008263ffffffff610d6b16565b600160a060020a0381161515610d3257600080fd5b610d3c8282610ca2565b15610d4657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610d8057600080fd5b610d8a8282610ca2565b1515610d9557600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820346733bed0f72b16c5bb967042b5930d38e536cc6adf26f0a2b6cc22aaa8069d0029", + "bytecode": "60806040523480156200001157600080fd5b506040516080806200104f83398101604090815281516020830151918301516060909301519092906200004d3364010000000062000103810204565b620000613364010000000062000121810204565b62000075336401000000006200013c810204565b60008360ff16101580156200008e575060058360ff1611155b15156200009a57600080fd5b6003805461ffff191661ffff959095169490941762ff000019166201000060ff949094169390930292909217630100000060b860020a0319166301000000600160a060020a03928316021790925560048054600160a060020a03191691909216179055620001ea565b6200011e60008264010000000062000d8f6200015782021704565b50565b6200011e60018264010000000062000d8f6200015782021704565b6200011e60028264010000000062000d8f6200015782021704565b600160a060020a03811615156200016d57600080fd5b620001828282640100000000620001b2810204565b156200018d57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001ca57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610e5580620001fa6000396000f30060806040526004361061013d5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663162f986d81146101425780631777fb4b1461015957806319a74ab31461018257806321b79d9814610197578063231d4e2a146101ac57806329d10b6e146101cd5780632e6b6849146101ee578063302c11ca1461020f57806334cdcf2614610240578063363aa6c714610261578063427534a414610276578063608d3d3d1461028b57806374be7592146102ac57806380258e47146102cd57806381a24459146102f857806399f4b251146103195780639e614ca01461032e578063ada436e914610343578063b2a32cd514610364578063be95249414610379578063c6846ef81461038e578063d43acc79146103b5578063da408679146103ca578063e9d61859146103df575b600080fd5b34801561014e57600080fd5b506101576103f4565b005b34801561016557600080fd5b5061016e61045a565b604080519115158252519081900360200190f35b34801561018e57600080fd5b5061016e61045f565b3480156101a357600080fd5b50610157610496565b3480156101b857600080fd5b50610157600160a060020a0360043516610516565b3480156101d957600080fd5b50610157600160a060020a0360043516610602565b3480156101fa57600080fd5b50610157600160a060020a036004351661061f565b34801561021b57600080fd5b5061022461063c565b60408051600160a060020a039092168252519081900360200190f35b34801561024c57600080fd5b5061016e600160a060020a0360043516610652565b34801561026d57600080fd5b5061015761066a565b34801561028257600080fd5b50610157610713565b34801561029757600080fd5b5061016e600160a060020a0360043516610776565b3480156102b857600080fd5b50610157600160a060020a0360043516610789565b3480156102d957600080fd5b506102e26107a6565b6040805160ff9092168252519081900360200190f35b34801561030457600080fd5b5061016e600160a060020a03600435166107b5565b34801561032557600080fd5b506101576107c8565b34801561033a57600080fd5b50610157610999565b34801561034f57600080fd5b50610157600160a060020a03600435166109f3565b34801561037057600080fd5b50610157610a89565b34801561038557600080fd5b50610157610b9c565b34801561039a57600080fd5b506103a3610ba7565b60408051918252519081900360200190f35b3480156103c157600080fd5b50610157610bad565b3480156103d657600080fd5b50610157610bb6565b3480156103eb57600080fd5b50610157610c31565b6103fd336107b5565b151561040857600080fd5b600160045460a060020a900460ff16600381111561042257fe5b1461042c57600080fd5b600480546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550565b600190565b6000600160045460a060020a900460ff16600381111561047b57fe5b148015610491575060045460a860020a900460ff165b905090565b60035463010000009004600160a060020a031633146104b457600080fd5b600160045460a060020a900460ff1660038111156104ce57fe5b146104d857600080fd5b60045460a860020a900460ff16156104ef57600080fd5b6004805475ff000000000000000000000000000000000000000000191660a860020a179055565b61051f33610776565b151561052a57600080fd5b600060045460a060020a900460ff16600381111561054457fe5b1461054e57600080fd5b60048054604080517f70a082310000000000000000000000000000000000000000000000000000000081523093810193909352516105ff928492600160a060020a0316916370a08231916024808201926020929091908290030181600087803b1580156105ba57600080fd5b505af11580156105ce573d6000803e3d6000fd5b505050506040513d60208110156105e457600080fd5b5051600454600160a060020a0316919063ffffffff610c3a16565b50565b61060b336107b5565b151561061657600080fd5b6105ff81610cf2565b61062833610776565b151561063357600080fd5b6105ff81610d03565b60035463010000009004600160a060020a031690565b6000610664818363ffffffff610d1416565b92915050565b610673336107b5565b151561067e57600080fd5b600360045460a060020a900460ff16600381111561069857fe5b14156106a357600080fd5b6004805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001775ff000000000000000000000000000000000000000000191690556003805476ffffffffffffffffffffffffffffffffffffffff00000019169055565b61071c336107b5565b151561072757600080fd5b600260045460a060020a900460ff16600381111561074157fe5b1461074b57600080fd5b600480546001919074ff0000000000000000000000000000000000000000191660a060020a83610453565b600061066460018363ffffffff610d1416565b61079233610652565b151561079d57600080fd5b6105ff81610d4b565b60035462010000900460ff1690565b600061066460028363ffffffff610d1416565b60006107d333610652565b15156107de57600080fd5b600160045460a060020a900460ff1660038111156107f857fe5b1461080257600080fd5b60045460a860020a900460ff16151561081a57600080fd5b60045460b860020a900461ffff161515610890576004805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610958565b60048054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610958576004805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600554600290046005555b5060055461016d90046000811161096e57600080fd5b6003546004546105ff91600160a060020a03918216916301000000909104168363ffffffff610c3a16565b6109a233610776565b15156109ad57600080fd5b600060045460a060020a900460ff1660038111156109c757fe5b14156109d257600080fd5b6004805475ffff000000000000000000000000000000000000000019169055565b6109fc336107b5565b1515610a0757600080fd5b600360045460a060020a900460ff166003811115610a2157fe5b14610a2b57600080fd5b6004805474ff0000000000000000000000000000000000000000191660a060020a17905560038054600160a060020a039290921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b6000610a9433610776565b1515610a9f57600080fd5b600060045460a060020a900460ff166003811115610ab957fe5b14610ac357600080fd5b6005541515610b755760048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251600160a060020a03909116916370a082319160248083019260209291908290030181600087803b158015610b3357600080fd5b505af1158015610b47573d6000803e3d6000fd5b505050506040513d6020811015610b5d57600080fd5b50519050801515610b6d57600080fd5b600281046005555b506004805474ff0000000000000000000000000000000000000000191660a060020a179055565b610ba533610d5c565b565b61016d81565b610ba533610d6d565b60035463010000009004600160a060020a03163314610bd457600080fd5b600160045460a060020a900460ff166003811115610bee57fe5b14610bf857600080fd5b60045460a860020a900460ff161515610c1057600080fd5b6004805475ff00000000000000000000000000000000000000000019169055565b610ba533610d7e565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610cb657600080fd5b505af1158015610cca573d6000803e3d6000fd5b505050506040513d6020811015610ce057600080fd5b50511515610ced57600080fd5b505050565b6105ff60028263ffffffff610d8f16565b6105ff60018263ffffffff610d8f16565b6000600160a060020a0382161515610d2b57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6105ff60008263ffffffff610d8f16565b6105ff60028263ffffffff610ddd16565b6105ff60018263ffffffff610ddd16565b6105ff60008263ffffffff610ddd16565b600160a060020a0381161515610da457600080fd5b610dae8282610d14565b15610db857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610df257600080fd5b610dfc8282610d14565b1515610e0757600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058201294b6d23ba0b99db018d2b973943cf860ea9ceb1232ea85e77d5e6f5d5a2e890029", "functionHashes": { "DAYS_PER_YEAR()": "c6846ef8", "activateMiner()": "b2a32cd5", @@ -301,8 +329,10 @@ "addSystem(address)": "74be7592", "deactivateMiner()": "9e614ca0", "getCategory()": "80258e47", + "getMiner()": "302c11ca", "isAlgoMiner()": "1777fb4b", "isCoreTeam(address)": "608d3d3d", + "isMining()": "19a74ab3", "isSupervisor(address)": "81a24459", "isSystem(address)": "34cdcf26", "migrateMiner(address)": "231d4e2a", @@ -319,20 +349,22 @@ }, "gasEstimates": { "creation": { - "codeDepositCost": "711000", + "codeDepositCost": "733800", "executionCost": "infinite", "totalCost": "infinite" }, "external": { - "DAYS_PER_YEAR()": "580", + "DAYS_PER_YEAR()": "624", "activateMiner()": "infinite", "addCoreTeam(address)": "infinite", "addSupervisor(address)": "infinite", "addSystem(address)": "infinite", "deactivateMiner()": "infinite", - "getCategory()": "652", + "getCategory()": "696", + "getMiner()": "702", "isAlgoMiner()": "212", "isCoreTeam(address)": "infinite", + "isMining()": "859", "isSupervisor(address)": "infinite", "isSystem(address)": "infinite", "migrateMiner(address)": "infinite", @@ -343,9 +375,9 @@ "renounceSystem()": "infinite", "resetMiner(address)": "infinite", "resumeMining()": "infinite", - "startMining()": "21272", + "startMining()": "21420", "stopAndRemoveOwnership()": "infinite", - "stopMining()": "21665" + "stopMining()": "21772" } } } \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json index 15b41cc7a..b4bb44849 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json @@ -254,13 +254,13 @@ "evm": { "bytecode": { "linkReferences": {}, - "object": "608060405234801561001057600080fd5b5060405160408061076083398101604052805160209091015161003b33640100000000610077810204565b60018054600160a060020a0390921662010000026201000060b060020a031961ffff90941661ffff199093169290921792909216179055610120565b61008f60008264010000000061056b61009282021704565b50565b600160a060020a03811615156100a757600080fd5b6100ba82826401000000006100e9810204565b156100c457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561010057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106318061012f6000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632296f4c7811461009a57806325109e8b146100bd5780632e6b6849146100e4578063455acbcd14610105578063492fba841461011a57806349dc9ed01461012f578063608d3d3d146101445780639fc3c98314610179578063a89febb21461018e578063aed6183f146101a3578063d43acc79146101b8575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a03600435166101cd565b005b3480156100c957600080fd5b506100d26103cc565b60408051918252519081900360200190f35b3480156100f057600080fd5b506100bb600160a060020a03600435166103d8565b34801561011157600080fd5b506100d26103f8565b34801561012657600080fd5b506100d2610407565b34801561013b57600080fd5b506100d2610415565b34801561015057600080fd5b50610165600160a060020a0360043516610424565b604080519115158252519081900360200190f35b34801561018557600080fd5b506100d261043c565b34801561019a57600080fd5b506100d261044a565b3480156101af57600080fd5b506100d2610459565b3480156101c457600080fd5b506100bb610468565b60008060006101db33610424565b15156101e657600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561022757600080fd5b505af115801561023b573d6000803e3d6000fd5b505050506040513d602081101561025157600080fd5b5051151561025e57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561029c57600080fd5b505af11580156102b0573d6000803e3d6000fd5b505050506040513d60208110156102c657600080fd5b50519150600060ff8316108015906102e2575060058260ff1611155b15156102ed57600080fd5b50600060ff8216151561030b575069152d02c7e14af680000061039c565b8160ff1660011415610328575069d3c21bcecceda100000061039c565b8160ff166002141561034657506a01a784379d99db4200000061039c565b8160ff166003141561036457506a027b46536c66c8e300000061039c565b8160ff166004141561038257506a034f086f3b33b68400000061039c565b8160ff166005141561039c57506a0422ca8b0a00a4250000005b600081116103a957600080fd5b6001546103c690620100009004600160a060020a03168583610473565b50505050565b670de0b6b3a764000081565b6103e133610424565b15156103ec57600080fd5b6103f581610512565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b6000610436818363ffffffff61052316565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b6104713361055a565b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156104d657600080fd5b505af11580156104ea573d6000803e3d6000fd5b505050506040513d602081101561050057600080fd5b5051151561050d57600080fd5b505050565b6103f560008263ffffffff61056b16565b6000600160a060020a038216151561053a57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6103f560008263ffffffff6105b916565b600160a060020a038116151561058057600080fd5b61058a8282610523565b1561059457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a03811615156105ce57600080fd5b6105d88282610523565b15156105e357600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820fcd1665b524606952d86f870d91a6ad5ceaed631661ee3cc8731e992b464993a0029", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 PUSH2 0x760 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH2 0x3B CALLER PUSH5 0x100000000 PUSH2 0x77 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND PUSH3 0x10000 MUL PUSH3 0x10000 PUSH1 0xB0 PUSH1 0x2 EXP SUB NOT PUSH2 0xFFFF SWAP1 SWAP5 AND PUSH2 0xFFFF NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH2 0x120 JUMP JUMPDEST PUSH2 0x8F PUSH1 0x0 DUP3 PUSH5 0x100000000 PUSH2 0x56B PUSH2 0x92 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBA DUP3 DUP3 PUSH5 0x100000000 PUSH2 0xE9 DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH2 0xC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x631 DUP1 PUSH2 0x12F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x95 JUMPI PUSH4 0xFFFFFFFF PUSH1 0xE0 PUSH1 0x2 EXP PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x2296F4C7 DUP2 EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0x25109E8B EQ PUSH2 0xBD JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x455ACBCD EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x492FBA84 EQ PUSH2 0x11A JUMPI DUP1 PUSH4 0x49DC9ED0 EQ PUSH2 0x12F JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x9FC3C983 EQ PUSH2 0x179 JUMPI DUP1 PUSH4 0xA89FEBB2 EQ PUSH2 0x18E JUMPI DUP1 PUSH4 0xAED6183F EQ PUSH2 0x1A3 JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x1B8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x1CD JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x3CC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x3D8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x111 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x3F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x126 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x407 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x415 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x424 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x43C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x44A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x459 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH2 0x468 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1DB CALLER PUSH2 0x424 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 SWAP3 POP DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x227 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x23B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x251 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x25E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP PUSH1 0x0 PUSH1 0xFF DUP4 AND LT DUP1 ISZERO SWAP1 PUSH2 0x2E2 JUMPI POP PUSH1 0x5 DUP3 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0x2ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0xFF DUP3 AND ISZERO ISZERO PUSH2 0x30B JUMPI POP PUSH10 0x152D02C7E14AF6800000 PUSH2 0x39C JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x328 JUMPI POP PUSH10 0xD3C21BCECCEDA1000000 PUSH2 0x39C JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x346 JUMPI POP PUSH11 0x1A784379D99DB42000000 PUSH2 0x39C JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x364 JUMPI POP PUSH11 0x27B46536C66C8E3000000 PUSH2 0x39C JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x382 JUMPI POP PUSH11 0x34F086F3B33B684000000 PUSH2 0x39C JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x39C JUMPI POP PUSH11 0x422CA8B0A00A425000000 JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x3A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x3C6 SWAP1 PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP6 DUP4 PUSH2 0x473 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH2 0x3E1 CALLER PUSH2 0x424 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x3EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3F5 DUP2 PUSH2 0x512 JUMP JUMPDEST POP JUMP JUMPDEST PUSH11 0x34F086F3B33B684000000 DUP2 JUMP JUMPDEST PUSH10 0xD3C21BCECCEDA1000000 DUP2 JUMP JUMPDEST PUSH11 0x27B46536C66C8E3000000 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x436 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x523 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH10 0x152D02C7E14AF6800000 DUP2 JUMP JUMPDEST PUSH11 0x422CA8B0A00A425000000 DUP2 JUMP JUMPDEST PUSH11 0x1A784379D99DB42000000 DUP2 JUMP JUMPDEST PUSH2 0x471 CALLER PUSH2 0x55A JUMP JUMPDEST JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x500 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x50D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x3F5 PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x56B AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x53A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x3F5 PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x5B9 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x580 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x58A DUP3 DUP3 PUSH2 0x523 JUMP JUMPDEST ISZERO PUSH2 0x594 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x5CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5D8 DUP3 DUP3 PUSH2 0x523 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x5E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xfc 0xd1 PUSH7 0x5B524606952D86 0xf8 PUSH17 0xD91A6AD5CEAED631661EE3CC8731E992B4 PUSH5 0x993A002900 ", - "sourceMap": "490:1691:1:-;;;1113:174;8:9:-1;5:2;;;30:1;27;20:12;5:2;1113:174:1;;;;;;;;;;;;;;;;;;;368:24:0;381:10;368:12;;;;:24;:::i;:::-;1219:9:1;:20;;-1:-1:-1;;;;;1250:29:1;;;;;-1:-1:-1;;;;;;1219:20:1;;;;-1:-1:-1;;1219:20:1;;;;;;;1250:29;;;;;;;490:1691;;824:96:0;883:29;:16;904:7;883:20;;;;;;:29;:::i;:::-;824:96;:::o;244:167:3:-;-1:-1:-1;;;;;316:21:3;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:3;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:3;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:3;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:3;:11;:20;;;;;;;;;;;;;;;725:166::o;490:1691:1:-;;;;;;;" + "object": "608060405234801561001057600080fd5b506040516040806107aa83398101604052805160209091015161003b33640100000000610077810204565b60018054600160a060020a0390921662010000026201000060b060020a031961ffff90941661ffff199093169290921792909216179055610120565b61008f6000826401000000006105b561009282021704565b50565b600160a060020a03811615156100a757600080fd5b6100ba82826401000000006100e9810204565b156100c457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561010057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61067b8061012f6000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632296f4c7811461009a57806325109e8b146100bd5780632e6b6849146100e4578063455acbcd14610105578063492fba841461011a57806349dc9ed01461012f578063608d3d3d146101445780639fc3c98314610179578063a89febb21461018e578063aed6183f146101a3578063d43acc79146101b8575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a03600435166101cd565b005b3480156100c957600080fd5b506100d2610416565b60408051918252519081900360200190f35b3480156100f057600080fd5b506100bb600160a060020a0360043516610422565b34801561011157600080fd5b506100d2610442565b34801561012657600080fd5b506100d2610451565b34801561013b57600080fd5b506100d261045f565b34801561015057600080fd5b50610165600160a060020a036004351661046e565b604080519115158252519081900360200190f35b34801561018557600080fd5b506100d2610486565b34801561019a57600080fd5b506100d2610494565b3480156101af57600080fd5b506100d26104a3565b3480156101c457600080fd5b506100bb6104b2565b60008060006101db3361046e565b15156101e657600080fd5b600160a060020a03841660009081526002602052604090205460ff161561020c57600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561024d57600080fd5b505af1158015610261573d6000803e3d6000fd5b505050506040513d602081101561027757600080fd5b5051151561028457600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102c257600080fd5b505af11580156102d6573d6000803e3d6000fd5b505050506040513d60208110156102ec57600080fd5b50519150600060ff831610801590610308575060058260ff1611155b151561031357600080fd5b50600060ff82161515610331575069152d02c7e14af68000006103c2565b8160ff166001141561034e575069d3c21bcecceda10000006103c2565b8160ff166002141561036c57506a01a784379d99db420000006103c2565b8160ff166003141561038a57506a027b46536c66c8e30000006103c2565b8160ff16600414156103a857506a034f086f3b33b6840000006103c2565b8160ff16600514156103c257506a0422ca8b0a00a4250000005b600081116103cf57600080fd5b600160a060020a038085166000908152600260205260409020805460ff1916600190811790915554610410916201000090910416858363ffffffff6104bd16565b50505050565b670de0b6b3a764000081565b61042b3361046e565b151561043657600080fd5b61043f8161055c565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b6000610480818363ffffffff61056d16565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b6104bb336105a4565b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561052057600080fd5b505af1158015610534573d6000803e3d6000fd5b505050506040513d602081101561054a57600080fd5b5051151561055757600080fd5b505050565b61043f60008263ffffffff6105b516565b6000600160a060020a038216151561058457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61043f60008263ffffffff61060316565b600160a060020a03811615156105ca57600080fd5b6105d4828261056d565b156105de57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561061857600080fd5b610622828261056d565b151561062d57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058200648204d7a0ac13aa2e9ab7514200c49dd33ae54f0178fd146385ad3444f20ee0029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 PUSH2 0x7AA DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH2 0x3B CALLER PUSH5 0x100000000 PUSH2 0x77 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND PUSH3 0x10000 MUL PUSH3 0x10000 PUSH1 0xB0 PUSH1 0x2 EXP SUB NOT PUSH2 0xFFFF SWAP1 SWAP5 AND PUSH2 0xFFFF NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH2 0x120 JUMP JUMPDEST PUSH2 0x8F PUSH1 0x0 DUP3 PUSH5 0x100000000 PUSH2 0x5B5 PUSH2 0x92 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBA DUP3 DUP3 PUSH5 0x100000000 PUSH2 0xE9 DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH2 0xC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x67B DUP1 PUSH2 0x12F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x95 JUMPI PUSH4 0xFFFFFFFF PUSH1 0xE0 PUSH1 0x2 EXP PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x2296F4C7 DUP2 EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0x25109E8B EQ PUSH2 0xBD JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x455ACBCD EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x492FBA84 EQ PUSH2 0x11A JUMPI DUP1 PUSH4 0x49DC9ED0 EQ PUSH2 0x12F JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x9FC3C983 EQ PUSH2 0x179 JUMPI DUP1 PUSH4 0xA89FEBB2 EQ PUSH2 0x18E JUMPI DUP1 PUSH4 0xAED6183F EQ PUSH2 0x1A3 JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x1B8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x1CD JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x416 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x422 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x111 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x442 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x126 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x451 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x45F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x46E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x486 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x494 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x4A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH2 0x4B2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1DB CALLER PUSH2 0x46E JUMP JUMPDEST ISZERO ISZERO PUSH2 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x20C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 SWAP3 POP DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x261 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x277 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP PUSH1 0x0 PUSH1 0xFF DUP4 AND LT DUP1 ISZERO SWAP1 PUSH2 0x308 JUMPI POP PUSH1 0x5 DUP3 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0x313 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0xFF DUP3 AND ISZERO ISZERO PUSH2 0x331 JUMPI POP PUSH10 0x152D02C7E14AF6800000 PUSH2 0x3C2 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x34E JUMPI POP PUSH10 0xD3C21BCECCEDA1000000 PUSH2 0x3C2 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x36C JUMPI POP PUSH11 0x1A784379D99DB42000000 PUSH2 0x3C2 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x38A JUMPI POP PUSH11 0x27B46536C66C8E3000000 PUSH2 0x3C2 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x3A8 JUMPI POP PUSH11 0x34F086F3B33B684000000 PUSH2 0x3C2 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x3C2 JUMPI POP PUSH11 0x422CA8B0A00A425000000 JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x3CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x410 SWAP2 PUSH3 0x10000 SWAP1 SWAP2 DIV AND DUP6 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x4BD AND JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH2 0x42B CALLER PUSH2 0x46E JUMP JUMPDEST ISZERO ISZERO PUSH2 0x436 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43F DUP2 PUSH2 0x55C JUMP JUMPDEST POP JUMP JUMPDEST PUSH11 0x34F086F3B33B684000000 DUP2 JUMP JUMPDEST PUSH10 0xD3C21BCECCEDA1000000 DUP2 JUMP JUMPDEST PUSH11 0x27B46536C66C8E3000000 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x480 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x56D AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH10 0x152D02C7E14AF6800000 DUP2 JUMP JUMPDEST PUSH11 0x422CA8B0A00A425000000 DUP2 JUMP JUMPDEST PUSH11 0x1A784379D99DB42000000 DUP2 JUMP JUMPDEST PUSH2 0x4BB CALLER PUSH2 0x5A4 JUMP JUMPDEST JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x520 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x534 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x54A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x557 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x43F PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x5B5 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x584 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x43F PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x603 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x5CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5D4 DUP3 DUP3 PUSH2 0x56D JUMP JUMPDEST ISZERO PUSH2 0x5DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x618 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x622 DUP3 DUP3 PUSH2 0x56D JUMP JUMPDEST ISZERO ISZERO PUSH2 0x62D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 MOD 0x48 KECCAK256 0x4d PUSH27 0xAC13AA2E9AB7514200C49DD33AE54F0178FD146385AD3444F20EE STOP 0x29 ", + "sourceMap": "490:1831:1:-;;;1158:174;8:9:-1;5:2;;;30:1;27;20:12;5:2;1158:174:1;;;;;;;;;;;;;;;;;;;368:24:0;381:10;368:12;;;;:24;:::i;:::-;1264:9:1;:20;;-1:-1:-1;;;;;1295:29:1;;;;;-1:-1:-1;;;;;;1264:20:1;;;;-1:-1:-1;;1264:20:1;;;;;;;1295:29;;;;;;;490:1831;;824:96:0;883:29;:16;904:7;883:20;;;;;;:29;:::i;:::-;824:96;:::o;244:167:3:-;-1:-1:-1;;;;;316:21:3;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:3;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:3;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:3;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:3;:11;:20;;;;;;;;;;;;;;;725:166::o;490:1831:1:-;;;;;;;" }, "gasEstimates": { "creation": { - "codeDepositCost": "317000", + "codeDepositCost": "331800", "executionCost": "infinite", "totalCost": "infinite" }, @@ -292,7 +292,7 @@ "trasferToMiner(address)": "2296f4c7" } }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"trasferToMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"TOKEN_FACTOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_4_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_1_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_3_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_0_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_5_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_2_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"poolType\",\"type\":\"uint16\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":\"AlgoPool\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":{\"keccak256\":\"0xaa20972ee94e17902a4362885750505af52aeaa2e0cae1bf259b4ba3c3923d32\",\"urls\":[\"bzzr://cb35cac4a863c851295ac8608f3076d82cb1661797bed96740ef01d558ccfb61\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0xb457e39e512b5475c3e70193ab0a751f6626a50417954247f0cf47c7ca15eff7\",\"urls\":[\"bzzr://3b585a4055121fee393f2b691538036c87f56556f43f0b6e851a88de7b8275e6\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"trasferToMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"TOKEN_FACTOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_4_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_1_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_3_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_0_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_5_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_2_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"poolType\",\"type\":\"uint16\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":\"AlgoPool\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":{\"keccak256\":\"0x36684faaffdccd3408380faed00c3c73ed986c568a88e0cb9e8d12761b4d49cc\",\"urls\":[\"bzzr://9eb7271afec474b033f225a395d76b8dff2afd730dc21f9f10ec6c059714de6b\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0xb457e39e512b5475c3e70193ab0a751f6626a50417954247f0cf47c7ca15eff7\",\"urls\":[\"bzzr://3b585a4055121fee393f2b691538036c87f56556f43f0b6e851a88de7b8275e6\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -692,7 +692,7 @@ "id": 2, "nodeType": "ImportDirective", "scope": 87, - "sourceUnit": 382, + "sourceUnit": 399, "src": "28:189:0", "symbolAliases": [], "unitAlias": "" @@ -717,10 +717,10 @@ "id": 3, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 381, + "referencedDeclaration": 398, "src": "260:5:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$381", + "typeIdentifier": "t_contract$_Roles_$398", "typeString": "library Roles" } }, @@ -731,10 +731,10 @@ "id": 4, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 294, + "referencedDeclaration": 311, "src": "270:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role" } } @@ -749,7 +749,7 @@ "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage", + "typeIdentifier": "t_struct$_Role_$311_storage", "typeString": "struct Roles.Role" }, "typeName": { @@ -757,10 +757,10 @@ "id": 6, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 294, + "referencedDeclaration": 311, "src": "289:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -785,7 +785,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 737, + "referencedDeclaration": 754, "src": "381:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -893,7 +893,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 737, + "referencedDeclaration": 754, "src": "462:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -959,10 +959,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "443:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -1047,7 +1047,7 @@ "referencedDeclaration": 7, "src": "584:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage", + "typeIdentifier": "t_struct$_Role_$311_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1058,10 +1058,10 @@ "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 380, + "referencedDeclaration": 397, "src": "584:20:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$294_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$294_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$311_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$311_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, @@ -1321,7 +1321,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 737, + "referencedDeclaration": 754, "src": "797:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1448,7 +1448,7 @@ "referencedDeclaration": 7, "src": "883:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage", + "typeIdentifier": "t_struct$_Role_$311_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1459,10 +1459,10 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 326, + "referencedDeclaration": 343, "src": "883:20:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$294_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$294_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$311_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$311_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -1580,7 +1580,7 @@ "referencedDeclaration": 7, "src": "990:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage", + "typeIdentifier": "t_struct$_Role_$311_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1591,10 +1591,10 @@ "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 357, + "referencedDeclaration": 374, "src": "990:23:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$294_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$294_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$311_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$311_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -1686,10 +1686,10 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol", "exportedSymbols": { "AlgoPool": [ - 274 + 291 ] }, - "id": 275, + "id": 292, "nodeType": "SourceUnit", "nodes": [ { @@ -1707,8 +1707,8 @@ "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "id": 89, "nodeType": "ImportDirective", - "scope": 275, - "sourceUnit": 579, + "scope": 292, + "sourceUnit": 596, "src": "27:195:1", "symbolAliases": [], "unitAlias": "" @@ -1718,8 +1718,8 @@ "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "id": 90, "nodeType": "ImportDirective", - "scope": 275, - "sourceUnit": 723, + "scope": 292, + "sourceUnit": 740, "src": "224:198:1", "symbolAliases": [], "unitAlias": "" @@ -1729,8 +1729,8 @@ "file": "./IAlgoMiner.sol", "id": 91, "nodeType": "ImportDirective", - "scope": 275, - "sourceUnit": 288, + "scope": 292, + "sourceUnit": 305, "src": "426:26:1", "symbolAliases": [], "unitAlias": "" @@ -1740,7 +1740,7 @@ "file": "./AlgoCoreTeamRole.sol", "id": 92, "nodeType": "ImportDirective", - "scope": 275, + "scope": 292, "sourceUnit": 87, "src": "454:32:1", "symbolAliases": [], @@ -1773,9 +1773,9 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 274, + "id": 291, "linearizedBaseContracts": [ - 274, + 291, 86 ], "name": "AlgoPool", @@ -1788,10 +1788,10 @@ "id": 95, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 722, + "referencedDeclaration": 739, "src": "541:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$722", + "typeIdentifier": "t_contract$_SafeERC20_$739", "typeString": "library SafeERC20" } }, @@ -1802,10 +1802,10 @@ "id": 96, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 578, + "referencedDeclaration": 595, "src": "555:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } } @@ -1815,7 +1815,7 @@ "id": 104, "name": "TOKEN_FACTOR", "nodeType": "VariableDeclaration", - "scope": 274, + "scope": 291, "src": "570:56:1", "stateVariable": true, "storageLocation": "default", @@ -1933,7 +1933,7 @@ "id": 109, "name": "CAT_0_VALUE", "nodeType": "VariableDeclaration", - "scope": 274, + "scope": 291, "src": "633:59:1", "stateVariable": true, "storageLocation": "default", @@ -2008,7 +2008,7 @@ "id": 114, "name": "CAT_1_VALUE", "nodeType": "VariableDeclaration", - "scope": 274, + "scope": 291, "src": "699:60:1", "stateVariable": true, "storageLocation": "default", @@ -2083,7 +2083,7 @@ "id": 121, "name": "CAT_2_VALUE", "nodeType": "VariableDeclaration", - "scope": 274, + "scope": 291, "src": "766:64:1", "stateVariable": true, "storageLocation": "default", @@ -2195,7 +2195,7 @@ "id": 128, "name": "CAT_3_VALUE", "nodeType": "VariableDeclaration", - "scope": 274, + "scope": 291, "src": "837:64:1", "stateVariable": true, "storageLocation": "default", @@ -2307,7 +2307,7 @@ "id": 135, "name": "CAT_4_VALUE", "nodeType": "VariableDeclaration", - "scope": 274, + "scope": 291, "src": "908:64:1", "stateVariable": true, "storageLocation": "default", @@ -2419,7 +2419,7 @@ "id": 142, "name": "CAT_5_VALUE", "nodeType": "VariableDeclaration", - "scope": 274, + "scope": 291, "src": "979:64:1", "stateVariable": true, "storageLocation": "default", @@ -2531,7 +2531,7 @@ "id": 144, "name": "_poolType", "nodeType": "VariableDeclaration", - "scope": 274, + "scope": 291, "src": "1052:24:1", "stateVariable": true, "storageLocation": "default", @@ -2557,12 +2557,12 @@ "id": 146, "name": "_token", "nodeType": "VariableDeclaration", - "scope": 274, + "scope": 291, "src": "1083:21:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" }, "typeName": { @@ -2570,38 +2570,83 @@ "id": 145, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 578, + "referencedDeclaration": 595, "src": "1083:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, "value": null, "visibility": "private" }, + { + "constant": false, + "id": 150, + "name": "_fundedMiners", + "nodeType": "VariableDeclaration", + "scope": 291, + "src": "1111:38:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 149, + "keyType": { + "id": 147, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1119:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1111:24:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 148, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1130:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "internal" + }, { "body": { - "id": 165, + "id": 169, "nodeType": "Block", - "src": "1208:79:1", + "src": "1253:79:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 157, + "id": 161, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 155, + "id": 159, "name": "_poolType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 144, - "src": "1219:9:1", + "src": "1264:9:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -2611,45 +2656,45 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 156, + "id": 160, "name": "poolType", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 148, - "src": "1231:8:1", + "referencedDeclaration": 152, + "src": "1276:8:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "src": "1219:20:1", + "src": "1264:20:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 158, + "id": 162, "nodeType": "ExpressionStatement", - "src": "1219:20:1" + "src": "1264:20:1" }, { "expression": { "argumentTypes": null, - "id": 163, + "id": 167, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 159, + "id": 163, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 146, - "src": "1250:6:1", + "src": "1295:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, @@ -2660,12 +2705,12 @@ "arguments": [ { "argumentTypes": null, - "id": 161, + "id": 165, "name": "tokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 150, - "src": "1266:12:1", + "referencedDeclaration": 154, + "src": "1311:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2679,18 +2724,18 @@ "typeString": "address" } ], - "id": 160, + "id": 164, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 578, - "src": "1259:6:1", + "referencedDeclaration": 595, + "src": "1304:6:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$578_$", + "typeIdentifier": "t_type$_t_contract$_IERC20_$595_$", "typeString": "type(contract IERC20)" } }, - "id": 162, + "id": 166, "isConstant": false, "isLValue": false, "isPure": false, @@ -2698,63 +2743,63 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1259:20:1", + "src": "1304:20:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, - "src": "1250:29:1", + "src": "1295:29:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, - "id": 164, + "id": 168, "nodeType": "ExpressionStatement", - "src": "1250:29:1" + "src": "1295:29:1" } ] }, "documentation": null, - "id": 166, + "id": 170, "implemented": true, "isConstructor": true, "isDeclaredConst": false, "modifiers": [ { "arguments": [], - "id": 153, + "id": 157, "modifierName": { "argumentTypes": null, - "id": 152, + "id": 156, "name": "AlgoCoreTeamRole", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86, - "src": "1173:16:1", + "src": "1218:16:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_AlgoCoreTeamRole_$86_$", "typeString": "type(contract AlgoCoreTeamRole)" } }, "nodeType": "ModifierInvocation", - "src": "1173:18:1" + "src": "1218:18:1" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 151, + "id": 155, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 148, + "id": 152, "name": "poolType", "nodeType": "VariableDeclaration", - "scope": 166, - "src": "1125:15:1", + "scope": 170, + "src": "1170:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2762,10 +2807,10 @@ "typeString": "uint16" }, "typeName": { - "id": 147, + "id": 151, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "1125:6:1", + "src": "1170:6:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -2776,11 +2821,11 @@ }, { "constant": false, - "id": 150, + "id": 154, "name": "tokenAddress", "nodeType": "VariableDeclaration", - "scope": 166, - "src": "1142:20:1", + "scope": 170, + "src": "1187:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2788,10 +2833,10 @@ "typeString": "address" }, "typeName": { - "id": 149, + "id": 153, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1142:7:1", + "src": "1187:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2801,54 +2846,154 @@ "visibility": "internal" } ], - "src": "1124:39:1" + "src": "1169:39:1" }, "payable": false, "returnParameters": { - "id": 154, + "id": 158, "nodeType": "ParameterList", "parameters": [], - "src": "1208:0:1" + "src": "1253:0:1" }, - "scope": 274, - "src": "1113:174:1", + "scope": 291, + "src": "1158:174:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 272, + "id": 289, "nodeType": "Block", - "src": "1361:817:1", + "src": "1406:912:1", "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1425:28:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 178, + "name": "_fundedMiners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 150, + "src": "1426:13:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 180, + "indexExpression": { + "argumentTypes": null, + "id": 179, + "name": "minerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 172, + "src": "1440:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1426:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 177, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 757, + 758 + ], + "referencedDeclaration": 757, + "src": "1417:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1417:37:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 183, + "nodeType": "ExpressionStatement", + "src": "1417:37:1" + }, { "assignments": [ - 174 + 185 ], "declarations": [ { "constant": false, - "id": 174, + "id": 185, "name": "algoMiner", "nodeType": "VariableDeclaration", - "scope": 273, - "src": "1372:20:1", + "scope": 290, + "src": "1467:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$287", + "typeIdentifier": "t_contract$_IAlgoMiner_$304", "typeString": "contract IAlgoMiner" }, "typeName": { "contractScope": null, - "id": 173, + "id": 184, "name": "IAlgoMiner", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 287, - "src": "1372:10:1", + "referencedDeclaration": 304, + "src": "1467:10:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$287", + "typeIdentifier": "t_contract$_IAlgoMiner_$304", "typeString": "contract IAlgoMiner" } }, @@ -2856,18 +3001,18 @@ "visibility": "internal" } ], - "id": 178, + "id": 189, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 176, + "id": 187, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 168, - "src": "1406:12:1", + "referencedDeclaration": 172, + "src": "1501:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2881,18 +3026,18 @@ "typeString": "address" } ], - "id": 175, + "id": 186, "name": "IAlgoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 287, - "src": "1395:10:1", + "referencedDeclaration": 304, + "src": "1490:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$287_$", + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$304_$", "typeString": "type(contract IAlgoMiner)" } }, - "id": 177, + "id": 188, "isConstant": false, "isLValue": false, "isPure": false, @@ -2900,14 +3045,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1395:24:1", + "src": "1490:24:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$287", + "typeIdentifier": "t_contract$_IAlgoMiner_$304", "typeString": "contract IAlgoMiner" } }, "nodeType": "VariableDeclarationStatement", - "src": "1372:47:1" + "src": "1467:47:1" }, { "expression": { @@ -2920,32 +3065,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 180, + "id": 191, "name": "algoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 174, - "src": "1448:9:1", + "referencedDeclaration": 185, + "src": "1543:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$287", + "typeIdentifier": "t_contract$_IAlgoMiner_$304", "typeString": "contract IAlgoMiner" } }, - "id": 181, + "id": 192, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isAlgoMiner", "nodeType": "MemberAccess", - "referencedDeclaration": 281, - "src": "1448:21:1", + "referencedDeclaration": 298, + "src": "1543:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$__$returns$_t_bool_$", "typeString": "function () pure external returns (bool)" } }, - "id": 182, + "id": 193, "isConstant": false, "isLValue": false, "isPure": false, @@ -2953,7 +3098,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1448:23:1", + "src": "1543:23:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2967,21 +3112,21 @@ "typeString": "bool" } ], - "id": 179, + "id": 190, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, - "src": "1440:7:1", + "referencedDeclaration": 757, + "src": "1535:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 183, + "id": 194, "isConstant": false, "isLValue": false, "isPure": false, @@ -2989,28 +3134,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1440:32:1", + "src": "1535:32:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 184, + "id": 195, "nodeType": "ExpressionStatement", - "src": "1440:32:1" + "src": "1535:32:1" }, { "assignments": [ - 186 + 197 ], "declarations": [ { "constant": false, - "id": 186, + "id": 197, "name": "minerCategory", "nodeType": "VariableDeclaration", - "scope": 273, - "src": "1493:19:1", + "scope": 290, + "src": "1588:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3018,10 +3163,10 @@ "typeString": "uint8" }, "typeName": { - "id": 185, + "id": 196, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1493:5:1", + "src": "1588:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3031,7 +3176,7 @@ "visibility": "internal" } ], - "id": 190, + "id": 201, "initialValue": { "argumentTypes": null, "arguments": [], @@ -3039,32 +3184,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 187, + "id": 198, "name": "algoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 174, - "src": "1515:9:1", + "referencedDeclaration": 185, + "src": "1610:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$287", + "typeIdentifier": "t_contract$_IAlgoMiner_$304", "typeString": "contract IAlgoMiner" } }, - "id": 188, + "id": 199, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getCategory", "nodeType": "MemberAccess", - "referencedDeclaration": 286, - "src": "1515:21:1", + "referencedDeclaration": 303, + "src": "1610:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, - "id": 189, + "id": 200, "isConstant": false, "isLValue": false, "isPure": false, @@ -3072,14 +3217,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1515:23:1", + "src": "1610:23:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", - "src": "1493:45:1" + "src": "1588:45:1" }, { "expression": { @@ -3091,7 +3236,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 198, + "id": 209, "isConstant": false, "isLValue": false, "isPure": false, @@ -3102,19 +3247,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 194, + "id": 205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 192, + "id": 203, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 186, - "src": "1559:13:1", + "referencedDeclaration": 197, + "src": "1654:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3125,14 +3270,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 193, + "id": 204, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1576:1:1", + "src": "1671:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3140,7 +3285,7 @@ }, "value": "0" }, - "src": "1559:18:1", + "src": "1654:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3154,19 +3299,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 197, + "id": 208, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 195, + "id": 206, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 186, - "src": "1581:13:1", + "referencedDeclaration": 197, + "src": "1676:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3177,14 +3322,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "35", - "id": 196, + "id": 207, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1598:1:1", + "src": "1693:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -3192,13 +3337,13 @@ }, "value": "5" }, - "src": "1581:18:1", + "src": "1676:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1559:40:1", + "src": "1654:40:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3212,21 +3357,21 @@ "typeString": "bool" } ], - "id": 191, + "id": 202, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, - "src": "1551:7:1", + "referencedDeclaration": 757, + "src": "1646:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 199, + "id": 210, "isConstant": false, "isLValue": false, "isPure": false, @@ -3234,28 +3379,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1551:49:1", + "src": "1646:49:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 200, + "id": 211, "nodeType": "ExpressionStatement", - "src": "1551:49:1" + "src": "1646:49:1" }, { "assignments": [ - 202 + 213 ], "declarations": [ { "constant": false, - "id": 202, + "id": 213, "name": "value", "nodeType": "VariableDeclaration", - "scope": 273, - "src": "1613:13:1", + "scope": 290, + "src": "1708:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3263,10 +3408,10 @@ "typeString": "uint256" }, "typeName": { - "id": 201, + "id": 212, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1613:7:1", + "src": "1708:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3276,18 +3421,18 @@ "visibility": "internal" } ], - "id": 204, + "id": 215, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 203, + "id": 214, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1629:1:1", + "src": "1724:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3296,7 +3441,7 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1613:17:1" + "src": "1708:17:1" }, { "condition": { @@ -3305,19 +3450,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 207, + "id": 218, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 205, + "id": 216, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 186, - "src": "1646:13:1", + "referencedDeclaration": 197, + "src": "1741:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3328,14 +3473,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 206, + "id": 217, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1663:1:1", + "src": "1758:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3343,7 +3488,7 @@ }, "value": "0" }, - "src": "1646:18:1", + "src": "1741:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3356,19 +3501,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 215, + "id": 226, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 213, + "id": 224, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 186, - "src": "1721:13:1", + "referencedDeclaration": 197, + "src": "1816:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3379,14 +3524,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 214, + "id": 225, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1738:1:1", + "src": "1833:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -3394,7 +3539,7 @@ }, "value": "1" }, - "src": "1721:18:1", + "src": "1816:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3407,19 +3552,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 223, + "id": 234, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 221, + "id": 232, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 186, - "src": "1796:13:1", + "referencedDeclaration": 197, + "src": "1891:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3430,14 +3575,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 222, + "id": 233, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1813:1:1", + "src": "1908:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -3445,7 +3590,7 @@ }, "value": "2" }, - "src": "1796:18:1", + "src": "1891:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3458,19 +3603,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 231, + "id": 242, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 229, + "id": 240, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 186, - "src": "1871:13:1", + "referencedDeclaration": 197, + "src": "1966:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3481,14 +3626,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "33", - "id": 230, + "id": 241, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1888:1:1", + "src": "1983:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", @@ -3496,7 +3641,7 @@ }, "value": "3" }, - "src": "1871:18:1", + "src": "1966:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3509,19 +3654,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 239, + "id": 250, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 237, + "id": 248, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 186, - "src": "1946:13:1", + "referencedDeclaration": 197, + "src": "2041:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3532,14 +3677,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "34", - "id": 238, + "id": 249, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1963:1:1", + "src": "2058:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", @@ -3547,7 +3692,7 @@ }, "value": "4" }, - "src": "1946:18:1", + "src": "2041:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3560,19 +3705,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 247, + "id": 258, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 245, + "id": 256, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 186, - "src": "2021:13:1", + "referencedDeclaration": 197, + "src": "2116:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3583,14 +3728,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "35", - "id": 246, + "id": 257, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2038:1:1", + "src": "2133:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -3598,37 +3743,37 @@ }, "value": "5" }, - "src": "2021:18:1", + "src": "2116:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 253, + "id": 264, "nodeType": "IfStatement", - "src": "2018:69:1", + "src": "2113:69:1", "trueBody": { - "id": 252, + "id": 263, "nodeType": "Block", - "src": "2041:46:1", + "src": "2136:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 250, + "id": 261, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 248, + "id": 259, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 202, - "src": "2056:5:1", + "referencedDeclaration": 213, + "src": "2151:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3638,54 +3783,54 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 249, + "id": 260, "name": "CAT_5_VALUE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 142, - "src": "2064:11:1", + "src": "2159:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2056:19:1", + "src": "2151:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 251, + "id": 262, "nodeType": "ExpressionStatement", - "src": "2056:19:1" + "src": "2151:19:1" } ] } }, - "id": 254, + "id": 265, "nodeType": "IfStatement", - "src": "1943:144:1", + "src": "2038:144:1", "trueBody": { - "id": 244, + "id": 255, "nodeType": "Block", - "src": "1966:46:1", + "src": "2061:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 242, + "id": 253, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 240, + "id": 251, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 202, - "src": "1981:5:1", + "referencedDeclaration": 213, + "src": "2076:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3695,54 +3840,54 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 241, + "id": 252, "name": "CAT_4_VALUE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 135, - "src": "1989:11:1", + "src": "2084:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1981:19:1", + "src": "2076:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 243, + "id": 254, "nodeType": "ExpressionStatement", - "src": "1981:19:1" + "src": "2076:19:1" } ] } }, - "id": 255, + "id": 266, "nodeType": "IfStatement", - "src": "1868:219:1", + "src": "1963:219:1", "trueBody": { - "id": 236, + "id": 247, "nodeType": "Block", - "src": "1891:46:1", + "src": "1986:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 234, + "id": 245, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 232, + "id": 243, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 202, - "src": "1906:5:1", + "referencedDeclaration": 213, + "src": "2001:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3752,54 +3897,54 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 233, + "id": 244, "name": "CAT_3_VALUE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 128, - "src": "1914:11:1", + "src": "2009:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1906:19:1", + "src": "2001:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 235, + "id": 246, "nodeType": "ExpressionStatement", - "src": "1906:19:1" + "src": "2001:19:1" } ] } }, - "id": 256, + "id": 267, "nodeType": "IfStatement", - "src": "1793:294:1", + "src": "1888:294:1", "trueBody": { - "id": 228, + "id": 239, "nodeType": "Block", - "src": "1816:46:1", + "src": "1911:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 226, + "id": 237, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 224, + "id": 235, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 202, - "src": "1831:5:1", + "referencedDeclaration": 213, + "src": "1926:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3809,54 +3954,54 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 225, + "id": 236, "name": "CAT_2_VALUE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 121, - "src": "1839:11:1", + "src": "1934:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1831:19:1", + "src": "1926:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 227, + "id": 238, "nodeType": "ExpressionStatement", - "src": "1831:19:1" + "src": "1926:19:1" } ] } }, - "id": 257, + "id": 268, "nodeType": "IfStatement", - "src": "1718:369:1", + "src": "1813:369:1", "trueBody": { - "id": 220, + "id": 231, "nodeType": "Block", - "src": "1741:46:1", + "src": "1836:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 218, + "id": 229, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 216, + "id": 227, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 202, - "src": "1756:5:1", + "referencedDeclaration": 213, + "src": "1851:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3866,54 +4011,54 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 217, + "id": 228, "name": "CAT_1_VALUE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 114, - "src": "1764:11:1", + "src": "1859:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1756:19:1", + "src": "1851:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 219, + "id": 230, "nodeType": "ExpressionStatement", - "src": "1756:19:1" + "src": "1851:19:1" } ] } }, - "id": 258, + "id": 269, "nodeType": "IfStatement", - "src": "1643:444:1", + "src": "1738:444:1", "trueBody": { - "id": 212, + "id": 223, "nodeType": "Block", - "src": "1666:46:1", + "src": "1761:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 210, + "id": 221, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 208, + "id": 219, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 202, - "src": "1681:5:1", + "referencedDeclaration": 213, + "src": "1776:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3923,26 +4068,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 209, + "id": 220, "name": "CAT_0_VALUE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109, - "src": "1689:11:1", + "src": "1784:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1681:19:1", + "src": "1776:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 211, + "id": 222, "nodeType": "ExpressionStatement", - "src": "1681:19:1" + "src": "1776:19:1" } ] } @@ -3957,19 +4102,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 262, + "id": 273, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 260, + "id": 271, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 202, - "src": "2107:5:1", + "referencedDeclaration": 213, + "src": "2202:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3980,14 +4125,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 261, + "id": 272, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2115:1:1", + "src": "2210:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3995,7 +4140,7 @@ }, "value": "0" }, - "src": "2107:9:1", + "src": "2202:9:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4009,21 +4154,21 @@ "typeString": "bool" } ], - "id": 259, + "id": 270, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, - "src": "2099:7:1", + "referencedDeclaration": 757, + "src": "2194:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 263, + "id": 274, "isConstant": false, "isLValue": false, "isPure": false, @@ -4031,15 +4176,93 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2099:18:1", + "src": "2194:18:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 264, + "id": 275, "nodeType": "ExpressionStatement", - "src": "2099:18:1" + "src": "2194:18:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 276, + "name": "_fundedMiners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 150, + "src": "2225:13:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 278, + "indexExpression": { + "argumentTypes": null, + "id": 277, + "name": "minerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 172, + "src": "2239:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2225:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 279, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2255:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "2225:34:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 281, + "nodeType": "ExpressionStatement", + "src": "2225:34:1" }, { "expression": { @@ -4047,12 +4270,12 @@ "arguments": [ { "argumentTypes": null, - "id": 268, + "id": 285, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 168, - "src": "2150:12:1", + "referencedDeclaration": 172, + "src": "2290:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4060,12 +4283,12 @@ }, { "argumentTypes": null, - "id": 269, + "id": 286, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 202, - "src": "2164:5:1", + "referencedDeclaration": 213, + "src": "2304:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4085,32 +4308,32 @@ ], "expression": { "argumentTypes": null, - "id": 265, + "id": 282, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 146, - "src": "2130:6:1", + "src": "2270:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, - "id": 267, + "id": 284, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 603, - "src": "2130:19:1", + "referencedDeclaration": 620, + "src": "2270:19:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$578_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$578_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$595_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$595_$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 270, + "id": 287, "isConstant": false, "isLValue": false, "isPure": false, @@ -4118,57 +4341,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2130:40:1", + "src": "2270:40:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 271, + "id": 288, "nodeType": "ExpressionStatement", - "src": "2130:40:1" + "src": "2270:40:1" } ] }, "documentation": null, - "id": 273, + "id": 290, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 171, + "id": 175, "modifierName": { "argumentTypes": null, - "id": 170, + "id": 174, "name": "onlyCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, - "src": "1348:12:1", + "src": "1393:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1348:12:1" + "src": "1393:12:1" } ], "name": "trasferToMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 169, + "id": 173, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 168, + "id": 172, "name": "minerAddress", "nodeType": "VariableDeclaration", - "scope": 273, - "src": "1319:20:1", + "scope": 290, + "src": "1364:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4176,10 +4399,10 @@ "typeString": "address" }, "typeName": { - "id": 167, + "id": 171, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1319:7:1", + "src": "1364:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4189,27 +4412,27 @@ "visibility": "internal" } ], - "src": "1318:22:1" + "src": "1363:22:1" }, "payable": false, "returnParameters": { - "id": 172, + "id": 176, "nodeType": "ParameterList", "parameters": [], - "src": "1361:0:1" + "src": "1406:0:1" }, - "scope": 274, - "src": "1295:883:1", + "scope": 291, + "src": "1340:978:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 275, - "src": "490:1691:1" + "scope": 292, + "src": "490:1831:1" } ], - "src": "0:2183:1" + "src": "0:2323:1" }, "id": 1 }, @@ -4218,14 +4441,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", "exportedSymbols": { "IAlgoMiner": [ - 287 + 304 ] }, - "id": 288, + "id": 305, "nodeType": "SourceUnit", "nodes": [ { - "id": 276, + "id": 293, "literals": [ "solidity", "0.4", @@ -4240,9 +4463,9 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 287, + "id": 304, "linearizedBaseContracts": [ - 287 + 304 ], "name": "IAlgoMiner", "nodeType": "ContractDefinition", @@ -4250,7 +4473,7 @@ { "body": null, "documentation": null, - "id": 281, + "id": 298, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -4258,22 +4481,22 @@ "name": "isAlgoMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 277, + "id": 294, "nodeType": "ParameterList", "parameters": [], "src": "74:2:2" }, "payable": false, "returnParameters": { - "id": 280, + "id": 297, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 279, + "id": 296, "name": "", "nodeType": "VariableDeclaration", - "scope": 281, + "scope": 298, "src": "98:4:2", "stateVariable": false, "storageLocation": "default", @@ -4282,7 +4505,7 @@ "typeString": "bool" }, "typeName": { - "id": 278, + "id": 295, "name": "bool", "nodeType": "ElementaryTypeName", "src": "98:4:2", @@ -4297,7 +4520,7 @@ ], "src": "97:6:2" }, - "scope": 287, + "scope": 304, "src": "54:50:2", "stateMutability": "pure", "superFunction": null, @@ -4306,7 +4529,7 @@ { "body": null, "documentation": null, - "id": 286, + "id": 303, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -4314,22 +4537,22 @@ "name": "getCategory", "nodeType": "FunctionDefinition", "parameters": { - "id": 282, + "id": 299, "nodeType": "ParameterList", "parameters": [], "src": "130:2:2" }, "payable": false, "returnParameters": { - "id": 285, + "id": 302, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 284, + "id": 301, "name": "", "nodeType": "VariableDeclaration", - "scope": 286, + "scope": 303, "src": "154:5:2", "stateVariable": false, "storageLocation": "default", @@ -4338,7 +4561,7 @@ "typeString": "uint8" }, "typeName": { - "id": 283, + "id": 300, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "154:5:2", @@ -4353,14 +4576,14 @@ ], "src": "153:7:2" }, - "scope": 287, + "scope": 304, "src": "110:51:2", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 288, + "scope": 305, "src": "27:137:2" } ], @@ -4373,14 +4596,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "exportedSymbols": { "Roles": [ - 381 + 398 ] }, - "id": 382, + "id": 399, "nodeType": "SourceUnit", "nodes": [ { - "id": 289, + "id": 306, "literals": [ "solidity", "^", @@ -4396,23 +4619,23 @@ "contractKind": "library", "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", "fullyImplemented": true, - "id": 381, + "id": 398, "linearizedBaseContracts": [ - 381 + 398 ], "name": "Roles", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "Roles.Role", - "id": 294, + "id": 311, "members": [ { "constant": false, - "id": 293, + "id": 310, "name": "bearer", "nodeType": "VariableDeclaration", - "scope": 294, + "scope": 311, "src": "145:32:3", "stateVariable": false, "storageLocation": "default", @@ -4421,9 +4644,9 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 292, + "id": 309, "keyType": { - "id": 290, + "id": 307, "name": "address", "nodeType": "ElementaryTypeName", "src": "154:7:3", @@ -4439,7 +4662,7 @@ "typeString": "mapping(address => bool)" }, "valueType": { - "id": 291, + "id": 308, "name": "bool", "nodeType": "ElementaryTypeName", "src": "165:4:3", @@ -4455,13 +4678,13 @@ ], "name": "Role", "nodeType": "StructDefinition", - "scope": 381, + "scope": 398, "src": "127:55:3", "visibility": "public" }, { "body": { - "id": 325, + "id": 342, "nodeType": "Block", "src": "302:109:3", "statements": [ @@ -4475,18 +4698,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 306, + "id": 323, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 302, + "id": 319, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 298, + "referencedDeclaration": 315, "src": "316:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4501,7 +4724,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 304, + "id": 321, "isConstant": false, "isLValue": false, "isPure": true, @@ -4524,7 +4747,7 @@ "typeString": "int_const 0" } ], - "id": 303, + "id": 320, "isConstant": false, "isLValue": false, "isPure": true, @@ -4537,7 +4760,7 @@ }, "typeName": "address" }, - "id": 305, + "id": 322, "isConstant": false, "isLValue": false, "isPure": true, @@ -4565,21 +4788,21 @@ "typeString": "bool" } ], - "id": 301, + "id": 318, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "308:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 307, + "id": 324, "isConstant": false, "isLValue": false, "isPure": false, @@ -4593,7 +4816,7 @@ "typeString": "tuple()" } }, - "id": 308, + "id": 325, "nodeType": "ExpressionStatement", "src": "308:30:3" }, @@ -4603,7 +4826,7 @@ "arguments": [ { "argumentTypes": null, - "id": 314, + "id": 331, "isConstant": false, "isLValue": false, "isPure": false, @@ -4617,24 +4840,24 @@ "arguments": [ { "argumentTypes": null, - "id": 311, + "id": 328, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 296, + "referencedDeclaration": 313, "src": "357:4:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, { "argumentTypes": null, - "id": 312, + "id": 329, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 298, + "referencedDeclaration": 315, "src": "363:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4645,7 +4868,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role storage pointer" }, { @@ -4653,18 +4876,18 @@ "typeString": "address" } ], - "id": 310, + "id": 327, "name": "has", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 380, + "referencedDeclaration": 397, "src": "353:3:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$294_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$311_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 313, + "id": 330, "isConstant": false, "isLValue": false, "isPure": false, @@ -4691,21 +4914,21 @@ "typeString": "bool" } ], - "id": 309, + "id": 326, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "344:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 315, + "id": 332, "isConstant": false, "isLValue": false, "isPure": false, @@ -4719,14 +4942,14 @@ "typeString": "tuple()" } }, - "id": 316, + "id": 333, "nodeType": "ExpressionStatement", "src": "344:28:3" }, { "expression": { "argumentTypes": null, - "id": 323, + "id": 340, "isConstant": false, "isLValue": false, "isPure": false, @@ -4737,39 +4960,39 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 317, + "id": 334, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 296, + "referencedDeclaration": 313, "src": "379:4:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 320, + "id": 337, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 293, + "referencedDeclaration": 310, "src": "379:11:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 321, + "id": 338, "indexExpression": { "argumentTypes": null, - "id": 319, + "id": 336, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 298, + "referencedDeclaration": 315, "src": "391:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4792,7 +5015,7 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 322, + "id": 339, "isConstant": false, "isLValue": false, "isPure": true, @@ -4813,14 +5036,14 @@ "typeString": "bool" } }, - "id": 324, + "id": 341, "nodeType": "ExpressionStatement", "src": "379:27:3" } ] }, "documentation": "@dev give an account access to this role", - "id": 326, + "id": 343, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -4828,31 +5051,31 @@ "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 299, + "id": 316, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 296, + "id": 313, "name": "role", "nodeType": "VariableDeclaration", - "scope": 326, + "scope": 343, "src": "257:17:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 295, + "id": 312, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 294, + "referencedDeclaration": 311, "src": "257:4:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -4861,10 +5084,10 @@ }, { "constant": false, - "id": 298, + "id": 315, "name": "account", "nodeType": "VariableDeclaration", - "scope": 326, + "scope": 343, "src": "276:15:3", "stateVariable": false, "storageLocation": "default", @@ -4873,7 +5096,7 @@ "typeString": "address" }, "typeName": { - "id": 297, + "id": 314, "name": "address", "nodeType": "ElementaryTypeName", "src": "276:7:3", @@ -4890,12 +5113,12 @@ }, "payable": false, "returnParameters": { - "id": 300, + "id": 317, "nodeType": "ParameterList", "parameters": [], "src": "302:0:3" }, - "scope": 381, + "scope": 398, "src": "244:167:3", "stateMutability": "nonpayable", "superFunction": null, @@ -4903,7 +5126,7 @@ }, { "body": { - "id": 356, + "id": 373, "nodeType": "Block", "src": "538:109:3", "statements": [ @@ -4917,18 +5140,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 338, + "id": 355, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 334, + "id": 351, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 330, + "referencedDeclaration": 347, "src": "552:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4943,7 +5166,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 336, + "id": 353, "isConstant": false, "isLValue": false, "isPure": true, @@ -4966,7 +5189,7 @@ "typeString": "int_const 0" } ], - "id": 335, + "id": 352, "isConstant": false, "isLValue": false, "isPure": true, @@ -4979,7 +5202,7 @@ }, "typeName": "address" }, - "id": 337, + "id": 354, "isConstant": false, "isLValue": false, "isPure": true, @@ -5007,21 +5230,21 @@ "typeString": "bool" } ], - "id": 333, + "id": 350, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "544:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 339, + "id": 356, "isConstant": false, "isLValue": false, "isPure": false, @@ -5035,7 +5258,7 @@ "typeString": "tuple()" } }, - "id": 340, + "id": 357, "nodeType": "ExpressionStatement", "src": "544:30:3" }, @@ -5048,24 +5271,24 @@ "arguments": [ { "argumentTypes": null, - "id": 343, + "id": 360, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 328, + "referencedDeclaration": 345, "src": "592:4:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, { "argumentTypes": null, - "id": 344, + "id": 361, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 330, + "referencedDeclaration": 347, "src": "598:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5076,7 +5299,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role storage pointer" }, { @@ -5084,18 +5307,18 @@ "typeString": "address" } ], - "id": 342, + "id": 359, "name": "has", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 380, + "referencedDeclaration": 397, "src": "588:3:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$294_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$311_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 345, + "id": 362, "isConstant": false, "isLValue": false, "isPure": false, @@ -5117,21 +5340,21 @@ "typeString": "bool" } ], - "id": 341, + "id": 358, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "580:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 346, + "id": 363, "isConstant": false, "isLValue": false, "isPure": false, @@ -5145,14 +5368,14 @@ "typeString": "tuple()" } }, - "id": 347, + "id": 364, "nodeType": "ExpressionStatement", "src": "580:27:3" }, { "expression": { "argumentTypes": null, - "id": 354, + "id": 371, "isConstant": false, "isLValue": false, "isPure": false, @@ -5163,39 +5386,39 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 348, + "id": 365, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 328, + "referencedDeclaration": 345, "src": "614:4:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 351, + "id": 368, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 293, + "referencedDeclaration": 310, "src": "614:11:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 352, + "id": 369, "indexExpression": { "argumentTypes": null, - "id": 350, + "id": 367, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 330, + "referencedDeclaration": 347, "src": "626:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5218,7 +5441,7 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 353, + "id": 370, "isConstant": false, "isLValue": false, "isPure": true, @@ -5239,14 +5462,14 @@ "typeString": "bool" } }, - "id": 355, + "id": 372, "nodeType": "ExpressionStatement", "src": "614:28:3" } ] }, "documentation": "@dev remove an account's access to this role", - "id": 357, + "id": 374, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -5254,31 +5477,31 @@ "name": "remove", "nodeType": "FunctionDefinition", "parameters": { - "id": 331, + "id": 348, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 328, + "id": 345, "name": "role", "nodeType": "VariableDeclaration", - "scope": 357, + "scope": 374, "src": "493:17:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 327, + "id": 344, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 294, + "referencedDeclaration": 311, "src": "493:4:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -5287,10 +5510,10 @@ }, { "constant": false, - "id": 330, + "id": 347, "name": "account", "nodeType": "VariableDeclaration", - "scope": 357, + "scope": 374, "src": "512:15:3", "stateVariable": false, "storageLocation": "default", @@ -5299,7 +5522,7 @@ "typeString": "address" }, "typeName": { - "id": 329, + "id": 346, "name": "address", "nodeType": "ElementaryTypeName", "src": "512:7:3", @@ -5316,12 +5539,12 @@ }, "payable": false, "returnParameters": { - "id": 332, + "id": 349, "nodeType": "ParameterList", "parameters": [], "src": "538:0:3" }, - "scope": 381, + "scope": 398, "src": "477:170:3", "stateMutability": "nonpayable", "superFunction": null, @@ -5329,7 +5552,7 @@ }, { "body": { - "id": 379, + "id": 396, "nodeType": "Block", "src": "817:74:3", "statements": [ @@ -5343,18 +5566,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 371, + "id": 388, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 367, + "id": 384, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 361, + "referencedDeclaration": 378, "src": "831:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5369,7 +5592,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 369, + "id": 386, "isConstant": false, "isLValue": false, "isPure": true, @@ -5392,7 +5615,7 @@ "typeString": "int_const 0" } ], - "id": 368, + "id": 385, "isConstant": false, "isLValue": false, "isPure": true, @@ -5405,7 +5628,7 @@ }, "typeName": "address" }, - "id": 370, + "id": 387, "isConstant": false, "isLValue": false, "isPure": true, @@ -5433,21 +5656,21 @@ "typeString": "bool" } ], - "id": 366, + "id": 383, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "823:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 372, + "id": 389, "isConstant": false, "isLValue": false, "isPure": false, @@ -5461,7 +5684,7 @@ "typeString": "tuple()" } }, - "id": 373, + "id": 390, "nodeType": "ExpressionStatement", "src": "823:30:3" }, @@ -5472,39 +5695,39 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 374, + "id": 391, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 359, + "referencedDeclaration": 376, "src": "866:4:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 375, + "id": 392, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 293, + "referencedDeclaration": 310, "src": "866:11:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 377, + "id": 394, "indexExpression": { "argumentTypes": null, - "id": 376, + "id": 393, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 361, + "referencedDeclaration": 378, "src": "878:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5522,15 +5745,15 @@ "typeString": "bool" } }, - "functionReturnParameters": 365, - "id": 378, + "functionReturnParameters": 382, + "id": 395, "nodeType": "Return", "src": "859:27:3" } ] }, "documentation": "@dev check if an account has this role\n@return bool", - "id": 380, + "id": 397, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -5538,31 +5761,31 @@ "name": "has", "nodeType": "FunctionDefinition", "parameters": { - "id": 362, + "id": 379, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 359, + "id": 376, "name": "role", "nodeType": "VariableDeclaration", - "scope": 380, + "scope": 397, "src": "738:17:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 358, + "id": 375, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 294, + "referencedDeclaration": 311, "src": "738:4:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$294_storage_ptr", + "typeIdentifier": "t_struct$_Role_$311_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -5571,10 +5794,10 @@ }, { "constant": false, - "id": 361, + "id": 378, "name": "account", "nodeType": "VariableDeclaration", - "scope": 380, + "scope": 397, "src": "757:15:3", "stateVariable": false, "storageLocation": "default", @@ -5583,7 +5806,7 @@ "typeString": "address" }, "typeName": { - "id": 360, + "id": 377, "name": "address", "nodeType": "ElementaryTypeName", "src": "757:7:3", @@ -5600,15 +5823,15 @@ }, "payable": false, "returnParameters": { - "id": 365, + "id": 382, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 364, + "id": 381, "name": "", "nodeType": "VariableDeclaration", - "scope": 380, + "scope": 397, "src": "809:4:3", "stateVariable": false, "storageLocation": "default", @@ -5617,7 +5840,7 @@ "typeString": "bool" }, "typeName": { - "id": 363, + "id": 380, "name": "bool", "nodeType": "ElementaryTypeName", "src": "809:4:3", @@ -5632,14 +5855,14 @@ ], "src": "808:6:3" }, - "scope": 381, + "scope": 398, "src": "725:166:3", "stateMutability": "view", "superFunction": null, "visibility": "internal" } ], - "scope": 382, + "scope": 399, "src": "109:784:3" } ], @@ -5652,14 +5875,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "exportedSymbols": { "SafeMath": [ - 509 + 526 ] }, - "id": 510, + "id": 527, "nodeType": "SourceUnit", "nodes": [ { - "id": 383, + "id": 400, "literals": [ "solidity", "^", @@ -5675,16 +5898,16 @@ "contractKind": "library", "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", "fullyImplemented": true, - "id": 509, + "id": 526, "linearizedBaseContracts": [ - 509 + 526 ], "name": "SafeMath", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 415, + "id": 432, "nodeType": "Block", "src": "271:314:4", "statements": [ @@ -5695,18 +5918,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 394, + "id": 411, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 392, + "id": 409, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 385, + "referencedDeclaration": 402, "src": "486:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5718,7 +5941,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 393, + "id": 410, "isConstant": false, "isLValue": false, "isPure": true, @@ -5740,11 +5963,11 @@ } }, "falseBody": null, - "id": 398, + "id": 415, "nodeType": "IfStatement", "src": "482:35:4", "trueBody": { - "id": 397, + "id": 414, "nodeType": "Block", "src": "494:23:4", "statements": [ @@ -5752,7 +5975,7 @@ "expression": { "argumentTypes": null, "hexValue": "30", - "id": 395, + "id": 412, "isConstant": false, "isLValue": false, "isPure": true, @@ -5767,8 +5990,8 @@ }, "value": "0" }, - "functionReturnParameters": 391, - "id": 396, + "functionReturnParameters": 408, + "id": 413, "nodeType": "Return", "src": "502:8:4" } @@ -5777,15 +6000,15 @@ }, { "assignments": [ - 400 + 417 ], "declarations": [ { "constant": false, - "id": 400, + "id": 417, "name": "c", "nodeType": "VariableDeclaration", - "scope": 416, + "scope": 433, "src": "523:9:4", "stateVariable": false, "storageLocation": "default", @@ -5794,7 +6017,7 @@ "typeString": "uint256" }, "typeName": { - "id": 399, + "id": 416, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "523:7:4", @@ -5807,25 +6030,25 @@ "visibility": "internal" } ], - "id": 404, + "id": 421, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 403, + "id": 420, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 401, + "id": 418, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 385, + "referencedDeclaration": 402, "src": "535:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5836,11 +6059,11 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 402, + "id": 419, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 387, + "referencedDeclaration": 404, "src": "539:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5866,7 +6089,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 410, + "id": 427, "isConstant": false, "isLValue": false, "isPure": false, @@ -5877,18 +6100,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 408, + "id": 425, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 406, + "id": 423, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 400, + "referencedDeclaration": 417, "src": "554:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5899,11 +6122,11 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 407, + "id": 424, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 385, + "referencedDeclaration": 402, "src": "558:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5920,11 +6143,11 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 409, + "id": 426, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 387, + "referencedDeclaration": 404, "src": "563:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5945,21 +6168,21 @@ "typeString": "bool" } ], - "id": 405, + "id": 422, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "546:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 411, + "id": 428, "isConstant": false, "isLValue": false, "isPure": false, @@ -5973,33 +6196,33 @@ "typeString": "tuple()" } }, - "id": 412, + "id": 429, "nodeType": "ExpressionStatement", "src": "546:19:4" }, { "expression": { "argumentTypes": null, - "id": 413, + "id": 430, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 400, + "referencedDeclaration": 417, "src": "579:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 391, - "id": 414, + "functionReturnParameters": 408, + "id": 431, "nodeType": "Return", "src": "572:8:4" } ] }, "documentation": "@dev Multiplies two numbers, reverts on overflow.", - "id": 416, + "id": 433, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -6007,15 +6230,15 @@ "name": "mul", "nodeType": "FunctionDefinition", "parameters": { - "id": 388, + "id": 405, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 385, + "id": 402, "name": "a", "nodeType": "VariableDeclaration", - "scope": 416, + "scope": 433, "src": "217:9:4", "stateVariable": false, "storageLocation": "default", @@ -6024,7 +6247,7 @@ "typeString": "uint256" }, "typeName": { - "id": 384, + "id": 401, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "217:7:4", @@ -6038,10 +6261,10 @@ }, { "constant": false, - "id": 387, + "id": 404, "name": "b", "nodeType": "VariableDeclaration", - "scope": 416, + "scope": 433, "src": "228:9:4", "stateVariable": false, "storageLocation": "default", @@ -6050,7 +6273,7 @@ "typeString": "uint256" }, "typeName": { - "id": 386, + "id": 403, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "228:7:4", @@ -6067,15 +6290,15 @@ }, "payable": false, "returnParameters": { - "id": 391, + "id": 408, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 390, + "id": 407, "name": "", "nodeType": "VariableDeclaration", - "scope": 416, + "scope": 433, "src": "262:7:4", "stateVariable": false, "storageLocation": "default", @@ -6084,7 +6307,7 @@ "typeString": "uint256" }, "typeName": { - "id": 389, + "id": 406, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "262:7:4", @@ -6099,7 +6322,7 @@ ], "src": "261:9:4" }, - "scope": 509, + "scope": 526, "src": "204:381:4", "stateMutability": "pure", "superFunction": null, @@ -6107,7 +6330,7 @@ }, { "body": { - "id": 439, + "id": 456, "nodeType": "Block", "src": "762:203:4", "statements": [ @@ -6121,18 +6344,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 428, + "id": 445, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 426, + "id": 443, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 420, + "referencedDeclaration": 437, "src": "776:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6144,7 +6367,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 427, + "id": 444, "isConstant": false, "isLValue": false, "isPure": true, @@ -6173,21 +6396,21 @@ "typeString": "bool" } ], - "id": 425, + "id": 442, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "768:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 429, + "id": 446, "isConstant": false, "isLValue": false, "isPure": false, @@ -6201,21 +6424,21 @@ "typeString": "tuple()" } }, - "id": 430, + "id": 447, "nodeType": "ExpressionStatement", "src": "768:14:4" }, { "assignments": [ - 432 + 449 ], "declarations": [ { "constant": false, - "id": 432, + "id": 449, "name": "c", "nodeType": "VariableDeclaration", - "scope": 440, + "scope": 457, "src": "846:9:4", "stateVariable": false, "storageLocation": "default", @@ -6224,7 +6447,7 @@ "typeString": "uint256" }, "typeName": { - "id": 431, + "id": 448, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "846:7:4", @@ -6237,25 +6460,25 @@ "visibility": "internal" } ], - "id": 436, + "id": 453, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 435, + "id": 452, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 433, + "id": 450, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 418, + "referencedDeclaration": 435, "src": "858:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6266,11 +6489,11 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 434, + "id": 451, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 420, + "referencedDeclaration": 437, "src": "862:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6289,26 +6512,26 @@ { "expression": { "argumentTypes": null, - "id": 437, + "id": 454, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 432, + "referencedDeclaration": 449, "src": "959:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 424, - "id": 438, + "functionReturnParameters": 441, + "id": 455, "nodeType": "Return", "src": "952:8:4" } ] }, "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", - "id": 440, + "id": 457, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -6316,15 +6539,15 @@ "name": "div", "nodeType": "FunctionDefinition", "parameters": { - "id": 421, + "id": 438, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 418, + "id": 435, "name": "a", "nodeType": "VariableDeclaration", - "scope": 440, + "scope": 457, "src": "708:9:4", "stateVariable": false, "storageLocation": "default", @@ -6333,7 +6556,7 @@ "typeString": "uint256" }, "typeName": { - "id": 417, + "id": 434, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "708:7:4", @@ -6347,10 +6570,10 @@ }, { "constant": false, - "id": 420, + "id": 437, "name": "b", "nodeType": "VariableDeclaration", - "scope": 440, + "scope": 457, "src": "719:9:4", "stateVariable": false, "storageLocation": "default", @@ -6359,7 +6582,7 @@ "typeString": "uint256" }, "typeName": { - "id": 419, + "id": 436, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "719:7:4", @@ -6376,15 +6599,15 @@ }, "payable": false, "returnParameters": { - "id": 424, + "id": 441, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 423, + "id": 440, "name": "", "nodeType": "VariableDeclaration", - "scope": 440, + "scope": 457, "src": "753:7:4", "stateVariable": false, "storageLocation": "default", @@ -6393,7 +6616,7 @@ "typeString": "uint256" }, "typeName": { - "id": 422, + "id": 439, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "753:7:4", @@ -6408,7 +6631,7 @@ ], "src": "752:9:4" }, - "scope": 509, + "scope": 526, "src": "695:270:4", "stateMutability": "pure", "superFunction": null, @@ -6416,7 +6639,7 @@ }, { "body": { - "id": 463, + "id": 480, "nodeType": "Block", "src": "1145:64:4", "statements": [ @@ -6430,18 +6653,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 452, + "id": 469, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 450, + "id": 467, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 444, + "referencedDeclaration": 461, "src": "1159:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6452,11 +6675,11 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 451, + "id": 468, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 442, + "referencedDeclaration": 459, "src": "1164:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6477,21 +6700,21 @@ "typeString": "bool" } ], - "id": 449, + "id": 466, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "1151:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 453, + "id": 470, "isConstant": false, "isLValue": false, "isPure": false, @@ -6505,21 +6728,21 @@ "typeString": "tuple()" } }, - "id": 454, + "id": 471, "nodeType": "ExpressionStatement", "src": "1151:15:4" }, { "assignments": [ - 456 + 473 ], "declarations": [ { "constant": false, - "id": 456, + "id": 473, "name": "c", "nodeType": "VariableDeclaration", - "scope": 464, + "scope": 481, "src": "1172:9:4", "stateVariable": false, "storageLocation": "default", @@ -6528,7 +6751,7 @@ "typeString": "uint256" }, "typeName": { - "id": 455, + "id": 472, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1172:7:4", @@ -6541,25 +6764,25 @@ "visibility": "internal" } ], - "id": 460, + "id": 477, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 459, + "id": 476, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 457, + "id": 474, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 442, + "referencedDeclaration": 459, "src": "1184:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6570,11 +6793,11 @@ "operator": "-", "rightExpression": { "argumentTypes": null, - "id": 458, + "id": 475, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 444, + "referencedDeclaration": 461, "src": "1188:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6593,26 +6816,26 @@ { "expression": { "argumentTypes": null, - "id": 461, + "id": 478, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 456, + "referencedDeclaration": 473, "src": "1203:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 448, - "id": 462, + "functionReturnParameters": 465, + "id": 479, "nodeType": "Return", "src": "1196:8:4" } ] }, "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", - "id": 464, + "id": 481, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -6620,15 +6843,15 @@ "name": "sub", "nodeType": "FunctionDefinition", "parameters": { - "id": 445, + "id": 462, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 442, + "id": 459, "name": "a", "nodeType": "VariableDeclaration", - "scope": 464, + "scope": 481, "src": "1091:9:4", "stateVariable": false, "storageLocation": "default", @@ -6637,7 +6860,7 @@ "typeString": "uint256" }, "typeName": { - "id": 441, + "id": 458, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1091:7:4", @@ -6651,10 +6874,10 @@ }, { "constant": false, - "id": 444, + "id": 461, "name": "b", "nodeType": "VariableDeclaration", - "scope": 464, + "scope": 481, "src": "1102:9:4", "stateVariable": false, "storageLocation": "default", @@ -6663,7 +6886,7 @@ "typeString": "uint256" }, "typeName": { - "id": 443, + "id": 460, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1102:7:4", @@ -6680,15 +6903,15 @@ }, "payable": false, "returnParameters": { - "id": 448, + "id": 465, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 447, + "id": 464, "name": "", "nodeType": "VariableDeclaration", - "scope": 464, + "scope": 481, "src": "1136:7:4", "stateVariable": false, "storageLocation": "default", @@ -6697,7 +6920,7 @@ "typeString": "uint256" }, "typeName": { - "id": 446, + "id": 463, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1136:7:4", @@ -6712,7 +6935,7 @@ ], "src": "1135:9:4" }, - "scope": 509, + "scope": 526, "src": "1078:131:4", "stateMutability": "pure", "superFunction": null, @@ -6720,21 +6943,21 @@ }, { "body": { - "id": 487, + "id": 504, "nodeType": "Block", "src": "1339:64:4", "statements": [ { "assignments": [ - 474 + 491 ], "declarations": [ { "constant": false, - "id": 474, + "id": 491, "name": "c", "nodeType": "VariableDeclaration", - "scope": 488, + "scope": 505, "src": "1345:9:4", "stateVariable": false, "storageLocation": "default", @@ -6743,7 +6966,7 @@ "typeString": "uint256" }, "typeName": { - "id": 473, + "id": 490, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1345:7:4", @@ -6756,25 +6979,25 @@ "visibility": "internal" } ], - "id": 478, + "id": 495, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 477, + "id": 494, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 475, + "id": 492, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 466, + "referencedDeclaration": 483, "src": "1357:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6785,11 +7008,11 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 476, + "id": 493, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 468, + "referencedDeclaration": 485, "src": "1361:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6815,18 +7038,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 482, + "id": 499, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 480, + "id": 497, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 474, + "referencedDeclaration": 491, "src": "1376:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6837,11 +7060,11 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 481, + "id": 498, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 466, + "referencedDeclaration": 483, "src": "1381:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6862,21 +7085,21 @@ "typeString": "bool" } ], - "id": 479, + "id": 496, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "1368:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 483, + "id": 500, "isConstant": false, "isLValue": false, "isPure": false, @@ -6890,33 +7113,33 @@ "typeString": "tuple()" } }, - "id": 484, + "id": 501, "nodeType": "ExpressionStatement", "src": "1368:15:4" }, { "expression": { "argumentTypes": null, - "id": 485, + "id": 502, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 474, + "referencedDeclaration": 491, "src": "1397:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 472, - "id": 486, + "functionReturnParameters": 489, + "id": 503, "nodeType": "Return", "src": "1390:8:4" } ] }, "documentation": "@dev Adds two numbers, reverts on overflow.", - "id": 488, + "id": 505, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -6924,15 +7147,15 @@ "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 469, + "id": 486, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 466, + "id": 483, "name": "a", "nodeType": "VariableDeclaration", - "scope": 488, + "scope": 505, "src": "1285:9:4", "stateVariable": false, "storageLocation": "default", @@ -6941,7 +7164,7 @@ "typeString": "uint256" }, "typeName": { - "id": 465, + "id": 482, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1285:7:4", @@ -6955,10 +7178,10 @@ }, { "constant": false, - "id": 468, + "id": 485, "name": "b", "nodeType": "VariableDeclaration", - "scope": 488, + "scope": 505, "src": "1296:9:4", "stateVariable": false, "storageLocation": "default", @@ -6967,7 +7190,7 @@ "typeString": "uint256" }, "typeName": { - "id": 467, + "id": 484, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1296:7:4", @@ -6984,15 +7207,15 @@ }, "payable": false, "returnParameters": { - "id": 472, + "id": 489, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 471, + "id": 488, "name": "", "nodeType": "VariableDeclaration", - "scope": 488, + "scope": 505, "src": "1330:7:4", "stateVariable": false, "storageLocation": "default", @@ -7001,7 +7224,7 @@ "typeString": "uint256" }, "typeName": { - "id": 470, + "id": 487, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1330:7:4", @@ -7016,7 +7239,7 @@ ], "src": "1329:9:4" }, - "scope": 509, + "scope": 526, "src": "1272:131:4", "stateMutability": "pure", "superFunction": null, @@ -7024,7 +7247,7 @@ }, { "body": { - "id": 507, + "id": 524, "nodeType": "Block", "src": "1602:44:4", "statements": [ @@ -7038,18 +7261,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 500, + "id": 517, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 498, + "id": 515, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 492, + "referencedDeclaration": 509, "src": "1616:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7061,7 +7284,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 499, + "id": 516, "isConstant": false, "isLValue": false, "isPure": true, @@ -7090,21 +7313,21 @@ "typeString": "bool" } ], - "id": 497, + "id": 514, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "1608:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 501, + "id": 518, "isConstant": false, "isLValue": false, "isPure": false, @@ -7118,7 +7341,7 @@ "typeString": "tuple()" } }, - "id": 502, + "id": 519, "nodeType": "ExpressionStatement", "src": "1608:15:4" }, @@ -7129,18 +7352,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 505, + "id": 522, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 503, + "id": 520, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 490, + "referencedDeclaration": 507, "src": "1636:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7151,11 +7374,11 @@ "operator": "%", "rightExpression": { "argumentTypes": null, - "id": 504, + "id": 521, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 492, + "referencedDeclaration": 509, "src": "1640:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7168,15 +7391,15 @@ "typeString": "uint256" } }, - "functionReturnParameters": 496, - "id": 506, + "functionReturnParameters": 513, + "id": 523, "nodeType": "Return", "src": "1629:12:4" } ] }, "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", - "id": 508, + "id": 525, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7184,15 +7407,15 @@ "name": "mod", "nodeType": "FunctionDefinition", "parameters": { - "id": 493, + "id": 510, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 490, + "id": 507, "name": "a", "nodeType": "VariableDeclaration", - "scope": 508, + "scope": 525, "src": "1548:9:4", "stateVariable": false, "storageLocation": "default", @@ -7201,7 +7424,7 @@ "typeString": "uint256" }, "typeName": { - "id": 489, + "id": 506, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1548:7:4", @@ -7215,10 +7438,10 @@ }, { "constant": false, - "id": 492, + "id": 509, "name": "b", "nodeType": "VariableDeclaration", - "scope": 508, + "scope": 525, "src": "1559:9:4", "stateVariable": false, "storageLocation": "default", @@ -7227,7 +7450,7 @@ "typeString": "uint256" }, "typeName": { - "id": 491, + "id": 508, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1559:7:4", @@ -7244,15 +7467,15 @@ }, "payable": false, "returnParameters": { - "id": 496, + "id": 513, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 495, + "id": 512, "name": "", "nodeType": "VariableDeclaration", - "scope": 508, + "scope": 525, "src": "1593:7:4", "stateVariable": false, "storageLocation": "default", @@ -7261,7 +7484,7 @@ "typeString": "uint256" }, "typeName": { - "id": 494, + "id": 511, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1593:7:4", @@ -7276,14 +7499,14 @@ ], "src": "1592:9:4" }, - "scope": 509, + "scope": 526, "src": "1535:111:4", "stateMutability": "pure", "superFunction": null, "visibility": "internal" } ], - "scope": 510, + "scope": 527, "src": "117:1531:4" } ], @@ -7296,14 +7519,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "exportedSymbols": { "IERC20": [ - 578 + 595 ] }, - "id": 579, + "id": 596, "nodeType": "SourceUnit", "nodes": [ { - "id": 511, + "id": 528, "literals": [ "solidity", "^", @@ -7319,9 +7542,9 @@ "contractKind": "interface", "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", "fullyImplemented": false, - "id": 578, + "id": 595, "linearizedBaseContracts": [ - 578 + 595 ], "name": "IERC20", "nodeType": "ContractDefinition", @@ -7329,7 +7552,7 @@ { "body": null, "documentation": null, - "id": 516, + "id": 533, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -7337,22 +7560,22 @@ "name": "totalSupply", "nodeType": "FunctionDefinition", "parameters": { - "id": 512, + "id": 529, "nodeType": "ParameterList", "parameters": [], "src": "156:2:5" }, "payable": false, "returnParameters": { - "id": 515, + "id": 532, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 514, + "id": 531, "name": "", "nodeType": "VariableDeclaration", - "scope": 516, + "scope": 533, "src": "182:7:5", "stateVariable": false, "storageLocation": "default", @@ -7361,7 +7584,7 @@ "typeString": "uint256" }, "typeName": { - "id": 513, + "id": 530, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "182:7:5", @@ -7376,7 +7599,7 @@ ], "src": "181:9:5" }, - "scope": 578, + "scope": 595, "src": "136:55:5", "stateMutability": "view", "superFunction": null, @@ -7385,7 +7608,7 @@ { "body": null, "documentation": null, - "id": 523, + "id": 540, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -7393,15 +7616,15 @@ "name": "balanceOf", "nodeType": "FunctionDefinition", "parameters": { - "id": 519, + "id": 536, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 518, + "id": 535, "name": "who", "nodeType": "VariableDeclaration", - "scope": 523, + "scope": 540, "src": "214:11:5", "stateVariable": false, "storageLocation": "default", @@ -7410,7 +7633,7 @@ "typeString": "address" }, "typeName": { - "id": 517, + "id": 534, "name": "address", "nodeType": "ElementaryTypeName", "src": "214:7:5", @@ -7427,15 +7650,15 @@ }, "payable": false, "returnParameters": { - "id": 522, + "id": 539, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 521, + "id": 538, "name": "", "nodeType": "VariableDeclaration", - "scope": 523, + "scope": 540, "src": "250:7:5", "stateVariable": false, "storageLocation": "default", @@ -7444,7 +7667,7 @@ "typeString": "uint256" }, "typeName": { - "id": 520, + "id": 537, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "250:7:5", @@ -7459,7 +7682,7 @@ ], "src": "249:9:5" }, - "scope": 578, + "scope": 595, "src": "195:64:5", "stateMutability": "view", "superFunction": null, @@ -7468,7 +7691,7 @@ { "body": null, "documentation": null, - "id": 532, + "id": 549, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -7476,15 +7699,15 @@ "name": "allowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 528, + "id": 545, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 525, + "id": 542, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 532, + "scope": 549, "src": "282:13:5", "stateVariable": false, "storageLocation": "default", @@ -7493,7 +7716,7 @@ "typeString": "address" }, "typeName": { - "id": 524, + "id": 541, "name": "address", "nodeType": "ElementaryTypeName", "src": "282:7:5", @@ -7507,10 +7730,10 @@ }, { "constant": false, - "id": 527, + "id": 544, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 532, + "scope": 549, "src": "297:15:5", "stateVariable": false, "storageLocation": "default", @@ -7519,7 +7742,7 @@ "typeString": "address" }, "typeName": { - "id": 526, + "id": 543, "name": "address", "nodeType": "ElementaryTypeName", "src": "297:7:5", @@ -7536,15 +7759,15 @@ }, "payable": false, "returnParameters": { - "id": 531, + "id": 548, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 530, + "id": 547, "name": "", "nodeType": "VariableDeclaration", - "scope": 532, + "scope": 549, "src": "341:7:5", "stateVariable": false, "storageLocation": "default", @@ -7553,7 +7776,7 @@ "typeString": "uint256" }, "typeName": { - "id": 529, + "id": 546, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "341:7:5", @@ -7568,7 +7791,7 @@ ], "src": "340:9:5" }, - "scope": 578, + "scope": 595, "src": "263:87:5", "stateMutability": "view", "superFunction": null, @@ -7577,7 +7800,7 @@ { "body": null, "documentation": null, - "id": 541, + "id": 558, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -7585,15 +7808,15 @@ "name": "transfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 537, + "id": 554, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 534, + "id": 551, "name": "to", "nodeType": "VariableDeclaration", - "scope": 541, + "scope": 558, "src": "372:10:5", "stateVariable": false, "storageLocation": "default", @@ -7602,7 +7825,7 @@ "typeString": "address" }, "typeName": { - "id": 533, + "id": 550, "name": "address", "nodeType": "ElementaryTypeName", "src": "372:7:5", @@ -7616,10 +7839,10 @@ }, { "constant": false, - "id": 536, + "id": 553, "name": "value", "nodeType": "VariableDeclaration", - "scope": 541, + "scope": 558, "src": "384:13:5", "stateVariable": false, "storageLocation": "default", @@ -7628,7 +7851,7 @@ "typeString": "uint256" }, "typeName": { - "id": 535, + "id": 552, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "384:7:5", @@ -7645,15 +7868,15 @@ }, "payable": false, "returnParameters": { - "id": 540, + "id": 557, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 539, + "id": 556, "name": "", "nodeType": "VariableDeclaration", - "scope": 541, + "scope": 558, "src": "417:4:5", "stateVariable": false, "storageLocation": "default", @@ -7662,7 +7885,7 @@ "typeString": "bool" }, "typeName": { - "id": 538, + "id": 555, "name": "bool", "nodeType": "ElementaryTypeName", "src": "417:4:5", @@ -7677,7 +7900,7 @@ ], "src": "416:6:5" }, - "scope": 578, + "scope": 595, "src": "354:69:5", "stateMutability": "nonpayable", "superFunction": null, @@ -7686,7 +7909,7 @@ { "body": null, "documentation": null, - "id": 550, + "id": 567, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -7694,15 +7917,15 @@ "name": "approve", "nodeType": "FunctionDefinition", "parameters": { - "id": 546, + "id": 563, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 543, + "id": 560, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 550, + "scope": 567, "src": "444:15:5", "stateVariable": false, "storageLocation": "default", @@ -7711,7 +7934,7 @@ "typeString": "address" }, "typeName": { - "id": 542, + "id": 559, "name": "address", "nodeType": "ElementaryTypeName", "src": "444:7:5", @@ -7725,10 +7948,10 @@ }, { "constant": false, - "id": 545, + "id": 562, "name": "value", "nodeType": "VariableDeclaration", - "scope": 550, + "scope": 567, "src": "461:13:5", "stateVariable": false, "storageLocation": "default", @@ -7737,7 +7960,7 @@ "typeString": "uint256" }, "typeName": { - "id": 544, + "id": 561, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "461:7:5", @@ -7754,15 +7977,15 @@ }, "payable": false, "returnParameters": { - "id": 549, + "id": 566, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 548, + "id": 565, "name": "", "nodeType": "VariableDeclaration", - "scope": 550, + "scope": 567, "src": "498:4:5", "stateVariable": false, "storageLocation": "default", @@ -7771,7 +7994,7 @@ "typeString": "bool" }, "typeName": { - "id": 547, + "id": 564, "name": "bool", "nodeType": "ElementaryTypeName", "src": "498:4:5", @@ -7786,7 +8009,7 @@ ], "src": "497:6:5" }, - "scope": 578, + "scope": 595, "src": "427:77:5", "stateMutability": "nonpayable", "superFunction": null, @@ -7795,7 +8018,7 @@ { "body": null, "documentation": null, - "id": 561, + "id": 578, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -7803,15 +8026,15 @@ "name": "transferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 557, + "id": 574, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 552, + "id": 569, "name": "from", "nodeType": "VariableDeclaration", - "scope": 561, + "scope": 578, "src": "530:12:5", "stateVariable": false, "storageLocation": "default", @@ -7820,7 +8043,7 @@ "typeString": "address" }, "typeName": { - "id": 551, + "id": 568, "name": "address", "nodeType": "ElementaryTypeName", "src": "530:7:5", @@ -7834,10 +8057,10 @@ }, { "constant": false, - "id": 554, + "id": 571, "name": "to", "nodeType": "VariableDeclaration", - "scope": 561, + "scope": 578, "src": "544:10:5", "stateVariable": false, "storageLocation": "default", @@ -7846,7 +8069,7 @@ "typeString": "address" }, "typeName": { - "id": 553, + "id": 570, "name": "address", "nodeType": "ElementaryTypeName", "src": "544:7:5", @@ -7860,10 +8083,10 @@ }, { "constant": false, - "id": 556, + "id": 573, "name": "value", "nodeType": "VariableDeclaration", - "scope": 561, + "scope": 578, "src": "556:13:5", "stateVariable": false, "storageLocation": "default", @@ -7872,7 +8095,7 @@ "typeString": "uint256" }, "typeName": { - "id": 555, + "id": 572, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "556:7:5", @@ -7889,15 +8112,15 @@ }, "payable": false, "returnParameters": { - "id": 560, + "id": 577, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 559, + "id": 576, "name": "", "nodeType": "VariableDeclaration", - "scope": 561, + "scope": 578, "src": "593:4:5", "stateVariable": false, "storageLocation": "default", @@ -7906,7 +8129,7 @@ "typeString": "bool" }, "typeName": { - "id": 558, + "id": 575, "name": "bool", "nodeType": "ElementaryTypeName", "src": "593:4:5", @@ -7921,7 +8144,7 @@ ], "src": "592:6:5" }, - "scope": 578, + "scope": 595, "src": "508:91:5", "stateMutability": "nonpayable", "superFunction": null, @@ -7930,20 +8153,20 @@ { "anonymous": false, "documentation": null, - "id": 569, + "id": 586, "name": "Transfer", "nodeType": "EventDefinition", "parameters": { - "id": 568, + "id": 585, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 563, + "id": 580, "indexed": true, "name": "from", "nodeType": "VariableDeclaration", - "scope": 569, + "scope": 586, "src": "623:20:5", "stateVariable": false, "storageLocation": "default", @@ -7952,7 +8175,7 @@ "typeString": "address" }, "typeName": { - "id": 562, + "id": 579, "name": "address", "nodeType": "ElementaryTypeName", "src": "623:7:5", @@ -7966,11 +8189,11 @@ }, { "constant": false, - "id": 565, + "id": 582, "indexed": true, "name": "to", "nodeType": "VariableDeclaration", - "scope": 569, + "scope": 586, "src": "649:18:5", "stateVariable": false, "storageLocation": "default", @@ -7979,7 +8202,7 @@ "typeString": "address" }, "typeName": { - "id": 564, + "id": 581, "name": "address", "nodeType": "ElementaryTypeName", "src": "649:7:5", @@ -7993,11 +8216,11 @@ }, { "constant": false, - "id": 567, + "id": 584, "indexed": false, "name": "value", "nodeType": "VariableDeclaration", - "scope": 569, + "scope": 586, "src": "673:13:5", "stateVariable": false, "storageLocation": "default", @@ -8006,7 +8229,7 @@ "typeString": "uint256" }, "typeName": { - "id": 566, + "id": 583, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "673:7:5", @@ -8026,20 +8249,20 @@ { "anonymous": false, "documentation": null, - "id": 577, + "id": 594, "name": "Approval", "nodeType": "EventDefinition", "parameters": { - "id": 576, + "id": 593, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 571, + "id": 588, "indexed": true, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 577, + "scope": 594, "src": "715:21:5", "stateVariable": false, "storageLocation": "default", @@ -8048,7 +8271,7 @@ "typeString": "address" }, "typeName": { - "id": 570, + "id": 587, "name": "address", "nodeType": "ElementaryTypeName", "src": "715:7:5", @@ -8062,11 +8285,11 @@ }, { "constant": false, - "id": 573, + "id": 590, "indexed": true, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 577, + "scope": 594, "src": "742:23:5", "stateVariable": false, "storageLocation": "default", @@ -8075,7 +8298,7 @@ "typeString": "address" }, "typeName": { - "id": 572, + "id": 589, "name": "address", "nodeType": "ElementaryTypeName", "src": "742:7:5", @@ -8089,11 +8312,11 @@ }, { "constant": false, - "id": 575, + "id": 592, "indexed": false, "name": "value", "nodeType": "VariableDeclaration", - "scope": 577, + "scope": 594, "src": "771:13:5", "stateVariable": false, "storageLocation": "default", @@ -8102,7 +8325,7 @@ "typeString": "uint256" }, "typeName": { - "id": 574, + "id": 591, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "771:7:5", @@ -8120,7 +8343,7 @@ "src": "695:94:5" } ], - "scope": 579, + "scope": 596, "src": "115:676:5" } ], @@ -8133,14 +8356,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "exportedSymbols": { "SafeERC20": [ - 722 + 739 ] }, - "id": 723, + "id": 740, "nodeType": "SourceUnit", "nodes": [ { - "id": 580, + "id": 597, "literals": [ "solidity", "^", @@ -8153,10 +8376,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "./IERC20.sol", - "id": 581, + "id": 598, "nodeType": "ImportDirective", - "scope": 723, - "sourceUnit": 579, + "scope": 740, + "sourceUnit": 596, "src": "26:22:6", "symbolAliases": [], "unitAlias": "" @@ -8164,10 +8387,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "file": "../../math/SafeMath.sol", - "id": 582, + "id": 599, "nodeType": "ImportDirective", - "scope": 723, - "sourceUnit": 510, + "scope": 740, + "sourceUnit": 527, "src": "49:33:6", "symbolAliases": [], "unitAlias": "" @@ -8178,31 +8401,31 @@ "contractKind": "library", "documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.", "fullyImplemented": true, - "id": 722, + "id": 739, "linearizedBaseContracts": [ - 722 + 739 ], "name": "SafeERC20", "nodeType": "ContractDefinition", "nodes": [ { - "id": 585, + "id": 602, "libraryName": { "contractScope": null, - "id": 583, + "id": 600, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 509, + "referencedDeclaration": 526, "src": "382:8:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$509", + "typeIdentifier": "t_contract$_SafeMath_$526", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", "src": "376:27:6", "typeName": { - "id": 584, + "id": 601, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "395:7:6", @@ -8214,7 +8437,7 @@ }, { "body": { - "id": 602, + "id": 619, "nodeType": "Block", "src": "501:45:6", "statements": [ @@ -8227,11 +8450,11 @@ "arguments": [ { "argumentTypes": null, - "id": 597, + "id": 614, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 589, + "referencedDeclaration": 606, "src": "530:2:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8240,11 +8463,11 @@ }, { "argumentTypes": null, - "id": 598, + "id": 615, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 591, + "referencedDeclaration": 608, "src": "534:5:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -8265,32 +8488,32 @@ ], "expression": { "argumentTypes": null, - "id": 595, + "id": 612, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 587, + "referencedDeclaration": 604, "src": "515:5:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, - "id": 596, + "id": 613, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", - "referencedDeclaration": 541, + "referencedDeclaration": 558, "src": "515:14:6", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 599, + "id": 616, "isConstant": false, "isLValue": false, "isPure": false, @@ -8312,21 +8535,21 @@ "typeString": "bool" } ], - "id": 594, + "id": 611, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "507:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 600, + "id": 617, "isConstant": false, "isLValue": false, "isPure": false, @@ -8340,14 +8563,14 @@ "typeString": "tuple()" } }, - "id": 601, + "id": 618, "nodeType": "ExpressionStatement", "src": "507:34:6" } ] }, "documentation": null, - "id": 603, + "id": 620, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8355,31 +8578,31 @@ "name": "safeTransfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 592, + "id": 609, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 587, + "id": 604, "name": "token", "nodeType": "VariableDeclaration", - "scope": 603, + "scope": 620, "src": "434:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 586, + "id": 603, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 578, + "referencedDeclaration": 595, "src": "434:6:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, @@ -8388,10 +8611,10 @@ }, { "constant": false, - "id": 589, + "id": 606, "name": "to", "nodeType": "VariableDeclaration", - "scope": 603, + "scope": 620, "src": "452:10:6", "stateVariable": false, "storageLocation": "default", @@ -8400,7 +8623,7 @@ "typeString": "address" }, "typeName": { - "id": 588, + "id": 605, "name": "address", "nodeType": "ElementaryTypeName", "src": "452:7:6", @@ -8414,10 +8637,10 @@ }, { "constant": false, - "id": 591, + "id": 608, "name": "value", "nodeType": "VariableDeclaration", - "scope": 603, + "scope": 620, "src": "468:13:6", "stateVariable": false, "storageLocation": "default", @@ -8426,7 +8649,7 @@ "typeString": "uint256" }, "typeName": { - "id": 590, + "id": 607, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "468:7:6", @@ -8443,12 +8666,12 @@ }, "payable": false, "returnParameters": { - "id": 593, + "id": 610, "nodeType": "ParameterList", "parameters": [], "src": "501:0:6" }, - "scope": 722, + "scope": 739, "src": "407:139:6", "stateMutability": "nonpayable", "superFunction": null, @@ -8456,7 +8679,7 @@ }, { "body": { - "id": 623, + "id": 640, "nodeType": "Block", "src": "666:55:6", "statements": [ @@ -8469,11 +8692,11 @@ "arguments": [ { "argumentTypes": null, - "id": 617, + "id": 634, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 607, + "referencedDeclaration": 624, "src": "699:4:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8482,11 +8705,11 @@ }, { "argumentTypes": null, - "id": 618, + "id": 635, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 609, + "referencedDeclaration": 626, "src": "705:2:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8495,11 +8718,11 @@ }, { "argumentTypes": null, - "id": 619, + "id": 636, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 611, + "referencedDeclaration": 628, "src": "709:5:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -8524,32 +8747,32 @@ ], "expression": { "argumentTypes": null, - "id": 615, + "id": 632, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 605, + "referencedDeclaration": 622, "src": "680:5:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, - "id": 616, + "id": 633, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", - "referencedDeclaration": 561, + "referencedDeclaration": 578, "src": "680:18:6", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)" } }, - "id": 620, + "id": 637, "isConstant": false, "isLValue": false, "isPure": false, @@ -8571,21 +8794,21 @@ "typeString": "bool" } ], - "id": 614, + "id": 631, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "672:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 621, + "id": 638, "isConstant": false, "isLValue": false, "isPure": false, @@ -8599,14 +8822,14 @@ "typeString": "tuple()" } }, - "id": 622, + "id": 639, "nodeType": "ExpressionStatement", "src": "672:44:6" } ] }, "documentation": null, - "id": 624, + "id": 641, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8614,31 +8837,31 @@ "name": "safeTransferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 612, + "id": 629, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 605, + "id": 622, "name": "token", "nodeType": "VariableDeclaration", - "scope": 624, + "scope": 641, "src": "581:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 604, + "id": 621, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 578, + "referencedDeclaration": 595, "src": "581:6:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, @@ -8647,10 +8870,10 @@ }, { "constant": false, - "id": 607, + "id": 624, "name": "from", "nodeType": "VariableDeclaration", - "scope": 624, + "scope": 641, "src": "599:12:6", "stateVariable": false, "storageLocation": "default", @@ -8659,7 +8882,7 @@ "typeString": "address" }, "typeName": { - "id": 606, + "id": 623, "name": "address", "nodeType": "ElementaryTypeName", "src": "599:7:6", @@ -8673,10 +8896,10 @@ }, { "constant": false, - "id": 609, + "id": 626, "name": "to", "nodeType": "VariableDeclaration", - "scope": 624, + "scope": 641, "src": "617:10:6", "stateVariable": false, "storageLocation": "default", @@ -8685,7 +8908,7 @@ "typeString": "address" }, "typeName": { - "id": 608, + "id": 625, "name": "address", "nodeType": "ElementaryTypeName", "src": "617:7:6", @@ -8699,10 +8922,10 @@ }, { "constant": false, - "id": 611, + "id": 628, "name": "value", "nodeType": "VariableDeclaration", - "scope": 624, + "scope": 641, "src": "633:13:6", "stateVariable": false, "storageLocation": "default", @@ -8711,7 +8934,7 @@ "typeString": "uint256" }, "typeName": { - "id": 610, + "id": 627, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "633:7:6", @@ -8728,12 +8951,12 @@ }, "payable": false, "returnParameters": { - "id": 613, + "id": 630, "nodeType": "ParameterList", "parameters": [], "src": "666:0:6" }, - "scope": 722, + "scope": 739, "src": "550:171:6", "stateMutability": "nonpayable", "superFunction": null, @@ -8741,7 +8964,7 @@ }, { "body": { - "id": 658, + "id": 675, "nodeType": "Block", "src": "823:330:6", "statements": [ @@ -8755,7 +8978,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 647, + "id": 664, "isConstant": false, "isLValue": false, "isPure": false, @@ -8769,18 +8992,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 636, + "id": 653, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 634, + "id": 651, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 630, + "referencedDeclaration": 647, "src": "1045:5:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -8792,7 +9015,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 635, + "id": 652, "isConstant": false, "isLValue": false, "isPure": true, @@ -8814,7 +9037,7 @@ } } ], - "id": 637, + "id": 654, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -8838,7 +9061,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 645, + "id": 662, "isConstant": false, "isLValue": false, "isPure": false, @@ -8850,18 +9073,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 640, + "id": 657, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 737, + "referencedDeclaration": 754, "src": "1077:3:6", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 641, + "id": 658, "isConstant": false, "isLValue": false, "isPure": false, @@ -8877,11 +9100,11 @@ }, { "argumentTypes": null, - "id": 642, + "id": 659, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 628, + "referencedDeclaration": 645, "src": "1089:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8902,32 +9125,32 @@ ], "expression": { "argumentTypes": null, - "id": 638, + "id": 655, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 626, + "referencedDeclaration": 643, "src": "1061:5:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, - "id": 639, + "id": 656, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 532, + "referencedDeclaration": 549, "src": "1061:15:6", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 643, + "id": 660, "isConstant": false, "isLValue": false, "isPure": false, @@ -8946,7 +9169,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 644, + "id": 661, "isConstant": false, "isLValue": false, "isPure": true, @@ -8968,7 +9191,7 @@ } } ], - "id": 646, + "id": 663, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -8995,21 +9218,21 @@ "typeString": "bool" } ], - "id": 633, + "id": 650, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "1036:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 648, + "id": 665, "isConstant": false, "isLValue": false, "isPure": false, @@ -9023,7 +9246,7 @@ "typeString": "tuple()" } }, - "id": 649, + "id": 666, "nodeType": "ExpressionStatement", "src": "1036:68:6" }, @@ -9036,11 +9259,11 @@ "arguments": [ { "argumentTypes": null, - "id": 653, + "id": 670, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 628, + "referencedDeclaration": 645, "src": "1132:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9049,11 +9272,11 @@ }, { "argumentTypes": null, - "id": 654, + "id": 671, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 630, + "referencedDeclaration": 647, "src": "1141:5:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -9074,32 +9297,32 @@ ], "expression": { "argumentTypes": null, - "id": 651, + "id": 668, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 626, + "referencedDeclaration": 643, "src": "1118:5:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, - "id": 652, + "id": 669, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 550, + "referencedDeclaration": 567, "src": "1118:13:6", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 655, + "id": 672, "isConstant": false, "isLValue": false, "isPure": false, @@ -9121,21 +9344,21 @@ "typeString": "bool" } ], - "id": 650, + "id": 667, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "1110:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 656, + "id": 673, "isConstant": false, "isLValue": false, "isPure": false, @@ -9149,14 +9372,14 @@ "typeString": "tuple()" } }, - "id": 657, + "id": 674, "nodeType": "ExpressionStatement", "src": "1110:38:6" } ] }, "documentation": null, - "id": 659, + "id": 676, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -9164,31 +9387,31 @@ "name": "safeApprove", "nodeType": "FunctionDefinition", "parameters": { - "id": 631, + "id": 648, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 626, + "id": 643, "name": "token", "nodeType": "VariableDeclaration", - "scope": 659, + "scope": 676, "src": "751:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 625, + "id": 642, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 578, + "referencedDeclaration": 595, "src": "751:6:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, @@ -9197,10 +9420,10 @@ }, { "constant": false, - "id": 628, + "id": 645, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 659, + "scope": 676, "src": "769:15:6", "stateVariable": false, "storageLocation": "default", @@ -9209,7 +9432,7 @@ "typeString": "address" }, "typeName": { - "id": 627, + "id": 644, "name": "address", "nodeType": "ElementaryTypeName", "src": "769:7:6", @@ -9223,10 +9446,10 @@ }, { "constant": false, - "id": 630, + "id": 647, "name": "value", "nodeType": "VariableDeclaration", - "scope": 659, + "scope": 676, "src": "790:13:6", "stateVariable": false, "storageLocation": "default", @@ -9235,7 +9458,7 @@ "typeString": "uint256" }, "typeName": { - "id": 629, + "id": 646, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "790:7:6", @@ -9252,12 +9475,12 @@ }, "payable": false, "returnParameters": { - "id": 632, + "id": 649, "nodeType": "ParameterList", "parameters": [], "src": "823:0:6" }, - "scope": 722, + "scope": 739, "src": "725:428:6", "stateMutability": "nonpayable", "superFunction": null, @@ -9265,21 +9488,21 @@ }, { "body": { - "id": 689, + "id": 706, "nodeType": "Block", "src": "1265:135:6", "statements": [ { "assignments": [ - 669 + 686 ], "declarations": [ { "constant": false, - "id": 669, + "id": 686, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 690, + "scope": 707, "src": "1271:20:6", "stateVariable": false, "storageLocation": "default", @@ -9288,7 +9511,7 @@ "typeString": "uint256" }, "typeName": { - "id": 668, + "id": 685, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1271:7:6", @@ -9301,17 +9524,17 @@ "visibility": "internal" } ], - "id": 680, + "id": 697, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 678, + "id": 695, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 665, + "referencedDeclaration": 682, "src": "1338:5:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -9334,14 +9557,14 @@ "arguments": [ { "argumentTypes": null, - "id": 673, + "id": 690, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 758, + "referencedDeclaration": 775, "src": "1318:4:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$722", + "typeIdentifier": "t_contract$_SafeERC20_$739", "typeString": "library SafeERC20" } } @@ -9349,11 +9572,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$722", + "typeIdentifier": "t_contract$_SafeERC20_$739", "typeString": "library SafeERC20" } ], - "id": 672, + "id": 689, "isConstant": false, "isLValue": false, "isPure": true, @@ -9366,7 +9589,7 @@ }, "typeName": "address" }, - "id": 674, + "id": 691, "isConstant": false, "isLValue": false, "isPure": false, @@ -9382,11 +9605,11 @@ }, { "argumentTypes": null, - "id": 675, + "id": 692, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 663, + "referencedDeclaration": 680, "src": "1325:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9407,32 +9630,32 @@ ], "expression": { "argumentTypes": null, - "id": 670, + "id": 687, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 661, + "referencedDeclaration": 678, "src": "1294:5:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, - "id": 671, + "id": 688, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 532, + "referencedDeclaration": 549, "src": "1294:15:6", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 676, + "id": 693, "isConstant": false, "isLValue": false, "isPure": false, @@ -9446,21 +9669,21 @@ "typeString": "uint256" } }, - "id": 677, + "id": 694, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 488, + "referencedDeclaration": 505, "src": "1294:43:6", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 679, + "id": 696, "isConstant": false, "isLValue": false, "isPure": false, @@ -9486,11 +9709,11 @@ "arguments": [ { "argumentTypes": null, - "id": 684, + "id": 701, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 663, + "referencedDeclaration": 680, "src": "1372:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9499,11 +9722,11 @@ }, { "argumentTypes": null, - "id": 685, + "id": 702, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 669, + "referencedDeclaration": 686, "src": "1381:12:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -9524,32 +9747,32 @@ ], "expression": { "argumentTypes": null, - "id": 682, + "id": 699, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 661, + "referencedDeclaration": 678, "src": "1358:5:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, - "id": 683, + "id": 700, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 550, + "referencedDeclaration": 567, "src": "1358:13:6", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 686, + "id": 703, "isConstant": false, "isLValue": false, "isPure": false, @@ -9571,21 +9794,21 @@ "typeString": "bool" } ], - "id": 681, + "id": 698, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "1350:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 687, + "id": 704, "isConstant": false, "isLValue": false, "isPure": false, @@ -9599,14 +9822,14 @@ "typeString": "tuple()" } }, - "id": 688, + "id": 705, "nodeType": "ExpressionStatement", "src": "1350:45:6" } ] }, "documentation": null, - "id": 690, + "id": 707, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -9614,31 +9837,31 @@ "name": "safeIncreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 666, + "id": 683, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 661, + "id": 678, "name": "token", "nodeType": "VariableDeclaration", - "scope": 690, + "scope": 707, "src": "1193:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 660, + "id": 677, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 578, + "referencedDeclaration": 595, "src": "1193:6:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, @@ -9647,10 +9870,10 @@ }, { "constant": false, - "id": 663, + "id": 680, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 690, + "scope": 707, "src": "1211:15:6", "stateVariable": false, "storageLocation": "default", @@ -9659,7 +9882,7 @@ "typeString": "address" }, "typeName": { - "id": 662, + "id": 679, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:6", @@ -9673,10 +9896,10 @@ }, { "constant": false, - "id": 665, + "id": 682, "name": "value", "nodeType": "VariableDeclaration", - "scope": 690, + "scope": 707, "src": "1232:13:6", "stateVariable": false, "storageLocation": "default", @@ -9685,7 +9908,7 @@ "typeString": "uint256" }, "typeName": { - "id": 664, + "id": 681, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1232:7:6", @@ -9702,12 +9925,12 @@ }, "payable": false, "returnParameters": { - "id": 667, + "id": 684, "nodeType": "ParameterList", "parameters": [], "src": "1265:0:6" }, - "scope": 722, + "scope": 739, "src": "1157:243:6", "stateMutability": "nonpayable", "superFunction": null, @@ -9715,21 +9938,21 @@ }, { "body": { - "id": 720, + "id": 737, "nodeType": "Block", "src": "1512:135:6", "statements": [ { "assignments": [ - 700 + 717 ], "declarations": [ { "constant": false, - "id": 700, + "id": 717, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 721, + "scope": 738, "src": "1518:20:6", "stateVariable": false, "storageLocation": "default", @@ -9738,7 +9961,7 @@ "typeString": "uint256" }, "typeName": { - "id": 699, + "id": 716, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1518:7:6", @@ -9751,17 +9974,17 @@ "visibility": "internal" } ], - "id": 711, + "id": 728, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 709, + "id": 726, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 696, + "referencedDeclaration": 713, "src": "1585:5:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -9784,14 +10007,14 @@ "arguments": [ { "argumentTypes": null, - "id": 704, + "id": 721, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 758, + "referencedDeclaration": 775, "src": "1565:4:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$722", + "typeIdentifier": "t_contract$_SafeERC20_$739", "typeString": "library SafeERC20" } } @@ -9799,11 +10022,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$722", + "typeIdentifier": "t_contract$_SafeERC20_$739", "typeString": "library SafeERC20" } ], - "id": 703, + "id": 720, "isConstant": false, "isLValue": false, "isPure": true, @@ -9816,7 +10039,7 @@ }, "typeName": "address" }, - "id": 705, + "id": 722, "isConstant": false, "isLValue": false, "isPure": false, @@ -9832,11 +10055,11 @@ }, { "argumentTypes": null, - "id": 706, + "id": 723, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 694, + "referencedDeclaration": 711, "src": "1572:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9857,32 +10080,32 @@ ], "expression": { "argumentTypes": null, - "id": 701, + "id": 718, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 692, + "referencedDeclaration": 709, "src": "1541:5:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, - "id": 702, + "id": 719, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 532, + "referencedDeclaration": 549, "src": "1541:15:6", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 707, + "id": 724, "isConstant": false, "isLValue": false, "isPure": false, @@ -9896,21 +10119,21 @@ "typeString": "uint256" } }, - "id": 708, + "id": 725, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 464, + "referencedDeclaration": 481, "src": "1541:43:6", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 710, + "id": 727, "isConstant": false, "isLValue": false, "isPure": false, @@ -9936,11 +10159,11 @@ "arguments": [ { "argumentTypes": null, - "id": 715, + "id": 732, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 694, + "referencedDeclaration": 711, "src": "1619:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9949,11 +10172,11 @@ }, { "argumentTypes": null, - "id": 716, + "id": 733, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 700, + "referencedDeclaration": 717, "src": "1628:12:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -9974,32 +10197,32 @@ ], "expression": { "argumentTypes": null, - "id": 713, + "id": 730, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 692, + "referencedDeclaration": 709, "src": "1605:5:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, - "id": 714, + "id": 731, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 550, + "referencedDeclaration": 567, "src": "1605:13:6", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 717, + "id": 734, "isConstant": false, "isLValue": false, "isPure": false, @@ -10021,21 +10244,21 @@ "typeString": "bool" } ], - "id": 712, + "id": 729, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 740, - 741 + 757, + 758 ], - "referencedDeclaration": 740, + "referencedDeclaration": 757, "src": "1597:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 718, + "id": 735, "isConstant": false, "isLValue": false, "isPure": false, @@ -10049,14 +10272,14 @@ "typeString": "tuple()" } }, - "id": 719, + "id": 736, "nodeType": "ExpressionStatement", "src": "1597:45:6" } ] }, "documentation": null, - "id": 721, + "id": 738, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -10064,31 +10287,31 @@ "name": "safeDecreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 697, + "id": 714, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 692, + "id": 709, "name": "token", "nodeType": "VariableDeclaration", - "scope": 721, + "scope": 738, "src": "1440:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 691, + "id": 708, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 578, + "referencedDeclaration": 595, "src": "1440:6:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$578", + "typeIdentifier": "t_contract$_IERC20_$595", "typeString": "contract IERC20" } }, @@ -10097,10 +10320,10 @@ }, { "constant": false, - "id": 694, + "id": 711, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 721, + "scope": 738, "src": "1458:15:6", "stateVariable": false, "storageLocation": "default", @@ -10109,7 +10332,7 @@ "typeString": "address" }, "typeName": { - "id": 693, + "id": 710, "name": "address", "nodeType": "ElementaryTypeName", "src": "1458:7:6", @@ -10123,10 +10346,10 @@ }, { "constant": false, - "id": 696, + "id": 713, "name": "value", "nodeType": "VariableDeclaration", - "scope": 721, + "scope": 738, "src": "1479:13:6", "stateVariable": false, "storageLocation": "default", @@ -10135,7 +10358,7 @@ "typeString": "uint256" }, "typeName": { - "id": 695, + "id": 712, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1479:7:6", @@ -10152,19 +10375,19 @@ }, "payable": false, "returnParameters": { - "id": 698, + "id": 715, "nodeType": "ParameterList", "parameters": [], "src": "1512:0:6" }, - "scope": 722, + "scope": 739, "src": "1404:243:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 723, + "scope": 740, "src": "353:1296:6" } ], diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin index d3f811a9f..3e0d92f3c 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b5060405160408061076083398101604052805160209091015161003b33640100000000610077810204565b60018054600160a060020a0390921662010000026201000060b060020a031961ffff90941661ffff199093169290921792909216179055610120565b61008f60008264010000000061056b61009282021704565b50565b600160a060020a03811615156100a757600080fd5b6100ba82826401000000006100e9810204565b156100c457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561010057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106318061012f6000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632296f4c7811461009a57806325109e8b146100bd5780632e6b6849146100e4578063455acbcd14610105578063492fba841461011a57806349dc9ed01461012f578063608d3d3d146101445780639fc3c98314610179578063a89febb21461018e578063aed6183f146101a3578063d43acc79146101b8575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a03600435166101cd565b005b3480156100c957600080fd5b506100d26103cc565b60408051918252519081900360200190f35b3480156100f057600080fd5b506100bb600160a060020a03600435166103d8565b34801561011157600080fd5b506100d26103f8565b34801561012657600080fd5b506100d2610407565b34801561013b57600080fd5b506100d2610415565b34801561015057600080fd5b50610165600160a060020a0360043516610424565b604080519115158252519081900360200190f35b34801561018557600080fd5b506100d261043c565b34801561019a57600080fd5b506100d261044a565b3480156101af57600080fd5b506100d2610459565b3480156101c457600080fd5b506100bb610468565b60008060006101db33610424565b15156101e657600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561022757600080fd5b505af115801561023b573d6000803e3d6000fd5b505050506040513d602081101561025157600080fd5b5051151561025e57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561029c57600080fd5b505af11580156102b0573d6000803e3d6000fd5b505050506040513d60208110156102c657600080fd5b50519150600060ff8316108015906102e2575060058260ff1611155b15156102ed57600080fd5b50600060ff8216151561030b575069152d02c7e14af680000061039c565b8160ff1660011415610328575069d3c21bcecceda100000061039c565b8160ff166002141561034657506a01a784379d99db4200000061039c565b8160ff166003141561036457506a027b46536c66c8e300000061039c565b8160ff166004141561038257506a034f086f3b33b68400000061039c565b8160ff166005141561039c57506a0422ca8b0a00a4250000005b600081116103a957600080fd5b6001546103c690620100009004600160a060020a03168583610473565b50505050565b670de0b6b3a764000081565b6103e133610424565b15156103ec57600080fd5b6103f581610512565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b6000610436818363ffffffff61052316565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b6104713361055a565b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156104d657600080fd5b505af11580156104ea573d6000803e3d6000fd5b505050506040513d602081101561050057600080fd5b5051151561050d57600080fd5b505050565b6103f560008263ffffffff61056b16565b6000600160a060020a038216151561053a57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6103f560008263ffffffff6105b916565b600160a060020a038116151561058057600080fd5b61058a8282610523565b1561059457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a03811615156105ce57600080fd5b6105d88282610523565b15156105e357600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820fcd1665b524606952d86f870d91a6ad5ceaed631661ee3cc8731e992b464993a0029 \ No newline at end of file +608060405234801561001057600080fd5b506040516040806107aa83398101604052805160209091015161003b33640100000000610077810204565b60018054600160a060020a0390921662010000026201000060b060020a031961ffff90941661ffff199093169290921792909216179055610120565b61008f6000826401000000006105b561009282021704565b50565b600160a060020a03811615156100a757600080fd5b6100ba82826401000000006100e9810204565b156100c457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561010057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61067b8061012f6000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632296f4c7811461009a57806325109e8b146100bd5780632e6b6849146100e4578063455acbcd14610105578063492fba841461011a57806349dc9ed01461012f578063608d3d3d146101445780639fc3c98314610179578063a89febb21461018e578063aed6183f146101a3578063d43acc79146101b8575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a03600435166101cd565b005b3480156100c957600080fd5b506100d2610416565b60408051918252519081900360200190f35b3480156100f057600080fd5b506100bb600160a060020a0360043516610422565b34801561011157600080fd5b506100d2610442565b34801561012657600080fd5b506100d2610451565b34801561013b57600080fd5b506100d261045f565b34801561015057600080fd5b50610165600160a060020a036004351661046e565b604080519115158252519081900360200190f35b34801561018557600080fd5b506100d2610486565b34801561019a57600080fd5b506100d2610494565b3480156101af57600080fd5b506100d26104a3565b3480156101c457600080fd5b506100bb6104b2565b60008060006101db3361046e565b15156101e657600080fd5b600160a060020a03841660009081526002602052604090205460ff161561020c57600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561024d57600080fd5b505af1158015610261573d6000803e3d6000fd5b505050506040513d602081101561027757600080fd5b5051151561028457600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102c257600080fd5b505af11580156102d6573d6000803e3d6000fd5b505050506040513d60208110156102ec57600080fd5b50519150600060ff831610801590610308575060058260ff1611155b151561031357600080fd5b50600060ff82161515610331575069152d02c7e14af68000006103c2565b8160ff166001141561034e575069d3c21bcecceda10000006103c2565b8160ff166002141561036c57506a01a784379d99db420000006103c2565b8160ff166003141561038a57506a027b46536c66c8e30000006103c2565b8160ff16600414156103a857506a034f086f3b33b6840000006103c2565b8160ff16600514156103c257506a0422ca8b0a00a4250000005b600081116103cf57600080fd5b600160a060020a038085166000908152600260205260409020805460ff1916600190811790915554610410916201000090910416858363ffffffff6104bd16565b50505050565b670de0b6b3a764000081565b61042b3361046e565b151561043657600080fd5b61043f8161055c565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b6000610480818363ffffffff61056d16565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b6104bb336105a4565b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561052057600080fd5b505af1158015610534573d6000803e3d6000fd5b505050506040513d602081101561054a57600080fd5b5051151561055757600080fd5b505050565b61043f60008263ffffffff6105b516565b6000600160a060020a038216151561058457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61043f60008263ffffffff61060316565b600160a060020a03811615156105ca57600080fd5b6105d4828261056d565b156105de57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561061857600080fd5b610622828261056d565b151561062d57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058200648204d7a0ac13aa2e9ab7514200c49dd33ae54f0178fd146385ad3444f20ee0029 \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json index 6491b1282..f0c9e5f58 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json @@ -170,7 +170,7 @@ "type": "constructor" } ], - "bytecode": "608060405234801561001057600080fd5b5060405160408061076083398101604052805160209091015161003b33640100000000610077810204565b60018054600160a060020a0390921662010000026201000060b060020a031961ffff90941661ffff199093169290921792909216179055610120565b61008f60008264010000000061056b61009282021704565b50565b600160a060020a03811615156100a757600080fd5b6100ba82826401000000006100e9810204565b156100c457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561010057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106318061012f6000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632296f4c7811461009a57806325109e8b146100bd5780632e6b6849146100e4578063455acbcd14610105578063492fba841461011a57806349dc9ed01461012f578063608d3d3d146101445780639fc3c98314610179578063a89febb21461018e578063aed6183f146101a3578063d43acc79146101b8575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a03600435166101cd565b005b3480156100c957600080fd5b506100d26103cc565b60408051918252519081900360200190f35b3480156100f057600080fd5b506100bb600160a060020a03600435166103d8565b34801561011157600080fd5b506100d26103f8565b34801561012657600080fd5b506100d2610407565b34801561013b57600080fd5b506100d2610415565b34801561015057600080fd5b50610165600160a060020a0360043516610424565b604080519115158252519081900360200190f35b34801561018557600080fd5b506100d261043c565b34801561019a57600080fd5b506100d261044a565b3480156101af57600080fd5b506100d2610459565b3480156101c457600080fd5b506100bb610468565b60008060006101db33610424565b15156101e657600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561022757600080fd5b505af115801561023b573d6000803e3d6000fd5b505050506040513d602081101561025157600080fd5b5051151561025e57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561029c57600080fd5b505af11580156102b0573d6000803e3d6000fd5b505050506040513d60208110156102c657600080fd5b50519150600060ff8316108015906102e2575060058260ff1611155b15156102ed57600080fd5b50600060ff8216151561030b575069152d02c7e14af680000061039c565b8160ff1660011415610328575069d3c21bcecceda100000061039c565b8160ff166002141561034657506a01a784379d99db4200000061039c565b8160ff166003141561036457506a027b46536c66c8e300000061039c565b8160ff166004141561038257506a034f086f3b33b68400000061039c565b8160ff166005141561039c57506a0422ca8b0a00a4250000005b600081116103a957600080fd5b6001546103c690620100009004600160a060020a03168583610473565b50505050565b670de0b6b3a764000081565b6103e133610424565b15156103ec57600080fd5b6103f581610512565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b6000610436818363ffffffff61052316565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b6104713361055a565b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156104d657600080fd5b505af11580156104ea573d6000803e3d6000fd5b505050506040513d602081101561050057600080fd5b5051151561050d57600080fd5b505050565b6103f560008263ffffffff61056b16565b6000600160a060020a038216151561053a57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6103f560008263ffffffff6105b916565b600160a060020a038116151561058057600080fd5b61058a8282610523565b1561059457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a03811615156105ce57600080fd5b6105d88282610523565b15156105e357600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820fcd1665b524606952d86f870d91a6ad5ceaed631661ee3cc8731e992b464993a0029", + "bytecode": "608060405234801561001057600080fd5b506040516040806107aa83398101604052805160209091015161003b33640100000000610077810204565b60018054600160a060020a0390921662010000026201000060b060020a031961ffff90941661ffff199093169290921792909216179055610120565b61008f6000826401000000006105b561009282021704565b50565b600160a060020a03811615156100a757600080fd5b6100ba82826401000000006100e9810204565b156100c457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561010057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61067b8061012f6000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632296f4c7811461009a57806325109e8b146100bd5780632e6b6849146100e4578063455acbcd14610105578063492fba841461011a57806349dc9ed01461012f578063608d3d3d146101445780639fc3c98314610179578063a89febb21461018e578063aed6183f146101a3578063d43acc79146101b8575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a03600435166101cd565b005b3480156100c957600080fd5b506100d2610416565b60408051918252519081900360200190f35b3480156100f057600080fd5b506100bb600160a060020a0360043516610422565b34801561011157600080fd5b506100d2610442565b34801561012657600080fd5b506100d2610451565b34801561013b57600080fd5b506100d261045f565b34801561015057600080fd5b50610165600160a060020a036004351661046e565b604080519115158252519081900360200190f35b34801561018557600080fd5b506100d2610486565b34801561019a57600080fd5b506100d2610494565b3480156101af57600080fd5b506100d26104a3565b3480156101c457600080fd5b506100bb6104b2565b60008060006101db3361046e565b15156101e657600080fd5b600160a060020a03841660009081526002602052604090205460ff161561020c57600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561024d57600080fd5b505af1158015610261573d6000803e3d6000fd5b505050506040513d602081101561027757600080fd5b5051151561028457600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102c257600080fd5b505af11580156102d6573d6000803e3d6000fd5b505050506040513d60208110156102ec57600080fd5b50519150600060ff831610801590610308575060058260ff1611155b151561031357600080fd5b50600060ff82161515610331575069152d02c7e14af68000006103c2565b8160ff166001141561034e575069d3c21bcecceda10000006103c2565b8160ff166002141561036c57506a01a784379d99db420000006103c2565b8160ff166003141561038a57506a027b46536c66c8e30000006103c2565b8160ff16600414156103a857506a034f086f3b33b6840000006103c2565b8160ff16600514156103c257506a0422ca8b0a00a4250000005b600081116103cf57600080fd5b600160a060020a038085166000908152600260205260409020805460ff1916600190811790915554610410916201000090910416858363ffffffff6104bd16565b50505050565b670de0b6b3a764000081565b61042b3361046e565b151561043657600080fd5b61043f8161055c565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b6000610480818363ffffffff61056d16565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b6104bb336105a4565b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561052057600080fd5b505af1158015610534573d6000803e3d6000fd5b505050506040513d602081101561054a57600080fd5b5051151561055757600080fd5b505050565b61043f60008263ffffffff6105b516565b6000600160a060020a038216151561058457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61043f60008263ffffffff61060316565b600160a060020a03811615156105ca57600080fd5b6105d4828261056d565b156105de57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561061857600080fd5b610622828261056d565b151561062d57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058200648204d7a0ac13aa2e9ab7514200c49dd33ae54f0178fd146385ad3444f20ee0029", "functionHashes": { "CAT_0_VALUE()": "9fc3c983", "CAT_1_VALUE()": "492fba84", @@ -186,7 +186,7 @@ }, "gasEstimates": { "creation": { - "codeDepositCost": "317000", + "codeDepositCost": "331800", "executionCost": "infinite", "totalCost": "infinite" }, diff --git a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoFeesTests.cs b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoFeesTests.cs new file mode 100644 index 000000000..0aeb0fb1b --- /dev/null +++ b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoFeesTests.cs @@ -0,0 +1,180 @@ +using System; +using System.Numerics; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoErc20Token; +using AdvancedAlgos.AlgoToken.Framework.Ethereum; +using AdvancedAlgos.AlgoToken.Framework.Ethereum.Exceptions; +using AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest; +using Nethereum.RPC.Accounts; +using Nethereum.Web3; +using Nethereum.Web3.Accounts; +using Xunit; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests +{ + public class AlgoFeesTests + { + [Fact] + public async Task MinerRegistrationTest() + { + EthNetwork.UseGanacheTestNet(); + + var prefundedAccount = new Account(EthNetwork.Instance.PrefundedPrivateKey); + + var tokenOwnerAccount = EthAccountFactory.Create(); + var coreTeamAccount = EthAccountFactory.Create(); + + await EthNetwork.Instance.RefillAsync(tokenOwnerAccount); + await EthNetwork.Instance.RefillAsync(coreTeamAccount); + + // Create the ERC20 token... + var token = new AlgoTokenV1(EthNetwork.Instance.GetWeb3(tokenOwnerAccount), EthNetwork.Instance.GasPriceProvider); + await token.DeployAsync(); + + // Create a fees... + var fees1 = new AlgoFees(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); + await fees1.DeployAsync(token.ContractAddress); + + // Create some miners... + var minerAccounts = new IAccount[3]; + AlgoMiner[] miners = new AlgoMiner[3]; + + for (int i = 0; i < 3; i++) + { + // Create an account for the miner... + minerAccounts[i] = EthAccountFactory.Create(); + + // Create the miner... + miners[i] = new AlgoMiner(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); + await miners[i].DeployAsync(1, 2, minerAccounts[i].Address, token.ContractAddress); + } + + // Register a miner... + await fees1.RegisterMinerAsync(miners[0].ContractAddress); + + Assert.Equal(1, await fees1.GetMinerCountAsync()); + Assert.Equal(miners[0].ContractAddress, await fees1.GetMinerByIndexAsync(0)); + + // Remove the only registered miner. + await fees1.UnregisterMinerAsync(miners[0].ContractAddress); + + Assert.Equal(0, await fees1.GetMinerCountAsync()); + + // Register the 3 miners and ensure they are registered... + for (int i = 0; i < 3; i++) + { + await fees1.RegisterMinerAsync(miners[i].ContractAddress); + } + + Assert.Equal(3, await fees1.GetMinerCountAsync()); + + for (int i = 0; i < 3; i++) + { + Assert.Equal(miners[i].ContractAddress, await fees1.GetMinerByIndexAsync(i)); + } + + // Remove the 2nd miner and check... + await fees1.UnregisterMinerAsync(miners[1].ContractAddress); + + Assert.Equal(2, await fees1.GetMinerCountAsync()); + Assert.Equal(miners[0].ContractAddress, await fees1.GetMinerByIndexAsync(0)); + Assert.Equal(miners[2].ContractAddress, await fees1.GetMinerByIndexAsync(1)); + + // Add the removed miner back... + await fees1.RegisterMinerAsync(miners[1].ContractAddress); + + Assert.Equal(3, await fees1.GetMinerCountAsync()); + Assert.Equal(miners[0].ContractAddress, await fees1.GetMinerByIndexAsync(0)); + Assert.Equal(miners[2].ContractAddress, await fees1.GetMinerByIndexAsync(1)); + Assert.Equal(miners[1].ContractAddress, await fees1.GetMinerByIndexAsync(2)); + + // Remove the latest miner... + await fees1.UnregisterMinerAsync(miners[1].ContractAddress); + + Assert.Equal(2, await fees1.GetMinerCountAsync()); + Assert.Equal(miners[0].ContractAddress, await fees1.GetMinerByIndexAsync(0)); + Assert.Equal(miners[2].ContractAddress, await fees1.GetMinerByIndexAsync(1)); + } + + [Fact] + public async Task MineTest() + { + EthNetwork.UseGanacheTestNet(); + + var prefundedAccount = new Account(EthNetwork.Instance.PrefundedPrivateKey); + + var tokenOwnerAccount = EthAccountFactory.Create(); + var systemAccount = EthAccountFactory.Create(); + var coreTeamAccount = EthAccountFactory.Create(); + + await EthNetwork.Instance.RefillAsync(tokenOwnerAccount); + await EthNetwork.Instance.RefillAsync(systemAccount); + await EthNetwork.Instance.RefillAsync(coreTeamAccount); + + // Create the ERC20 token... + var token = new AlgoTokenV1(EthNetwork.Instance.GetWeb3(tokenOwnerAccount), EthNetwork.Instance.GasPriceProvider); + await token.DeployAsync(); + + // Create a fees... + var fees1 = new AlgoFees(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); + await fees1.DeployAsync(token.ContractAddress); + + // Register the system account... + await fees1.AddSystemAsync(systemAccount.Address); + + // Transfer some tokens to the fees... + await token.TransferAsync(fees1.ContractAddress, 151.Algo()); + + // Create one miner per category... + var minerAccounts = new IAccount[6]; + var miners = new AlgoMiner[6]; + + for (byte i = 0; i <= 5; i++) + { + // Create an account for the miner... + minerAccounts[i] = EthAccountFactory.Create(); + await EthNetwork.Instance.RefillAsync(minerAccounts[i]); + + // Create the miner... + miners[i] = new AlgoMiner(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); + await miners[i].DeployAsync(1, i, minerAccounts[i].Address, token.ContractAddress); + + // Transfer some tokens to the miner so it can be activated... + await token.TransferAsync(miners[i].ContractAddress, 100.Algo()); + + // Activate the miner... + await miners[i].ActivateMinerAsync(); + + // Start mining... + { + var miner = new AlgoMiner(miners[i].ContractAddress, EthNetwork.Instance.GetWeb3(minerAccounts[i]), EthNetwork.Instance.GasPriceProvider); + await miner.StartMiningAsync(); + } + + // Register a miner... + await fees1.RegisterMinerAsync(miners[i].ContractAddress); + } + + // Mine the fees... + { + var fees = new AlgoFees(fees1.ContractAddress, EthNetwork.Instance.GetWeb3(systemAccount), EthNetwork.Instance.GasPriceProvider); + await fees.MineAsync(); + } + + // Ensure the miners received the payment from the fees... + var balance0 = await token.BalanceOfAsync(minerAccounts[0].Address); + var balance1 = await token.BalanceOfAsync(minerAccounts[1].Address); + var balance2 = await token.BalanceOfAsync(minerAccounts[2].Address); + var balance3 = await token.BalanceOfAsync(minerAccounts[3].Address); + var balance4 = await token.BalanceOfAsync(minerAccounts[4].Address); + var balance5 = await token.BalanceOfAsync(minerAccounts[5].Address); + + Assert.Equal(1.Algo(), balance0); + Assert.Equal(10.Algo(), balance1); + Assert.Equal(20.Algo(), balance2); + Assert.Equal(30.Algo(), balance3); + Assert.Equal(40.Algo(), balance4); + Assert.Equal(50.Algo(), balance5); + } + } +} diff --git a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/Algorithms/FeesDistributionAlgorithmTests.cs b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/Algorithms/FeesDistributionAlgorithmTests.cs new file mode 100644 index 000000000..cd4055a37 --- /dev/null +++ b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/Algorithms/FeesDistributionAlgorithmTests.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using AdvancedAlgos.AlgoToken.AlgoTokenDistribution.Algorithms; +using Xunit; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests.Algorithms +{ + public class FeesDistributionAlgorithmTests + { + [Fact] + public void TestDistributionAlgorithm1() + { + var miners = new long[] { 100, 100, 100, 100, 100, 100 }; + var fees = FeesDistributionAlgorithm.Distribute(151000, miners); + + Assert.Equal(10, fees[0]); + Assert.Equal(100, fees[1]); + Assert.Equal(200, fees[2]); + Assert.Equal(300, fees[3]); + Assert.Equal(400, fees[4]); + Assert.Equal(500, fees[5]); + + Assert.Equal(151000, GetTotalAmount(miners, fees)); + } + + [Fact] + public void TestDistributionAlgorithm2() + { + var miners = new long[] { 100, 100, 0, 100, 100, 100 }; + var fees = FeesDistributionAlgorithm.Distribute(131000, miners); + + Assert.Equal(10, fees[0]); + Assert.Equal(100, fees[1]); + Assert.Equal(0, fees[2]); + Assert.Equal(300, fees[3]); + Assert.Equal(400, fees[4]); + Assert.Equal(500, fees[5]); + + Assert.Equal(131000, GetTotalAmount(miners, fees)); + } + + private static decimal GetTotalAmount(long[] miners, decimal[] fees) + { + decimal totalAmount = 0; + + for (int i = 0; i < 6; i++) + { + totalAmount += miners[i] * fees[i]; + } + + return totalAmount; + } + } +} diff --git a/labs/algo-token-playground/algofees-script.md b/labs/algo-token-playground/algofees-script.md new file mode 100644 index 000000000..e19a958d1 --- /dev/null +++ b/labs/algo-token-playground/algofees-script.md @@ -0,0 +1,61 @@ +new-account -n miner_0_account +new-account -n miner_1_account +new-account -n miner_2_account +new-account -n miner_3_account +new-account -n miner_4_account +new-account -n miner_5_account +import-account 0936af475d2701538aad321f87e0a51f2b297634653393e8cab7290a674009a5 -n prefunded +eth-transfer miner_0_account 1eth +eth-transfer miner_1_account 1eth +eth-transfer miner_2_account 1eth +eth-transfer miner_3_account 1eth +eth-transfer miner_4_account 1eth +eth-transfer miner_5_account 1eth +deploy-algotoken -n token +deploy-algominer 1 0 miner_0_account token -n miner_0 +deploy-algominer 1 1 miner_1_account token -n miner_1 +deploy-algominer 1 2 miner_2_account token -n miner_2 +deploy-algominer 1 3 miner_3_account token -n miner_3 +deploy-algominer 1 4 miner_4_account token -n miner_4 +deploy-algominer 1 5 miner_5_account token -n miner_5 +token.algotoken-transfer miner_0 1m +token.algotoken-transfer miner_1 1m +token.algotoken-transfer miner_2 1m +token.algotoken-transfer miner_3 1m +token.algotoken-transfer miner_4 1m +token.algotoken-transfer miner_5 1m +miner_0.algominer-activateminer +miner_1.algominer-activateminer +miner_2.algominer-activateminer +miner_3.algominer-activateminer +miner_4.algominer-activateminer +miner_5.algominer-activateminer +set-account miner_0_account +miner_0.algominer-startmining +set-account miner_1_account +miner_1.algominer-startmining +set-account miner_2_account +miner_2.algominer-startmining +set-account miner_3_account +miner_3.algominer-startmining +set-account miner_4_account +miner_4.algominer-startmining +set-account miner_5_account +miner_5.algominer-startmining +set-account prefunded +deploy-algofees token -n fees1 +token.algotoken-transfer fees1 151eth +token.algotoken-balanceof fees1 +fees1.algofees-registerminer miner_0 +fees1.algofees-registerminer miner_1 +fees1.algofees-registerminer miner_2 +fees1.algofees-registerminer miner_3 +fees1.algofees-registerminer miner_4 +fees1.algofees-registerminer miner_5 +fees1.algofees-mine +token.algotoken-balanceof miner_0_account +token.algotoken-balanceof miner_1_account +token.algotoken-balanceof miner_2_account +token.algotoken-balanceof miner_3_account +token.algotoken-balanceof miner_4_account +token.algotoken-balanceof miner_5_account diff --git a/labs/algo-token-playground/script.md b/labs/algo-token-playground/algotoken-script.md similarity index 100% rename from labs/algo-token-playground/script.md rename to labs/algo-token-playground/algotoken-script.md diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesDeployCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesDeployCommand.cs new file mode 100644 index 000000000..21db54aff --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesDeployCommand.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenDistribution; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoFeesContract +{ + public class AlgoFeesDeployCommand : DeployContractCommand + { + public override string DefaultName => "AlgoFees"; + + public string TokenAddress { get; set; } + + protected override async Task DeployContractAsync(RuntimeContext context, Web3 web3) + { + var algoFees = new AlgoFees(web3, context.GasPriceProvider); + return await algoFees.DeployAsync(context.ResolveContractReference(TokenAddress)); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesMineCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesMineCommand.cs new file mode 100644 index 000000000..27ab17661 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesMineCommand.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenDistribution; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoFeesContract +{ + public class AlgoFeesMineCommand : EthInvokeTransactionalFunctionCommand + { + protected override async Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3) + { + var algoFees = new AlgoFees(contractAddress, web3, context.GasPriceProvider); + + return await algoFees.MineAsync(); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesRegisterMinerCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesRegisterMinerCommand.cs new file mode 100644 index 000000000..e7828e3dc --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesRegisterMinerCommand.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenDistribution; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoFeesContract +{ + public class AlgoFeesRegisterMinerCommand : EthInvokeTransactionalFunctionCommand + { + public string MinerAddress { get; set; } + + protected override async Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3) + { + var algoFees = new AlgoFees(contractAddress, web3, context.GasPriceProvider); + + return await algoFees.RegisterMinerAsync(context.ResolveContractReference(MinerAddress)); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesUnregisterMinerCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesUnregisterMinerCommand.cs new file mode 100644 index 000000000..15cfded48 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesUnregisterMinerCommand.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenDistribution; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoFeesContract +{ + public class AlgoFeesUnregisterMinerCommand : EthInvokeTransactionalFunctionCommand + { + public string MinerAddress { get; set; } + + protected override async Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3) + { + var algoFees = new AlgoFees(contractAddress, web3, context.GasPriceProvider); + + return await algoFees.UnregisterMinerAsync(context.ResolveContractReference(MinerAddress)); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoFeesParsers.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoFeesParsers.cs new file mode 100644 index 000000000..297204777 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoFeesParsers.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Text; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoFeesContract; +using Sprache; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Parsers +{ + public static class AlgoFeesParsers + { + public static void Register() + { + (from command in CommonParsers.Token("deploy-algofees") + from tokenAddress in CommonParsers.StringValue + from name in CommonParsers.Switch('n', "name", CommonParsers.Identifier).Optional() + select new AlgoFeesDeployCommand + { + Name = name.GetOrDefault(), + TokenAddress = tokenAddress + }).Register(); + + (from contractReference in CommonParsers.Invoke("algofees-registerminer") + from minerAddress in CommonParsers.StringValue + select new AlgoFeesRegisterMinerCommand + { + ContractReference = contractReference, + MinerAddress = minerAddress + }).Register(); + + (from contractReference in CommonParsers.Invoke("algofees-unregisterminer") + from minerAddress in CommonParsers.StringValue + select new AlgoFeesUnregisterMinerCommand + { + ContractReference = contractReference, + MinerAddress = minerAddress + }).Register(); + + (from contractReference in CommonParsers.Invoke("algofees-mine") + select new AlgoFeesMineCommand + { + ContractReference = contractReference + }).Register(); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/REPL.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/REPL.cs index 5755c8eff..f1a593477 100644 --- a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/REPL.cs +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/REPL.cs @@ -26,6 +26,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground ContractManagementParsers.Register(); AlgoTokenParsers.Register(); AlgoPoolParsers.Register(); + AlgoFeesParsers.Register(); AlgoMinerParsers.Register(); } From 69b389ddc4ccf01dd900b238fa41249d5a38f017 Mon Sep 17 00:00:00 2001 From: pmmax Date: Wed, 12 Dec 2018 20:11:22 -0300 Subject: [PATCH 09/17] Added minor changes, fixed build scripts, added "terminate" function to all contracts --- .../AlgoFees.cs | 2 +- .../AlgoMiner.cs | 6 +- .../SmartContracts/src/AlgoFees.sol | 17 +- .../SmartContracts/src/AlgoMiner.sol | 33 +- .../SmartContracts/src/AlgoPool.sol | 12 +- .../SmartContracts/src/ERC20TokenHolder.sol | 24 + .../SmartContracts/src/Terminable.sol | 21 + .../src/bin/AlgoFees-sol-output.json | 11559 +++++++------ .../SmartContracts/src/bin/AlgoFees.abi | 2 +- .../SmartContracts/src/bin/AlgoFees.bin | 2 +- .../SmartContracts/src/bin/AlgoFees.json | 19 +- .../src/bin/AlgoMiner-sol-output.json | 13535 +++++++++------- .../SmartContracts/src/bin/AlgoMiner.abi | 2 +- .../SmartContracts/src/bin/AlgoMiner.bin | 2 +- .../SmartContracts/src/bin/AlgoMiner.json | 33 +- .../src/bin/AlgoPool-sol-output.json | 8777 +++++----- .../SmartContracts/src/bin/AlgoPool.abi | 2 +- .../SmartContracts/src/bin/AlgoPool.bin | 2 +- .../SmartContracts/src/bin/AlgoPool.json | 29 +- labs/algo-token-playground/README.md | 4 +- .../build/build-osx-x64.cmd | 2 +- .../build/build-osx-x64.sh | 2 +- .../build/build-win-x64.cmd | 2 +- .../build/build-win-x64.sh | 2 +- .../AlgoMinerDeployCommand.cs | 4 +- .../Parsers/AlgoMinerParsers.cs | 4 +- 26 files changed, 19211 insertions(+), 14888 deletions(-) create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoFees.cs b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoFees.cs index a16f4cc6a..751870ed3 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoFees.cs +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoFees.cs @@ -27,7 +27,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution protected override string AbiResourceName => $"SmartContracts.src.bin.{nameof(AlgoFees)}.abi"; protected override string BinResourceName => $"SmartContracts.src.bin.{nameof(AlgoFees)}.bin"; - protected override BigInteger DeploymentGasUnits => 1200000; + protected override BigInteger DeploymentGasUnits => 1400000; public Task DeployAsync(string tokenAddress) => base.DeployAsync(tokenAddress); diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoMiner.cs b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoMiner.cs index e128472b4..78b531e85 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoMiner.cs +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoMiner.cs @@ -32,10 +32,10 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution protected override string AbiResourceName => $"SmartContracts.src.bin.{nameof(AlgoMiner)}.abi"; protected override string BinResourceName => $"SmartContracts.src.bin.{nameof(AlgoMiner)}.bin"; - protected override BigInteger DeploymentGasUnits => 1200000; + protected override BigInteger DeploymentGasUnits => 1400000; - public Task DeployAsync(ushort minerType, byte category, string ownerAddress, string tokenAddress) - => base.DeployAsync(minerType, category, ownerAddress, tokenAddress); + public Task DeployAsync(ushort minerType, byte category, string minerAccountAddress, string tokenAddress) + => base.DeployAsync(minerType, category, minerAccountAddress, tokenAddress); protected override void Initialize(Contract contractDescriptor) { diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol index b9b350377..2850b2e05 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol @@ -4,10 +4,11 @@ import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol"; import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol"; import "./IAlgoMiner.sol"; +import "./ERC20TokenHolder.sol"; import "./AlgoSystemRole.sol"; import "./AlgoCoreTeamRole.sol"; -contract AlgoFees is AlgoSystemRole, AlgoCoreTeamRole { +contract AlgoFees is ERC20TokenHolder, AlgoSystemRole, AlgoCoreTeamRole { using SafeERC20 for IERC20; uint256 constant CAT_0_VALUE_PROPORTION = 1; @@ -17,19 +18,19 @@ contract AlgoFees is AlgoSystemRole, AlgoCoreTeamRole { uint256 constant CAT_4_VALUE_PROPORTION = 40; uint256 constant CAT_5_VALUE_PROPORTION = 50; - IERC20 private _token; address[] private _miners; mapping(address => uint256) private _minersByAddress; constructor(address tokenAddress) + ERC20TokenHolder(tokenAddress) AlgoSystemRole() AlgoCoreTeamRole() public { - _token = IERC20(tokenAddress); _miners.push(address(0)); // Reserved as a marker for unregistered miner. } - function registerMiner(address minerAddress) public onlyCoreTeam { + function registerMiner(address minerAddress) public notTerminated onlyCoreTeam { + require(_miners.length < 1000); require(_minersByAddress[minerAddress] == 0); IAlgoMiner algoMiner = IAlgoMiner(minerAddress); @@ -44,7 +45,7 @@ contract AlgoFees is AlgoSystemRole, AlgoCoreTeamRole { _miners.push(minerAddress); } - function unregisterMiner(address minerAddress) public onlyCoreTeam { + function unregisterMiner(address minerAddress) public notTerminated onlyCoreTeam { require(_miners.length > 1); if(_miners.length == 2) { @@ -67,7 +68,7 @@ contract AlgoFees is AlgoSystemRole, AlgoCoreTeamRole { } } - function mine() public onlySystem { + function mine() public notTerminated onlySystem { require(_miners.length > 1); uint256 currentFeesBalance = _token.balanceOf(address(this)); @@ -128,6 +129,10 @@ contract AlgoFees is AlgoSystemRole, AlgoCoreTeamRole { } } + function terminate() public onlyCoreTeam { + _terminate(); + } + function getMinerCount() public view returns (uint256) { return _miners.length - 1; } diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol index 76aa60bf1..555aa271a 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol @@ -4,11 +4,12 @@ import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol"; import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol"; import "./IAlgoMiner.sol"; +import "./ERC20TokenHolder.sol"; import "./AlgoSystemRole.sol"; import "./AlgoCoreTeamRole.sol"; import "./AlgoSupervisorRole.sol"; -contract AlgoMiner is AlgoSystemRole, AlgoCoreTeamRole, AlgoSupervisorRole, IAlgoMiner { +contract AlgoMiner is ERC20TokenHolder, AlgoSystemRole, AlgoCoreTeamRole, AlgoSupervisorRole, IAlgoMiner { using SafeERC20 for IERC20; uint256 public constant DAYS_PER_YEAR = 365; @@ -23,7 +24,6 @@ contract AlgoMiner is AlgoSystemRole, AlgoCoreTeamRole, AlgoSupervisorRole, IAlg uint16 private _minerType; uint8 private _category; address private _miner; - IERC20 private _token; MinerState private _state; bool private _mining; @@ -31,7 +31,8 @@ contract AlgoMiner is AlgoSystemRole, AlgoCoreTeamRole, AlgoSupervisorRole, IAlg uint16 private _currentDay; uint256 private _currentYearSupply; - constructor(uint16 minerType, uint8 category, address ownerAddress, address tokenAddress) + constructor(uint16 minerType, uint8 category, address minerAccountAddress, address tokenAddress) + ERC20TokenHolder(tokenAddress) AlgoSystemRole() AlgoCoreTeamRole() AlgoSupervisorRole() @@ -41,8 +42,7 @@ contract AlgoMiner is AlgoSystemRole, AlgoCoreTeamRole, AlgoSupervisorRole, IAlg _minerType = minerType; _category = category; - _miner = ownerAddress; - _token = IERC20(tokenAddress); + _miner = minerAccountAddress; } modifier onlyMiner() { @@ -50,7 +50,7 @@ contract AlgoMiner is AlgoSystemRole, AlgoCoreTeamRole, AlgoSupervisorRole, IAlg _; } - function activateMiner() public onlyCoreTeam { + function activateMiner() public notTerminated onlyCoreTeam { require(_state == MinerState.Deactivated); if(_currentYearSupply == 0) { @@ -64,32 +64,33 @@ contract AlgoMiner is AlgoSystemRole, AlgoCoreTeamRole, AlgoSupervisorRole, IAlg _state = MinerState.Activated; } - function deactivateMiner() public onlyCoreTeam { + function deactivateMiner() public notTerminated onlyCoreTeam { require(_state != MinerState.Deactivated); _state = MinerState.Deactivated; _mining = false; } + // TODO: Transfer the entire state to the new miner. function migrateMiner(address newMinerAddress) public onlyCoreTeam { require(_state == MinerState.Deactivated); _token.safeTransfer(newMinerAddress, _token.balanceOf(address(this))); } - function pauseMining() public onlySupervisor { + function pauseMining() public notTerminated onlySupervisor { require(_state == MinerState.Activated); _state = MinerState.Suspended; } - function resumeMining() public onlySupervisor { + function resumeMining() public notTerminated onlySupervisor { require(_state == MinerState.Suspended); _state = MinerState.Activated; } - function stopAndRemoveOwnership() public onlySupervisor { + function stopAndRemoveOwnership() public notTerminated onlySupervisor { require(_state != MinerState.Stopped); _state = MinerState.Stopped; @@ -97,28 +98,28 @@ contract AlgoMiner is AlgoSystemRole, AlgoCoreTeamRole, AlgoSupervisorRole, IAlg _miner = address(0); } - function resetMiner(address newOwnerAddress) public onlySupervisor { + function resetMiner(address newOwnerAddress) public notTerminated onlySupervisor { require(_state == MinerState.Stopped); _state = MinerState.Activated; _miner = newOwnerAddress; } - function startMining() public onlyMiner { + function startMining() public notTerminated onlyMiner { require(_state == MinerState.Activated); require(!_mining); _mining = true; } - function stopMining() public onlyMiner { + function stopMining() public notTerminated onlyMiner { require(_state == MinerState.Activated); require(_mining); _mining = false; } - function mine() public onlySystem { + function mine() public notTerminated onlySystem { require(_state == MinerState.Activated); require(_mining); @@ -141,6 +142,10 @@ contract AlgoMiner is AlgoSystemRole, AlgoCoreTeamRole, AlgoSupervisorRole, IAlg _token.safeTransfer(_miner, tokens); } + function terminate() public onlyCoreTeam { + _terminate(); + } + function isAlgoMiner() public pure returns (bool) { return true; } diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol index 0ad4c2324..1edcb38c2 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol @@ -4,9 +4,10 @@ import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol"; import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol"; import "./IAlgoMiner.sol"; +import "./ERC20TokenHolder.sol"; import "./AlgoCoreTeamRole.sol"; -contract AlgoPool is AlgoCoreTeamRole { +contract AlgoPool is ERC20TokenHolder, AlgoCoreTeamRole { using SafeERC20 for IERC20; uint256 public constant TOKEN_FACTOR = 10 ** uint256(18); @@ -18,17 +19,16 @@ contract AlgoPool is AlgoCoreTeamRole { uint256 public constant CAT_5_VALUE = 5 * 1000000 * TOKEN_FACTOR; uint16 private _poolType; - IERC20 private _token; mapping(address => bool) _fundedMiners; constructor(uint16 poolType, address tokenAddress) + ERC20TokenHolder(tokenAddress) AlgoCoreTeamRole() public { _poolType = poolType; - _token = IERC20(tokenAddress); } - function trasferToMiner(address minerAddress) public onlyCoreTeam { + function trasferToMiner(address minerAddress) public notTerminated onlyCoreTeam { require(!_fundedMiners[minerAddress]); IAlgoMiner algoMiner = IAlgoMiner(minerAddress); @@ -60,4 +60,8 @@ contract AlgoPool is AlgoCoreTeamRole { _fundedMiners[minerAddress] = true; _token.safeTransfer(minerAddress, value); } + + function terminate() public onlyCoreTeam { + _terminate(); + } } diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol new file mode 100644 index 000000000..21d79497f --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol @@ -0,0 +1,24 @@ +pragma solidity 0.4.24; + +import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol"; +import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol"; + +import "./Terminable.sol"; + +contract ERC20TokenHolder is Terminable { + using SafeERC20 for IERC20; + + IERC20 internal _token; + + constructor(address tokenAddress) Terminable() internal { + _token = IERC20(tokenAddress); + } + + function _terminate() internal { + uint256 currentBalance = _token.balanceOf(address(this)); + if(currentBalance > 0) { + _token.safeTransfer(_creator, currentBalance); + } + Terminable._terminate(); + } +} \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol new file mode 100644 index 000000000..1e773f3f3 --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol @@ -0,0 +1,21 @@ +pragma solidity 0.4.24; + +contract Terminable { + + address internal _creator; + bool internal _terminated; + + constructor() internal { + _creator = msg.sender; + _terminated = false; + } + + modifier notTerminated() { + require(!_terminated); + _; + } + + function _terminate() internal { + _terminated = true; + } +} \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json index 384826148..05aa66a62 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json @@ -78,6 +78,15 @@ "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol": { "AlgoFees": { "abi": [ + { + "constant": false, + "inputs": [], + "name": "terminate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "constant": false, "inputs": [ @@ -250,27 +259,28 @@ "evm": { "bytecode": { "linkReferences": {}, - "object": "608060405234801561001057600080fd5b50604051602080610edc8339810160405251610034336401000000006100a2810204565b610046336401000000006100bd810204565b60028054600160a060020a03909216600160a060020a0319928316179055600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091169055610163565b6100ba600082640100000000610c436100d582021704565b50565b6100ba600182640100000000610c436100d582021704565b600160a060020a03811615156100ea57600080fd5b6100fd828264010000000061012c810204565b1561010757600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561014357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610d6a806101726000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632e6b6849811461009a578063341ccfcb146100bd57806334cdcf26146100de5780633d19ab1314610113578063608d3d3d1461014757806374be75921461016857806381f909f31461018957806399f4b251146101aa578063bb52c137146101bf578063d43acc79146101e6578063e9d61859146101fb575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a0360043516610210565b005b3480156100c957600080fd5b506100bb600160a060020a0360043516610230565b3480156100ea57600080fd5b506100ff600160a060020a03600435166103e1565b604080519115158252519081900360200190f35b34801561011f57600080fd5b5061012b6004356103f9565b60408051600160a060020a039092168252519081900360200190f35b34801561015357600080fd5b506100ff600160a060020a0360043516610428565b34801561017457600080fd5b506100bb600160a060020a036004351661043b565b34801561019557600080fd5b506100bb600160a060020a0360043516610458565b3480156101b657600080fd5b506100bb6105e7565b3480156101cb57600080fd5b506101d4610b0a565b60408051918252519081900360200190f35b3480156101f257600080fd5b506100bb610b15565b34801561020757600080fd5b506100bb610b20565b61021933610428565b151561022457600080fd5b61022d81610b29565b50565b60008061023c33610428565b151561024757600080fd5b600160a060020a0383166000908152600460205260409020541561026a57600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b505050506040513d60208110156102d557600080fd5b505115156102e257600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032057600080fd5b505af1158015610334573d6000803e3d6000fd5b505050506040513d602081101561034a57600080fd5b50519050600060ff821610801590610366575060058160ff1611155b151561037157600080fd5b505060038054600160a060020a039092166000818152600460205260408120849055600184018355919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b60006103f3818363ffffffff610b3a16565b92915050565b600060038260010181548110151561040d57fe5b600091825260209091200154600160a060020a031692915050565b60006103f360018363ffffffff610b3a16565b610444336103e1565b151561044f57600080fd5b61022d81610b71565b61046133610428565b151561046c57600080fd5b60035460011061047b57600080fd5b600354600214156104e75760038054600190811061049557fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560016104c8600382610cdd565b50600160a060020a03811660009081526004602052604081205561022d565b600354600160a060020a038216600090815260046020526040902054146105815760038054600019810190811061051a57fe5b6000918252602080832090910154600160a060020a038481168452600490925260409092205460038054929093169291811061055257fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60038054600019810190811061059357fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560038054906105cc906000198301610cdd565b50600160a060020a0316600090815260046020526040812055565b60006105f1610d01565b6000806000806105ff610d01565b610608336103e1565b151561061357600080fd5b60035460011061062257600080fd5b600254604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561068857600080fd5b505af115801561069c573d6000803e3d6000fd5b505050506040513d60208110156106b257600080fd5b50519650600087116106c357600080fd5b600194505b6003548510156108725760038054869081106106e057fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561073e57600080fd5b505af1158015610752573d6000803e3d6000fd5b505050506040513d602081101561076857600080fd5b5051151561077557610867565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156107b357600080fd5b505af11580156107c7573d6000803e3d6000fd5b505050506040513d60208110156107dd57600080fd5b5051925060ff831615156107ff578560005b6020020180516001019052610867565b8260ff1660011415610813578560016107ef565b8260ff1660021415610827578560026107ef565b8260ff166003141561083b578560036107ef565b8260ff166004141561084f578560046107ef565b8260ff16600514156108675760a08601805160010190525b6001909401936106c8565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e90910201602890910201603290910201915081878115156108b857fe5b04815281600a88028115156108c957fe5b04602082015281601488028115156108dd57fe5b04604082015281601e88028115156108f157fe5b046060820152816028880281151561090557fe5b046080820152816032880281151561091957fe5b0460a0820152600194505b600354851015610b0157600380548690811061093c57fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561099a57600080fd5b505af11580156109ae573d6000803e3d6000fd5b505050506040513d60208110156109c457600080fd5b505115156109d157610af6565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a0f57600080fd5b505af1158015610a23573d6000803e3d6000fd5b505050506040513d6020811015610a3957600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610af691600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610a9d57600080fd5b505af1158015610ab1573d6000803e3d6000fd5b505050506040513d6020811015610ac757600080fd5b50518260ff861660068110610ad857fe5b6020020151600254600160a060020a0316919063ffffffff610b8216565b600190940193610924565b50505050505050565b600354600019015b90565b610b1e33610c21565b565b610b1e33610c32565b61022d60018263ffffffff610c4316565b6000600160a060020a0382161515610b5157600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61022d60008263ffffffff610c4316565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610be557600080fd5b505af1158015610bf9573d6000803e3d6000fd5b505050506040513d6020811015610c0f57600080fd5b50511515610c1c57600080fd5b505050565b61022d60018263ffffffff610c9116565b61022d60008263ffffffff610c9116565b600160a060020a0381161515610c5857600080fd5b610c628282610b3a565b15610c6c57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610ca657600080fd5b610cb08282610b3a565b1515610cbb57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610c1c57600083815260209020610c1c918101908301610d20565b60c0604051908101604052806006906020820280388339509192915050565b610b1291905b80821115610d3a5760008155600101610d26565b50905600a165627a7a72305820a50e84e4f20df15b74a513c238b268f416d4f45f8632af54e0cb02d0aaff72790029", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP1 PUSH2 0xEDC DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE MLOAD PUSH2 0x34 CALLER PUSH5 0x100000000 PUSH2 0xA2 DUP2 MUL DIV JUMP JUMPDEST PUSH2 0x46 CALLER PUSH5 0x100000000 PUSH2 0xBD DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B ADD DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH2 0x163 JUMP JUMPDEST PUSH2 0xBA PUSH1 0x0 DUP3 PUSH5 0x100000000 PUSH2 0xC43 PUSH2 0xD5 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0xBA PUSH1 0x1 DUP3 PUSH5 0x100000000 PUSH2 0xC43 PUSH2 0xD5 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFD DUP3 DUP3 PUSH5 0x100000000 PUSH2 0x12C DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH2 0x107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x143 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xD6A DUP1 PUSH2 0x172 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x95 JUMPI PUSH4 0xFFFFFFFF PUSH1 0xE0 PUSH1 0x2 EXP PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x2E6B6849 DUP2 EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0x341CCFCB EQ PUSH2 0xBD JUMPI DUP1 PUSH4 0x34CDCF26 EQ PUSH2 0xDE JUMPI DUP1 PUSH4 0x3D19AB13 EQ PUSH2 0x113 JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x74BE7592 EQ PUSH2 0x168 JUMPI DUP1 PUSH4 0x81F909F3 EQ PUSH2 0x189 JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0xBB52C137 EQ PUSH2 0x1BF JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0xE9D61859 EQ PUSH2 0x1FB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x210 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x230 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFF PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x3E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12B PUSH1 0x4 CALLDATALOAD PUSH2 0x3F9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x153 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFF PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x428 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x43B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x458 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH2 0x5E7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D4 PUSH2 0xB0A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH2 0xB15 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH2 0xB20 JUMP JUMPDEST PUSH2 0x219 CALLER PUSH2 0x428 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x224 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x22D DUP2 PUSH2 0xB29 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x23C CALLER PUSH2 0x428 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x26A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x2E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x334 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0xFF DUP3 AND LT DUP1 ISZERO SWAP1 PUSH2 0x366 JUMPI POP PUSH1 0x5 DUP2 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0x371 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP5 SWAP1 SSTORE PUSH1 0x1 DUP5 ADD DUP4 SSTORE SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP1 SWAP2 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F3 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xB3A AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 PUSH1 0x1 ADD DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x40D JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F3 PUSH1 0x1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xB3A AND JUMP JUMPDEST PUSH2 0x444 CALLER PUSH2 0x3E1 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x44F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x22D DUP2 PUSH2 0xB71 JUMP JUMPDEST PUSH2 0x461 CALLER PUSH2 0x428 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x46C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 LT PUSH2 0x47B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x2 EQ ISZERO PUSH2 0x4E7 JUMPI PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 SWAP1 DUP2 LT PUSH2 0x495 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE PUSH1 0x1 PUSH2 0x4C8 PUSH1 0x3 DUP3 PUSH2 0xCDD JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH2 0x22D JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ PUSH2 0x581 JUMPI PUSH1 0x3 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x51A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 DUP2 AND DUP5 MSTORE PUSH1 0x4 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 SWAP3 KECCAK256 SLOAD PUSH1 0x3 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP3 SWAP2 DUP2 LT PUSH2 0x552 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x593 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD SWAP1 PUSH2 0x5CC SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0xCDD JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F1 PUSH2 0xD01 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x5FF PUSH2 0xD01 JUMP JUMPDEST PUSH2 0x608 CALLER PUSH2 0x3E1 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x613 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 LT PUSH2 0x622 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x688 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x69C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP7 POP PUSH1 0x0 DUP8 GT PUSH2 0x6C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SWAP5 POP JUMPDEST PUSH1 0x3 SLOAD DUP6 LT ISZERO PUSH2 0x872 JUMPI PUSH1 0x3 DUP1 SLOAD DUP7 SWAP1 DUP2 LT PUSH2 0x6E0 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP4 POP DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x19A74AB3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x73E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x752 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x768 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x775 JUMPI PUSH2 0x867 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7C7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP PUSH1 0xFF DUP4 AND ISZERO ISZERO PUSH2 0x7FF JUMPI DUP6 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE PUSH2 0x867 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x813 JUMPI DUP6 PUSH1 0x1 PUSH2 0x7EF JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x827 JUMPI DUP6 PUSH1 0x2 PUSH2 0x7EF JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x83B JUMPI DUP6 PUSH1 0x3 PUSH2 0x7EF JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x84F JUMPI DUP6 PUSH1 0x4 PUSH2 0x7EF JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x867 JUMPI PUSH1 0xA0 DUP7 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE JUMPDEST PUSH1 0x1 SWAP1 SWAP5 ADD SWAP4 PUSH2 0x6C8 JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x40 DUP10 ADD MLOAD PUSH1 0x20 DUP11 ADD MLOAD DUP11 MLOAD PUSH1 0xA SWAP1 SWAP2 MUL ADD PUSH1 0x14 SWAP1 SWAP2 MUL ADD PUSH1 0x1E SWAP1 SWAP2 MUL ADD PUSH1 0x28 SWAP1 SWAP2 MUL ADD PUSH1 0x32 SWAP1 SWAP2 MUL ADD SWAP2 POP DUP2 DUP8 DUP2 ISZERO ISZERO PUSH2 0x8B8 JUMPI INVALID JUMPDEST DIV DUP2 MSTORE DUP2 PUSH1 0xA DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x8C9 JUMPI INVALID JUMPDEST DIV PUSH1 0x20 DUP3 ADD MSTORE DUP2 PUSH1 0x14 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x8DD JUMPI INVALID JUMPDEST DIV PUSH1 0x40 DUP3 ADD MSTORE DUP2 PUSH1 0x1E DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x8F1 JUMPI INVALID JUMPDEST DIV PUSH1 0x60 DUP3 ADD MSTORE DUP2 PUSH1 0x28 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x905 JUMPI INVALID JUMPDEST DIV PUSH1 0x80 DUP3 ADD MSTORE DUP2 PUSH1 0x32 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x919 JUMPI INVALID JUMPDEST DIV PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x1 SWAP5 POP JUMPDEST PUSH1 0x3 SLOAD DUP6 LT ISZERO PUSH2 0xB01 JUMPI PUSH1 0x3 DUP1 SLOAD DUP7 SWAP1 DUP2 LT PUSH2 0x93C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP4 POP DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x19A74AB3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x99A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9AE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x9D1 JUMPI PUSH2 0xAF6 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA23 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x302C11CA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP5 POP PUSH2 0xAF6 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND SWAP2 PUSH4 0x302C11CA SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAB1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 PUSH1 0xFF DUP7 AND PUSH1 0x6 DUP2 LT PUSH2 0xAD8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xB82 AND JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP5 ADD SWAP4 PUSH2 0x924 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 NOT ADD JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB1E CALLER PUSH2 0xC21 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xB1E CALLER PUSH2 0xC32 JUMP JUMPDEST PUSH2 0x22D PUSH1 0x1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xC43 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xB51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x22D PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xC43 AND JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBF9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xC1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x22D PUSH1 0x1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xC91 AND JUMP JUMPDEST PUSH2 0x22D PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xC91 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xC58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC62 DUP3 DUP3 PUSH2 0xB3A JUMP JUMPDEST ISZERO PUSH2 0xC6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xCA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCB0 DUP3 DUP3 PUSH2 0xB3A JUMP JUMPDEST ISZERO ISZERO PUSH2 0xCBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0xC1C JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH2 0xC1C SWAP2 DUP2 ADD SWAP1 DUP4 ADD PUSH2 0xD20 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xB12 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xD3A JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xD26 JUMP JUMPDEST POP SWAP1 JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xa5 0xe DUP5 0xe4 CALLCODE 0xd CALL JUMPDEST PUSH21 0xA513C238B268F416D4F45F8632AF54E0CB02D0AAFF PUSH19 0x79002900000000000000000000000000000000 ", - "sourceMap": "522:4571:1:-;;;1046:235;8:9:-1;5:2;;;30:1;27;20:12;5:2;1046:235:1;;;;;;;;;;;;;364:22:2;375:10;364;;;;:22;:::i;:::-;368:24:0;381:10;368:12;;;;:24;:::i;:::-;1161:6:1;:29;;-1:-1:-1;;;;;1161:29:1;;;-1:-1:-1;;;;;;1161:29:1;;;;;;1201:7;27:10:-1;;1161:29:1;23:18:-1;;45:23;;1161:6:1;1201:24;;;;;;;;;;;;;522:4571;;800:92:2;857:27;:14;876:7;857:18;;;;;;:27;:::i;:::-;800:92;:::o;824:96:0:-;883:29;:16;904:7;883:20;;;;;;:29;:::i;244:167:4:-;-1:-1:-1;;;;;316:21:4;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:4;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:4;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:4;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:4;:11;:20;;;;;;;;;;;;;;;725:166::o;522:4571:1:-;;;;;;;" + "object": "60806040523480156200001157600080fd5b50604051602080620010d083398101604052516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790556200006c90640100000000620000c7810204565b6200008033640100000000620000e5810204565b50600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054600160a060020a031916905562000193565b620000e260028264010000000062000e066200010082021704565b50565b620000e260038264010000000062000e066200010082021704565b600160a060020a03811615156200011657600080fd5b6200012b82826401000000006200015b810204565b156200013657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200017357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610f2d80620001a36000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632e6b6849146100bc578063341ccfcb146100dd57806334cdcf26146100fe5780633d19ab1314610133578063608d3d3d1461016757806374be75921461018857806381f909f3146101a957806399f4b251146101ca578063bb52c137146101df578063d43acc7914610206578063e9d618591461021b575b600080fd5b3480156100b157600080fd5b506100ba610230565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661024e565b3480156100e957600080fd5b506100ba600160a060020a036004351661026e565b34801561010a57600080fd5b5061011f600160a060020a0360043516610457565b604080519115158252519081900360200190f35b34801561013f57600080fd5b5061014b600435610470565b60408051600160a060020a039092168252519081900360200190f35b34801561017357600080fd5b5061011f600160a060020a036004351661049f565b34801561019457600080fd5b506100ba600160a060020a03600435166104b2565b3480156101b557600080fd5b506100ba600160a060020a03600435166104cf565b3480156101d657600080fd5b506100ba610686565b3480156101eb57600080fd5b506101f4610bd1565b60408051918252519081900360200190f35b34801561021257600080fd5b506100ba610bdc565b34801561022757600080fd5b506100ba610be5565b6102393361049f565b151561024457600080fd5b61024c610bee565b565b6102573361049f565b151561026257600080fd5b61026b81610cb5565b50565b60008054819074010000000000000000000000000000000000000000900460ff161561029957600080fd5b6102a23361049f565b15156102ad57600080fd5b6004546103e8116102bd57600080fd5b600160a060020a038316600090815260056020526040902054156102e057600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032157600080fd5b505af1158015610335573d6000803e3d6000fd5b505050506040513d602081101561034b57600080fd5b5051151561035857600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b505050506040513d60208110156103c057600080fd5b50519050600060ff8216108015906103dc575060058160ff1611155b15156103e757600080fd5b505060048054600160a060020a039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b600061046a60028363ffffffff610cc616565b92915050565b600060048260010181548110151561048457fe5b600091825260209091200154600160a060020a031692915050565b600061046a60038363ffffffff610cc616565b6104bb33610457565b15156104c657600080fd5b61026b81610cfd565b60005474010000000000000000000000000000000000000000900460ff16156104f757600080fd5b6105003361049f565b151561050b57600080fd5b60045460011061051a57600080fd5b600454600214156105865760048054600190811061053457fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff191690556001610567600482610ea0565b50600160a060020a03811660009081526005602052604081205561026b565b600454600160a060020a03821660009081526005602052604090205414610620576004805460001981019081106105b957fe5b6000918252602080832090910154600160a060020a03848116845260059092526040909220546004805492909316929181106105f157fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60048054600019810190811061063257fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff19169055600480549061066b906000198301610ea0565b50600160a060020a0316600090815260056020526040812055565b6000610690610ec4565b60008060008061069e610ec4565b60005474010000000000000000000000000000000000000000900460ff16156106c657600080fd5b6106cf33610457565b15156106da57600080fd5b6004546001106106e957600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b505050506040513d602081101561077957600080fd5b505196506000871161078a57600080fd5b600194505b6004548510156109395760048054869081106107a757fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561080557600080fd5b505af1158015610819573d6000803e3d6000fd5b505050506040513d602081101561082f57600080fd5b5051151561083c5761092e565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561087a57600080fd5b505af115801561088e573d6000803e3d6000fd5b505050506040513d60208110156108a457600080fd5b5051925060ff831615156108c6578560005b602002018051600101905261092e565b8260ff16600114156108da578560016108b6565b8260ff16600214156108ee578560026108b6565b8260ff1660031415610902578560036108b6565b8260ff1660041415610916578560046108b6565b8260ff166005141561092e5760a08601805160010190525b60019094019361078f565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e909102016028909102016032909102019150818781151561097f57fe5b04815281600a880281151561099057fe5b04602082015281601488028115156109a457fe5b04604082015281601e88028115156109b857fe5b04606082015281602888028115156109cc57fe5b04608082015281603288028115156109e057fe5b0460a0820152600194505b600454851015610bc8576004805486908110610a0357fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a6157600080fd5b505af1158015610a75573d6000803e3d6000fd5b505050506040513d6020811015610a8b57600080fd5b50511515610a9857610bbd565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b505050506040513d6020811015610b0057600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610bbd91600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610b6457600080fd5b505af1158015610b78573d6000803e3d6000fd5b505050506040513d6020811015610b8e57600080fd5b50518260ff861660068110610b9f57fe5b6020020151600154600160a060020a0316919063ffffffff610d0e16565b6001909401936109eb565b50505050505050565b600454600019015b90565b61024c33610dad565b61024c33610dbe565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b505050506040513d6020811015610c7d57600080fd5b505190506000811115610cad57600054600154610cad91600160a060020a0391821691168363ffffffff610d0e16565b61026b610dcf565b61026b60038263ffffffff610e0616565b6000600160a060020a0382161515610cdd57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61026b60028263ffffffff610e0616565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610d7157600080fd5b505af1158015610d85573d6000803e3d6000fd5b505050506040513d6020811015610d9b57600080fd5b50511515610da857600080fd5b505050565b61026b60038263ffffffff610e5416565b61026b60028263ffffffff610e5416565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a0381161515610e1b57600080fd5b610e258282610cc6565b15610e2f57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610e6957600080fd5b610e738282610cc6565b1515610e7e57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610da857600083815260209020610da8918101908301610ee3565b60c0604051908101604052806006906020820280388339509192915050565b610bd991905b80821115610efd5760008155600101610ee9565b50905600a165627a7a723058201033067a6ceafcfdd5906365e4a9ea37491edaca7ecea2eae390d605b7aa71c30029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP1 PUSH3 0x10D0 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE MLOAD PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP2 DUP3 AND DUP2 OR PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND OR SWAP1 SSTORE PUSH3 0x6C SWAP1 PUSH5 0x100000000 PUSH3 0xC7 DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x80 CALLER PUSH5 0x100000000 PUSH3 0xE5 DUP2 MUL DIV JUMP JUMPDEST POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT AND SWAP1 SSTORE PUSH3 0x193 JUMP JUMPDEST PUSH3 0xE2 PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH3 0xE06 PUSH3 0x100 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0xE2 PUSH1 0x3 DUP3 PUSH5 0x100000000 PUSH3 0xE06 PUSH3 0x100 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH3 0x116 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x12B DUP3 DUP3 PUSH5 0x100000000 PUSH3 0x15B DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH3 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xF2D DUP1 PUSH3 0x1A3 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA0 JUMPI PUSH4 0xFFFFFFFF PUSH1 0xE0 PUSH1 0x2 EXP PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0xC08BF88 DUP2 EQ PUSH2 0xA5 JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0xBC JUMPI DUP1 PUSH4 0x341CCFCB EQ PUSH2 0xDD JUMPI DUP1 PUSH4 0x34CDCF26 EQ PUSH2 0xFE JUMPI DUP1 PUSH4 0x3D19AB13 EQ PUSH2 0x133 JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0x74BE7592 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0x81F909F3 EQ PUSH2 0x1A9 JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x1CA JUMPI DUP1 PUSH4 0xBB52C137 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x206 JUMPI DUP1 PUSH4 0xE9D61859 EQ PUSH2 0x21B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0x230 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x24E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x26E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11F PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x457 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14B PUSH1 0x4 CALLDATALOAD PUSH2 0x470 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11F PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x49F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x194 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x4B2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x4CF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0x686 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F4 PUSH2 0xBD1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x212 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0xBDC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x227 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0xBE5 JUMP JUMPDEST PUSH2 0x239 CALLER PUSH2 0x49F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24C PUSH2 0xBEE JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x257 CALLER PUSH2 0x49F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x26B DUP2 PUSH2 0xCB5 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A2 CALLER PUSH2 0x49F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x2AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x3E8 GT PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x2E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x321 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x335 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x358 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0xFF DUP3 AND LT DUP1 ISZERO SWAP1 PUSH2 0x3DC JUMPI POP PUSH1 0x5 DUP2 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0x3E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP5 SWAP1 SSTORE PUSH1 0x1 DUP5 ADD DUP4 SSTORE SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B SWAP1 SWAP2 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46A PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xCC6 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 DUP3 PUSH1 0x1 ADD DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x484 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46A PUSH1 0x3 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xCC6 AND JUMP JUMPDEST PUSH2 0x4BB CALLER PUSH2 0x457 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x26B DUP2 PUSH2 0xCFD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x4F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x500 CALLER PUSH2 0x49F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x50B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 LT PUSH2 0x51A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x2 EQ ISZERO PUSH2 0x586 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 SWAP1 DUP2 LT PUSH2 0x534 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE PUSH1 0x1 PUSH2 0x567 PUSH1 0x4 DUP3 PUSH2 0xEA0 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH2 0x26B JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ PUSH2 0x620 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x5B9 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 DUP2 AND DUP5 MSTORE PUSH1 0x5 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 SWAP3 KECCAK256 SLOAD PUSH1 0x4 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP3 SWAP2 DUP2 LT PUSH2 0x5F1 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x632 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD SWAP1 PUSH2 0x66B SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0xEA0 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x690 PUSH2 0xEC4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x69E PUSH2 0xEC4 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x6C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6CF CALLER PUSH2 0x457 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x6DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 LT PUSH2 0x6E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x74F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x763 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x779 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP7 POP PUSH1 0x0 DUP8 GT PUSH2 0x78A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SWAP5 POP JUMPDEST PUSH1 0x4 SLOAD DUP6 LT ISZERO PUSH2 0x939 JUMPI PUSH1 0x4 DUP1 SLOAD DUP7 SWAP1 DUP2 LT PUSH2 0x7A7 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP4 POP DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x19A74AB3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x805 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x819 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x82F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x83C JUMPI PUSH2 0x92E JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x87A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x88E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP PUSH1 0xFF DUP4 AND ISZERO ISZERO PUSH2 0x8C6 JUMPI DUP6 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE PUSH2 0x92E JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x8DA JUMPI DUP6 PUSH1 0x1 PUSH2 0x8B6 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x8EE JUMPI DUP6 PUSH1 0x2 PUSH2 0x8B6 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x902 JUMPI DUP6 PUSH1 0x3 PUSH2 0x8B6 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x916 JUMPI DUP6 PUSH1 0x4 PUSH2 0x8B6 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x92E JUMPI PUSH1 0xA0 DUP7 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE JUMPDEST PUSH1 0x1 SWAP1 SWAP5 ADD SWAP4 PUSH2 0x78F JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x40 DUP10 ADD MLOAD PUSH1 0x20 DUP11 ADD MLOAD DUP11 MLOAD PUSH1 0xA SWAP1 SWAP2 MUL ADD PUSH1 0x14 SWAP1 SWAP2 MUL ADD PUSH1 0x1E SWAP1 SWAP2 MUL ADD PUSH1 0x28 SWAP1 SWAP2 MUL ADD PUSH1 0x32 SWAP1 SWAP2 MUL ADD SWAP2 POP DUP2 DUP8 DUP2 ISZERO ISZERO PUSH2 0x97F JUMPI INVALID JUMPDEST DIV DUP2 MSTORE DUP2 PUSH1 0xA DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x990 JUMPI INVALID JUMPDEST DIV PUSH1 0x20 DUP3 ADD MSTORE DUP2 PUSH1 0x14 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x9A4 JUMPI INVALID JUMPDEST DIV PUSH1 0x40 DUP3 ADD MSTORE DUP2 PUSH1 0x1E DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x9B8 JUMPI INVALID JUMPDEST DIV PUSH1 0x60 DUP3 ADD MSTORE DUP2 PUSH1 0x28 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x9CC JUMPI INVALID JUMPDEST DIV PUSH1 0x80 DUP3 ADD MSTORE DUP2 PUSH1 0x32 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x9E0 JUMPI INVALID JUMPDEST DIV PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x1 SWAP5 POP JUMPDEST PUSH1 0x4 SLOAD DUP6 LT ISZERO PUSH2 0xBC8 JUMPI PUSH1 0x4 DUP1 SLOAD DUP7 SWAP1 DUP2 LT PUSH2 0xA03 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP4 POP DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x19A74AB3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA75 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xA98 JUMPI PUSH2 0xBBD JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAEA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x302C11CA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP5 POP PUSH2 0xBBD SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND SWAP2 PUSH4 0x302C11CA SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB78 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 PUSH1 0xFF DUP7 AND PUSH1 0x6 DUP2 LT PUSH2 0xB9F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xD0E AND JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP5 ADD SWAP4 PUSH2 0x9EB JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 NOT ADD JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24C CALLER PUSH2 0xDAD JUMP JUMPDEST PUSH2 0x24C CALLER PUSH2 0xDBE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC67 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0xCAD JUMPI PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0xCAD SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xD0E AND JUMP JUMPDEST PUSH2 0x26B PUSH2 0xDCF JUMP JUMPDEST PUSH2 0x26B PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE06 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xCDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x26B PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE06 AND JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD85 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xDA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x26B PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE54 AND JUMP JUMPDEST PUSH2 0x26B PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE54 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xE1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE25 DUP3 DUP3 PUSH2 0xCC6 JUMP JUMPDEST ISZERO PUSH2 0xE2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xE69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE73 DUP3 DUP3 PUSH2 0xCC6 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xE7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0xDA8 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH2 0xDA8 SWAP2 DUP2 ADD SWAP1 DUP4 ADD PUSH2 0xEE3 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xBD9 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xEFD JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xEE9 JUMP JUMPDEST POP SWAP1 JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 LT CALLER MOD PUSH27 0x6CEAFCFDD5906365E4A9EA37491EDACA7ECEA2EAE390D605B7AA71 0xc3 STOP 0x29 ", + "sourceMap": "556:4724:1:-;;;1070:235;8:9:-1;5:2;;;30:1;27;20:12;5:2;1070:235:1;;;;;;;;;;;;;156:8:5;:21;;167:10;-1:-1:-1;;;;;;156:21:5;;;;;-1:-1:-1;;;;;;188:19:5;;;;-1:-1:-1;636:29:3;;;;;-1:-1:-1;;;;;636:29:3;;;;;364:22:2;;:10;;;;:22;:::i;:::-;368:24:0;381:10;368:12;;;;:24;:::i;:::-;-1:-1:-1;1225:7:1;27:10:-1;;39:1;23:18;;45:23;;1246:1:1;1225:24;;;;;;;;-1:-1:-1;;;;;;1225:24:1;;;556:4724;;800:92:2;857:27;:14;876:7;857:18;;;;;;:27;:::i;:::-;800:92;:::o;824:96:0:-;883:29;:16;904:7;883:20;;;;;;:29;:::i;244:167:6:-;-1:-1:-1;;;;;316:21:6;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:6;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:6;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:6;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:6;:11;:20;;;;;;;;;;;;;;;725:166::o;556:4724:1:-;;;;;;;" }, "gasEstimates": { "creation": { - "codeDepositCost": "686800", + "codeDepositCost": "777000", "executionCost": "infinite", "totalCost": "infinite" }, "external": { "addCoreTeam(address)": "infinite", "addSystem(address)": "infinite", - "getMinerByIndex(uint256)": "980", - "getMinerCount()": "633", + "getMinerByIndex(uint256)": "1002", + "getMinerCount()": "655", "isCoreTeam(address)": "infinite", "isSystem(address)": "infinite", "mine()": "infinite", "registerMiner(address)": "infinite", "renounceCoreTeam()": "infinite", "renounceSystem()": "infinite", + "terminate()": "infinite", "unregisterMiner(address)": "infinite" } }, @@ -285,10 +295,11 @@ "registerMiner(address)": "341ccfcb", "renounceCoreTeam()": "d43acc79", "renounceSystem()": "e9d61859", + "terminate()": "0c08bf88", "unregisterMiner(address)": "81f909f3" } }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"registerMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSystem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getMinerByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"unregisterMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMinerCount\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol\":\"AlgoFees\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol\":{\"keccak256\":\"0x44afcd80827ee5d04f516395a4e0455c27c449ced894852a613fb605a96eb60c\",\"urls\":[\"bzzr://dd89f111ef301d812e7a5eb40ceb283652e0755cbde33b58742ceee33246bc4f\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol\":{\"keccak256\":\"0x6fffe504e6805d95ca42269cc995a3de9401a12bc037068b056c186ce8569d8d\",\"urls\":[\"bzzr://a0923a2d2b1e4992f552ce49638b19d6d8328950c1d5dc1395f0d625daf21c68\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0x94c226040dfda257ee61c1455bbb920db28b6ad0f5cba33ecc76319c003630b7\",\"urls\":[\"bzzr://bdd0568ed74054f0f91933dab7fbba6789cceb60ab2f5200d719347161e8feed\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"terminate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"registerMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSystem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getMinerByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"unregisterMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMinerCount\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol\":\"AlgoFees\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol\":{\"keccak256\":\"0x143e742903e9fb652810dd60b96a084f550c5308784c4797270c651a3f407447\",\"urls\":[\"bzzr://a56b09e9fc46585c07a4fd9cd33c6624e86c745582536921fc16a9eda742f988\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol\":{\"keccak256\":\"0x6fffe504e6805d95ca42269cc995a3de9401a12bc037068b056c186ce8569d8d\",\"urls\":[\"bzzr://a0923a2d2b1e4992f552ce49638b19d6d8328950c1d5dc1395f0d625daf21c68\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol\":{\"keccak256\":\"0x71adbf7f060599239b7a981594e43dc8fbe8597fd2853b6fe9e70ff39883d73a\",\"urls\":[\"bzzr://70691c1638cdc0f744f8c5b5a94e4f857ba40ad053816cfbd15e13ed41a3bc66\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0x94c226040dfda257ee61c1455bbb920db28b6ad0f5cba33ecc76319c003630b7\",\"urls\":[\"bzzr://bdd0568ed74054f0f91933dab7fbba6789cceb60ab2f5200d719347161e8feed\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol\":{\"keccak256\":\"0x29a8fa3204dbd204355714601ce21d7d717a586a4de21009d8f2a3ca7981963f\",\"urls\":[\"bzzr://55d9b762620cef1e6f7b11a26d6cc123f5b608a59e0d36f9bc0a1e8ff0ff5c42\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -369,6 +380,40 @@ } } }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol": { + "ERC20TokenHolder": { + "abi": [ + { + "inputs": [ + { + "name": "tokenAddress", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": {} + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol": { "IAlgoMiner": { "abi": [ @@ -453,6 +498,35 @@ } } }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol": { + "Terminable": { + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": {} + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { "Roles": { "abi": [], @@ -465,7 +539,7 @@ "linkReferences": {}, "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820ba9d82b11504517181f938ed511f09c0a22046ef39e2e32460a2175b508e16a80029", "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xba SWAP14 DUP3 0xb1 ISZERO DIV MLOAD PUSH18 0x81F938ED511F09C0A22046EF39E2E32460A2 OR JUMPDEST POP DUP15 AND 0xa8 STOP 0x29 ", - "sourceMap": "109:784:4:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "sourceMap": "109:784:6:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -499,7 +573,7 @@ "linkReferences": {}, "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820da2bd0dd3588878574232c2d13f92e16f4b0e8ad94ede9adb0d087f862d4f8cf0029", "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xda 0x2b 0xd0 0xdd CALLDATALOAD DUP9 DUP8 DUP6 PUSH21 0x232C2D13F92E16F4B0E8AD94EDE9ADB0D087F862D4 0xf8 0xcf STOP 0x29 ", - "sourceMap": "117:1531:5:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "sourceMap": "117:1531:7:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -739,7 +813,7 @@ "linkReferences": {}, "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820c0f55d8db2bd761049fa5ba6b6c207a4d595b758946aba3715580373517606710029", "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xc0 0xf5 0x5d DUP14 0xb2 0xbd PUSH23 0x1049FA5BA6B6C207A4D595B758946ABA37155803735176 MOD PUSH18 0x2900000000000000000000000000000000 ", - "sourceMap": "353:1296:7:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "sourceMap": "353:1296:9:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -793,7 +867,7 @@ "id": 2, "nodeType": "ImportDirective", "scope": 87, - "sourceUnit": 791, + "sourceUnit": 905, "src": "28:189:0", "symbolAliases": [], "unitAlias": "" @@ -818,10 +892,10 @@ "id": 3, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 790, + "referencedDeclaration": 904, "src": "260:5:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$790", + "typeIdentifier": "t_contract$_Roles_$904", "typeString": "library Roles" } }, @@ -832,10 +906,10 @@ "id": 4, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 703, + "referencedDeclaration": 817, "src": "270:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", "typeString": "struct Roles.Role" } } @@ -850,7 +924,7 @@ "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage", + "typeIdentifier": "t_struct$_Role_$817_storage", "typeString": "struct Roles.Role" }, "typeName": { @@ -858,10 +932,10 @@ "id": 6, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 703, + "referencedDeclaration": 817, "src": "289:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -886,7 +960,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1146, + "referencedDeclaration": 1260, "src": "381:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -994,7 +1068,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1146, + "referencedDeclaration": 1260, "src": "462:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1060,10 +1134,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, + "referencedDeclaration": 1263, "src": "443:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -1148,7 +1222,7 @@ "referencedDeclaration": 7, "src": "584:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage", + "typeIdentifier": "t_struct$_Role_$817_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1159,10 +1233,10 @@ "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 789, + "referencedDeclaration": 903, "src": "584:20:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$703_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$817_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$817_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, @@ -1422,7 +1496,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1146, + "referencedDeclaration": 1260, "src": "797:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1549,7 +1623,7 @@ "referencedDeclaration": 7, "src": "883:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage", + "typeIdentifier": "t_struct$_Role_$817_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1560,10 +1634,10 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 735, + "referencedDeclaration": 849, "src": "883:20:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$703_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$817_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$817_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -1681,7 +1755,7 @@ "referencedDeclaration": 7, "src": "990:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage", + "typeIdentifier": "t_struct$_Role_$817_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1692,10 +1766,10 @@ "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 766, + "referencedDeclaration": 880, "src": "990:23:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$703_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$817_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$817_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -1787,10 +1861,10 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol", "exportedSymbols": { "AlgoFees": [ - 586 + 606 ] }, - "id": 587, + "id": 607, "nodeType": "SourceUnit", "nodes": [ { @@ -1808,8 +1882,8 @@ "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "id": 89, "nodeType": "ImportDirective", - "scope": 587, - "sourceUnit": 988, + "scope": 607, + "sourceUnit": 1102, "src": "27:195:1", "symbolAliases": [], "unitAlias": "" @@ -1819,8 +1893,8 @@ "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "id": 90, "nodeType": "ImportDirective", - "scope": 587, - "sourceUnit": 1132, + "scope": 607, + "sourceUnit": 1246, "src": "224:198:1", "symbolAliases": [], "unitAlias": "" @@ -1830,31 +1904,42 @@ "file": "./IAlgoMiner.sol", "id": 91, "nodeType": "ImportDirective", - "scope": 587, - "sourceUnit": 697, + "scope": 607, + "sourceUnit": 774, "src": "426:26:1", "symbolAliases": [], "unitAlias": "" }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol", + "file": "./ERC20TokenHolder.sol", + "id": 92, + "nodeType": "ImportDirective", + "scope": 607, + "sourceUnit": 751, + "src": "454:32:1", + "symbolAliases": [], + "unitAlias": "" + }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol", "file": "./AlgoSystemRole.sol", - "id": 92, + "id": 93, "nodeType": "ImportDirective", - "scope": 587, - "sourceUnit": 674, - "src": "454:30:1", + "scope": 607, + "sourceUnit": 694, + "src": "488:30:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol", "file": "./AlgoCoreTeamRole.sol", - "id": 93, + "id": 94, "nodeType": "ImportDirective", - "scope": 587, + "scope": 607, "sourceUnit": 87, - "src": "486:32:1", + "src": "520:32:1", "symbolAliases": [], "unitAlias": "" }, @@ -1864,91 +1949,113 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 94, - "name": "AlgoSystemRole", + "id": 95, + "name": "ERC20TokenHolder", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 673, - "src": "543:14:1", + "referencedDeclaration": 750, + "src": "577:16:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoSystemRole_$673", - "typeString": "contract AlgoSystemRole" + "typeIdentifier": "t_contract$_ERC20TokenHolder_$750", + "typeString": "contract ERC20TokenHolder" } }, - "id": 95, + "id": 96, "nodeType": "InheritanceSpecifier", - "src": "543:14:1" + "src": "577:16:1" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 96, + "id": 97, + "name": "AlgoSystemRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 693, + "src": "595:14:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AlgoSystemRole_$693", + "typeString": "contract AlgoSystemRole" + } + }, + "id": 98, + "nodeType": "InheritanceSpecifier", + "src": "595:14:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 99, "name": "AlgoCoreTeamRole", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 86, - "src": "559:16:1", + "src": "611:16:1", "typeDescriptions": { "typeIdentifier": "t_contract$_AlgoCoreTeamRole_$86", "typeString": "contract AlgoCoreTeamRole" } }, - "id": 97, + "id": 100, "nodeType": "InheritanceSpecifier", - "src": "559:16:1" + "src": "611:16:1" } ], "contractDependencies": [ + 750, 86, - 673 + 693, + 810 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 586, + "id": 606, "linearizedBaseContracts": [ - 586, + 606, 86, - 673 + 693, + 750, + 810 ], "name": "AlgoFees", "nodeType": "ContractDefinition", "nodes": [ { - "id": 100, + "id": 103, "libraryName": { "contractScope": null, - "id": 98, + "id": 101, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1131, - "src": "589:9:1", + "referencedDeclaration": 1245, + "src": "641:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1131", + "typeIdentifier": "t_contract$_SafeERC20_$1245", "typeString": "library SafeERC20" } }, "nodeType": "UsingForDirective", - "src": "583:27:1", + "src": "635:27:1", "typeName": { "contractScope": null, - "id": 99, + "id": 102, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 987, - "src": "603:6:1", + "referencedDeclaration": 1101, + "src": "655:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } } }, { "constant": true, - "id": 103, + "id": 106, "name": "CAT_0_VALUE_PROPORTION", "nodeType": "VariableDeclaration", - "scope": 586, - "src": "618:43:1", + "scope": 606, + "src": "670:43:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1956,10 +2063,10 @@ "typeString": "uint256" }, "typeName": { - "id": 101, + "id": 104, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "618:7:1", + "src": "670:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1968,14 +2075,14 @@ "value": { "argumentTypes": null, "hexValue": "31", - "id": 102, + "id": 105, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "660:1:1", + "src": "712:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -1987,11 +2094,11 @@ }, { "constant": true, - "id": 106, + "id": 109, "name": "CAT_1_VALUE_PROPORTION", "nodeType": "VariableDeclaration", - "scope": 586, - "src": "668:44:1", + "scope": 606, + "src": "720:44:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1999,10 +2106,10 @@ "typeString": "uint256" }, "typeName": { - "id": 104, + "id": 107, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "668:7:1", + "src": "720:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2011,14 +2118,14 @@ "value": { "argumentTypes": null, "hexValue": "3130", - "id": 105, + "id": 108, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "710:2:1", + "src": "762:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", @@ -2030,11 +2137,11 @@ }, { "constant": true, - "id": 109, + "id": 112, "name": "CAT_2_VALUE_PROPORTION", "nodeType": "VariableDeclaration", - "scope": 586, - "src": "719:44:1", + "scope": 606, + "src": "771:44:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2042,10 +2149,10 @@ "typeString": "uint256" }, "typeName": { - "id": 107, + "id": 110, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "719:7:1", + "src": "771:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2054,14 +2161,14 @@ "value": { "argumentTypes": null, "hexValue": "3230", - "id": 108, + "id": 111, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "761:2:1", + "src": "813:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_20_by_1", @@ -2073,11 +2180,11 @@ }, { "constant": true, - "id": 112, + "id": 115, "name": "CAT_3_VALUE_PROPORTION", "nodeType": "VariableDeclaration", - "scope": 586, - "src": "770:44:1", + "scope": 606, + "src": "822:44:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2085,10 +2192,10 @@ "typeString": "uint256" }, "typeName": { - "id": 110, + "id": 113, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "770:7:1", + "src": "822:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2097,14 +2204,14 @@ "value": { "argumentTypes": null, "hexValue": "3330", - "id": 111, + "id": 114, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "812:2:1", + "src": "864:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_30_by_1", @@ -2116,11 +2223,11 @@ }, { "constant": true, - "id": 115, + "id": 118, "name": "CAT_4_VALUE_PROPORTION", "nodeType": "VariableDeclaration", - "scope": 586, - "src": "821:44:1", + "scope": 606, + "src": "873:44:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2128,10 +2235,10 @@ "typeString": "uint256" }, "typeName": { - "id": 113, + "id": 116, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "821:7:1", + "src": "873:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2140,14 +2247,14 @@ "value": { "argumentTypes": null, "hexValue": "3430", - "id": 114, + "id": 117, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "863:2:1", + "src": "915:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_40_by_1", @@ -2159,11 +2266,11 @@ }, { "constant": true, - "id": 118, + "id": 121, "name": "CAT_5_VALUE_PROPORTION", "nodeType": "VariableDeclaration", - "scope": 586, - "src": "872:44:1", + "scope": 606, + "src": "924:44:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2171,10 +2278,10 @@ "typeString": "uint256" }, "typeName": { - "id": 116, + "id": 119, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "872:7:1", + "src": "924:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2183,14 +2290,14 @@ "value": { "argumentTypes": null, "hexValue": "3530", - "id": 117, + "id": 120, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "914:2:1", + "src": "966:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_50_by_1", @@ -2202,39 +2309,11 @@ }, { "constant": false, - "id": 120, - "name": "_token", - "nodeType": "VariableDeclaration", - "scope": 586, - "src": "925:21:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", - "typeString": "contract IERC20" - }, - "typeName": { - "contractScope": null, - "id": 119, - "name": "IERC20", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 987, - "src": "925:6:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", - "typeString": "contract IERC20" - } - }, - "value": null, - "visibility": "private" - }, - { - "constant": false, - "id": 123, + "id": 124, "name": "_miners", "nodeType": "VariableDeclaration", - "scope": 586, - "src": "953:25:1", + "scope": 606, + "src": "977:25:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2243,19 +2322,19 @@ }, "typeName": { "baseType": { - "id": 121, + "id": 122, "name": "address", "nodeType": "ElementaryTypeName", - "src": "953:7:1", + "src": "977:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 122, + "id": 123, "length": null, "nodeType": "ArrayTypeName", - "src": "953:9:1", + "src": "977:9:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -2266,11 +2345,11 @@ }, { "constant": false, - "id": 127, + "id": 128, "name": "_minersByAddress", "nodeType": "VariableDeclaration", - "scope": 586, - "src": "985:52:1", + "scope": 606, + "src": "1009:52:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2278,28 +2357,28 @@ "typeString": "mapping(address => uint256)" }, "typeName": { - "id": 126, + "id": 127, "keyType": { - "id": 124, + "id": 125, "name": "address", "nodeType": "ElementaryTypeName", - "src": "993:7:1", + "src": "1017:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "985:27:1", + "src": "1009:27:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { - "id": 125, + "id": 126, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1004:7:1", + "src": "1028:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2311,92 +2390,10 @@ }, { "body": { - "id": 150, + "id": 148, "nodeType": "Block", - "src": "1150:131:1", + "src": "1214:91:1", "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 140, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 136, - "name": "_token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 120, - "src": "1161:6:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", - "typeString": "contract IERC20" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 138, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 129, - "src": "1177:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 137, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "1170:6:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$987_$", - "typeString": "type(contract IERC20)" - } - }, - "id": 139, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1170:20:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", - "typeString": "contract IERC20" - } - }, - "src": "1161:29:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", - "typeString": "contract IERC20" - } - }, - "id": 141, - "nodeType": "ExpressionStatement", - "src": "1161:29:1" - }, { "expression": { "argumentTypes": null, @@ -2407,14 +2404,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 146, + "id": 144, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1222:1:1", + "src": "1246:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2430,20 +2427,20 @@ "typeString": "int_const 0" } ], - "id": 145, + "id": 143, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1214:7:1", + "src": "1238:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 147, + "id": 145, "isConstant": false, "isLValue": false, "isPure": true, @@ -2451,7 +2448,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1214:10:1", + "src": "1238:10:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2467,18 +2464,18 @@ ], "expression": { "argumentTypes": null, - "id": 142, + "id": 140, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "1201:7:1", + "referencedDeclaration": 124, + "src": "1225:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 144, + "id": 142, "isConstant": false, "isLValue": false, "isPure": false, @@ -2486,13 +2483,13 @@ "memberName": "push", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1201:12:1", + "src": "1225:12:1", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", "typeString": "function (address) returns (uint256)" } }, - "id": 148, + "id": 146, "isConstant": false, "isLValue": false, "isPure": false, @@ -2500,76 +2497,109 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1201:24:1", + "src": "1225:24:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 149, + "id": 147, "nodeType": "ExpressionStatement", - "src": "1201:24:1" + "src": "1225:24:1" } ] }, "documentation": null, - "id": 151, + "id": 149, "implemented": true, "isConstructor": true, "isDeclaredConst": false, "modifiers": [ { - "arguments": [], - "id": 132, + "arguments": [ + { + "argumentTypes": null, + "id": 133, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "1130:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 134, "modifierName": { "argumentTypes": null, - "id": 131, + "id": 132, + "name": "ERC20TokenHolder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 750, + "src": "1113:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20TokenHolder_$750_$", + "typeString": "type(contract ERC20TokenHolder)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1113:30:1" + }, + { + "arguments": [], + "id": 136, + "modifierName": { + "argumentTypes": null, + "id": 135, "name": "AlgoSystemRole", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 673, - "src": "1089:14:1", + "referencedDeclaration": 693, + "src": "1153:14:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AlgoSystemRole_$673_$", + "typeIdentifier": "t_type$_t_contract$_AlgoSystemRole_$693_$", "typeString": "type(contract AlgoSystemRole)" } }, "nodeType": "ModifierInvocation", - "src": "1089:16:1" + "src": "1153:16:1" }, { "arguments": [], - "id": 134, + "id": 138, "modifierName": { "argumentTypes": null, - "id": 133, + "id": 137, "name": "AlgoCoreTeamRole", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86, - "src": "1115:16:1", + "src": "1179:16:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_AlgoCoreTeamRole_$86_$", "typeString": "type(contract AlgoCoreTeamRole)" } }, "nodeType": "ModifierInvocation", - "src": "1115:18:1" + "src": "1179:18:1" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 130, + "id": 131, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 129, + "id": 130, "name": "tokenAddress", "nodeType": "VariableDeclaration", - "scope": 151, - "src": "1058:20:1", + "scope": 149, + "src": "1082:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2577,10 +2607,10 @@ "typeString": "address" }, "typeName": { - "id": 128, + "id": 129, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1058:7:1", + "src": "1082:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2590,26 +2620,26 @@ "visibility": "internal" } ], - "src": "1057:22:1" + "src": "1081:22:1" }, "payable": false, "returnParameters": { - "id": 135, + "id": 139, "nodeType": "ParameterList", "parameters": [], - "src": "1150:0:1" + "src": "1214:0:1" }, - "scope": 586, - "src": "1046:235:1", + "scope": 606, + "src": "1070:235:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 207, + "id": 214, "nodeType": "Block", - "src": "1354:401:1", + "src": "1392:442:1", "statements": [ { "expression": { @@ -2621,72 +2651,61 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 163, + "id": 162, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "baseExpression": { + "expression": { "argumentTypes": null, "id": 159, - "name": "_minersByAddress", + "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "1373:16:1", + "referencedDeclaration": 124, + "src": "1411:7:1", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 161, - "indexExpression": { - "argumentTypes": null, - "id": 160, - "name": "minerAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "1390:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" } }, + "id": 160, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1373:30:1", + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1411:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", - "operator": "==", + "operator": "<", "rightExpression": { "argumentTypes": null, - "hexValue": "30", - "id": 162, + "hexValue": "31303030", + "id": 161, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1407:1:1", + "src": "1428:4:1", "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" }, - "value": "0" + "value": "1000" }, - "src": "1373:35:1", + "src": "1411:21:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2704,17 +2723,17 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "1365:7:1", + "referencedDeclaration": 1263, + "src": "1403:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 164, + "id": 163, "isConstant": false, "isLValue": false, "isPure": false, @@ -2722,43 +2741,164 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1365:44:1", + "src": "1403:30:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 165, + "id": 164, "nodeType": "ExpressionStatement", - "src": "1365:44:1" + "src": "1403:30:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 166, + "name": "_minersByAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 128, + "src": "1452:16:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 168, + "indexExpression": { + "argumentTypes": null, + "id": 167, + "name": "minerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 151, + "src": "1469:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1452:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 169, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1486:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1452:35:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 165, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1263, + 1264 + ], + "referencedDeclaration": 1263, + "src": "1444:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1444:44:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 172, + "nodeType": "ExpressionStatement", + "src": "1444:44:1" }, { "assignments": [ - 167 + 174 ], "declarations": [ { "constant": false, - "id": 167, + "id": 174, "name": "algoMiner", "nodeType": "VariableDeclaration", - "scope": 208, - "src": "1422:20:1", + "scope": 215, + "src": "1501:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" }, "typeName": { "contractScope": null, - "id": 166, + "id": 173, "name": "IAlgoMiner", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 696, - "src": "1422:10:1", + "referencedDeclaration": 773, + "src": "1501:10:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" } }, @@ -2766,18 +2906,18 @@ "visibility": "internal" } ], - "id": 171, + "id": 178, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 169, + "id": 176, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "1456:12:1", + "referencedDeclaration": 151, + "src": "1535:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2791,18 +2931,18 @@ "typeString": "address" } ], - "id": 168, + "id": 175, "name": "IAlgoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 696, - "src": "1445:10:1", + "referencedDeclaration": 773, + "src": "1524:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$696_$", + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$773_$", "typeString": "type(contract IAlgoMiner)" } }, - "id": 170, + "id": 177, "isConstant": false, "isLValue": false, "isPure": false, @@ -2810,14 +2950,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1445:24:1", + "src": "1524:24:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" } }, "nodeType": "VariableDeclarationStatement", - "src": "1422:47:1" + "src": "1501:47:1" }, { "expression": { @@ -2830,32 +2970,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 173, + "id": 180, "name": "algoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 167, - "src": "1498:9:1", + "referencedDeclaration": 174, + "src": "1577:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" } }, - "id": 174, + "id": 181, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isAlgoMiner", "nodeType": "MemberAccess", - "referencedDeclaration": 680, - "src": "1498:21:1", + "referencedDeclaration": 757, + "src": "1577:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$__$returns$_t_bool_$", "typeString": "function () pure external returns (bool)" } }, - "id": 175, + "id": 182, "isConstant": false, "isLValue": false, "isPure": false, @@ -2863,7 +3003,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1498:23:1", + "src": "1577:23:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2877,21 +3017,21 @@ "typeString": "bool" } ], - "id": 172, + "id": 179, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "1490:7:1", + "referencedDeclaration": 1263, + "src": "1569:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 176, + "id": 183, "isConstant": false, "isLValue": false, "isPure": false, @@ -2899,28 +3039,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1490:32:1", + "src": "1569:32:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 177, + "id": 184, "nodeType": "ExpressionStatement", - "src": "1490:32:1" + "src": "1569:32:1" }, { "assignments": [ - 179 + 186 ], "declarations": [ { "constant": false, - "id": 179, + "id": 186, "name": "minerCategory", "nodeType": "VariableDeclaration", - "scope": 208, - "src": "1543:19:1", + "scope": 215, + "src": "1622:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2928,10 +3068,10 @@ "typeString": "uint8" }, "typeName": { - "id": 178, + "id": 185, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1543:5:1", + "src": "1622:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2941,7 +3081,7 @@ "visibility": "internal" } ], - "id": 183, + "id": 190, "initialValue": { "argumentTypes": null, "arguments": [], @@ -2949,32 +3089,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 180, + "id": 187, "name": "algoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 167, - "src": "1565:9:1", + "referencedDeclaration": 174, + "src": "1644:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" } }, - "id": 181, + "id": 188, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getCategory", "nodeType": "MemberAccess", - "referencedDeclaration": 685, - "src": "1565:21:1", + "referencedDeclaration": 762, + "src": "1644:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, - "id": 182, + "id": 189, "isConstant": false, "isLValue": false, "isPure": false, @@ -2982,14 +3122,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1565:23:1", + "src": "1644:23:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", - "src": "1543:45:1" + "src": "1622:45:1" }, { "expression": { @@ -3001,7 +3141,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 191, + "id": 198, "isConstant": false, "isLValue": false, "isPure": false, @@ -3012,19 +3152,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 187, + "id": 194, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 185, + "id": 192, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 179, - "src": "1609:13:1", + "referencedDeclaration": 186, + "src": "1688:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3035,14 +3175,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 186, + "id": 193, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1626:1:1", + "src": "1705:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3050,7 +3190,7 @@ }, "value": "0" }, - "src": "1609:18:1", + "src": "1688:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3064,19 +3204,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 190, + "id": 197, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 188, + "id": 195, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 179, - "src": "1631:13:1", + "referencedDeclaration": 186, + "src": "1710:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3087,14 +3227,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "35", - "id": 189, + "id": 196, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1648:1:1", + "src": "1727:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -3102,13 +3242,13 @@ }, "value": "5" }, - "src": "1631:18:1", + "src": "1710:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1609:40:1", + "src": "1688:40:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3122,21 +3262,21 @@ "typeString": "bool" } ], - "id": 184, + "id": 191, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "1601:7:1", + "referencedDeclaration": 1263, + "src": "1680:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 192, + "id": 199, "isConstant": false, "isLValue": false, "isPure": false, @@ -3144,20 +3284,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1601:49:1", + "src": "1680:49:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 193, + "id": 200, "nodeType": "ExpressionStatement", - "src": "1601:49:1" + "src": "1680:49:1" }, { "expression": { "argumentTypes": null, - "id": 199, + "id": 206, "isConstant": false, "isLValue": false, "isPure": false, @@ -3166,26 +3306,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 194, + "id": 201, "name": "_minersByAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "1663:16:1", + "referencedDeclaration": 128, + "src": "1742:16:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 196, + "id": 203, "indexExpression": { "argumentTypes": null, - "id": 195, + "id": 202, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "1680:12:1", + "referencedDeclaration": 151, + "src": "1759:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3196,7 +3336,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1663:30:1", + "src": "1742:30:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3208,18 +3348,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 197, + "id": 204, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "1696:7:1", + "referencedDeclaration": 124, + "src": "1775:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 198, + "id": 205, "isConstant": false, "isLValue": true, "isPure": false, @@ -3227,21 +3367,21 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1696:14:1", + "src": "1775:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1663:47:1", + "src": "1742:47:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 200, + "id": 207, "nodeType": "ExpressionStatement", - "src": "1663:47:1" + "src": "1742:47:1" }, { "expression": { @@ -3249,12 +3389,12 @@ "arguments": [ { "argumentTypes": null, - "id": 204, + "id": 211, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "1734:12:1", + "referencedDeclaration": 151, + "src": "1813:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3270,18 +3410,18 @@ ], "expression": { "argumentTypes": null, - "id": 201, + "id": 208, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "1721:7:1", + "referencedDeclaration": 124, + "src": "1800:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 203, + "id": 210, "isConstant": false, "isLValue": false, "isPure": false, @@ -3289,13 +3429,13 @@ "memberName": "push", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1721:12:1", + "src": "1800:12:1", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", "typeString": "function (address) returns (uint256)" } }, - "id": 205, + "id": 212, "isConstant": false, "isLValue": false, "isPure": false, @@ -3303,24 +3443,43 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1721:26:1", + "src": "1800:26:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 206, + "id": 213, "nodeType": "ExpressionStatement", - "src": "1721:26:1" + "src": "1800:26:1" } ] }, "documentation": null, - "id": 208, + "id": 215, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ + { + "arguments": null, + "id": 154, + "modifierName": { + "argumentTypes": null, + "id": 153, + "name": "notTerminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "1365:13:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1365:13:1" + }, { "arguments": null, "id": 156, @@ -3331,29 +3490,29 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, - "src": "1341:12:1", + "src": "1379:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1341:12:1" + "src": "1379:12:1" } ], "name": "registerMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 154, + "id": 152, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 153, + "id": 151, "name": "minerAddress", "nodeType": "VariableDeclaration", - "scope": 208, - "src": "1312:20:1", + "scope": 215, + "src": "1336:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3361,10 +3520,10 @@ "typeString": "address" }, "typeName": { - "id": 152, + "id": 150, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1312:7:1", + "src": "1336:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3374,26 +3533,26 @@ "visibility": "internal" } ], - "src": "1311:22:1" + "src": "1335:22:1" }, "payable": false, "returnParameters": { "id": 157, "nodeType": "ParameterList", "parameters": [], - "src": "1354:0:1" + "src": "1392:0:1" }, - "scope": 586, - "src": "1289:466:1", + "scope": 606, + "src": "1313:521:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 284, + "id": 293, "nodeType": "Block", - "src": "1830:682:1", + "src": "1923:682:1", "statements": [ { "expression": { @@ -3405,7 +3564,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 219, + "id": 228, "isConstant": false, "isLValue": false, "isPure": false, @@ -3414,18 +3573,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 216, + "id": 225, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "1849:7:1", + "referencedDeclaration": 124, + "src": "1942:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 217, + "id": 226, "isConstant": false, "isLValue": true, "isPure": false, @@ -3433,7 +3592,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1849:14:1", + "src": "1942:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3444,14 +3603,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 218, + "id": 227, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1866:1:1", + "src": "1959:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -3459,7 +3618,7 @@ }, "value": "1" }, - "src": "1849:18:1", + "src": "1942:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3473,21 +3632,21 @@ "typeString": "bool" } ], - "id": 215, + "id": 224, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "1841:7:1", + "referencedDeclaration": 1263, + "src": "1934:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 220, + "id": 229, "isConstant": false, "isLValue": false, "isPure": false, @@ -3495,15 +3654,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1841:27:1", + "src": "1934:27:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 221, + "id": 230, "nodeType": "ExpressionStatement", - "src": "1841:27:1" + "src": "1934:27:1" }, { "condition": { @@ -3512,7 +3671,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 225, + "id": 234, "isConstant": false, "isLValue": false, "isPure": false, @@ -3521,18 +3680,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 222, + "id": 231, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "1884:7:1", + "referencedDeclaration": 124, + "src": "1977:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 223, + "id": 232, "isConstant": false, "isLValue": true, "isPure": false, @@ -3540,7 +3699,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1884:14:1", + "src": "1977:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3551,14 +3710,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 224, + "id": 233, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1902:1:1", + "src": "1995:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -3566,16 +3725,16 @@ }, "value": "2" }, - "src": "1884:19:1", + "src": "1977:19:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 282, + "id": 291, "nodeType": "Block", - "src": "2117:388:1", + "src": "2210:388:1", "statements": [ { "condition": { @@ -3584,7 +3743,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 248, + "id": 257, "isConstant": false, "isLValue": false, "isPure": false, @@ -3593,26 +3752,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 243, + "id": 252, "name": "_minersByAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "2149:16:1", + "referencedDeclaration": 128, + "src": "2242:16:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 245, + "id": 254, "indexExpression": { "argumentTypes": null, - "id": 244, + "id": 253, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 210, - "src": "2166:12:1", + "referencedDeclaration": 217, + "src": "2259:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3623,7 +3782,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2149:30:1", + "src": "2242:30:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3635,18 +3794,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 246, + "id": 255, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2183:7:1", + "referencedDeclaration": 124, + "src": "2276:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 247, + "id": 256, "isConstant": false, "isLValue": true, "isPure": false, @@ -3654,31 +3813,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2183:14:1", + "src": "2276:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2149:48:1", + "src": "2242:48:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 263, + "id": 272, "nodeType": "IfStatement", - "src": "2146:214:1", + "src": "2239:214:1", "trueBody": { - "id": 262, + "id": 271, "nodeType": "Block", - "src": "2199:161:1", + "src": "2292:161:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 260, + "id": 269, "isConstant": false, "isLValue": false, "isPure": false, @@ -3687,42 +3846,42 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 249, + "id": 258, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2275:7:1", + "referencedDeclaration": 124, + "src": "2368:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 253, + "id": 262, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 250, + "id": 259, "name": "_minersByAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "2283:16:1", + "referencedDeclaration": 128, + "src": "2376:16:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 252, + "id": 261, "indexExpression": { "argumentTypes": null, - "id": 251, + "id": 260, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 210, - "src": "2300:12:1", + "referencedDeclaration": 217, + "src": "2393:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3733,7 +3892,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2283:30:1", + "src": "2376:30:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3744,7 +3903,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2275:39:1", + "src": "2368:39:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3756,25 +3915,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 254, + "id": 263, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2317:7:1", + "referencedDeclaration": 124, + "src": "2410:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 259, + "id": 268, "indexExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 258, + "id": 267, "isConstant": false, "isLValue": false, "isPure": false, @@ -3783,18 +3942,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 255, + "id": 264, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2325:7:1", + "referencedDeclaration": 124, + "src": "2418:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 256, + "id": 265, "isConstant": false, "isLValue": true, "isPure": false, @@ -3802,7 +3961,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2325:14:1", + "src": "2418:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3813,14 +3972,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 257, + "id": 266, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2342:1:1", + "src": "2435:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -3828,7 +3987,7 @@ }, "value": "1" }, - "src": "2325:18:1", + "src": "2418:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3839,21 +3998,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2317:27:1", + "src": "2410:27:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2275:69:1", + "src": "2368:69:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 261, + "id": 270, "nodeType": "ExpressionStatement", - "src": "2275:69:1" + "src": "2368:69:1" } ] } @@ -3861,7 +4020,7 @@ { "expression": { "argumentTypes": null, - "id": 270, + "id": 279, "isConstant": false, "isLValue": false, "isPure": false, @@ -3869,30 +4028,30 @@ "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, - "src": "2376:34:1", + "src": "2469:34:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 264, + "id": 273, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2383:7:1", + "referencedDeclaration": 124, + "src": "2476:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 269, + "id": 278, "indexExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 268, + "id": 277, "isConstant": false, "isLValue": false, "isPure": false, @@ -3901,18 +4060,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 265, + "id": 274, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2391:7:1", + "referencedDeclaration": 124, + "src": "2484:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 266, + "id": 275, "isConstant": false, "isLValue": true, "isPure": false, @@ -3920,7 +4079,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2391:14:1", + "src": "2484:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3931,14 +4090,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 267, + "id": 276, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2408:1:1", + "src": "2501:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -3946,7 +4105,7 @@ }, "value": "1" }, - "src": "2391:18:1", + "src": "2484:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3957,7 +4116,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2383:27:1", + "src": "2476:27:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3968,14 +4127,14 @@ "typeString": "tuple()" } }, - "id": 271, + "id": 280, "nodeType": "ExpressionStatement", - "src": "2376:34:1" + "src": "2469:34:1" }, { "expression": { "argumentTypes": null, - "id": 275, + "id": 284, "isConstant": false, "isLValue": false, "isPure": false, @@ -3983,23 +4142,23 @@ "nodeType": "UnaryOperation", "operator": "--", "prefix": false, - "src": "2425:16:1", + "src": "2518:16:1", "subExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 272, + "id": 281, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2425:7:1", + "referencedDeclaration": 124, + "src": "2518:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 274, + "id": 283, "isConstant": false, "isLValue": true, "isPure": false, @@ -4007,7 +4166,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2425:14:1", + "src": "2518:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4018,14 +4177,14 @@ "typeString": "uint256" } }, - "id": 276, + "id": 285, "nodeType": "ExpressionStatement", - "src": "2425:16:1" + "src": "2518:16:1" }, { "expression": { "argumentTypes": null, - "id": 280, + "id": 289, "isConstant": false, "isLValue": false, "isPure": false, @@ -4033,31 +4192,31 @@ "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, - "src": "2456:37:1", + "src": "2549:37:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 277, + "id": 286, "name": "_minersByAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "2463:16:1", + "referencedDeclaration": 128, + "src": "2556:16:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 279, + "id": 288, "indexExpression": { "argumentTypes": null, - "id": 278, + "id": 287, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 210, - "src": "2480:12:1", + "referencedDeclaration": 217, + "src": "2573:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4068,7 +4227,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2463:30:1", + "src": "2556:30:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4079,24 +4238,24 @@ "typeString": "tuple()" } }, - "id": 281, + "id": 290, "nodeType": "ExpressionStatement", - "src": "2456:37:1" + "src": "2549:37:1" } ] }, - "id": 283, + "id": 292, "nodeType": "IfStatement", - "src": "1881:624:1", + "src": "1974:624:1", "trueBody": { - "id": 242, + "id": 251, "nodeType": "Block", - "src": "1905:206:1", + "src": "1998:206:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 229, + "id": 238, "isConstant": false, "isLValue": false, "isPure": false, @@ -4104,34 +4263,34 @@ "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, - "src": "1987:17:1", + "src": "2080:17:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 226, + "id": 235, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "1994:7:1", + "referencedDeclaration": 124, + "src": "2087:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 228, + "id": 237, "indexExpression": { "argumentTypes": null, "hexValue": "31", - "id": 227, + "id": 236, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2002:1:1", + "src": "2095:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -4144,7 +4303,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1994:10:1", + "src": "2087:10:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4155,14 +4314,14 @@ "typeString": "tuple()" } }, - "id": 230, + "id": 239, "nodeType": "ExpressionStatement", - "src": "1987:17:1" + "src": "2080:17:1" }, { "expression": { "argumentTypes": null, - "id": 235, + "id": 244, "isConstant": false, "isLValue": false, "isPure": false, @@ -4171,18 +4330,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 231, + "id": 240, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2019:7:1", + "referencedDeclaration": 124, + "src": "2112:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 233, + "id": 242, "isConstant": false, "isLValue": true, "isPure": false, @@ -4190,7 +4349,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2019:14:1", + "src": "2112:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4201,14 +4360,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 234, + "id": 243, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2036:1:1", + "src": "2129:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -4216,20 +4375,20 @@ }, "value": "1" }, - "src": "2019:18:1", + "src": "2112:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 236, + "id": 245, "nodeType": "ExpressionStatement", - "src": "2019:18:1" + "src": "2112:18:1" }, { "expression": { "argumentTypes": null, - "id": 240, + "id": 249, "isConstant": false, "isLValue": false, "isPure": false, @@ -4237,31 +4396,31 @@ "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, - "src": "2052:37:1", + "src": "2145:37:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 237, + "id": 246, "name": "_minersByAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "2059:16:1", + "referencedDeclaration": 128, + "src": "2152:16:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 239, + "id": 248, "indexExpression": { "argumentTypes": null, - "id": 238, + "id": 247, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 210, - "src": "2076:12:1", + "referencedDeclaration": 217, + "src": "2169:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4272,7 +4431,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2059:30:1", + "src": "2152:30:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4283,9 +4442,9 @@ "typeString": "tuple()" } }, - "id": 241, + "id": 250, "nodeType": "ExpressionStatement", - "src": "2052:37:1" + "src": "2145:37:1" } ] } @@ -4293,44 +4452,63 @@ ] }, "documentation": null, - "id": 285, + "id": 294, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 213, + "id": 220, "modifierName": { "argumentTypes": null, - "id": 212, - "name": "onlyCoreTeam", + "id": 219, + "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 27, - "src": "1817:12:1", + "referencedDeclaration": 801, + "src": "1896:13:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1817:12:1" + "src": "1896:13:1" + }, + { + "arguments": null, + "id": 222, + "modifierName": { + "argumentTypes": null, + "id": 221, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "1910:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1910:12:1" } ], "name": "unregisterMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 211, + "id": 218, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 210, + "id": 217, "name": "minerAddress", "nodeType": "VariableDeclaration", - "scope": 285, - "src": "1788:20:1", + "scope": 294, + "src": "1867:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4338,10 +4516,10 @@ "typeString": "address" }, "typeName": { - "id": 209, + "id": 216, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1788:7:1", + "src": "1867:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4351,26 +4529,26 @@ "visibility": "internal" } ], - "src": "1787:22:1" + "src": "1866:22:1" }, "payable": false, "returnParameters": { - "id": 214, + "id": 223, "nodeType": "ParameterList", "parameters": [], - "src": "1830:0:1" + "src": "1923:0:1" }, - "scope": 586, - "src": "1763:749:1", + "scope": 606, + "src": "1842:763:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 559, + "id": 570, "nodeType": "Block", - "src": "2554:2307:1", + "src": "2661:2307:1", "statements": [ { "expression": { @@ -4382,7 +4560,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 294, + "id": 305, "isConstant": false, "isLValue": false, "isPure": false, @@ -4391,18 +4569,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 291, + "id": 302, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2573:7:1", + "referencedDeclaration": 124, + "src": "2680:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 292, + "id": 303, "isConstant": false, "isLValue": true, "isPure": false, @@ -4410,7 +4588,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2573:14:1", + "src": "2680:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4421,14 +4599,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 293, + "id": 304, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2590:1:1", + "src": "2697:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -4436,7 +4614,7 @@ }, "value": "1" }, - "src": "2573:18:1", + "src": "2680:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4450,21 +4628,21 @@ "typeString": "bool" } ], - "id": 290, + "id": 301, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "2565:7:1", + "referencedDeclaration": 1263, + "src": "2672:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 295, + "id": 306, "isConstant": false, "isLValue": false, "isPure": false, @@ -4472,28 +4650,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2565:27:1", + "src": "2672:27:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 296, + "id": 307, "nodeType": "ExpressionStatement", - "src": "2565:27:1" + "src": "2672:27:1" }, { "assignments": [ - 298 + 309 ], "declarations": [ { "constant": false, - "id": 298, + "id": 309, "name": "currentFeesBalance", "nodeType": "VariableDeclaration", - "scope": 560, - "src": "2605:26:1", + "scope": 571, + "src": "2712:26:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4501,10 +4679,10 @@ "typeString": "uint256" }, "typeName": { - "id": 297, + "id": 308, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2605:7:1", + "src": "2712:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4514,7 +4692,7 @@ "visibility": "internal" } ], - "id": 305, + "id": 316, "initialValue": { "argumentTypes": null, "arguments": [ @@ -4523,14 +4701,14 @@ "arguments": [ { "argumentTypes": null, - "id": 302, + "id": 313, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1173, - "src": "2659:4:1", + "referencedDeclaration": 1291, + "src": "2766:4:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoFees_$586", + "typeIdentifier": "t_contract$_AlgoFees_$606", "typeString": "contract AlgoFees" } } @@ -4538,24 +4716,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_AlgoFees_$586", + "typeIdentifier": "t_contract$_AlgoFees_$606", "typeString": "contract AlgoFees" } ], - "id": 301, + "id": 312, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2651:7:1", + "src": "2758:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 303, + "id": 314, "isConstant": false, "isLValue": false, "isPure": false, @@ -4563,7 +4741,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2651:13:1", + "src": "2758:13:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4579,32 +4757,32 @@ ], "expression": { "argumentTypes": null, - "id": 299, + "id": 310, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 120, - "src": "2634:6:1", + "referencedDeclaration": 705, + "src": "2741:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, - "id": 300, + "id": 311, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 932, - "src": "2634:16:1", + "referencedDeclaration": 1046, + "src": "2741:16:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 304, + "id": 315, "isConstant": false, "isLValue": false, "isPure": false, @@ -4612,14 +4790,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2634:31:1", + "src": "2741:31:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2605:60:1" + "src": "2712:60:1" }, { "expression": { @@ -4631,19 +4809,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 309, + "id": 320, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 307, + "id": 318, "name": "currentFeesBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 298, - "src": "2680:18:1", + "referencedDeclaration": 309, + "src": "2787:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4654,14 +4832,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 308, + "id": 319, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2701:1:1", + "src": "2808:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4669,7 +4847,7 @@ }, "value": "0" }, - "src": "2680:22:1", + "src": "2787:22:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4683,21 +4861,21 @@ "typeString": "bool" } ], - "id": 306, + "id": 317, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "2672:7:1", + "referencedDeclaration": 1263, + "src": "2779:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 310, + "id": 321, "isConstant": false, "isLValue": false, "isPure": false, @@ -4705,26 +4883,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2672:31:1", + "src": "2779:31:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 311, + "id": 322, "nodeType": "ExpressionStatement", - "src": "2672:31:1" + "src": "2779:31:1" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 316, + "id": 327, "name": "miners", "nodeType": "VariableDeclaration", - "scope": 560, - "src": "2787:24:1", + "scope": 571, + "src": "2894:24:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4733,27 +4911,27 @@ }, "typeName": { "baseType": { - "id": 314, + "id": 325, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2787:7:1", + "src": "2894:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 315, + "id": 326, "length": { "argumentTypes": null, "hexValue": "36", - "id": 313, + "id": 324, "isConstant": false, "isLValue": false, "isPure": false, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2795:1:1", + "src": "2902:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": null, @@ -4762,7 +4940,7 @@ "value": "6" }, "nodeType": "ArrayTypeName", - "src": "2787:10:1", + "src": "2894:10:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr", "typeString": "uint256[6]" @@ -4772,44 +4950,44 @@ "visibility": "internal" } ], - "id": 317, + "id": 328, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2787:24:1" + "src": "2894:24:1" }, { "body": { - "id": 409, + "id": 420, "nodeType": "Block", - "src": "2868:657:1", + "src": "2975:657:1", "statements": [ { "assignments": [ - 330 + 341 ], "declarations": [ { "constant": false, - "id": 330, + "id": 341, "name": "algoMiner", "nodeType": "VariableDeclaration", - "scope": 560, - "src": "2883:20:1", + "scope": 571, + "src": "2990:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" }, "typeName": { "contractScope": null, - "id": 329, + "id": 340, "name": "IAlgoMiner", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 696, - "src": "2883:10:1", + "referencedDeclaration": 773, + "src": "2990:10:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" } }, @@ -4817,7 +4995,7 @@ "visibility": "internal" } ], - "id": 336, + "id": 347, "initialValue": { "argumentTypes": null, "arguments": [ @@ -4825,26 +5003,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 332, + "id": 343, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2917:7:1", + "referencedDeclaration": 124, + "src": "3024:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 334, + "id": 345, "indexExpression": { "argumentTypes": null, - "id": 333, + "id": 344, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 319, - "src": "2925:1:1", + "referencedDeclaration": 330, + "src": "3032:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4855,7 +5033,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2917:10:1", + "src": "3024:10:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4869,18 +5047,18 @@ "typeString": "address" } ], - "id": 331, + "id": 342, "name": "IAlgoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 696, - "src": "2906:10:1", + "referencedDeclaration": 773, + "src": "3013:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$696_$", + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$773_$", "typeString": "type(contract IAlgoMiner)" } }, - "id": 335, + "id": 346, "isConstant": false, "isLValue": false, "isPure": false, @@ -4888,19 +5066,19 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2906:22:1", + "src": "3013:22:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" } }, "nodeType": "VariableDeclarationStatement", - "src": "2883:45:1" + "src": "2990:45:1" }, { "condition": { "argumentTypes": null, - "id": 340, + "id": 351, "isConstant": false, "isLValue": false, "isPure": false, @@ -4908,7 +5086,7 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2948:21:1", + "src": "3055:21:1", "subExpression": { "argumentTypes": null, "arguments": [], @@ -4916,32 +5094,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 337, + "id": 348, "name": "algoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "2949:9:1", + "referencedDeclaration": 341, + "src": "3056:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" } }, - "id": 338, + "id": 349, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isMining", "nodeType": "MemberAccess", - "referencedDeclaration": 690, - "src": "2949:18:1", + "referencedDeclaration": 767, + "src": "3056:18:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$", "typeString": "function () view external returns (bool)" } }, - "id": 339, + "id": 350, "isConstant": false, "isLValue": false, "isPure": false, @@ -4949,7 +5127,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2949:20:1", + "src": "3056:20:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4961,27 +5139,27 @@ } }, "falseBody": null, - "id": 342, + "id": 353, "nodeType": "IfStatement", - "src": "2945:34:1", + "src": "3052:34:1", "trueBody": { - "id": 341, + "id": 352, "nodeType": "Continue", - "src": "2971:8:1" + "src": "3078:8:1" } }, { "assignments": [ - 344 + 355 ], "declarations": [ { "constant": false, - "id": 344, + "id": 355, "name": "minerCategory", "nodeType": "VariableDeclaration", - "scope": 560, - "src": "2996:19:1", + "scope": 571, + "src": "3103:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4989,10 +5167,10 @@ "typeString": "uint8" }, "typeName": { - "id": 343, + "id": 354, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "2996:5:1", + "src": "3103:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5002,7 +5180,7 @@ "visibility": "internal" } ], - "id": 348, + "id": 359, "initialValue": { "argumentTypes": null, "arguments": [], @@ -5010,32 +5188,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 345, + "id": 356, "name": "algoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "3018:9:1", + "referencedDeclaration": 341, + "src": "3125:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" } }, - "id": 346, + "id": 357, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getCategory", "nodeType": "MemberAccess", - "referencedDeclaration": 685, - "src": "3018:21:1", + "referencedDeclaration": 762, + "src": "3125:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, - "id": 347, + "id": 358, "isConstant": false, "isLValue": false, "isPure": false, @@ -5043,14 +5221,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3018:23:1", + "src": "3125:23:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", - "src": "2996:45:1" + "src": "3103:45:1" }, { "condition": { @@ -5059,19 +5237,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 351, + "id": 362, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 349, + "id": 360, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 344, - "src": "3061:13:1", + "referencedDeclaration": 355, + "src": "3168:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5082,14 +5260,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 350, + "id": 361, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3078:1:1", + "src": "3185:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5097,7 +5275,7 @@ }, "value": "0" }, - "src": "3061:18:1", + "src": "3168:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5110,19 +5288,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 360, + "id": 371, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 358, + "id": 369, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 344, - "src": "3136:13:1", + "referencedDeclaration": 355, + "src": "3243:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5133,14 +5311,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 359, + "id": 370, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3153:1:1", + "src": "3260:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -5148,7 +5326,7 @@ }, "value": "1" }, - "src": "3136:18:1", + "src": "3243:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5161,19 +5339,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 369, + "id": 380, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 367, + "id": 378, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 344, - "src": "3211:13:1", + "referencedDeclaration": 355, + "src": "3318:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5184,14 +5362,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 368, + "id": 379, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3228:1:1", + "src": "3335:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -5199,7 +5377,7 @@ }, "value": "2" }, - "src": "3211:18:1", + "src": "3318:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5212,19 +5390,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 378, + "id": 389, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 376, + "id": 387, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 344, - "src": "3286:13:1", + "referencedDeclaration": 355, + "src": "3393:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5235,14 +5413,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "33", - "id": 377, + "id": 388, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3303:1:1", + "src": "3410:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", @@ -5250,7 +5428,7 @@ }, "value": "3" }, - "src": "3286:18:1", + "src": "3393:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5263,19 +5441,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 387, + "id": 398, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 385, + "id": 396, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 344, - "src": "3361:13:1", + "referencedDeclaration": 355, + "src": "3468:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5286,14 +5464,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "34", - "id": 386, + "id": 397, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3378:1:1", + "src": "3485:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", @@ -5301,7 +5479,7 @@ }, "value": "4" }, - "src": "3361:18:1", + "src": "3468:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5314,19 +5492,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 396, + "id": 407, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 394, + "id": 405, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 344, - "src": "3436:13:1", + "referencedDeclaration": 355, + "src": "3543:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5337,14 +5515,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "35", - "id": 395, + "id": 406, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3453:1:1", + "src": "3560:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -5352,25 +5530,25 @@ }, "value": "5" }, - "src": "3436:18:1", + "src": "3543:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 403, + "id": 414, "nodeType": "IfStatement", - "src": "3433:69:1", + "src": "3540:69:1", "trueBody": { - "id": 402, + "id": 413, "nodeType": "Block", - "src": "3456:46:1", + "src": "3563:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 400, + "id": 411, "isConstant": false, "isLValue": false, "isPure": false, @@ -5378,34 +5556,34 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3475:11:1", + "src": "3582:11:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 397, + "id": 408, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "3475:6:1", + "referencedDeclaration": 327, + "src": "3582:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 399, + "id": 410, "indexExpression": { "argumentTypes": null, "hexValue": "35", - "id": 398, + "id": 409, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3482:1:1", + "src": "3589:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -5418,7 +5596,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3475:9:1", + "src": "3582:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5429,25 +5607,25 @@ "typeString": "uint256" } }, - "id": 401, + "id": 412, "nodeType": "ExpressionStatement", - "src": "3475:11:1" + "src": "3582:11:1" } ] } }, - "id": 404, + "id": 415, "nodeType": "IfStatement", - "src": "3358:144:1", + "src": "3465:144:1", "trueBody": { - "id": 393, + "id": 404, "nodeType": "Block", - "src": "3381:46:1", + "src": "3488:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 391, + "id": 402, "isConstant": false, "isLValue": false, "isPure": false, @@ -5455,34 +5633,34 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3400:11:1", + "src": "3507:11:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 388, + "id": 399, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "3400:6:1", + "referencedDeclaration": 327, + "src": "3507:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 390, + "id": 401, "indexExpression": { "argumentTypes": null, "hexValue": "34", - "id": 389, + "id": 400, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3407:1:1", + "src": "3514:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", @@ -5495,7 +5673,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3400:9:1", + "src": "3507:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5506,25 +5684,25 @@ "typeString": "uint256" } }, - "id": 392, + "id": 403, "nodeType": "ExpressionStatement", - "src": "3400:11:1" + "src": "3507:11:1" } ] } }, - "id": 405, + "id": 416, "nodeType": "IfStatement", - "src": "3283:219:1", + "src": "3390:219:1", "trueBody": { - "id": 384, + "id": 395, "nodeType": "Block", - "src": "3306:46:1", + "src": "3413:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 382, + "id": 393, "isConstant": false, "isLValue": false, "isPure": false, @@ -5532,34 +5710,34 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3325:11:1", + "src": "3432:11:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 379, + "id": 390, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "3325:6:1", + "referencedDeclaration": 327, + "src": "3432:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 381, + "id": 392, "indexExpression": { "argumentTypes": null, "hexValue": "33", - "id": 380, + "id": 391, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3332:1:1", + "src": "3439:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", @@ -5572,7 +5750,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3325:9:1", + "src": "3432:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5583,25 +5761,25 @@ "typeString": "uint256" } }, - "id": 383, + "id": 394, "nodeType": "ExpressionStatement", - "src": "3325:11:1" + "src": "3432:11:1" } ] } }, - "id": 406, + "id": 417, "nodeType": "IfStatement", - "src": "3208:294:1", + "src": "3315:294:1", "trueBody": { - "id": 375, + "id": 386, "nodeType": "Block", - "src": "3231:46:1", + "src": "3338:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 373, + "id": 384, "isConstant": false, "isLValue": false, "isPure": false, @@ -5609,34 +5787,34 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3250:11:1", + "src": "3357:11:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 370, + "id": 381, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "3250:6:1", + "referencedDeclaration": 327, + "src": "3357:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 372, + "id": 383, "indexExpression": { "argumentTypes": null, "hexValue": "32", - "id": 371, + "id": 382, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3257:1:1", + "src": "3364:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -5649,7 +5827,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3250:9:1", + "src": "3357:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5660,25 +5838,25 @@ "typeString": "uint256" } }, - "id": 374, + "id": 385, "nodeType": "ExpressionStatement", - "src": "3250:11:1" + "src": "3357:11:1" } ] } }, - "id": 407, + "id": 418, "nodeType": "IfStatement", - "src": "3133:369:1", + "src": "3240:369:1", "trueBody": { - "id": 366, + "id": 377, "nodeType": "Block", - "src": "3156:46:1", + "src": "3263:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 364, + "id": 375, "isConstant": false, "isLValue": false, "isPure": false, @@ -5686,34 +5864,34 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3175:11:1", + "src": "3282:11:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 361, + "id": 372, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "3175:6:1", + "referencedDeclaration": 327, + "src": "3282:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 363, + "id": 374, "indexExpression": { "argumentTypes": null, "hexValue": "31", - "id": 362, + "id": 373, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3182:1:1", + "src": "3289:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -5726,7 +5904,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3175:9:1", + "src": "3282:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5737,25 +5915,25 @@ "typeString": "uint256" } }, - "id": 365, + "id": 376, "nodeType": "ExpressionStatement", - "src": "3175:11:1" + "src": "3282:11:1" } ] } }, - "id": 408, + "id": 419, "nodeType": "IfStatement", - "src": "3058:444:1", + "src": "3165:444:1", "trueBody": { - "id": 357, + "id": 368, "nodeType": "Block", - "src": "3081:46:1", + "src": "3188:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 355, + "id": 366, "isConstant": false, "isLValue": false, "isPure": false, @@ -5763,34 +5941,34 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3100:11:1", + "src": "3207:11:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 352, + "id": 363, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "3100:6:1", + "referencedDeclaration": 327, + "src": "3207:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 354, + "id": 365, "indexExpression": { "argumentTypes": null, "hexValue": "30", - "id": 353, + "id": 364, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3107:1:1", + "src": "3214:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5803,7 +5981,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3100:9:1", + "src": "3207:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5814,9 +5992,9 @@ "typeString": "uint256" } }, - "id": 356, + "id": 367, "nodeType": "ExpressionStatement", - "src": "3100:11:1" + "src": "3207:11:1" } ] } @@ -5829,19 +6007,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 325, + "id": 336, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 322, + "id": 333, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 319, - "src": "2843:1:1", + "referencedDeclaration": 330, + "src": "2950:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5853,18 +6031,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 323, + "id": 334, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2847:7:1", + "referencedDeclaration": 124, + "src": "2954:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 324, + "id": 335, "isConstant": false, "isLValue": true, "isPure": false, @@ -5872,31 +6050,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2847:14:1", + "src": "2954:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2843:18:1", + "src": "2950:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 410, + "id": 421, "initializationExpression": { "assignments": [ - 319 + 330 ], "declarations": [ { "constant": false, - "id": 319, + "id": 330, "name": "i", "nodeType": "VariableDeclaration", - "scope": 560, - "src": "2828:9:1", + "scope": 571, + "src": "2935:9:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5904,10 +6082,10 @@ "typeString": "uint256" }, "typeName": { - "id": 318, + "id": 329, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2828:7:1", + "src": "2935:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5917,18 +6095,18 @@ "visibility": "internal" } ], - "id": 321, + "id": 332, "initialValue": { "argumentTypes": null, "hexValue": "31", - "id": 320, + "id": 331, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2840:1:1", + "src": "2947:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -5937,12 +6115,12 @@ "value": "1" }, "nodeType": "VariableDeclarationStatement", - "src": "2828:13:1" + "src": "2935:13:1" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 327, + "id": 338, "isConstant": false, "isLValue": false, "isPure": false, @@ -5950,15 +6128,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "2863:3:1", + "src": "2970:3:1", "subExpression": { "argumentTypes": null, - "id": 326, + "id": 337, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 319, - "src": "2863:1:1", + "referencedDeclaration": 330, + "src": "2970:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5969,25 +6147,25 @@ "typeString": "uint256" } }, - "id": 328, + "id": 339, "nodeType": "ExpressionStatement", - "src": "2863:3:1" + "src": "2970:3:1" }, "nodeType": "ForStatement", - "src": "2824:701:1" + "src": "2931:701:1" }, { "assignments": [ - 412 + 423 ], "declarations": [ { "constant": false, - "id": 412, + "id": 423, "name": "totalProportion", "nodeType": "VariableDeclaration", - "scope": 560, - "src": "3613:23:1", + "scope": 571, + "src": "3720:23:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5995,10 +6173,10 @@ "typeString": "uint256" }, "typeName": { - "id": 411, + "id": 422, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3613:7:1", + "src": "3720:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6008,14 +6186,14 @@ "visibility": "internal" } ], - "id": 448, + "id": 459, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 447, + "id": 458, "isConstant": false, "isLValue": false, "isPure": false, @@ -6026,7 +6204,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 441, + "id": 452, "isConstant": false, "isLValue": false, "isPure": false, @@ -6037,7 +6215,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 435, + "id": 446, "isConstant": false, "isLValue": false, "isPure": false, @@ -6048,7 +6226,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 429, + "id": 440, "isConstant": false, "isLValue": false, "isPure": false, @@ -6059,7 +6237,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 423, + "id": 434, "isConstant": false, "isLValue": false, "isPure": false, @@ -6070,19 +6248,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 417, + "id": 428, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 413, + "id": 424, "name": "CAT_0_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 103, - "src": "3639:22:1", + "referencedDeclaration": 106, + "src": "3746:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6094,29 +6272,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 414, + "id": 425, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "3664:6:1", + "referencedDeclaration": 327, + "src": "3771:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 416, + "id": 427, "indexExpression": { "argumentTypes": null, "hexValue": "30", - "id": 415, + "id": 426, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3671:1:1", + "src": "3778:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6129,13 +6307,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3664:9:1", + "src": "3771:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3639:34:1", + "src": "3746:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6149,19 +6327,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 422, + "id": 433, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 418, + "id": 429, "name": "CAT_1_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 106, - "src": "3689:22:1", + "referencedDeclaration": 109, + "src": "3796:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6173,29 +6351,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 419, + "id": 430, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "3714:6:1", + "referencedDeclaration": 327, + "src": "3821:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 421, + "id": 432, "indexExpression": { "argumentTypes": null, "hexValue": "31", - "id": 420, + "id": 431, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3721:1:1", + "src": "3828:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6208,19 +6386,19 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3714:9:1", + "src": "3821:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3689:34:1", + "src": "3796:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3639:84:1", + "src": "3746:84:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6234,19 +6412,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 428, + "id": 439, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 424, + "id": 435, "name": "CAT_2_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 109, - "src": "3739:22:1", + "referencedDeclaration": 112, + "src": "3846:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6258,29 +6436,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 425, + "id": 436, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "3764:6:1", + "referencedDeclaration": 327, + "src": "3871:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 427, + "id": 438, "indexExpression": { "argumentTypes": null, "hexValue": "32", - "id": 426, + "id": 437, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3771:1:1", + "src": "3878:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -6293,19 +6471,19 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3764:9:1", + "src": "3871:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3739:34:1", + "src": "3846:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3639:134:1", + "src": "3746:134:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6319,19 +6497,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 434, + "id": 445, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 430, + "id": 441, "name": "CAT_3_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 112, - "src": "3789:22:1", + "referencedDeclaration": 115, + "src": "3896:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6343,29 +6521,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 431, + "id": 442, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "3814:6:1", + "referencedDeclaration": 327, + "src": "3921:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 433, + "id": 444, "indexExpression": { "argumentTypes": null, "hexValue": "33", - "id": 432, + "id": 443, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3821:1:1", + "src": "3928:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", @@ -6378,19 +6556,19 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3814:9:1", + "src": "3921:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3789:34:1", + "src": "3896:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3639:184:1", + "src": "3746:184:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6404,19 +6582,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 440, + "id": 451, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 436, + "id": 447, "name": "CAT_4_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 115, - "src": "3839:22:1", + "referencedDeclaration": 118, + "src": "3946:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6428,29 +6606,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 437, + "id": 448, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "3864:6:1", + "referencedDeclaration": 327, + "src": "3971:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 439, + "id": 450, "indexExpression": { "argumentTypes": null, "hexValue": "34", - "id": 438, + "id": 449, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3871:1:1", + "src": "3978:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", @@ -6463,19 +6641,19 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3864:9:1", + "src": "3971:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3839:34:1", + "src": "3946:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3639:234:1", + "src": "3746:234:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6489,19 +6667,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 446, + "id": 457, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 442, + "id": 453, "name": "CAT_5_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 118, - "src": "3889:22:1", + "referencedDeclaration": 121, + "src": "3996:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6513,29 +6691,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 443, + "id": 454, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "3914:6:1", + "referencedDeclaration": 327, + "src": "4021:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 445, + "id": 456, "indexExpression": { "argumentTypes": null, "hexValue": "35", - "id": 444, + "id": 455, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3921:1:1", + "src": "4028:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -6548,37 +6726,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3914:9:1", + "src": "4021:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3889:34:1", + "src": "3996:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3639:284:1", + "src": "3746:284:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "3613:310:1" + "src": "3720:310:1" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 453, + "id": 464, "name": "feePerMiner", "nodeType": "VariableDeclaration", - "scope": 560, - "src": "3944:29:1", + "scope": 571, + "src": "4051:29:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -6587,27 +6765,27 @@ }, "typeName": { "baseType": { - "id": 451, + "id": 462, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3944:7:1", + "src": "4051:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 452, + "id": 463, "length": { "argumentTypes": null, "hexValue": "36", - "id": 450, + "id": 461, "isConstant": false, "isLValue": false, "isPure": false, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3952:1:1", + "src": "4059:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": null, @@ -6616,7 +6794,7 @@ "value": "6" }, "nodeType": "ArrayTypeName", - "src": "3944:10:1", + "src": "4051:10:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr", "typeString": "uint256[6]" @@ -6626,15 +6804,15 @@ "visibility": "internal" } ], - "id": 454, + "id": 465, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "3944:29:1" + "src": "4051:29:1" }, { "expression": { "argumentTypes": null, - "id": 463, + "id": 474, "isConstant": false, "isLValue": false, "isPure": false, @@ -6643,29 +6821,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 455, + "id": 466, "name": "feePerMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 453, - "src": "3986:11:1", + "referencedDeclaration": 464, + "src": "4093:11:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 457, + "id": 468, "indexExpression": { "argumentTypes": null, "hexValue": "30", - "id": 456, + "id": 467, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3998:1:1", + "src": "4105:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6678,7 +6856,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3986:14:1", + "src": "4093:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6692,7 +6870,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 462, + "id": 473, "isConstant": false, "isLValue": false, "isPure": false, @@ -6703,19 +6881,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 460, + "id": 471, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 458, + "id": 469, "name": "currentFeesBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 298, - "src": "4003:18:1", + "referencedDeclaration": 309, + "src": "4110:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6725,18 +6903,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 459, + "id": 470, "name": "CAT_0_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 103, - "src": "4024:22:1", + "referencedDeclaration": 106, + "src": "4131:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4003:43:1", + "src": "4110:43:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6746,37 +6924,37 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 461, + "id": 472, "name": "totalProportion", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "4049:15:1", + "referencedDeclaration": 423, + "src": "4156:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4003:61:1", + "src": "4110:61:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3986:78:1", + "src": "4093:78:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 464, + "id": 475, "nodeType": "ExpressionStatement", - "src": "3986:78:1" + "src": "4093:78:1" }, { "expression": { "argumentTypes": null, - "id": 473, + "id": 484, "isConstant": false, "isLValue": false, "isPure": false, @@ -6785,29 +6963,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 465, + "id": 476, "name": "feePerMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 453, - "src": "4075:11:1", + "referencedDeclaration": 464, + "src": "4182:11:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 467, + "id": 478, "indexExpression": { "argumentTypes": null, "hexValue": "31", - "id": 466, + "id": 477, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4087:1:1", + "src": "4194:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6820,7 +6998,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4075:14:1", + "src": "4182:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6834,7 +7012,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 472, + "id": 483, "isConstant": false, "isLValue": false, "isPure": false, @@ -6845,19 +7023,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 470, + "id": 481, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 468, + "id": 479, "name": "currentFeesBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 298, - "src": "4092:18:1", + "referencedDeclaration": 309, + "src": "4199:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6867,18 +7045,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 469, + "id": 480, "name": "CAT_1_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 106, - "src": "4113:22:1", + "referencedDeclaration": 109, + "src": "4220:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4092:43:1", + "src": "4199:43:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6888,37 +7066,37 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 471, + "id": 482, "name": "totalProportion", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "4138:15:1", + "referencedDeclaration": 423, + "src": "4245:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4092:61:1", + "src": "4199:61:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4075:78:1", + "src": "4182:78:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 474, + "id": 485, "nodeType": "ExpressionStatement", - "src": "4075:78:1" + "src": "4182:78:1" }, { "expression": { "argumentTypes": null, - "id": 483, + "id": 494, "isConstant": false, "isLValue": false, "isPure": false, @@ -6927,29 +7105,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 475, + "id": 486, "name": "feePerMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 453, - "src": "4164:11:1", + "referencedDeclaration": 464, + "src": "4271:11:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 477, + "id": 488, "indexExpression": { "argumentTypes": null, "hexValue": "32", - "id": 476, + "id": 487, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4176:1:1", + "src": "4283:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -6962,7 +7140,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4164:14:1", + "src": "4271:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6976,7 +7154,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 482, + "id": 493, "isConstant": false, "isLValue": false, "isPure": false, @@ -6987,19 +7165,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 480, + "id": 491, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 478, + "id": 489, "name": "currentFeesBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 298, - "src": "4181:18:1", + "referencedDeclaration": 309, + "src": "4288:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7009,18 +7187,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 479, + "id": 490, "name": "CAT_2_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 109, - "src": "4202:22:1", + "referencedDeclaration": 112, + "src": "4309:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4181:43:1", + "src": "4288:43:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7030,37 +7208,37 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 481, + "id": 492, "name": "totalProportion", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "4227:15:1", + "referencedDeclaration": 423, + "src": "4334:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4181:61:1", + "src": "4288:61:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4164:78:1", + "src": "4271:78:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 484, + "id": 495, "nodeType": "ExpressionStatement", - "src": "4164:78:1" + "src": "4271:78:1" }, { "expression": { "argumentTypes": null, - "id": 493, + "id": 504, "isConstant": false, "isLValue": false, "isPure": false, @@ -7069,29 +7247,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 485, + "id": 496, "name": "feePerMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 453, - "src": "4253:11:1", + "referencedDeclaration": 464, + "src": "4360:11:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 487, + "id": 498, "indexExpression": { "argumentTypes": null, "hexValue": "33", - "id": 486, + "id": 497, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4265:1:1", + "src": "4372:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", @@ -7104,7 +7282,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4253:14:1", + "src": "4360:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7118,7 +7296,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 492, + "id": 503, "isConstant": false, "isLValue": false, "isPure": false, @@ -7129,19 +7307,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 490, + "id": 501, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 488, + "id": 499, "name": "currentFeesBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 298, - "src": "4270:18:1", + "referencedDeclaration": 309, + "src": "4377:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7151,18 +7329,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 489, + "id": 500, "name": "CAT_3_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 112, - "src": "4291:22:1", + "referencedDeclaration": 115, + "src": "4398:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4270:43:1", + "src": "4377:43:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7172,37 +7350,37 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 491, + "id": 502, "name": "totalProportion", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "4316:15:1", + "referencedDeclaration": 423, + "src": "4423:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4270:61:1", + "src": "4377:61:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4253:78:1", + "src": "4360:78:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 494, + "id": 505, "nodeType": "ExpressionStatement", - "src": "4253:78:1" + "src": "4360:78:1" }, { "expression": { "argumentTypes": null, - "id": 503, + "id": 514, "isConstant": false, "isLValue": false, "isPure": false, @@ -7211,29 +7389,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 495, + "id": 506, "name": "feePerMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 453, - "src": "4342:11:1", + "referencedDeclaration": 464, + "src": "4449:11:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 497, + "id": 508, "indexExpression": { "argumentTypes": null, "hexValue": "34", - "id": 496, + "id": 507, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4354:1:1", + "src": "4461:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", @@ -7246,7 +7424,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4342:14:1", + "src": "4449:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7260,7 +7438,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 502, + "id": 513, "isConstant": false, "isLValue": false, "isPure": false, @@ -7271,19 +7449,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 500, + "id": 511, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 498, + "id": 509, "name": "currentFeesBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 298, - "src": "4359:18:1", + "referencedDeclaration": 309, + "src": "4466:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7293,18 +7471,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 499, + "id": 510, "name": "CAT_4_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 115, - "src": "4380:22:1", + "referencedDeclaration": 118, + "src": "4487:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4359:43:1", + "src": "4466:43:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7314,37 +7492,37 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 501, + "id": 512, "name": "totalProportion", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "4405:15:1", + "referencedDeclaration": 423, + "src": "4512:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4359:61:1", + "src": "4466:61:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4342:78:1", + "src": "4449:78:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 504, + "id": 515, "nodeType": "ExpressionStatement", - "src": "4342:78:1" + "src": "4449:78:1" }, { "expression": { "argumentTypes": null, - "id": 513, + "id": 524, "isConstant": false, "isLValue": false, "isPure": false, @@ -7353,29 +7531,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 505, + "id": 516, "name": "feePerMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 453, - "src": "4431:11:1", + "referencedDeclaration": 464, + "src": "4538:11:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 507, + "id": 518, "indexExpression": { "argumentTypes": null, "hexValue": "35", - "id": 506, + "id": 517, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4443:1:1", + "src": "4550:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -7388,7 +7566,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4431:14:1", + "src": "4538:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7402,7 +7580,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 512, + "id": 523, "isConstant": false, "isLValue": false, "isPure": false, @@ -7413,19 +7591,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 510, + "id": 521, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 508, + "id": 519, "name": "currentFeesBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 298, - "src": "4448:18:1", + "referencedDeclaration": 309, + "src": "4555:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7435,18 +7613,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 509, + "id": 520, "name": "CAT_5_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 118, - "src": "4469:22:1", + "referencedDeclaration": 121, + "src": "4576:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4448:43:1", + "src": "4555:43:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7456,57 +7634,57 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 511, + "id": 522, "name": "totalProportion", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "4494:15:1", + "referencedDeclaration": 423, + "src": "4601:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4448:61:1", + "src": "4555:61:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4431:78:1", + "src": "4538:78:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 514, + "id": 525, "nodeType": "ExpressionStatement", - "src": "4431:78:1" + "src": "4538:78:1" }, { "body": { - "id": 557, + "id": 568, "nodeType": "Block", - "src": "4609:245:1", + "src": "4716:245:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 532, + "id": 543, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 526, + "id": 537, "name": "algoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "4624:9:1", + "referencedDeclaration": 341, + "src": "4731:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" } }, @@ -7519,26 +7697,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 528, + "id": 539, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "4647:7:1", + "referencedDeclaration": 124, + "src": "4754:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 530, + "id": 541, "indexExpression": { "argumentTypes": null, - "id": 529, + "id": 540, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 319, - "src": "4655:1:1", + "referencedDeclaration": 330, + "src": "4762:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7549,7 +7727,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4647:10:1", + "src": "4754:10:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7563,18 +7741,18 @@ "typeString": "address" } ], - "id": 527, + "id": 538, "name": "IAlgoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 696, - "src": "4636:10:1", + "referencedDeclaration": 773, + "src": "4743:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$696_$", + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$773_$", "typeString": "type(contract IAlgoMiner)" } }, - "id": 531, + "id": 542, "isConstant": false, "isLValue": false, "isPure": false, @@ -7582,26 +7760,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4636:22:1", + "src": "4743:22:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" } }, - "src": "4624:34:1", + "src": "4731:34:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" } }, - "id": 533, + "id": 544, "nodeType": "ExpressionStatement", - "src": "4624:34:1" + "src": "4731:34:1" }, { "condition": { "argumentTypes": null, - "id": 537, + "id": 548, "isConstant": false, "isLValue": false, "isPure": false, @@ -7609,7 +7787,7 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "4678:21:1", + "src": "4785:21:1", "subExpression": { "argumentTypes": null, "arguments": [], @@ -7617,32 +7795,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 534, + "id": 545, "name": "algoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "4679:9:1", + "referencedDeclaration": 341, + "src": "4786:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" } }, - "id": 535, + "id": 546, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isMining", "nodeType": "MemberAccess", - "referencedDeclaration": 690, - "src": "4679:18:1", + "referencedDeclaration": 767, + "src": "4786:18:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$", "typeString": "function () view external returns (bool)" } }, - "id": 536, + "id": 547, "isConstant": false, "isLValue": false, "isPure": false, @@ -7650,7 +7828,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4679:20:1", + "src": "4786:20:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7662,31 +7840,31 @@ } }, "falseBody": null, - "id": 539, + "id": 550, "nodeType": "IfStatement", - "src": "4675:34:1", + "src": "4782:34:1", "trueBody": { - "id": 538, + "id": 549, "nodeType": "Continue", - "src": "4701:8:1" + "src": "4808:8:1" } }, { "expression": { "argumentTypes": null, - "id": 544, + "id": 555, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 540, + "id": 551, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 344, - "src": "4726:13:1", + "referencedDeclaration": 355, + "src": "4833:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7701,32 +7879,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 541, + "id": 552, "name": "algoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "4742:9:1", + "referencedDeclaration": 341, + "src": "4849:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" } }, - "id": 542, + "id": 553, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getCategory", "nodeType": "MemberAccess", - "referencedDeclaration": 685, - "src": "4742:21:1", + "referencedDeclaration": 762, + "src": "4849:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, - "id": 543, + "id": 554, "isConstant": false, "isLValue": false, "isPure": false, @@ -7734,21 +7912,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4742:23:1", + "src": "4849:23:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "4726:39:1", + "src": "4833:39:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 545, + "id": 556, "nodeType": "ExpressionStatement", - "src": "4726:39:1" + "src": "4833:39:1" }, { "expression": { @@ -7761,32 +7939,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 549, + "id": 560, "name": "algoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "4793:9:1", + "referencedDeclaration": 341, + "src": "4900:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" } }, - "id": 550, + "id": 561, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getMiner", "nodeType": "MemberAccess", - "referencedDeclaration": 695, - "src": "4793:18:1", + "referencedDeclaration": 772, + "src": "4900:18:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 551, + "id": 562, "isConstant": false, "isLValue": false, "isPure": false, @@ -7794,7 +7972,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4793:20:1", + "src": "4900:20:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7804,26 +7982,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 552, + "id": 563, "name": "feePerMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 453, - "src": "4815:11:1", + "referencedDeclaration": 464, + "src": "4922:11:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 554, + "id": 565, "indexExpression": { "argumentTypes": null, - "id": 553, + "id": 564, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 344, - "src": "4827:13:1", + "referencedDeclaration": 355, + "src": "4934:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7834,7 +8012,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4815:26:1", + "src": "4922:26:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7854,32 +8032,32 @@ ], "expression": { "argumentTypes": null, - "id": 546, + "id": 557, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 120, - "src": "4773:6:1", + "referencedDeclaration": 705, + "src": "4880:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, - "id": 548, + "id": 559, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1012, - "src": "4773:19:1", + "referencedDeclaration": 1126, + "src": "4880:19:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$987_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$987_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1101_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1101_$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 555, + "id": 566, "isConstant": false, "isLValue": false, "isPure": false, @@ -7887,15 +8065,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4773:69:1", + "src": "4880:69:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 556, + "id": 567, "nodeType": "ExpressionStatement", - "src": "4773:69:1" + "src": "4880:69:1" } ] }, @@ -7905,19 +8083,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 522, + "id": 533, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 519, + "id": 530, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 319, - "src": "4584:1:1", + "referencedDeclaration": 330, + "src": "4691:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7929,18 +8107,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 520, + "id": 531, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "4588:7:1", + "referencedDeclaration": 124, + "src": "4695:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 521, + "id": 532, "isConstant": false, "isLValue": true, "isPure": false, @@ -7948,35 +8126,35 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4588:14:1", + "src": "4695:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4584:18:1", + "src": "4691:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 558, + "id": 569, "initializationExpression": { "expression": { "argumentTypes": null, - "id": 517, + "id": 528, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 515, + "id": 526, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 319, - "src": "4577:1:1", + "referencedDeclaration": 330, + "src": "4684:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7987,14 +8165,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 516, + "id": 527, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4581:1:1", + "src": "4688:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -8002,20 +8180,20 @@ }, "value": "1" }, - "src": "4577:5:1", + "src": "4684:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 518, + "id": 529, "nodeType": "ExpressionStatement", - "src": "4577:5:1" + "src": "4684:5:1" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 524, + "id": 535, "isConstant": false, "isLValue": false, "isPure": false, @@ -8023,15 +8201,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4604:3:1", + "src": "4711:3:1", "subExpression": { "argumentTypes": null, - "id": 523, + "id": 534, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 319, - "src": "4604:1:1", + "referencedDeclaration": 330, + "src": "4711:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8042,67 +8220,178 @@ "typeString": "uint256" } }, - "id": 525, + "id": 536, "nodeType": "ExpressionStatement", - "src": "4604:3:1" + "src": "4711:3:1" }, "nodeType": "ForStatement", - "src": "4573:281:1" + "src": "4680:281:1" } ] }, "documentation": null, - "id": 560, + "id": 571, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 288, + "id": 297, "modifierName": { "argumentTypes": null, - "id": 287, - "name": "onlySystem", + "id": 296, + "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 614, - "src": "2543:10:1", + "referencedDeclaration": 801, + "src": "2636:13:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2543:10:1" + "src": "2636:13:1" + }, + { + "arguments": null, + "id": 299, + "modifierName": { + "argumentTypes": null, + "id": 298, + "name": "onlySystem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 634, + "src": "2650:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2650:10:1" } ], "name": "mine", "nodeType": "FunctionDefinition", "parameters": { - "id": 286, + "id": 295, "nodeType": "ParameterList", "parameters": [], - "src": "2533:2:1" + "src": "2626:2:1" }, "payable": false, "returnParameters": { - "id": 289, + "id": 300, "nodeType": "ParameterList", "parameters": [], - "src": "2554:0:1" + "src": "2661:0:1" }, - "scope": 586, - "src": "2520:2341:1", + "scope": 606, + "src": "2613:2355:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 570, + "id": 579, "nodeType": "Block", - "src": "4924:44:1", + "src": "5017:31:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 576, + "name": "_terminate", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 749 + ], + "referencedDeclaration": 749, + "src": "5028:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5028:12:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 578, + "nodeType": "ExpressionStatement", + "src": "5028:12:1" + } + ] + }, + "documentation": null, + "id": 580, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 574, + "modifierName": { + "argumentTypes": null, + "id": 573, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "5004:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "5004:12:1" + } + ], + "name": "terminate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 572, + "nodeType": "ParameterList", + "parameters": [], + "src": "4994:2:1" + }, + "payable": false, + "returnParameters": { + "id": 575, + "nodeType": "ParameterList", + "parameters": [], + "src": "5017:0:1" + }, + "scope": 606, + "src": "4976:72:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 590, + "nodeType": "Block", + "src": "5111:44:1", "statements": [ { "expression": { @@ -8111,7 +8400,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 568, + "id": 588, "isConstant": false, "isLValue": false, "isPure": false, @@ -8120,18 +8409,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 565, + "id": 585, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "4942:7:1", + "referencedDeclaration": 124, + "src": "5129:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 566, + "id": 586, "isConstant": false, "isLValue": true, "isPure": false, @@ -8139,7 +8428,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4942:14:1", + "src": "5129:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8150,14 +8439,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 567, + "id": 587, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4959:1:1", + "src": "5146:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -8165,21 +8454,21 @@ }, "value": "1" }, - "src": "4942:18:1", + "src": "5129:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 564, - "id": 569, + "functionReturnParameters": 584, + "id": 589, "nodeType": "Return", - "src": "4935:25:1" + "src": "5122:25:1" } ] }, "documentation": null, - "id": 571, + "id": 591, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -8187,23 +8476,23 @@ "name": "getMinerCount", "nodeType": "FunctionDefinition", "parameters": { - "id": 561, + "id": 581, "nodeType": "ParameterList", "parameters": [], - "src": "4891:2:1" + "src": "5078:2:1" }, "payable": false, "returnParameters": { - "id": 564, + "id": 584, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 563, + "id": 583, "name": "", "nodeType": "VariableDeclaration", - "scope": 571, - "src": "4915:7:1", + "scope": 591, + "src": "5102:7:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8211,10 +8500,10 @@ "typeString": "uint256" }, "typeName": { - "id": 562, + "id": 582, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4915:7:1", + "src": "5102:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8224,56 +8513,56 @@ "visibility": "internal" } ], - "src": "4914:9:1" + "src": "5101:9:1" }, - "scope": 586, - "src": "4869:99:1", + "scope": 606, + "src": "5056:99:1", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 584, + "id": 604, "nodeType": "Block", - "src": "5046:44:1", + "src": "5233:44:1", "statements": [ { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 578, + "id": 598, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "5064:7:1", + "referencedDeclaration": 124, + "src": "5251:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 582, + "id": 602, "indexExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 581, + "id": 601, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 579, + "id": 599, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 573, - "src": "5072:5:1", + "referencedDeclaration": 593, + "src": "5259:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8284,14 +8573,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 580, + "id": 600, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5080:1:1", + "src": "5267:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -8299,7 +8588,7 @@ }, "value": "1" }, - "src": "5072:9:1", + "src": "5259:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8310,21 +8599,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5064:18:1", + "src": "5251:18:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "functionReturnParameters": 577, - "id": 583, + "functionReturnParameters": 597, + "id": 603, "nodeType": "Return", - "src": "5057:25:1" + "src": "5244:25:1" } ] }, "documentation": null, - "id": 585, + "id": 605, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -8332,16 +8621,16 @@ "name": "getMinerByIndex", "nodeType": "FunctionDefinition", "parameters": { - "id": 574, + "id": 594, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 573, + "id": 593, "name": "index", "nodeType": "VariableDeclaration", - "scope": 585, - "src": "5001:13:1", + "scope": 605, + "src": "5188:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8349,10 +8638,10 @@ "typeString": "uint256" }, "typeName": { - "id": 572, + "id": 592, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5001:7:1", + "src": "5188:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8362,20 +8651,20 @@ "visibility": "internal" } ], - "src": "5000:15:1" + "src": "5187:15:1" }, "payable": false, "returnParameters": { - "id": 577, + "id": 597, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 576, + "id": 596, "name": "", "nodeType": "VariableDeclaration", - "scope": 585, - "src": "5037:7:1", + "scope": 605, + "src": "5224:7:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8383,10 +8672,10 @@ "typeString": "address" }, "typeName": { - "id": 575, + "id": 595, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5037:7:1", + "src": "5224:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8396,20 +8685,20 @@ "visibility": "internal" } ], - "src": "5036:9:1" + "src": "5223:9:1" }, - "scope": 586, - "src": "4976:114:1", + "scope": 606, + "src": "5163:114:1", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 587, - "src": "522:4571:1" + "scope": 607, + "src": "556:4724:1" } ], - "src": "0:5093:1" + "src": "0:5280:1" }, "id": 1 }, @@ -8418,14 +8707,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol", "exportedSymbols": { "AlgoSystemRole": [ - 673 + 693 ] }, - "id": 674, + "id": 694, "nodeType": "SourceUnit", "nodes": [ { - "id": 588, + "id": 608, "literals": [ "solidity", "^", @@ -8438,10 +8727,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", - "id": 589, + "id": 609, "nodeType": "ImportDirective", - "scope": 674, - "sourceUnit": 791, + "scope": 694, + "sourceUnit": 905, "src": "28:189:2", "symbolAliases": [], "unitAlias": "" @@ -8452,24 +8741,24 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 673, + "id": 693, "linearizedBaseContracts": [ - 673 + 693 ], "name": "AlgoSystemRole", "nodeType": "ContractDefinition", "nodes": [ { - "id": 592, + "id": 612, "libraryName": { "contractScope": null, - "id": 590, + "id": 610, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 790, + "referencedDeclaration": 904, "src": "258:5:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$790", + "typeIdentifier": "t_contract$_Roles_$904", "typeString": "library Roles" } }, @@ -8477,39 +8766,39 @@ "src": "252:27:2", "typeName": { "contractScope": null, - "id": 591, + "id": 611, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 703, + "referencedDeclaration": 817, "src": "268:10:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", "typeString": "struct Roles.Role" } } }, { "constant": false, - "id": 594, + "id": 614, "name": "_systemMembers", "nodeType": "VariableDeclaration", - "scope": 673, + "scope": 693, "src": "287:33:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage", + "typeIdentifier": "t_struct$_Role_$817_storage", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 593, + "id": 613, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 703, + "referencedDeclaration": 817, "src": "287:10:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -8518,7 +8807,7 @@ }, { "body": { - "id": 602, + "id": 622, "nodeType": "Block", "src": "353:41:2", "statements": [ @@ -8530,18 +8819,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 598, + "id": 618, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1146, + "referencedDeclaration": 1260, "src": "375:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 599, + "id": 619, "isConstant": false, "isLValue": false, "isPure": false, @@ -8563,18 +8852,18 @@ "typeString": "address" } ], - "id": 597, + "id": 617, "name": "_addSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 660, + "referencedDeclaration": 680, "src": "364:10:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 600, + "id": 620, "isConstant": false, "isLValue": false, "isPure": false, @@ -8588,14 +8877,14 @@ "typeString": "tuple()" } }, - "id": 601, + "id": 621, "nodeType": "ExpressionStatement", "src": "364:22:2" } ] }, "documentation": null, - "id": 603, + "id": 623, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -8603,19 +8892,19 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 595, + "id": 615, "nodeType": "ParameterList", "parameters": [], "src": "341:2:2" }, "payable": false, "returnParameters": { - "id": 596, + "id": 616, "nodeType": "ParameterList", "parameters": [], "src": "353:0:2" }, - "scope": 673, + "scope": 693, "src": "329:65:2", "stateMutability": "nonpayable", "superFunction": null, @@ -8623,7 +8912,7 @@ }, { "body": { - "id": 613, + "id": 633, "nodeType": "Block", "src": "424:60:2", "statements": [ @@ -8638,18 +8927,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 607, + "id": 627, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1146, + "referencedDeclaration": 1260, "src": "452:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 608, + "id": 628, "isConstant": false, "isLValue": false, "isPure": false, @@ -8671,18 +8960,18 @@ "typeString": "address" } ], - "id": 606, + "id": 626, "name": "isSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 627, + "referencedDeclaration": 647, "src": "443:8:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)" } }, - "id": 609, + "id": 629, "isConstant": false, "isLValue": false, "isPure": false, @@ -8704,21 +8993,21 @@ "typeString": "bool" } ], - "id": 605, + "id": 625, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, + "referencedDeclaration": 1263, "src": "435:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 610, + "id": 630, "isConstant": false, "isLValue": false, "isPure": false, @@ -8732,23 +9021,23 @@ "typeString": "tuple()" } }, - "id": 611, + "id": 631, "nodeType": "ExpressionStatement", "src": "435:29:2" }, { - "id": 612, + "id": 632, "nodeType": "PlaceholderStatement", "src": "475:1:2" } ] }, "documentation": null, - "id": 614, + "id": 634, "name": "onlySystem", "nodeType": "ModifierDefinition", "parameters": { - "id": 604, + "id": 624, "nodeType": "ParameterList", "parameters": [], "src": "421:2:2" @@ -8758,7 +9047,7 @@ }, { "body": { - "id": 626, + "id": 646, "nodeType": "Block", "src": "554:53:2", "statements": [ @@ -8768,11 +9057,11 @@ "arguments": [ { "argumentTypes": null, - "id": 623, + "id": 643, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 616, + "referencedDeclaration": 636, "src": "591:7:2", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8789,32 +9078,32 @@ ], "expression": { "argumentTypes": null, - "id": 621, + "id": 641, "name": "_systemMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 594, + "referencedDeclaration": 614, "src": "572:14:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage", + "typeIdentifier": "t_struct$_Role_$817_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 622, + "id": 642, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 789, + "referencedDeclaration": 903, "src": "572:18:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$703_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$817_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$817_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 624, + "id": 644, "isConstant": false, "isLValue": false, "isPure": false, @@ -8828,15 +9117,15 @@ "typeString": "bool" } }, - "functionReturnParameters": 620, - "id": 625, + "functionReturnParameters": 640, + "id": 645, "nodeType": "Return", "src": "565:34:2" } ] }, "documentation": null, - "id": 627, + "id": 647, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -8844,15 +9133,15 @@ "name": "isSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 617, + "id": 637, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 616, + "id": 636, "name": "account", "nodeType": "VariableDeclaration", - "scope": 627, + "scope": 647, "src": "510:15:2", "stateVariable": false, "storageLocation": "default", @@ -8861,7 +9150,7 @@ "typeString": "address" }, "typeName": { - "id": 615, + "id": 635, "name": "address", "nodeType": "ElementaryTypeName", "src": "510:7:2", @@ -8878,15 +9167,15 @@ }, "payable": false, "returnParameters": { - "id": 620, + "id": 640, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 619, + "id": 639, "name": "", "nodeType": "VariableDeclaration", - "scope": 627, + "scope": 647, "src": "548:4:2", "stateVariable": false, "storageLocation": "default", @@ -8895,7 +9184,7 @@ "typeString": "bool" }, "typeName": { - "id": 618, + "id": 638, "name": "bool", "nodeType": "ElementaryTypeName", "src": "548:4:2", @@ -8910,7 +9199,7 @@ ], "src": "547:6:2" }, - "scope": 673, + "scope": 693, "src": "492:115:2", "stateMutability": "view", "superFunction": null, @@ -8918,7 +9207,7 @@ }, { "body": { - "id": 638, + "id": 658, "nodeType": "Block", "src": "669:38:2", "statements": [ @@ -8928,11 +9217,11 @@ "arguments": [ { "argumentTypes": null, - "id": 635, + "id": 655, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 629, + "referencedDeclaration": 649, "src": "691:7:2", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8947,18 +9236,18 @@ "typeString": "address" } ], - "id": 634, + "id": 654, "name": "_addSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 660, + "referencedDeclaration": 680, "src": "680:10:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 636, + "id": 656, "isConstant": false, "isLValue": false, "isPure": false, @@ -8972,28 +9261,28 @@ "typeString": "tuple()" } }, - "id": 637, + "id": 657, "nodeType": "ExpressionStatement", "src": "680:19:2" } ] }, "documentation": null, - "id": 639, + "id": 659, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 632, + "id": 652, "modifierName": { "argumentTypes": null, - "id": 631, + "id": 651, "name": "onlySystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 614, + "referencedDeclaration": 634, "src": "658:10:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -9007,15 +9296,15 @@ "name": "addSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 630, + "id": 650, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 629, + "id": 649, "name": "account", "nodeType": "VariableDeclaration", - "scope": 639, + "scope": 659, "src": "634:15:2", "stateVariable": false, "storageLocation": "default", @@ -9024,7 +9313,7 @@ "typeString": "address" }, "typeName": { - "id": 628, + "id": 648, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:2", @@ -9041,12 +9330,12 @@ }, "payable": false, "returnParameters": { - "id": 633, + "id": 653, "nodeType": "ParameterList", "parameters": [], "src": "669:0:2" }, - "scope": 673, + "scope": 693, "src": "615:92:2", "stateMutability": "nonpayable", "superFunction": null, @@ -9054,7 +9343,7 @@ }, { "body": { - "id": 647, + "id": 667, "nodeType": "Block", "src": "748:44:2", "statements": [ @@ -9066,18 +9355,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 643, + "id": 663, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1146, + "referencedDeclaration": 1260, "src": "773:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 644, + "id": 664, "isConstant": false, "isLValue": false, "isPure": false, @@ -9099,18 +9388,18 @@ "typeString": "address" } ], - "id": 642, + "id": 662, "name": "_removeSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 672, + "referencedDeclaration": 692, "src": "759:13:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 645, + "id": 665, "isConstant": false, "isLValue": false, "isPure": false, @@ -9124,14 +9413,14 @@ "typeString": "tuple()" } }, - "id": 646, + "id": 666, "nodeType": "ExpressionStatement", "src": "759:25:2" } ] }, "documentation": null, - "id": 648, + "id": 668, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -9139,19 +9428,19 @@ "name": "renounceSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 640, + "id": 660, "nodeType": "ParameterList", "parameters": [], "src": "738:2:2" }, "payable": false, "returnParameters": { - "id": 641, + "id": 661, "nodeType": "ParameterList", "parameters": [], "src": "748:0:2" }, - "scope": 673, + "scope": 693, "src": "715:77:2", "stateMutability": "nonpayable", "superFunction": null, @@ -9159,7 +9448,7 @@ }, { "body": { - "id": 659, + "id": 679, "nodeType": "Block", "src": "846:46:2", "statements": [ @@ -9169,11 +9458,11 @@ "arguments": [ { "argumentTypes": null, - "id": 656, + "id": 676, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 650, + "referencedDeclaration": 670, "src": "876:7:2", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9190,32 +9479,32 @@ ], "expression": { "argumentTypes": null, - "id": 653, + "id": 673, "name": "_systemMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 594, + "referencedDeclaration": 614, "src": "857:14:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage", + "typeIdentifier": "t_struct$_Role_$817_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 655, + "id": 675, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 735, + "referencedDeclaration": 849, "src": "857:18:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$703_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$817_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$817_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 657, + "id": 677, "isConstant": false, "isLValue": false, "isPure": false, @@ -9229,14 +9518,14 @@ "typeString": "tuple()" } }, - "id": 658, + "id": 678, "nodeType": "ExpressionStatement", "src": "857:27:2" } ] }, "documentation": null, - "id": 660, + "id": 680, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -9244,15 +9533,15 @@ "name": "_addSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 651, + "id": 671, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 650, + "id": 670, "name": "account", "nodeType": "VariableDeclaration", - "scope": 660, + "scope": 680, "src": "820:15:2", "stateVariable": false, "storageLocation": "default", @@ -9261,7 +9550,7 @@ "typeString": "address" }, "typeName": { - "id": 649, + "id": 669, "name": "address", "nodeType": "ElementaryTypeName", "src": "820:7:2", @@ -9278,12 +9567,12 @@ }, "payable": false, "returnParameters": { - "id": 652, + "id": 672, "nodeType": "ParameterList", "parameters": [], "src": "846:0:2" }, - "scope": 673, + "scope": 693, "src": "800:92:2", "stateMutability": "nonpayable", "superFunction": null, @@ -9291,7 +9580,7 @@ }, { "body": { - "id": 671, + "id": 691, "nodeType": "Block", "src": "949:49:2", "statements": [ @@ -9301,11 +9590,11 @@ "arguments": [ { "argumentTypes": null, - "id": 668, + "id": 688, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 662, + "referencedDeclaration": 682, "src": "982:7:2", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9322,32 +9611,32 @@ ], "expression": { "argumentTypes": null, - "id": 665, + "id": 685, "name": "_systemMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 594, + "referencedDeclaration": 614, "src": "960:14:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage", + "typeIdentifier": "t_struct$_Role_$817_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 667, + "id": 687, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 766, + "referencedDeclaration": 880, "src": "960:21:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$703_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$817_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$817_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 669, + "id": 689, "isConstant": false, "isLValue": false, "isPure": false, @@ -9361,14 +9650,14 @@ "typeString": "tuple()" } }, - "id": 670, + "id": 690, "nodeType": "ExpressionStatement", "src": "960:30:2" } ] }, "documentation": null, - "id": 672, + "id": 692, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -9376,15 +9665,15 @@ "name": "_removeSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 663, + "id": 683, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 662, + "id": 682, "name": "account", "nodeType": "VariableDeclaration", - "scope": 672, + "scope": 692, "src": "923:15:2", "stateVariable": false, "storageLocation": "default", @@ -9393,7 +9682,7 @@ "typeString": "address" }, "typeName": { - "id": 661, + "id": 681, "name": "address", "nodeType": "ElementaryTypeName", "src": "923:7:2", @@ -9410,19 +9699,19 @@ }, "payable": false, "returnParameters": { - "id": 664, + "id": 684, "nodeType": "ParameterList", "parameters": [], "src": "949:0:2" }, - "scope": 673, + "scope": 693, "src": "900:98:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 674, + "scope": 694, "src": "221:780:2" } ], @@ -9430,19 +9719,19 @@ }, "id": 2 }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol": { "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol", "exportedSymbols": { - "IAlgoMiner": [ - 696 + "ERC20TokenHolder": [ + 750 ] }, - "id": 697, + "id": 751, "nodeType": "SourceUnit", "nodes": [ { - "id": 675, + "id": 695, "literals": [ "solidity", "0.4", @@ -9451,15 +9740,709 @@ "nodeType": "PragmaDirective", "src": "0:23:3" }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "id": 696, + "nodeType": "ImportDirective", + "scope": 751, + "sourceUnit": 1102, + "src": "27:195:3", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "id": 697, + "nodeType": "ImportDirective", + "scope": 751, + "sourceUnit": 1246, + "src": "224:198:3", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", + "file": "./Terminable.sol", + "id": 698, + "nodeType": "ImportDirective", + "scope": 751, + "sourceUnit": 811, + "src": "426:26:3", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 699, + "name": "Terminable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 810, + "src": "485:10:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Terminable_$810", + "typeString": "contract Terminable" + } + }, + "id": 700, + "nodeType": "InheritanceSpecifier", + "src": "485:10:3" + } + ], + "contractDependencies": [ + 810 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 750, + "linearizedBaseContracts": [ + 750, + 810 + ], + "name": "ERC20TokenHolder", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 703, + "libraryName": { + "contractScope": null, + "id": 701, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1245, + "src": "509:9:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$1245", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "503:27:3", + "typeName": { + "contractScope": null, + "id": 702, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1101, + "src": "523:6:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1101", + "typeString": "contract IERC20" + } + } + }, + { + "constant": false, + "id": 705, + "name": "_token", + "nodeType": "VariableDeclaration", + "scope": 750, + "src": "538:22:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1101", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 704, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1101, + "src": "538:6:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1101", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 718, + "nodeType": "Block", + "src": "625:48:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 712, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 705, + "src": "636:6:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1101", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 714, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 707, + "src": "652:12:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 713, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1101, + "src": "645:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$1101_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "645:20:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1101", + "typeString": "contract IERC20" + } + }, + "src": "636:29:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1101", + "typeString": "contract IERC20" + } + }, + "id": 717, + "nodeType": "ExpressionStatement", + "src": "636:29:3" + } + ] + }, + "documentation": null, + "id": 719, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 710, + "modifierName": { + "argumentTypes": null, + "id": 709, + "name": "Terminable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 810, + "src": "603:10:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Terminable_$810_$", + "typeString": "type(contract Terminable)" + } + }, + "nodeType": "ModifierInvocation", + "src": "603:12:3" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 708, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 707, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 719, + "src": "581:20:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 706, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "581:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "580:22:3" + }, + "payable": false, + "returnParameters": { + "id": 711, + "nodeType": "ParameterList", + "parameters": [], + "src": "625:0:3" + }, + "scope": 750, + "src": "569:104:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 748, + "nodeType": "Block", + "src": "712:214:3", + "statements": [ + { + "assignments": [ + 723 + ], + "declarations": [ + { + "constant": false, + "id": 723, + "name": "currentBalance", + "nodeType": "VariableDeclaration", + "scope": 749, + "src": "723:22:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 722, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "723:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 730, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 727, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1287, + "src": "773:4:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20TokenHolder_$750", + "typeString": "contract ERC20TokenHolder" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20TokenHolder_$750", + "typeString": "contract ERC20TokenHolder" + } + ], + "id": 726, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "765:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "765:13:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 724, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 705, + "src": "748:6:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1101", + "typeString": "contract IERC20" + } + }, + "id": 725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 1046, + "src": "748:16:3", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "748:31:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "723:56:3" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 731, + "name": "currentBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 723, + "src": "793:14:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 732, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "810:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "793:18:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 742, + "nodeType": "IfStatement", + "src": "790:95:3", + "trueBody": { + "id": 741, + "nodeType": "Block", + "src": "813:72:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 737, + "name": "_creator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 777, + "src": "848:8:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 738, + "name": "currentBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 723, + "src": "858:14:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 734, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 705, + "src": "828:6:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1101", + "typeString": "contract IERC20" + } + }, + "id": 736, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1126, + "src": "828:19:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1101_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1101_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "828:45:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 740, + "nodeType": "ExpressionStatement", + "src": "828:45:3" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 743, + "name": "Terminable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 810, + "src": "895:10:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Terminable_$810_$", + "typeString": "type(contract Terminable)" + } + }, + "id": 745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_terminate", + "nodeType": "MemberAccess", + "referencedDeclaration": 809, + "src": "895:21:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "895:23:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 747, + "nodeType": "ExpressionStatement", + "src": "895:23:3" + } + ] + }, + "documentation": null, + "id": 749, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_terminate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 720, + "nodeType": "ParameterList", + "parameters": [], + "src": "700:2:3" + }, + "payable": false, + "returnParameters": { + "id": 721, + "nodeType": "ParameterList", + "parameters": [], + "src": "712:0:3" + }, + "scope": 750, + "src": "681:245:3", + "stateMutability": "nonpayable", + "superFunction": 809, + "visibility": "internal" + } + ], + "scope": 751, + "src": "456:473:3" + } + ], + "src": "0:929:3" + }, + "id": 3 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", + "exportedSymbols": { + "IAlgoMiner": [ + 773 + ] + }, + "id": 774, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 752, + "literals": [ + "solidity", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:23:4" + }, { "baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 696, + "id": 773, "linearizedBaseContracts": [ - 696 + 773 ], "name": "IAlgoMiner", "nodeType": "ContractDefinition", @@ -9467,7 +10450,7 @@ { "body": null, "documentation": null, - "id": 680, + "id": 757, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -9475,23 +10458,23 @@ "name": "isAlgoMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 676, + "id": 753, "nodeType": "ParameterList", "parameters": [], - "src": "74:2:3" + "src": "74:2:4" }, "payable": false, "returnParameters": { - "id": 679, + "id": 756, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 678, + "id": 755, "name": "", "nodeType": "VariableDeclaration", - "scope": 680, - "src": "98:4:3", + "scope": 757, + "src": "98:4:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9499,10 +10482,10 @@ "typeString": "bool" }, "typeName": { - "id": 677, + "id": 754, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "98:4:3", + "src": "98:4:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9512,10 +10495,10 @@ "visibility": "internal" } ], - "src": "97:6:3" + "src": "97:6:4" }, - "scope": 696, - "src": "54:50:3", + "scope": 773, + "src": "54:50:4", "stateMutability": "pure", "superFunction": null, "visibility": "public" @@ -9523,7 +10506,7 @@ { "body": null, "documentation": null, - "id": 685, + "id": 762, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -9531,23 +10514,23 @@ "name": "getCategory", "nodeType": "FunctionDefinition", "parameters": { - "id": 681, + "id": 758, "nodeType": "ParameterList", "parameters": [], - "src": "130:2:3" + "src": "130:2:4" }, "payable": false, "returnParameters": { - "id": 684, + "id": 761, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 683, + "id": 760, "name": "", "nodeType": "VariableDeclaration", - "scope": 685, - "src": "154:5:3", + "scope": 762, + "src": "154:5:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9555,10 +10538,10 @@ "typeString": "uint8" }, "typeName": { - "id": 682, + "id": 759, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "154:5:3", + "src": "154:5:4", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -9568,10 +10551,10 @@ "visibility": "internal" } ], - "src": "153:7:3" + "src": "153:7:4" }, - "scope": 696, - "src": "110:51:3", + "scope": 773, + "src": "110:51:4", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -9579,7 +10562,7 @@ { "body": null, "documentation": null, - "id": 690, + "id": 767, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -9587,23 +10570,23 @@ "name": "isMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 686, + "id": 763, "nodeType": "ParameterList", "parameters": [], - "src": "184:2:3" + "src": "184:2:4" }, "payable": false, "returnParameters": { - "id": 689, + "id": 766, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 688, + "id": 765, "name": "", "nodeType": "VariableDeclaration", - "scope": 690, - "src": "208:4:3", + "scope": 767, + "src": "208:4:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9611,10 +10594,10 @@ "typeString": "bool" }, "typeName": { - "id": 687, + "id": 764, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "208:4:3", + "src": "208:4:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9624,10 +10607,10 @@ "visibility": "internal" } ], - "src": "207:6:3" + "src": "207:6:4" }, - "scope": 696, - "src": "167:47:3", + "scope": 773, + "src": "167:47:4", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -9635,7 +10618,7 @@ { "body": null, "documentation": null, - "id": 695, + "id": 772, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -9643,23 +10626,23 @@ "name": "getMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 691, + "id": 768, "nodeType": "ParameterList", "parameters": [], - "src": "237:2:3" + "src": "237:2:4" }, "payable": false, "returnParameters": { - "id": 694, + "id": 771, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 693, + "id": 770, "name": "", "nodeType": "VariableDeclaration", - "scope": 695, - "src": "261:7:3", + "scope": 772, + "src": "261:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9667,10 +10650,10 @@ "typeString": "address" }, "typeName": { - "id": 692, + "id": 769, "name": "address", "nodeType": "ElementaryTypeName", - "src": "261:7:3", + "src": "261:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9680,119 +10663,262 @@ "visibility": "internal" } ], - "src": "260:9:3" + "src": "260:9:4" }, - "scope": 696, - "src": "220:50:3", + "scope": 773, + "src": "220:50:4", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 697, - "src": "27:246:3" + "scope": 774, + "src": "27:246:4" } ], - "src": "0:273:3" + "src": "0:273:4" }, - "id": 3 + "id": 4 }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol": { "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", "exportedSymbols": { - "Roles": [ - 790 + "Terminable": [ + 810 ] }, - "id": 791, + "id": 811, "nodeType": "SourceUnit", "nodes": [ { - "id": 698, + "id": 775, "literals": [ "solidity", - "^", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:24:4" + "src": "0:23:5" }, { "baseContracts": [], "contractDependencies": [], - "contractKind": "library", - "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", + "contractKind": "contract", + "documentation": null, "fullyImplemented": true, - "id": 790, + "id": 810, "linearizedBaseContracts": [ - 790 + 810 ], - "name": "Roles", + "name": "Terminable", "nodeType": "ContractDefinition", "nodes": [ { - "canonicalName": "Roles.Role", - "id": 703, - "members": [ - { - "constant": false, - "id": 702, - "name": "bearer", - "nodeType": "VariableDeclaration", - "scope": 703, - "src": "145:32:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 701, - "keyType": { - "id": 699, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "154:7:4", + "constant": false, + "id": 777, + "name": "_creator", + "nodeType": "VariableDeclaration", + "scope": 810, + "src": "56:25:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 776, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "56:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 779, + "name": "_terminated", + "nodeType": "VariableDeclaration", + "scope": 810, + "src": "88:25:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 778, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "88:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 791, + "nodeType": "Block", + "src": "145:70:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 782, + "name": "_creator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 777, + "src": "156:8:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 783, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1260, + "src": "167:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "167:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "156:21:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "nodeType": "Mapping", - "src": "145:25:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 700, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "165:4:4", + "id": 786, + "nodeType": "ExpressionStatement", + "src": "156:21:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 787, + "name": "_terminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 779, + "src": "188:11:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 788, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "202:5:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "188:19:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } - } - }, - "value": null, - "visibility": "internal" - } - ], - "name": "Role", - "nodeType": "StructDefinition", - "scope": 790, - "src": "127:55:4", - "visibility": "public" + }, + "id": 790, + "nodeType": "ExpressionStatement", + "src": "188:19:5" + } + ] + }, + "documentation": null, + "id": 792, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 780, + "nodeType": "ParameterList", + "parameters": [], + "src": "133:2:5" + }, + "payable": false, + "returnParameters": { + "id": 781, + "nodeType": "ParameterList", + "parameters": [], + "src": "145:0:5" + }, + "scope": 810, + "src": "122:93:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" }, { "body": { - "id": 734, + "id": 800, "nodeType": "Block", - "src": "302:109:4", + "src": "248:52:5", "statements": [ { "expression": { @@ -9800,139 +10926,7 @@ "arguments": [ { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 715, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 711, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 707, - "src": "316:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 713, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "335:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 712, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "327:7:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 714, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "327:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "316:21:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 710, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1149, - 1150 - ], - "referencedDeclaration": 1149, - "src": "308:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 716, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "308:30:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 717, - "nodeType": "ExpressionStatement", - "src": "308:30:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 723, + "id": 796, "isConstant": false, "isLValue": false, "isPure": false, @@ -9940,68 +10934,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "352:19:4", + "src": "267:12:5", "subExpression": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 720, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 705, - "src": "357:4:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - { - "argumentTypes": null, - "id": 721, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 707, - "src": "363:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 719, - "name": "has", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 789, - "src": "353:3:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$_t_bool_$", - "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" - } - }, - "id": 722, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "353:18:4", + "id": 795, + "name": "_terminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 779, + "src": "268:11:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10020,21 +10961,21 @@ "typeString": "bool" } ], - "id": 718, + "id": 794, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "344:7:4", + "referencedDeclaration": 1263, + "src": "259:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 724, + "id": 797, "isConstant": false, "isLValue": false, "isPure": false, @@ -10042,75 +10983,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "344:28:4", + "src": "259:21:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 725, + "id": 798, "nodeType": "ExpressionStatement", - "src": "344:28:4" + "src": "259:21:5" }, + { + "id": 799, + "nodeType": "PlaceholderStatement", + "src": "291:1:5" + } + ] + }, + "documentation": null, + "id": 801, + "name": "notTerminated", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 793, + "nodeType": "ParameterList", + "parameters": [], + "src": "245:2:5" + }, + "src": "223:77:5", + "visibility": "internal" + }, + { + "body": { + "id": 808, + "nodeType": "Block", + "src": "339:37:5", + "statements": [ { "expression": { "argumentTypes": null, - "id": 732, + "id": 806, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 726, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 705, - "src": "379:4:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - "id": 729, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "bearer", - "nodeType": "MemberAccess", - "referencedDeclaration": 702, - "src": "379:11:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 730, - "indexExpression": { - "argumentTypes": null, - "id": 728, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 707, - "src": "391:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "379:20:4", + "id": 804, + "name": "_terminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 779, + "src": "350:11:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10121,14 +11045,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 731, + "id": 805, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "402:4:4", + "src": "364:4:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -10136,859 +11060,67 @@ }, "value": "true" }, - "src": "379:27:4", + "src": "350:18:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 733, + "id": 807, "nodeType": "ExpressionStatement", - "src": "379:27:4" + "src": "350:18:5" } ] }, - "documentation": "@dev give an account access to this role", - "id": 735, + "documentation": null, + "id": 809, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], - "name": "add", + "name": "_terminate", "nodeType": "FunctionDefinition", "parameters": { - "id": 708, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 705, - "name": "role", - "nodeType": "VariableDeclaration", - "scope": 735, - "src": "257:17:4", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", - "typeString": "struct Roles.Role" - }, - "typeName": { - "contractScope": null, - "id": 704, - "name": "Role", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 703, - "src": "257:4:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", - "typeString": "struct Roles.Role" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 707, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 735, - "src": "276:15:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 706, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "276:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "256:36:4" - }, - "payable": false, - "returnParameters": { - "id": 709, + "id": 802, "nodeType": "ParameterList", "parameters": [], - "src": "302:0:4" - }, - "scope": 790, - "src": "244:167:4", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 765, - "nodeType": "Block", - "src": "538:109:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 747, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 743, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 739, - "src": "552:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 745, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "571:1:4", - "subdenomination": null, - "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": 744, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "563:7:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 746, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "563:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "552:21:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 742, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1149, - 1150 - ], - "referencedDeclaration": 1149, - "src": "544:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 748, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "544:30:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 749, - "nodeType": "ExpressionStatement", - "src": "544:30:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 752, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 737, - "src": "592:4:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - { - "argumentTypes": null, - "id": 753, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 739, - "src": "598:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 751, - "name": "has", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 789, - "src": "588:3:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$_t_bool_$", - "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" - } - }, - "id": 754, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "588:18:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 750, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1149, - 1150 - ], - "referencedDeclaration": 1149, - "src": "580:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 755, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "580:27:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 756, - "nodeType": "ExpressionStatement", - "src": "580:27:4" - }, - { - "expression": { - "argumentTypes": null, - "id": 763, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 757, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 737, - "src": "614:4:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - "id": 760, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "bearer", - "nodeType": "MemberAccess", - "referencedDeclaration": 702, - "src": "614:11:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 761, - "indexExpression": { - "argumentTypes": null, - "id": 759, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 739, - "src": "626:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "614:20:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 762, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "637:5:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "614:28:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 764, - "nodeType": "ExpressionStatement", - "src": "614:28:4" - } - ] - }, - "documentation": "@dev remove an account's access to this role", - "id": 766, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "remove", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 740, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 737, - "name": "role", - "nodeType": "VariableDeclaration", - "scope": 766, - "src": "493:17:4", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", - "typeString": "struct Roles.Role" - }, - "typeName": { - "contractScope": null, - "id": 736, - "name": "Role", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 703, - "src": "493:4:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", - "typeString": "struct Roles.Role" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 739, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 766, - "src": "512:15:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 738, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "512:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "492:36:4" + "src": "327:2:5" }, "payable": false, "returnParameters": { - "id": 741, + "id": 803, "nodeType": "ParameterList", "parameters": [], - "src": "538:0:4" + "src": "339:0:5" }, - "scope": 790, - "src": "477:170:4", + "scope": 810, + "src": "308:68:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" - }, - { - "body": { - "id": 788, - "nodeType": "Block", - "src": "817:74:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 780, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 776, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 770, - "src": "831:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 778, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "850:1:4", - "subdenomination": null, - "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": 777, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "842:7:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 779, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "842:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "831:21:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 775, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1149, - 1150 - ], - "referencedDeclaration": 1149, - "src": "823:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 781, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "823:30:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 782, - "nodeType": "ExpressionStatement", - "src": "823:30:4" - }, - { - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 783, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 768, - "src": "866:4:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - "id": 784, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "bearer", - "nodeType": "MemberAccess", - "referencedDeclaration": 702, - "src": "866:11:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 786, - "indexExpression": { - "argumentTypes": null, - "id": 785, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 770, - "src": "878:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "866:20:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 774, - "id": 787, - "nodeType": "Return", - "src": "859:27:4" - } - ] - }, - "documentation": "@dev check if an account has this role\n@return bool", - "id": 789, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "has", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 771, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 768, - "name": "role", - "nodeType": "VariableDeclaration", - "scope": 789, - "src": "738:17:4", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", - "typeString": "struct Roles.Role" - }, - "typeName": { - "contractScope": null, - "id": 767, - "name": "Role", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 703, - "src": "738:4:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", - "typeString": "struct Roles.Role" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 770, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 789, - "src": "757:15:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 769, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "757:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "737:36:4" - }, - "payable": false, - "returnParameters": { - "id": 774, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 773, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 789, - "src": "809:4:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 772, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "809:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "808:6:4" - }, - "scope": 790, - "src": "725:166:4", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" } ], - "scope": 791, - "src": "109:784:4" + "scope": 811, + "src": "27:352:5" } ], - "src": "0:894:4" + "src": "0:379:5" }, - "id": 4 + "id": 5 }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "exportedSymbols": { - "SafeMath": [ - 918 + "Roles": [ + 904 ] }, - "id": 919, + "id": 905, "nodeType": "SourceUnit", "nodes": [ { - "id": 792, + "id": 812, "literals": [ "solidity", "^", @@ -10996,195 +11128,83 @@ ".24" ], "nodeType": "PragmaDirective", - "src": "0:24:5" + "src": "0:24:6" }, { "baseContracts": [], "contractDependencies": [], "contractKind": "library", - "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", + "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", "fullyImplemented": true, - "id": 918, + "id": 904, "linearizedBaseContracts": [ - 918 + 904 ], - "name": "SafeMath", + "name": "Roles", "nodeType": "ContractDefinition", "nodes": [ { - "body": { - "id": 824, - "nodeType": "Block", - "src": "271:314:5", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 803, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 801, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "486:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 802, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "491:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "486:6:5", + "canonicalName": "Roles.Role", + "id": 817, + "members": [ + { + "constant": false, + "id": 816, + "name": "bearer", + "nodeType": "VariableDeclaration", + "scope": 817, + "src": "145:32:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 815, + "keyType": { + "id": 813, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "154:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "145:25:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 814, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "165:4:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } - }, - "falseBody": null, - "id": 807, - "nodeType": "IfStatement", - "src": "482:35:5", - "trueBody": { - "id": 806, - "nodeType": "Block", - "src": "494:23:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "hexValue": "30", - "id": 804, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "509:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "functionReturnParameters": 800, - "id": 805, - "nodeType": "Return", - "src": "502:8:5" - } - ] } }, - { - "assignments": [ - 809 - ], - "declarations": [ - { - "constant": false, - "id": 809, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 825, - "src": "523:9:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 808, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "523:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 813, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 812, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 810, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "535:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "id": 811, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 796, - "src": "539:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "535:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "523:17:5" - }, + "value": null, + "visibility": "internal" + } + ], + "name": "Role", + "nodeType": "StructDefinition", + "scope": 904, + "src": "127:55:6", + "visibility": "public" + }, + { + "body": { + "id": 848, + "nodeType": "Block", + "src": "302:109:6", + "statements": [ { "expression": { "argumentTypes": null, @@ -11192,75 +11212,86 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 819, + "id": 829, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 817, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 815, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 809, - "src": "554:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "id": 816, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "558:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "554:5:5", + "id": 825, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 821, + "src": "316:7:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "BinaryOperation", - "operator": "==", + "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 818, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 796, - "src": "563:1:5", + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 827, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "335:1:6", + "subdenomination": null, + "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": 826, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "327:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 828, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "327:10:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "src": "554:10:5", + "src": "316:21:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11274,21 +11305,21 @@ "typeString": "bool" } ], - "id": 814, + "id": 824, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "546:7:5", + "referencedDeclaration": 1263, + "src": "308:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 820, + "id": 830, "isConstant": false, "isLValue": false, "isPure": false, @@ -11296,199 +11327,97 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "546:19:5", + "src": "308:30:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 821, + "id": 831, "nodeType": "ExpressionStatement", - "src": "546:19:5" + "src": "308:30:6" }, - { - "expression": { - "argumentTypes": null, - "id": 822, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 809, - "src": "579:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 800, - "id": 823, - "nodeType": "Return", - "src": "572:8:5" - } - ] - }, - "documentation": "@dev Multiplies two numbers, reverts on overflow.", - "id": 825, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "mul", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 797, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 794, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 825, - "src": "217:9:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 793, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "217:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 796, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 825, - "src": "228:9:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 795, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "228:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "216:22:5" - }, - "payable": false, - "returnParameters": { - "id": 800, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 799, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 825, - "src": "262:7:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 798, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "262:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "261:9:5" - }, - "scope": 918, - "src": "204:381:5", - "stateMutability": "pure", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 848, - "nodeType": "Block", - "src": "762:203:5", - "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, "id": 837, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftExpression": { + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "352:19:6", + "subExpression": { "argumentTypes": null, - "id": 835, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 829, - "src": "776:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", + "arguments": [ + { + "argumentTypes": null, + "id": 834, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 819, + "src": "357:4:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 835, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 821, + "src": "363:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 833, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 903, + "src": "353:3:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$817_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, "id": 836, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "number", + "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "nodeType": "Literal", - "src": "780:1:5", - "subdenomination": null, + "names": [], + "nodeType": "FunctionCall", + "src": "353:18:6", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_bool", + "typeString": "bool" + } }, - "src": "776:5:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11502,15 +11431,15 @@ "typeString": "bool" } ], - "id": 834, + "id": 832, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "768:7:5", + "referencedDeclaration": 1263, + "src": "344:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -11524,7 +11453,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "768:14:5", + "src": "344:28:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -11532,143 +11461,139 @@ }, "id": 839, "nodeType": "ExpressionStatement", - "src": "768:14:5" - }, - { - "assignments": [ - 841 - ], - "declarations": [ - { - "constant": false, - "id": 841, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 849, - "src": "846:9:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 840, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "846:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 845, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 844, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 842, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 827, - "src": "858:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "id": 843, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 829, - "src": "862:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "858:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "846:17:5" + "src": "344:28:6" }, { "expression": { "argumentTypes": null, "id": 846, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 841, - "src": "959:1:5", + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 840, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 819, + "src": "379:4:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 843, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 816, + "src": "379:11:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 844, + "indexExpression": { + "argumentTypes": null, + "id": 842, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 821, + "src": "391:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "379:20:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 845, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "402:4:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "379:27:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "functionReturnParameters": 833, "id": 847, - "nodeType": "Return", - "src": "952:8:5" + "nodeType": "ExpressionStatement", + "src": "379:27:6" } ] }, - "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", + "documentation": "@dev give an account access to this role", "id": 849, "implemented": true, "isConstructor": false, - "isDeclaredConst": true, + "isDeclaredConst": false, "modifiers": [], - "name": "div", + "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 830, + "id": 822, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 827, - "name": "a", + "id": 819, + "name": "role", "nodeType": "VariableDeclaration", "scope": 849, - "src": "708:9:5", + "src": "257:17:6", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeString": "struct Roles.Role" }, "typeName": { - "id": 826, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "708:7:5", + "contractScope": null, + "id": 818, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 817, + "src": "257:4:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeString": "struct Roles.Role" } }, "value": null, @@ -11676,78 +11601,51 @@ }, { "constant": false, - "id": 829, - "name": "b", + "id": 821, + "name": "account", "nodeType": "VariableDeclaration", "scope": 849, - "src": "719:9:5", + "src": "276:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 828, - "name": "uint256", + "id": 820, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "719:7:5", + "src": "276:7:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "value": null, "visibility": "internal" } ], - "src": "707:22:5" + "src": "256:36:6" }, "payable": false, "returnParameters": { - "id": 833, + "id": 823, "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 832, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 849, - "src": "753:7:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 831, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "753:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "752:9:5" + "parameters": [], + "src": "302:0:6" }, - "scope": 918, - "src": "695:270:5", - "stateMutability": "pure", + "scope": 904, + "src": "244:167:6", + "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 872, + "id": 879, "nodeType": "Block", - "src": "1145:64:5", + "src": "538:109:6", "statements": [ { "expression": { @@ -11756,8 +11654,8 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "id": 861, "isConstant": false, @@ -11766,33 +11664,76 @@ "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 859, - "name": "b", + "id": 857, + "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 853, - "src": "1159:1:5", + "src": "552:7:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "BinaryOperation", - "operator": "<=", + "operator": "!=", "rightExpression": { "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 859, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "571:1:6", + "subdenomination": null, + "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": 858, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "563:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, "id": 860, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 851, - "src": "1164:1:5", + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "563:10:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "src": "1159:6:5", + "src": "552:21:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11806,15 +11747,15 @@ "typeString": "bool" } ], - "id": 858, + "id": 856, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "1151:7:5", + "referencedDeclaration": 1263, + "src": "544:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -11828,7 +11769,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1151:15:5", + "src": "544:30:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -11836,117 +11777,221 @@ }, "id": 863, "nodeType": "ExpressionStatement", - "src": "1151:15:5" - }, - { - "assignments": [ - 865 - ], - "declarations": [ - { - "constant": false, - "id": 865, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 873, - "src": "1172:9:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 864, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1172:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 869, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 868, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 866, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 851, - "src": "1184:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 867, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 853, - "src": "1188:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1184:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1172:17:5" + "src": "544:30:6" }, { "expression": { "argumentTypes": null, - "id": 870, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 865, - "src": "1203:1:5", + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 866, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 851, + "src": "592:4:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 867, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 853, + "src": "598:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 865, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 903, + "src": "588:3:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$817_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "588:18:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 864, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1263, + 1264 + ], + "referencedDeclaration": 1263, + "src": "580:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 869, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "580:27:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "functionReturnParameters": 857, - "id": 871, - "nodeType": "Return", - "src": "1196:8:5" + "id": 870, + "nodeType": "ExpressionStatement", + "src": "580:27:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 877, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 871, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 851, + "src": "614:4:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 874, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 816, + "src": "614:11:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 875, + "indexExpression": { + "argumentTypes": null, + "id": 873, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 853, + "src": "626:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "614:20:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 876, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "637:5:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "614:28:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 878, + "nodeType": "ExpressionStatement", + "src": "614:28:6" } ] }, - "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", - "id": 873, + "documentation": "@dev remove an account's access to this role", + "id": 880, "implemented": true, "isConstructor": false, - "isDeclaredConst": true, + "isDeclaredConst": false, "modifiers": [], - "name": "sub", + "name": "remove", "nodeType": "FunctionDefinition", "parameters": { "id": 854, @@ -11955,24 +12000,26 @@ { "constant": false, "id": 851, - "name": "a", + "name": "role", "nodeType": "VariableDeclaration", - "scope": 873, - "src": "1091:9:5", + "scope": 880, + "src": "493:17:6", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeString": "struct Roles.Role" }, "typeName": { + "contractScope": null, "id": 850, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1091:7:5", + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 817, + "src": "493:4:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeString": "struct Roles.Role" } }, "value": null, @@ -11981,159 +12028,51 @@ { "constant": false, "id": 853, - "name": "b", + "name": "account", "nodeType": "VariableDeclaration", - "scope": 873, - "src": "1102:9:5", + "scope": 880, + "src": "512:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { "id": 852, - "name": "uint256", + "name": "address", "nodeType": "ElementaryTypeName", - "src": "1102:7:5", + "src": "512:7:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "value": null, "visibility": "internal" } ], - "src": "1090:22:5" + "src": "492:36:6" }, "payable": false, "returnParameters": { - "id": 857, + "id": 855, "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 856, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 873, - "src": "1136:7:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 855, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1136:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1135:9:5" + "parameters": [], + "src": "538:0:6" }, - "scope": 918, - "src": "1078:131:5", - "stateMutability": "pure", + "scope": 904, + "src": "477:170:6", + "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 896, + "id": 902, "nodeType": "Block", - "src": "1339:64:5", + "src": "817:74:6", "statements": [ - { - "assignments": [ - 883 - ], - "declarations": [ - { - "constant": false, - "id": 883, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 897, - "src": "1345:9:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 882, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1345:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 887, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 886, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 884, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 875, - "src": "1357:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 885, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 877, - "src": "1361:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1357:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1345:17:5" - }, { "expression": { "argumentTypes": null, @@ -12141,271 +12080,86 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 891, + "id": 894, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "argumentTypes": null, - "id": 889, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 883, - "src": "1376:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { "argumentTypes": null, "id": 890, - "name": "a", + "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 875, - "src": "1381:1:5", + "referencedDeclaration": 884, + "src": "831:7:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1376:6:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 888, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1149, - 1150 - ], - "referencedDeclaration": 1149, - "src": "1368:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 892, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1368:15:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 893, - "nodeType": "ExpressionStatement", - "src": "1368:15:5" - }, - { - "expression": { - "argumentTypes": null, - "id": 894, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 883, - "src": "1397:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 881, - "id": 895, - "nodeType": "Return", - "src": "1390:8:5" - } - ] - }, - "documentation": "@dev Adds two numbers, reverts on overflow.", - "id": 897, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "add", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 878, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 875, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 897, - "src": "1285:9:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 874, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1285:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 877, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 897, - "src": "1296:9:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 876, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1296:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1284:22:5" - }, - "payable": false, - "returnParameters": { - "id": 881, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 880, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 897, - "src": "1330:7:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 879, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1330:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1329:9:5" - }, - "scope": 918, - "src": "1272:131:5", - "stateMutability": "pure", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 916, - "nodeType": "Block", - "src": "1602:44:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 909, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 907, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 901, - "src": "1616:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, - "hexValue": "30", - "id": 908, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 892, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "850:1:6", + "subdenomination": null, + "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": 891, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "842:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 893, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", + "kind": "typeConversion", "lValueRequested": false, - "nodeType": "Literal", - "src": "1621:1:5", - "subdenomination": null, + "names": [], + "nodeType": "FunctionCall", + "src": "842:10:6", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "src": "1616:6:5", + "src": "831:21:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -12419,21 +12173,21 @@ "typeString": "bool" } ], - "id": 906, + "id": 889, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "1608:7:5", + "referencedDeclaration": 1263, + "src": "823:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 910, + "id": 895, "isConstant": false, "isLValue": false, "isPure": false, @@ -12441,102 +12195,115 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1608:15:5", + "src": "823:30:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 911, + "id": 896, "nodeType": "ExpressionStatement", - "src": "1608:15:5" + "src": "823:30:6" }, { "expression": { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 897, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 882, + "src": "866:4:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 898, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 816, + "src": "866:11:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 900, + "indexExpression": { + "argumentTypes": null, + "id": 899, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 884, + "src": "878:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "id": 914, "isConstant": false, - "isLValue": false, + "isLValue": true, "isPure": false, "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 912, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 899, - "src": "1636:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "argumentTypes": null, - "id": 913, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 901, - "src": "1640:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1636:5:5", + "nodeType": "IndexAccess", + "src": "866:20:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "functionReturnParameters": 905, - "id": 915, + "functionReturnParameters": 888, + "id": 901, "nodeType": "Return", - "src": "1629:12:5" + "src": "859:27:6" } ] }, - "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", - "id": 917, + "documentation": "@dev check if an account has this role\n@return bool", + "id": 903, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], - "name": "mod", + "name": "has", "nodeType": "FunctionDefinition", "parameters": { - "id": 902, + "id": 885, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 899, - "name": "a", + "id": 882, + "name": "role", "nodeType": "VariableDeclaration", - "scope": 917, - "src": "1548:9:5", + "scope": 903, + "src": "738:17:6", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeString": "struct Roles.Role" }, "typeName": { - "id": 898, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1548:7:5", + "contractScope": null, + "id": 881, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 817, + "src": "738:4:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeString": "struct Roles.Role" } }, "value": null, @@ -12544,932 +12311,95 @@ }, { "constant": false, - "id": 901, - "name": "b", + "id": 884, + "name": "account", "nodeType": "VariableDeclaration", - "scope": 917, - "src": "1559:9:5", + "scope": 903, + "src": "757:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 900, - "name": "uint256", + "id": 883, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "1559:7:5", + "src": "757:7:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "value": null, "visibility": "internal" } ], - "src": "1547:22:5" + "src": "737:36:6" }, "payable": false, "returnParameters": { - "id": 905, + "id": 888, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 904, + "id": 887, "name": "", "nodeType": "VariableDeclaration", - "scope": 917, - "src": "1593:7:5", + "scope": 903, + "src": "809:4:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" }, "typeName": { - "id": 903, - "name": "uint256", + "id": 886, + "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1593:7:5", + "src": "809:4:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, "value": null, "visibility": "internal" } ], - "src": "1592:9:5" + "src": "808:6:6" }, - "scope": 918, - "src": "1535:111:5", - "stateMutability": "pure", + "scope": 904, + "src": "725:166:6", + "stateMutability": "view", "superFunction": null, "visibility": "internal" } ], - "scope": 919, - "src": "117:1531:5" + "scope": 905, + "src": "109:784:6" } ], - "src": "0:1649:5" - }, - "id": 5 - }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol": { - "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "exportedSymbols": { - "IERC20": [ - 987 - ] - }, - "id": 988, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 920, - "literals": [ - "solidity", - "^", - "0.4", - ".24" - ], - "nodeType": "PragmaDirective", - "src": "0:24:6" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "interface", - "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", - "fullyImplemented": false, - "id": 987, - "linearizedBaseContracts": [ - 987 - ], - "name": "IERC20", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": null, - "documentation": null, - "id": 925, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "totalSupply", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 921, - "nodeType": "ParameterList", - "parameters": [], - "src": "156:2:6" - }, - "payable": false, - "returnParameters": { - "id": 924, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 923, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 925, - "src": "182:7:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 922, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "182:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "181:9:6" - }, - "scope": 987, - "src": "136:55:6", - "stateMutability": "view", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 932, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "balanceOf", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 928, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 927, - "name": "who", - "nodeType": "VariableDeclaration", - "scope": 932, - "src": "214:11:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 926, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "214:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "213:13:6" - }, - "payable": false, - "returnParameters": { - "id": 931, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 930, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 932, - "src": "250:7:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 929, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "250:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "249:9:6" - }, - "scope": 987, - "src": "195:64:6", - "stateMutability": "view", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 941, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "allowance", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 937, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 934, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 941, - "src": "282:13:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 933, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "282:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 936, - "name": "spender", - "nodeType": "VariableDeclaration", - "scope": 941, - "src": "297:15:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 935, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "297:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "281:32:6" - }, - "payable": false, - "returnParameters": { - "id": 940, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 939, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 941, - "src": "341:7:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 938, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "341:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "340:9:6" - }, - "scope": 987, - "src": "263:87:6", - "stateMutability": "view", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 950, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "transfer", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 946, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 943, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 950, - "src": "372:10:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 942, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "372:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 945, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 950, - "src": "384:13:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 944, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "384:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "371:27:6" - }, - "payable": false, - "returnParameters": { - "id": 949, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 948, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 950, - "src": "417:4:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 947, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "417:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "416:6:6" - }, - "scope": 987, - "src": "354:69:6", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 959, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "approve", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 955, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 952, - "name": "spender", - "nodeType": "VariableDeclaration", - "scope": 959, - "src": "444:15:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 951, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "444:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 954, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 959, - "src": "461:13:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 953, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "461:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "443:32:6" - }, - "payable": false, - "returnParameters": { - "id": 958, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 957, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 959, - "src": "498:4:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 956, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "498:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "497:6:6" - }, - "scope": 987, - "src": "427:77:6", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 970, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "transferFrom", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 966, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 961, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 970, - "src": "530:12:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 960, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "530:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 963, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 970, - "src": "544:10:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 962, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "544:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 965, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 970, - "src": "556:13:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 964, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "556:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "529:41:6" - }, - "payable": false, - "returnParameters": { - "id": 969, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 968, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 970, - "src": "593:4:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 967, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "593:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "592:6:6" - }, - "scope": 987, - "src": "508:91:6", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" - }, - { - "anonymous": false, - "documentation": null, - "id": 978, - "name": "Transfer", - "nodeType": "EventDefinition", - "parameters": { - "id": 977, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 972, - "indexed": true, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 978, - "src": "623:20:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 971, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "623:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 974, - "indexed": true, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 978, - "src": "649:18:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 973, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "649:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 976, - "indexed": false, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 978, - "src": "673:13:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 975, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "673:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "617:73:6" - }, - "src": "603:88:6" - }, - { - "anonymous": false, - "documentation": null, - "id": 986, - "name": "Approval", - "nodeType": "EventDefinition", - "parameters": { - "id": 985, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 980, - "indexed": true, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 986, - "src": "715:21:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 979, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "715:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 982, - "indexed": true, - "name": "spender", - "nodeType": "VariableDeclaration", - "scope": 986, - "src": "742:23:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 981, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "742:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 984, - "indexed": false, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 986, - "src": "771:13:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 983, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "771:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "709:79:6" - }, - "src": "695:94:6" - } - ], - "scope": 988, - "src": "115:676:6" - } - ], - "src": "0:792:6" + "src": "0:894:6" }, "id": 6 }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "exportedSymbols": { - "SafeERC20": [ - 1131 + "SafeMath": [ + 1032 ] }, - "id": 1132, + "id": 1033, "nodeType": "SourceUnit", "nodes": [ { - "id": 989, + "id": 906, "literals": [ "solidity", "^", @@ -13479,25 +12409,2506 @@ "nodeType": "PragmaDirective", "src": "0:24:7" }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", + "fullyImplemented": true, + "id": 1032, + "linearizedBaseContracts": [ + 1032 + ], + "name": "SafeMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 938, + "nodeType": "Block", + "src": "271:314:7", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 917, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 915, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "486:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 916, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "491:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "486:6:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 921, + "nodeType": "IfStatement", + "src": "482:35:7", + "trueBody": { + "id": 920, + "nodeType": "Block", + "src": "494:23:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 918, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "509:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 914, + "id": 919, + "nodeType": "Return", + "src": "502:8:7" + } + ] + } + }, + { + "assignments": [ + 923 + ], + "declarations": [ + { + "constant": false, + "id": 923, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 939, + "src": "523:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 922, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "523:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 927, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 924, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "535:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 925, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 910, + "src": "539:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "535:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "523:17:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 933, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 929, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 923, + "src": "554:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 930, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "558:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "554:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 932, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 910, + "src": "563:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "554:10:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 928, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1263, + 1264 + ], + "referencedDeclaration": 1263, + "src": "546:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "546:19:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 935, + "nodeType": "ExpressionStatement", + "src": "546:19:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 936, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 923, + "src": "579:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 914, + "id": 937, + "nodeType": "Return", + "src": "572:8:7" + } + ] + }, + "documentation": "@dev Multiplies two numbers, reverts on overflow.", + "id": 939, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "mul", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 911, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 908, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 939, + "src": "217:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 907, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "217:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 910, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 939, + "src": "228:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 909, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "228:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "216:22:7" + }, + "payable": false, + "returnParameters": { + "id": 914, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 913, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 939, + "src": "262:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 912, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "262:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "261:9:7" + }, + "scope": 1032, + "src": "204:381:7", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 962, + "nodeType": "Block", + "src": "762:203:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 949, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 943, + "src": "776:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 950, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "780:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "776:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 948, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1263, + 1264 + ], + "referencedDeclaration": 1263, + "src": "768:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 952, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "768:14:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 953, + "nodeType": "ExpressionStatement", + "src": "768:14:7" + }, + { + "assignments": [ + 955 + ], + "declarations": [ + { + "constant": false, + "id": 955, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "846:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 954, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "846:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 959, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 956, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 941, + "src": "858:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 957, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 943, + "src": "862:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "858:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "846:17:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 960, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 955, + "src": "959:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 947, + "id": 961, + "nodeType": "Return", + "src": "952:8:7" + } + ] + }, + "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", + "id": 963, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 944, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 941, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "708:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 940, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "708:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 943, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "719:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 942, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "719:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "707:22:7" + }, + "payable": false, + "returnParameters": { + "id": 947, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 946, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "753:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 945, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "753:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "752:9:7" + }, + "scope": 1032, + "src": "695:270:7", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 986, + "nodeType": "Block", + "src": "1145:64:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 973, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 967, + "src": "1159:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 974, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 965, + "src": "1164:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1159:6:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 972, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1263, + 1264 + ], + "referencedDeclaration": 1263, + "src": "1151:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1151:15:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 977, + "nodeType": "ExpressionStatement", + "src": "1151:15:7" + }, + { + "assignments": [ + 979 + ], + "declarations": [ + { + "constant": false, + "id": 979, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 987, + "src": "1172:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 978, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1172:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 983, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 980, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 965, + "src": "1184:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 981, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 967, + "src": "1188:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1184:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1172:17:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 984, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 979, + "src": "1203:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 971, + "id": 985, + "nodeType": "Return", + "src": "1196:8:7" + } + ] + }, + "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", + "id": 987, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 968, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 965, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 987, + "src": "1091:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 964, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1091:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 967, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 987, + "src": "1102:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 966, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1102:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1090:22:7" + }, + "payable": false, + "returnParameters": { + "id": 971, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 970, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 987, + "src": "1136:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 969, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1136:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1135:9:7" + }, + "scope": 1032, + "src": "1078:131:7", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1010, + "nodeType": "Block", + "src": "1339:64:7", + "statements": [ + { + "assignments": [ + 997 + ], + "declarations": [ + { + "constant": false, + "id": 997, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 1011, + "src": "1345:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 996, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1345:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1001, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1000, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 998, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 989, + "src": "1357:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 999, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 991, + "src": "1361:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1357:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1345:17:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1005, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1003, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 997, + "src": "1376:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 1004, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 989, + "src": "1381:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1376:6:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1002, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1263, + 1264 + ], + "referencedDeclaration": 1263, + "src": "1368:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1006, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1368:15:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1007, + "nodeType": "ExpressionStatement", + "src": "1368:15:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1008, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 997, + "src": "1397:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 995, + "id": 1009, + "nodeType": "Return", + "src": "1390:8:7" + } + ] + }, + "documentation": "@dev Adds two numbers, reverts on overflow.", + "id": 1011, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 992, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 989, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 1011, + "src": "1285:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 988, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1285:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 991, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 1011, + "src": "1296:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 990, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1296:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1284:22:7" + }, + "payable": false, + "returnParameters": { + "id": 995, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 994, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1011, + "src": "1330:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 993, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1330:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1329:9:7" + }, + "scope": 1032, + "src": "1272:131:7", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1030, + "nodeType": "Block", + "src": "1602:44:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1021, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1015, + "src": "1616:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1022, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1621:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1616:6:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1020, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1263, + 1264 + ], + "referencedDeclaration": 1263, + "src": "1608:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1608:15:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1025, + "nodeType": "ExpressionStatement", + "src": "1608:15:7" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1026, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1013, + "src": "1636:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "id": 1027, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1015, + "src": "1640:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1636:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1019, + "id": 1029, + "nodeType": "Return", + "src": "1629:12:7" + } + ] + }, + "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", + "id": 1031, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "mod", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1016, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1013, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 1031, + "src": "1548:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1012, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1548:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1015, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 1031, + "src": "1559:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1014, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1559:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1547:22:7" + }, + "payable": false, + "returnParameters": { + "id": 1019, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1018, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1031, + "src": "1593:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1017, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1593:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1592:9:7" + }, + "scope": 1032, + "src": "1535:111:7", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 1033, + "src": "117:1531:7" + } + ], + "src": "0:1649:7" + }, + "id": 7 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "exportedSymbols": { + "IERC20": [ + 1101 + ] + }, + "id": 1102, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1034, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:8" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", + "fullyImplemented": false, + "id": 1101, + "linearizedBaseContracts": [ + 1101 + ], + "name": "IERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 1039, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1035, + "nodeType": "ParameterList", + "parameters": [], + "src": "156:2:8" + }, + "payable": false, + "returnParameters": { + "id": 1038, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1037, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1039, + "src": "182:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1036, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "182:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "181:9:8" + }, + "scope": 1101, + "src": "136:55:8", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1046, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1042, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1041, + "name": "who", + "nodeType": "VariableDeclaration", + "scope": 1046, + "src": "214:11:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1040, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "214:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "213:13:8" + }, + "payable": false, + "returnParameters": { + "id": 1045, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1044, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1046, + "src": "250:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1043, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "250:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "249:9:8" + }, + "scope": 1101, + "src": "195:64:8", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1055, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1051, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1048, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1055, + "src": "282:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1047, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "282:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1050, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1055, + "src": "297:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1049, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "297:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "281:32:8" + }, + "payable": false, + "returnParameters": { + "id": 1054, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1053, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1055, + "src": "341:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1052, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "341:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "340:9:8" + }, + "scope": 1101, + "src": "263:87:8", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1064, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1060, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1057, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1064, + "src": "372:10:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1056, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "372:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1059, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1064, + "src": "384:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1058, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "384:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "371:27:8" + }, + "payable": false, + "returnParameters": { + "id": 1063, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1062, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1064, + "src": "417:4:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1061, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "417:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "416:6:8" + }, + "scope": 1101, + "src": "354:69:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1073, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1069, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1066, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1073, + "src": "444:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1065, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "444:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1068, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1073, + "src": "461:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1067, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "461:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "443:32:8" + }, + "payable": false, + "returnParameters": { + "id": 1072, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1071, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1073, + "src": "498:4:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1070, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "498:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "497:6:8" + }, + "scope": 1101, + "src": "427:77:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1084, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1080, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1075, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 1084, + "src": "530:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1074, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "530:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1077, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1084, + "src": "544:10:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1076, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "544:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1079, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1084, + "src": "556:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1078, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "556:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "529:41:8" + }, + "payable": false, + "returnParameters": { + "id": 1083, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1082, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1084, + "src": "593:4:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1081, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "593:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "592:6:8" + }, + "scope": 1101, + "src": "508:91:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": null, + "id": 1092, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 1091, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1086, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 1092, + "src": "623:20:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1085, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "623:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1088, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1092, + "src": "649:18:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1087, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "649:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1090, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1092, + "src": "673:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1089, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "673:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "617:73:8" + }, + "src": "603:88:8" + }, + { + "anonymous": false, + "documentation": null, + "id": 1100, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 1099, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1094, + "indexed": true, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1100, + "src": "715:21:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1093, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "715:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1096, + "indexed": true, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1100, + "src": "742:23:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1095, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "742:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1098, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1100, + "src": "771:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1097, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "771:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "709:79:8" + }, + "src": "695:94:8" + } + ], + "scope": 1102, + "src": "115:676:8" + } + ], + "src": "0:792:8" + }, + "id": 8 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "exportedSymbols": { + "SafeERC20": [ + 1245 + ] + }, + "id": 1246, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1103, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:9" + }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "./IERC20.sol", - "id": 990, + "id": 1104, "nodeType": "ImportDirective", - "scope": 1132, - "sourceUnit": 988, - "src": "26:22:7", + "scope": 1246, + "sourceUnit": 1102, + "src": "26:22:9", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "file": "../../math/SafeMath.sol", - "id": 991, + "id": 1105, "nodeType": "ImportDirective", - "scope": 1132, - "sourceUnit": 919, - "src": "49:33:7", + "scope": 1246, + "sourceUnit": 1033, + "src": "49:33:9", "symbolAliases": [], "unitAlias": "" }, @@ -13507,34 +14918,34 @@ "contractKind": "library", "documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.", "fullyImplemented": true, - "id": 1131, + "id": 1245, "linearizedBaseContracts": [ - 1131 + 1245 ], "name": "SafeERC20", "nodeType": "ContractDefinition", "nodes": [ { - "id": 994, + "id": 1108, "libraryName": { "contractScope": null, - "id": 992, + "id": 1106, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 918, - "src": "382:8:7", + "referencedDeclaration": 1032, + "src": "382:8:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$918", + "typeIdentifier": "t_contract$_SafeMath_$1032", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", - "src": "376:27:7", + "src": "376:27:9", "typeName": { - "id": 993, + "id": 1107, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "395:7:7", + "src": "395:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13543,9 +14954,9 @@ }, { "body": { - "id": 1011, + "id": 1125, "nodeType": "Block", - "src": "501:45:7", + "src": "501:45:9", "statements": [ { "expression": { @@ -13556,12 +14967,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1006, + "id": 1120, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 998, - "src": "530:2:7", + "referencedDeclaration": 1112, + "src": "530:2:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13569,12 +14980,12 @@ }, { "argumentTypes": null, - "id": 1007, + "id": 1121, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1000, - "src": "534:5:7", + "referencedDeclaration": 1114, + "src": "534:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13594,32 +15005,32 @@ ], "expression": { "argumentTypes": null, - "id": 1004, + "id": 1118, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 996, - "src": "515:5:7", + "referencedDeclaration": 1110, + "src": "515:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, - "id": 1005, + "id": 1119, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", - "referencedDeclaration": 950, - "src": "515:14:7", + "referencedDeclaration": 1064, + "src": "515:14:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1008, + "id": 1122, "isConstant": false, "isLValue": false, "isPure": false, @@ -13627,7 +15038,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "515:25:7", + "src": "515:25:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -13641,21 +15052,21 @@ "typeString": "bool" } ], - "id": 1003, + "id": 1117, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "507:7:7", + "referencedDeclaration": 1263, + "src": "507:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1009, + "id": 1123, "isConstant": false, "isLValue": false, "isPure": false, @@ -13663,20 +15074,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "507:34:7", + "src": "507:34:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1010, + "id": 1124, "nodeType": "ExpressionStatement", - "src": "507:34:7" + "src": "507:34:9" } ] }, "documentation": null, - "id": 1012, + "id": 1126, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -13684,31 +15095,31 @@ "name": "safeTransfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 1001, + "id": 1115, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 996, + "id": 1110, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1012, - "src": "434:12:7", + "scope": 1126, + "src": "434:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 995, + "id": 1109, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 987, - "src": "434:6:7", + "referencedDeclaration": 1101, + "src": "434:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, @@ -13717,11 +15128,11 @@ }, { "constant": false, - "id": 998, + "id": 1112, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1012, - "src": "452:10:7", + "scope": 1126, + "src": "452:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13729,10 +15140,10 @@ "typeString": "address" }, "typeName": { - "id": 997, + "id": 1111, "name": "address", "nodeType": "ElementaryTypeName", - "src": "452:7:7", + "src": "452:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13743,11 +15154,11 @@ }, { "constant": false, - "id": 1000, + "id": 1114, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1012, - "src": "468:13:7", + "scope": 1126, + "src": "468:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13755,10 +15166,10 @@ "typeString": "uint256" }, "typeName": { - "id": 999, + "id": 1113, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "468:7:7", + "src": "468:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13768,26 +15179,26 @@ "visibility": "internal" } ], - "src": "428:57:7" + "src": "428:57:9" }, "payable": false, "returnParameters": { - "id": 1002, + "id": 1116, "nodeType": "ParameterList", "parameters": [], - "src": "501:0:7" + "src": "501:0:9" }, - "scope": 1131, - "src": "407:139:7", + "scope": 1245, + "src": "407:139:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1032, + "id": 1146, "nodeType": "Block", - "src": "666:55:7", + "src": "666:55:9", "statements": [ { "expression": { @@ -13798,12 +15209,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1026, + "id": 1140, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1016, - "src": "699:4:7", + "referencedDeclaration": 1130, + "src": "699:4:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13811,12 +15222,12 @@ }, { "argumentTypes": null, - "id": 1027, + "id": 1141, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1018, - "src": "705:2:7", + "referencedDeclaration": 1132, + "src": "705:2:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13824,12 +15235,12 @@ }, { "argumentTypes": null, - "id": 1028, + "id": 1142, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1020, - "src": "709:5:7", + "referencedDeclaration": 1134, + "src": "709:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13853,32 +15264,32 @@ ], "expression": { "argumentTypes": null, - "id": 1024, + "id": 1138, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1014, - "src": "680:5:7", + "referencedDeclaration": 1128, + "src": "680:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, - "id": 1025, + "id": 1139, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", - "referencedDeclaration": 970, - "src": "680:18:7", + "referencedDeclaration": 1084, + "src": "680:18:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)" } }, - "id": 1029, + "id": 1143, "isConstant": false, "isLValue": false, "isPure": false, @@ -13886,7 +15297,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "680:35:7", + "src": "680:35:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -13900,21 +15311,21 @@ "typeString": "bool" } ], - "id": 1023, + "id": 1137, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "672:7:7", + "referencedDeclaration": 1263, + "src": "672:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1030, + "id": 1144, "isConstant": false, "isLValue": false, "isPure": false, @@ -13922,20 +15333,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "672:44:7", + "src": "672:44:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1031, + "id": 1145, "nodeType": "ExpressionStatement", - "src": "672:44:7" + "src": "672:44:9" } ] }, "documentation": null, - "id": 1033, + "id": 1147, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -13943,31 +15354,31 @@ "name": "safeTransferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 1021, + "id": 1135, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1014, + "id": 1128, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1033, - "src": "581:12:7", + "scope": 1147, + "src": "581:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1013, + "id": 1127, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 987, - "src": "581:6:7", + "referencedDeclaration": 1101, + "src": "581:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, @@ -13976,11 +15387,11 @@ }, { "constant": false, - "id": 1016, + "id": 1130, "name": "from", "nodeType": "VariableDeclaration", - "scope": 1033, - "src": "599:12:7", + "scope": 1147, + "src": "599:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13988,10 +15399,10 @@ "typeString": "address" }, "typeName": { - "id": 1015, + "id": 1129, "name": "address", "nodeType": "ElementaryTypeName", - "src": "599:7:7", + "src": "599:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14002,11 +15413,11 @@ }, { "constant": false, - "id": 1018, + "id": 1132, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1033, - "src": "617:10:7", + "scope": 1147, + "src": "617:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14014,10 +15425,10 @@ "typeString": "address" }, "typeName": { - "id": 1017, + "id": 1131, "name": "address", "nodeType": "ElementaryTypeName", - "src": "617:7:7", + "src": "617:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14028,11 +15439,11 @@ }, { "constant": false, - "id": 1020, + "id": 1134, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1033, - "src": "633:13:7", + "scope": 1147, + "src": "633:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14040,10 +15451,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1019, + "id": 1133, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "633:7:7", + "src": "633:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14053,26 +15464,26 @@ "visibility": "internal" } ], - "src": "575:75:7" + "src": "575:75:9" }, "payable": false, "returnParameters": { - "id": 1022, + "id": 1136, "nodeType": "ParameterList", "parameters": [], - "src": "666:0:7" + "src": "666:0:9" }, - "scope": 1131, - "src": "550:171:7", + "scope": 1245, + "src": "550:171:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1067, + "id": 1181, "nodeType": "Block", - "src": "823:330:7", + "src": "823:330:9", "statements": [ { "expression": { @@ -14084,7 +15495,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1056, + "id": 1170, "isConstant": false, "isLValue": false, "isPure": false, @@ -14098,19 +15509,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1045, + "id": 1159, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1043, + "id": 1157, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1039, - "src": "1045:5:7", + "referencedDeclaration": 1153, + "src": "1045:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14121,14 +15532,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1044, + "id": 1158, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1054:1:7", + "src": "1054:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -14136,21 +15547,21 @@ }, "value": "0" }, - "src": "1045:10:7", + "src": "1045:10:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 1046, + "id": 1160, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "1044:12:7", + "src": "1044:12:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14167,7 +15578,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1054, + "id": 1168, "isConstant": false, "isLValue": false, "isPure": false, @@ -14179,18 +15590,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1049, + "id": 1163, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1146, - "src": "1077:3:7", + "referencedDeclaration": 1260, + "src": "1077:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1050, + "id": 1164, "isConstant": false, "isLValue": false, "isPure": false, @@ -14198,7 +15609,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1077:10:7", + "src": "1077:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14206,12 +15617,12 @@ }, { "argumentTypes": null, - "id": 1051, + "id": 1165, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "1089:7:7", + "referencedDeclaration": 1151, + "src": "1089:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14231,32 +15642,32 @@ ], "expression": { "argumentTypes": null, - "id": 1047, + "id": 1161, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1035, - "src": "1061:5:7", + "referencedDeclaration": 1149, + "src": "1061:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, - "id": 1048, + "id": 1162, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 941, - "src": "1061:15:7", + "referencedDeclaration": 1055, + "src": "1061:15:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1052, + "id": 1166, "isConstant": false, "isLValue": false, "isPure": false, @@ -14264,7 +15675,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1061:36:7", + "src": "1061:36:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14275,14 +15686,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1053, + "id": 1167, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1101:1:7", + "src": "1101:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -14290,27 +15701,27 @@ }, "value": "0" }, - "src": "1061:41:7", + "src": "1061:41:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 1055, + "id": 1169, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "1060:43:7", + "src": "1060:43:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1044:59:7", + "src": "1044:59:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14324,21 +15735,21 @@ "typeString": "bool" } ], - "id": 1042, + "id": 1156, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "1036:7:7", + "referencedDeclaration": 1263, + "src": "1036:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1057, + "id": 1171, "isConstant": false, "isLValue": false, "isPure": false, @@ -14346,15 +15757,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1036:68:7", + "src": "1036:68:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1058, + "id": 1172, "nodeType": "ExpressionStatement", - "src": "1036:68:7" + "src": "1036:68:9" }, { "expression": { @@ -14365,12 +15776,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1062, + "id": 1176, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "1132:7:7", + "referencedDeclaration": 1151, + "src": "1132:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14378,12 +15789,12 @@ }, { "argumentTypes": null, - "id": 1063, + "id": 1177, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1039, - "src": "1141:5:7", + "referencedDeclaration": 1153, + "src": "1141:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14403,32 +15814,32 @@ ], "expression": { "argumentTypes": null, - "id": 1060, + "id": 1174, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1035, - "src": "1118:5:7", + "referencedDeclaration": 1149, + "src": "1118:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, - "id": 1061, + "id": 1175, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 959, - "src": "1118:13:7", + "referencedDeclaration": 1073, + "src": "1118:13:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1064, + "id": 1178, "isConstant": false, "isLValue": false, "isPure": false, @@ -14436,7 +15847,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1118:29:7", + "src": "1118:29:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14450,21 +15861,21 @@ "typeString": "bool" } ], - "id": 1059, + "id": 1173, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "1110:7:7", + "referencedDeclaration": 1263, + "src": "1110:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1065, + "id": 1179, "isConstant": false, "isLValue": false, "isPure": false, @@ -14472,20 +15883,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1110:38:7", + "src": "1110:38:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1066, + "id": 1180, "nodeType": "ExpressionStatement", - "src": "1110:38:7" + "src": "1110:38:9" } ] }, "documentation": null, - "id": 1068, + "id": 1182, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -14493,31 +15904,31 @@ "name": "safeApprove", "nodeType": "FunctionDefinition", "parameters": { - "id": 1040, + "id": 1154, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1035, + "id": 1149, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1068, - "src": "751:12:7", + "scope": 1182, + "src": "751:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1034, + "id": 1148, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 987, - "src": "751:6:7", + "referencedDeclaration": 1101, + "src": "751:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, @@ -14526,11 +15937,11 @@ }, { "constant": false, - "id": 1037, + "id": 1151, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1068, - "src": "769:15:7", + "scope": 1182, + "src": "769:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14538,10 +15949,10 @@ "typeString": "address" }, "typeName": { - "id": 1036, + "id": 1150, "name": "address", "nodeType": "ElementaryTypeName", - "src": "769:7:7", + "src": "769:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14552,11 +15963,11 @@ }, { "constant": false, - "id": 1039, + "id": 1153, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1068, - "src": "790:13:7", + "scope": 1182, + "src": "790:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14564,10 +15975,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1038, + "id": 1152, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "790:7:7", + "src": "790:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14577,39 +15988,39 @@ "visibility": "internal" } ], - "src": "745:62:7" + "src": "745:62:9" }, "payable": false, "returnParameters": { - "id": 1041, + "id": 1155, "nodeType": "ParameterList", "parameters": [], - "src": "823:0:7" + "src": "823:0:9" }, - "scope": 1131, - "src": "725:428:7", + "scope": 1245, + "src": "725:428:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1098, + "id": 1212, "nodeType": "Block", - "src": "1265:135:7", + "src": "1265:135:9", "statements": [ { "assignments": [ - 1078 + 1192 ], "declarations": [ { "constant": false, - "id": 1078, + "id": 1192, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 1099, - "src": "1271:20:7", + "scope": 1213, + "src": "1271:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14617,10 +16028,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1077, + "id": 1191, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1271:7:7", + "src": "1271:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14630,18 +16041,18 @@ "visibility": "internal" } ], - "id": 1089, + "id": 1203, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1087, + "id": 1201, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1074, - "src": "1338:5:7", + "referencedDeclaration": 1188, + "src": "1338:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14663,14 +16074,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1082, + "id": 1196, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1167, - "src": "1318:4:7", + "referencedDeclaration": 1281, + "src": "1318:4:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1131", + "typeIdentifier": "t_contract$_SafeERC20_$1245", "typeString": "library SafeERC20" } } @@ -14678,24 +16089,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$1131", + "typeIdentifier": "t_contract$_SafeERC20_$1245", "typeString": "library SafeERC20" } ], - "id": 1081, + "id": 1195, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1310:7:7", + "src": "1310:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1083, + "id": 1197, "isConstant": false, "isLValue": false, "isPure": false, @@ -14703,7 +16114,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1310:13:7", + "src": "1310:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14711,12 +16122,12 @@ }, { "argumentTypes": null, - "id": 1084, + "id": 1198, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1072, - "src": "1325:7:7", + "referencedDeclaration": 1186, + "src": "1325:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14736,32 +16147,32 @@ ], "expression": { "argumentTypes": null, - "id": 1079, + "id": 1193, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1070, - "src": "1294:5:7", + "referencedDeclaration": 1184, + "src": "1294:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, - "id": 1080, + "id": 1194, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 941, - "src": "1294:15:7", + "referencedDeclaration": 1055, + "src": "1294:15:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1085, + "id": 1199, "isConstant": false, "isLValue": false, "isPure": false, @@ -14769,27 +16180,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1294:39:7", + "src": "1294:39:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1086, + "id": 1200, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 897, - "src": "1294:43:7", + "referencedDeclaration": 1011, + "src": "1294:43:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1088, + "id": 1202, "isConstant": false, "isLValue": false, "isPure": false, @@ -14797,14 +16208,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1294:50:7", + "src": "1294:50:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1271:73:7" + "src": "1271:73:9" }, { "expression": { @@ -14815,12 +16226,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1093, + "id": 1207, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1072, - "src": "1372:7:7", + "referencedDeclaration": 1186, + "src": "1372:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14828,12 +16239,12 @@ }, { "argumentTypes": null, - "id": 1094, + "id": 1208, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1078, - "src": "1381:12:7", + "referencedDeclaration": 1192, + "src": "1381:12:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14853,32 +16264,32 @@ ], "expression": { "argumentTypes": null, - "id": 1091, + "id": 1205, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1070, - "src": "1358:5:7", + "referencedDeclaration": 1184, + "src": "1358:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, - "id": 1092, + "id": 1206, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 959, - "src": "1358:13:7", + "referencedDeclaration": 1073, + "src": "1358:13:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1095, + "id": 1209, "isConstant": false, "isLValue": false, "isPure": false, @@ -14886,7 +16297,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1358:36:7", + "src": "1358:36:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14900,21 +16311,21 @@ "typeString": "bool" } ], - "id": 1090, + "id": 1204, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "1350:7:7", + "referencedDeclaration": 1263, + "src": "1350:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1096, + "id": 1210, "isConstant": false, "isLValue": false, "isPure": false, @@ -14922,20 +16333,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1350:45:7", + "src": "1350:45:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1097, + "id": 1211, "nodeType": "ExpressionStatement", - "src": "1350:45:7" + "src": "1350:45:9" } ] }, "documentation": null, - "id": 1099, + "id": 1213, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -14943,31 +16354,31 @@ "name": "safeIncreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1075, + "id": 1189, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1070, + "id": 1184, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1099, - "src": "1193:12:7", + "scope": 1213, + "src": "1193:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1069, + "id": 1183, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 987, - "src": "1193:6:7", + "referencedDeclaration": 1101, + "src": "1193:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, @@ -14976,11 +16387,11 @@ }, { "constant": false, - "id": 1072, + "id": 1186, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1099, - "src": "1211:15:7", + "scope": 1213, + "src": "1211:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14988,10 +16399,10 @@ "typeString": "address" }, "typeName": { - "id": 1071, + "id": 1185, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1211:7:7", + "src": "1211:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15002,11 +16413,11 @@ }, { "constant": false, - "id": 1074, + "id": 1188, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1099, - "src": "1232:13:7", + "scope": 1213, + "src": "1232:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15014,10 +16425,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1073, + "id": 1187, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1232:7:7", + "src": "1232:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15027,39 +16438,39 @@ "visibility": "internal" } ], - "src": "1187:62:7" + "src": "1187:62:9" }, "payable": false, "returnParameters": { - "id": 1076, + "id": 1190, "nodeType": "ParameterList", "parameters": [], - "src": "1265:0:7" + "src": "1265:0:9" }, - "scope": 1131, - "src": "1157:243:7", + "scope": 1245, + "src": "1157:243:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1129, + "id": 1243, "nodeType": "Block", - "src": "1512:135:7", + "src": "1512:135:9", "statements": [ { "assignments": [ - 1109 + 1223 ], "declarations": [ { "constant": false, - "id": 1109, + "id": 1223, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 1130, - "src": "1518:20:7", + "scope": 1244, + "src": "1518:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15067,10 +16478,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1108, + "id": 1222, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1518:7:7", + "src": "1518:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15080,18 +16491,18 @@ "visibility": "internal" } ], - "id": 1120, + "id": 1234, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1118, + "id": 1232, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1105, - "src": "1585:5:7", + "referencedDeclaration": 1219, + "src": "1585:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15113,14 +16524,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1113, + "id": 1227, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1167, - "src": "1565:4:7", + "referencedDeclaration": 1281, + "src": "1565:4:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1131", + "typeIdentifier": "t_contract$_SafeERC20_$1245", "typeString": "library SafeERC20" } } @@ -15128,24 +16539,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$1131", + "typeIdentifier": "t_contract$_SafeERC20_$1245", "typeString": "library SafeERC20" } ], - "id": 1112, + "id": 1226, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1557:7:7", + "src": "1557:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1114, + "id": 1228, "isConstant": false, "isLValue": false, "isPure": false, @@ -15153,7 +16564,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1557:13:7", + "src": "1557:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15161,12 +16572,12 @@ }, { "argumentTypes": null, - "id": 1115, + "id": 1229, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1103, - "src": "1572:7:7", + "referencedDeclaration": 1217, + "src": "1572:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15186,32 +16597,32 @@ ], "expression": { "argumentTypes": null, - "id": 1110, + "id": 1224, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1101, - "src": "1541:5:7", + "referencedDeclaration": 1215, + "src": "1541:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, - "id": 1111, + "id": 1225, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 941, - "src": "1541:15:7", + "referencedDeclaration": 1055, + "src": "1541:15:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1116, + "id": 1230, "isConstant": false, "isLValue": false, "isPure": false, @@ -15219,27 +16630,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1541:39:7", + "src": "1541:39:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1117, + "id": 1231, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 873, - "src": "1541:43:7", + "referencedDeclaration": 987, + "src": "1541:43:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1119, + "id": 1233, "isConstant": false, "isLValue": false, "isPure": false, @@ -15247,14 +16658,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1541:50:7", + "src": "1541:50:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1518:73:7" + "src": "1518:73:9" }, { "expression": { @@ -15265,12 +16676,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1124, + "id": 1238, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1103, - "src": "1619:7:7", + "referencedDeclaration": 1217, + "src": "1619:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15278,12 +16689,12 @@ }, { "argumentTypes": null, - "id": 1125, + "id": 1239, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1109, - "src": "1628:12:7", + "referencedDeclaration": 1223, + "src": "1628:12:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15303,32 +16714,32 @@ ], "expression": { "argumentTypes": null, - "id": 1122, + "id": 1236, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1101, - "src": "1605:5:7", + "referencedDeclaration": 1215, + "src": "1605:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, - "id": 1123, + "id": 1237, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 959, - "src": "1605:13:7", + "referencedDeclaration": 1073, + "src": "1605:13:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1126, + "id": 1240, "isConstant": false, "isLValue": false, "isPure": false, @@ -15336,7 +16747,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1605:36:7", + "src": "1605:36:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -15350,21 +16761,21 @@ "typeString": "bool" } ], - "id": 1121, + "id": 1235, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "1597:7:7", + "referencedDeclaration": 1263, + "src": "1597:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1127, + "id": 1241, "isConstant": false, "isLValue": false, "isPure": false, @@ -15372,20 +16783,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1597:45:7", + "src": "1597:45:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1128, + "id": 1242, "nodeType": "ExpressionStatement", - "src": "1597:45:7" + "src": "1597:45:9" } ] }, "documentation": null, - "id": 1130, + "id": 1244, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -15393,31 +16804,31 @@ "name": "safeDecreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1106, + "id": 1220, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1101, + "id": 1215, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1130, - "src": "1440:12:7", + "scope": 1244, + "src": "1440:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1100, + "id": 1214, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 987, - "src": "1440:6:7", + "referencedDeclaration": 1101, + "src": "1440:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, @@ -15426,11 +16837,11 @@ }, { "constant": false, - "id": 1103, + "id": 1217, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1130, - "src": "1458:15:7", + "scope": 1244, + "src": "1458:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15438,10 +16849,10 @@ "typeString": "address" }, "typeName": { - "id": 1102, + "id": 1216, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1458:7:7", + "src": "1458:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15452,11 +16863,11 @@ }, { "constant": false, - "id": 1105, + "id": 1219, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1130, - "src": "1479:13:7", + "scope": 1244, + "src": "1479:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15464,10 +16875,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1104, + "id": 1218, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1479:7:7", + "src": "1479:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15477,29 +16888,29 @@ "visibility": "internal" } ], - "src": "1434:62:7" + "src": "1434:62:9" }, "payable": false, "returnParameters": { - "id": 1107, + "id": 1221, "nodeType": "ParameterList", "parameters": [], - "src": "1512:0:7" + "src": "1512:0:9" }, - "scope": 1131, - "src": "1404:243:7", + "scope": 1245, + "src": "1404:243:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 1132, - "src": "353:1296:7" + "scope": 1246, + "src": "353:1296:9" } ], - "src": "0:1650:7" + "src": "0:1650:9" }, - "id": 7 + "id": 9 } } } \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.abi b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.abi index f5543d549..e289ecc82 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.abi +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.abi @@ -1 +1 @@ -[{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"minerAddress","type":"address"}],"name":"registerMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSystem","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getMinerByIndex","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"minerAddress","type":"address"}],"name":"unregisterMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"mine","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMinerCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file +[{"constant":false,"inputs":[],"name":"terminate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"minerAddress","type":"address"}],"name":"registerMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSystem","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getMinerByIndex","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"minerAddress","type":"address"}],"name":"unregisterMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"mine","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMinerCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.bin b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.bin index 97fcd2fb9..944a078a6 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.bin +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b50604051602080610edc8339810160405251610034336401000000006100a2810204565b610046336401000000006100bd810204565b60028054600160a060020a03909216600160a060020a0319928316179055600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091169055610163565b6100ba600082640100000000610c436100d582021704565b50565b6100ba600182640100000000610c436100d582021704565b600160a060020a03811615156100ea57600080fd5b6100fd828264010000000061012c810204565b1561010757600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561014357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610d6a806101726000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632e6b6849811461009a578063341ccfcb146100bd57806334cdcf26146100de5780633d19ab1314610113578063608d3d3d1461014757806374be75921461016857806381f909f31461018957806399f4b251146101aa578063bb52c137146101bf578063d43acc79146101e6578063e9d61859146101fb575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a0360043516610210565b005b3480156100c957600080fd5b506100bb600160a060020a0360043516610230565b3480156100ea57600080fd5b506100ff600160a060020a03600435166103e1565b604080519115158252519081900360200190f35b34801561011f57600080fd5b5061012b6004356103f9565b60408051600160a060020a039092168252519081900360200190f35b34801561015357600080fd5b506100ff600160a060020a0360043516610428565b34801561017457600080fd5b506100bb600160a060020a036004351661043b565b34801561019557600080fd5b506100bb600160a060020a0360043516610458565b3480156101b657600080fd5b506100bb6105e7565b3480156101cb57600080fd5b506101d4610b0a565b60408051918252519081900360200190f35b3480156101f257600080fd5b506100bb610b15565b34801561020757600080fd5b506100bb610b20565b61021933610428565b151561022457600080fd5b61022d81610b29565b50565b60008061023c33610428565b151561024757600080fd5b600160a060020a0383166000908152600460205260409020541561026a57600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b505050506040513d60208110156102d557600080fd5b505115156102e257600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032057600080fd5b505af1158015610334573d6000803e3d6000fd5b505050506040513d602081101561034a57600080fd5b50519050600060ff821610801590610366575060058160ff1611155b151561037157600080fd5b505060038054600160a060020a039092166000818152600460205260408120849055600184018355919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b60006103f3818363ffffffff610b3a16565b92915050565b600060038260010181548110151561040d57fe5b600091825260209091200154600160a060020a031692915050565b60006103f360018363ffffffff610b3a16565b610444336103e1565b151561044f57600080fd5b61022d81610b71565b61046133610428565b151561046c57600080fd5b60035460011061047b57600080fd5b600354600214156104e75760038054600190811061049557fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560016104c8600382610cdd565b50600160a060020a03811660009081526004602052604081205561022d565b600354600160a060020a038216600090815260046020526040902054146105815760038054600019810190811061051a57fe5b6000918252602080832090910154600160a060020a038481168452600490925260409092205460038054929093169291811061055257fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60038054600019810190811061059357fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560038054906105cc906000198301610cdd565b50600160a060020a0316600090815260046020526040812055565b60006105f1610d01565b6000806000806105ff610d01565b610608336103e1565b151561061357600080fd5b60035460011061062257600080fd5b600254604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561068857600080fd5b505af115801561069c573d6000803e3d6000fd5b505050506040513d60208110156106b257600080fd5b50519650600087116106c357600080fd5b600194505b6003548510156108725760038054869081106106e057fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561073e57600080fd5b505af1158015610752573d6000803e3d6000fd5b505050506040513d602081101561076857600080fd5b5051151561077557610867565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156107b357600080fd5b505af11580156107c7573d6000803e3d6000fd5b505050506040513d60208110156107dd57600080fd5b5051925060ff831615156107ff578560005b6020020180516001019052610867565b8260ff1660011415610813578560016107ef565b8260ff1660021415610827578560026107ef565b8260ff166003141561083b578560036107ef565b8260ff166004141561084f578560046107ef565b8260ff16600514156108675760a08601805160010190525b6001909401936106c8565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e90910201602890910201603290910201915081878115156108b857fe5b04815281600a88028115156108c957fe5b04602082015281601488028115156108dd57fe5b04604082015281601e88028115156108f157fe5b046060820152816028880281151561090557fe5b046080820152816032880281151561091957fe5b0460a0820152600194505b600354851015610b0157600380548690811061093c57fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561099a57600080fd5b505af11580156109ae573d6000803e3d6000fd5b505050506040513d60208110156109c457600080fd5b505115156109d157610af6565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a0f57600080fd5b505af1158015610a23573d6000803e3d6000fd5b505050506040513d6020811015610a3957600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610af691600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610a9d57600080fd5b505af1158015610ab1573d6000803e3d6000fd5b505050506040513d6020811015610ac757600080fd5b50518260ff861660068110610ad857fe5b6020020151600254600160a060020a0316919063ffffffff610b8216565b600190940193610924565b50505050505050565b600354600019015b90565b610b1e33610c21565b565b610b1e33610c32565b61022d60018263ffffffff610c4316565b6000600160a060020a0382161515610b5157600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61022d60008263ffffffff610c4316565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610be557600080fd5b505af1158015610bf9573d6000803e3d6000fd5b505050506040513d6020811015610c0f57600080fd5b50511515610c1c57600080fd5b505050565b61022d60018263ffffffff610c9116565b61022d60008263ffffffff610c9116565b600160a060020a0381161515610c5857600080fd5b610c628282610b3a565b15610c6c57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610ca657600080fd5b610cb08282610b3a565b1515610cbb57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610c1c57600083815260209020610c1c918101908301610d20565b60c0604051908101604052806006906020820280388339509192915050565b610b1291905b80821115610d3a5760008155600101610d26565b50905600a165627a7a72305820a50e84e4f20df15b74a513c238b268f416d4f45f8632af54e0cb02d0aaff72790029 \ No newline at end of file +60806040523480156200001157600080fd5b50604051602080620010d083398101604052516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790556200006c90640100000000620000c7810204565b6200008033640100000000620000e5810204565b50600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054600160a060020a031916905562000193565b620000e260028264010000000062000e066200010082021704565b50565b620000e260038264010000000062000e066200010082021704565b600160a060020a03811615156200011657600080fd5b6200012b82826401000000006200015b810204565b156200013657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200017357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610f2d80620001a36000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632e6b6849146100bc578063341ccfcb146100dd57806334cdcf26146100fe5780633d19ab1314610133578063608d3d3d1461016757806374be75921461018857806381f909f3146101a957806399f4b251146101ca578063bb52c137146101df578063d43acc7914610206578063e9d618591461021b575b600080fd5b3480156100b157600080fd5b506100ba610230565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661024e565b3480156100e957600080fd5b506100ba600160a060020a036004351661026e565b34801561010a57600080fd5b5061011f600160a060020a0360043516610457565b604080519115158252519081900360200190f35b34801561013f57600080fd5b5061014b600435610470565b60408051600160a060020a039092168252519081900360200190f35b34801561017357600080fd5b5061011f600160a060020a036004351661049f565b34801561019457600080fd5b506100ba600160a060020a03600435166104b2565b3480156101b557600080fd5b506100ba600160a060020a03600435166104cf565b3480156101d657600080fd5b506100ba610686565b3480156101eb57600080fd5b506101f4610bd1565b60408051918252519081900360200190f35b34801561021257600080fd5b506100ba610bdc565b34801561022757600080fd5b506100ba610be5565b6102393361049f565b151561024457600080fd5b61024c610bee565b565b6102573361049f565b151561026257600080fd5b61026b81610cb5565b50565b60008054819074010000000000000000000000000000000000000000900460ff161561029957600080fd5b6102a23361049f565b15156102ad57600080fd5b6004546103e8116102bd57600080fd5b600160a060020a038316600090815260056020526040902054156102e057600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032157600080fd5b505af1158015610335573d6000803e3d6000fd5b505050506040513d602081101561034b57600080fd5b5051151561035857600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b505050506040513d60208110156103c057600080fd5b50519050600060ff8216108015906103dc575060058160ff1611155b15156103e757600080fd5b505060048054600160a060020a039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b600061046a60028363ffffffff610cc616565b92915050565b600060048260010181548110151561048457fe5b600091825260209091200154600160a060020a031692915050565b600061046a60038363ffffffff610cc616565b6104bb33610457565b15156104c657600080fd5b61026b81610cfd565b60005474010000000000000000000000000000000000000000900460ff16156104f757600080fd5b6105003361049f565b151561050b57600080fd5b60045460011061051a57600080fd5b600454600214156105865760048054600190811061053457fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff191690556001610567600482610ea0565b50600160a060020a03811660009081526005602052604081205561026b565b600454600160a060020a03821660009081526005602052604090205414610620576004805460001981019081106105b957fe5b6000918252602080832090910154600160a060020a03848116845260059092526040909220546004805492909316929181106105f157fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60048054600019810190811061063257fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff19169055600480549061066b906000198301610ea0565b50600160a060020a0316600090815260056020526040812055565b6000610690610ec4565b60008060008061069e610ec4565b60005474010000000000000000000000000000000000000000900460ff16156106c657600080fd5b6106cf33610457565b15156106da57600080fd5b6004546001106106e957600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b505050506040513d602081101561077957600080fd5b505196506000871161078a57600080fd5b600194505b6004548510156109395760048054869081106107a757fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561080557600080fd5b505af1158015610819573d6000803e3d6000fd5b505050506040513d602081101561082f57600080fd5b5051151561083c5761092e565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561087a57600080fd5b505af115801561088e573d6000803e3d6000fd5b505050506040513d60208110156108a457600080fd5b5051925060ff831615156108c6578560005b602002018051600101905261092e565b8260ff16600114156108da578560016108b6565b8260ff16600214156108ee578560026108b6565b8260ff1660031415610902578560036108b6565b8260ff1660041415610916578560046108b6565b8260ff166005141561092e5760a08601805160010190525b60019094019361078f565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e909102016028909102016032909102019150818781151561097f57fe5b04815281600a880281151561099057fe5b04602082015281601488028115156109a457fe5b04604082015281601e88028115156109b857fe5b04606082015281602888028115156109cc57fe5b04608082015281603288028115156109e057fe5b0460a0820152600194505b600454851015610bc8576004805486908110610a0357fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a6157600080fd5b505af1158015610a75573d6000803e3d6000fd5b505050506040513d6020811015610a8b57600080fd5b50511515610a9857610bbd565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b505050506040513d6020811015610b0057600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610bbd91600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610b6457600080fd5b505af1158015610b78573d6000803e3d6000fd5b505050506040513d6020811015610b8e57600080fd5b50518260ff861660068110610b9f57fe5b6020020151600154600160a060020a0316919063ffffffff610d0e16565b6001909401936109eb565b50505050505050565b600454600019015b90565b61024c33610dad565b61024c33610dbe565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b505050506040513d6020811015610c7d57600080fd5b505190506000811115610cad57600054600154610cad91600160a060020a0391821691168363ffffffff610d0e16565b61026b610dcf565b61026b60038263ffffffff610e0616565b6000600160a060020a0382161515610cdd57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61026b60028263ffffffff610e0616565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610d7157600080fd5b505af1158015610d85573d6000803e3d6000fd5b505050506040513d6020811015610d9b57600080fd5b50511515610da857600080fd5b505050565b61026b60038263ffffffff610e5416565b61026b60028263ffffffff610e5416565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a0381161515610e1b57600080fd5b610e258282610cc6565b15610e2f57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610e6957600080fd5b610e738282610cc6565b1515610e7e57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610da857600083815260209020610da8918101908301610ee3565b60c0604051908101604052806006906020820280388339509192915050565b610bd991905b80821115610efd5760008155600101610ee9565b50905600a165627a7a723058201033067a6ceafcfdd5906365e4a9ea37491edaca7ecea2eae390d605b7aa71c30029 \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.json index 3ede830af..ca512a461 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.json @@ -1,5 +1,14 @@ { "abi": [ + { + "constant": false, + "inputs": [], + "name": "terminate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "constant": false, "inputs": [ @@ -166,7 +175,7 @@ "type": "constructor" } ], - "bytecode": "608060405234801561001057600080fd5b50604051602080610edc8339810160405251610034336401000000006100a2810204565b610046336401000000006100bd810204565b60028054600160a060020a03909216600160a060020a0319928316179055600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091169055610163565b6100ba600082640100000000610c436100d582021704565b50565b6100ba600182640100000000610c436100d582021704565b600160a060020a03811615156100ea57600080fd5b6100fd828264010000000061012c810204565b1561010757600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561014357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610d6a806101726000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632e6b6849811461009a578063341ccfcb146100bd57806334cdcf26146100de5780633d19ab1314610113578063608d3d3d1461014757806374be75921461016857806381f909f31461018957806399f4b251146101aa578063bb52c137146101bf578063d43acc79146101e6578063e9d61859146101fb575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a0360043516610210565b005b3480156100c957600080fd5b506100bb600160a060020a0360043516610230565b3480156100ea57600080fd5b506100ff600160a060020a03600435166103e1565b604080519115158252519081900360200190f35b34801561011f57600080fd5b5061012b6004356103f9565b60408051600160a060020a039092168252519081900360200190f35b34801561015357600080fd5b506100ff600160a060020a0360043516610428565b34801561017457600080fd5b506100bb600160a060020a036004351661043b565b34801561019557600080fd5b506100bb600160a060020a0360043516610458565b3480156101b657600080fd5b506100bb6105e7565b3480156101cb57600080fd5b506101d4610b0a565b60408051918252519081900360200190f35b3480156101f257600080fd5b506100bb610b15565b34801561020757600080fd5b506100bb610b20565b61021933610428565b151561022457600080fd5b61022d81610b29565b50565b60008061023c33610428565b151561024757600080fd5b600160a060020a0383166000908152600460205260409020541561026a57600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b505050506040513d60208110156102d557600080fd5b505115156102e257600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032057600080fd5b505af1158015610334573d6000803e3d6000fd5b505050506040513d602081101561034a57600080fd5b50519050600060ff821610801590610366575060058160ff1611155b151561037157600080fd5b505060038054600160a060020a039092166000818152600460205260408120849055600184018355919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b60006103f3818363ffffffff610b3a16565b92915050565b600060038260010181548110151561040d57fe5b600091825260209091200154600160a060020a031692915050565b60006103f360018363ffffffff610b3a16565b610444336103e1565b151561044f57600080fd5b61022d81610b71565b61046133610428565b151561046c57600080fd5b60035460011061047b57600080fd5b600354600214156104e75760038054600190811061049557fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560016104c8600382610cdd565b50600160a060020a03811660009081526004602052604081205561022d565b600354600160a060020a038216600090815260046020526040902054146105815760038054600019810190811061051a57fe5b6000918252602080832090910154600160a060020a038481168452600490925260409092205460038054929093169291811061055257fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60038054600019810190811061059357fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560038054906105cc906000198301610cdd565b50600160a060020a0316600090815260046020526040812055565b60006105f1610d01565b6000806000806105ff610d01565b610608336103e1565b151561061357600080fd5b60035460011061062257600080fd5b600254604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561068857600080fd5b505af115801561069c573d6000803e3d6000fd5b505050506040513d60208110156106b257600080fd5b50519650600087116106c357600080fd5b600194505b6003548510156108725760038054869081106106e057fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561073e57600080fd5b505af1158015610752573d6000803e3d6000fd5b505050506040513d602081101561076857600080fd5b5051151561077557610867565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156107b357600080fd5b505af11580156107c7573d6000803e3d6000fd5b505050506040513d60208110156107dd57600080fd5b5051925060ff831615156107ff578560005b6020020180516001019052610867565b8260ff1660011415610813578560016107ef565b8260ff1660021415610827578560026107ef565b8260ff166003141561083b578560036107ef565b8260ff166004141561084f578560046107ef565b8260ff16600514156108675760a08601805160010190525b6001909401936106c8565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e90910201602890910201603290910201915081878115156108b857fe5b04815281600a88028115156108c957fe5b04602082015281601488028115156108dd57fe5b04604082015281601e88028115156108f157fe5b046060820152816028880281151561090557fe5b046080820152816032880281151561091957fe5b0460a0820152600194505b600354851015610b0157600380548690811061093c57fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561099a57600080fd5b505af11580156109ae573d6000803e3d6000fd5b505050506040513d60208110156109c457600080fd5b505115156109d157610af6565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a0f57600080fd5b505af1158015610a23573d6000803e3d6000fd5b505050506040513d6020811015610a3957600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610af691600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610a9d57600080fd5b505af1158015610ab1573d6000803e3d6000fd5b505050506040513d6020811015610ac757600080fd5b50518260ff861660068110610ad857fe5b6020020151600254600160a060020a0316919063ffffffff610b8216565b600190940193610924565b50505050505050565b600354600019015b90565b610b1e33610c21565b565b610b1e33610c32565b61022d60018263ffffffff610c4316565b6000600160a060020a0382161515610b5157600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61022d60008263ffffffff610c4316565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610be557600080fd5b505af1158015610bf9573d6000803e3d6000fd5b505050506040513d6020811015610c0f57600080fd5b50511515610c1c57600080fd5b505050565b61022d60018263ffffffff610c9116565b61022d60008263ffffffff610c9116565b600160a060020a0381161515610c5857600080fd5b610c628282610b3a565b15610c6c57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610ca657600080fd5b610cb08282610b3a565b1515610cbb57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610c1c57600083815260209020610c1c918101908301610d20565b60c0604051908101604052806006906020820280388339509192915050565b610b1291905b80821115610d3a5760008155600101610d26565b50905600a165627a7a72305820a50e84e4f20df15b74a513c238b268f416d4f45f8632af54e0cb02d0aaff72790029", + "bytecode": "60806040523480156200001157600080fd5b50604051602080620010d083398101604052516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790556200006c90640100000000620000c7810204565b6200008033640100000000620000e5810204565b50600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054600160a060020a031916905562000193565b620000e260028264010000000062000e066200010082021704565b50565b620000e260038264010000000062000e066200010082021704565b600160a060020a03811615156200011657600080fd5b6200012b82826401000000006200015b810204565b156200013657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200017357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610f2d80620001a36000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632e6b6849146100bc578063341ccfcb146100dd57806334cdcf26146100fe5780633d19ab1314610133578063608d3d3d1461016757806374be75921461018857806381f909f3146101a957806399f4b251146101ca578063bb52c137146101df578063d43acc7914610206578063e9d618591461021b575b600080fd5b3480156100b157600080fd5b506100ba610230565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661024e565b3480156100e957600080fd5b506100ba600160a060020a036004351661026e565b34801561010a57600080fd5b5061011f600160a060020a0360043516610457565b604080519115158252519081900360200190f35b34801561013f57600080fd5b5061014b600435610470565b60408051600160a060020a039092168252519081900360200190f35b34801561017357600080fd5b5061011f600160a060020a036004351661049f565b34801561019457600080fd5b506100ba600160a060020a03600435166104b2565b3480156101b557600080fd5b506100ba600160a060020a03600435166104cf565b3480156101d657600080fd5b506100ba610686565b3480156101eb57600080fd5b506101f4610bd1565b60408051918252519081900360200190f35b34801561021257600080fd5b506100ba610bdc565b34801561022757600080fd5b506100ba610be5565b6102393361049f565b151561024457600080fd5b61024c610bee565b565b6102573361049f565b151561026257600080fd5b61026b81610cb5565b50565b60008054819074010000000000000000000000000000000000000000900460ff161561029957600080fd5b6102a23361049f565b15156102ad57600080fd5b6004546103e8116102bd57600080fd5b600160a060020a038316600090815260056020526040902054156102e057600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032157600080fd5b505af1158015610335573d6000803e3d6000fd5b505050506040513d602081101561034b57600080fd5b5051151561035857600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b505050506040513d60208110156103c057600080fd5b50519050600060ff8216108015906103dc575060058160ff1611155b15156103e757600080fd5b505060048054600160a060020a039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b600061046a60028363ffffffff610cc616565b92915050565b600060048260010181548110151561048457fe5b600091825260209091200154600160a060020a031692915050565b600061046a60038363ffffffff610cc616565b6104bb33610457565b15156104c657600080fd5b61026b81610cfd565b60005474010000000000000000000000000000000000000000900460ff16156104f757600080fd5b6105003361049f565b151561050b57600080fd5b60045460011061051a57600080fd5b600454600214156105865760048054600190811061053457fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff191690556001610567600482610ea0565b50600160a060020a03811660009081526005602052604081205561026b565b600454600160a060020a03821660009081526005602052604090205414610620576004805460001981019081106105b957fe5b6000918252602080832090910154600160a060020a03848116845260059092526040909220546004805492909316929181106105f157fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60048054600019810190811061063257fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff19169055600480549061066b906000198301610ea0565b50600160a060020a0316600090815260056020526040812055565b6000610690610ec4565b60008060008061069e610ec4565b60005474010000000000000000000000000000000000000000900460ff16156106c657600080fd5b6106cf33610457565b15156106da57600080fd5b6004546001106106e957600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b505050506040513d602081101561077957600080fd5b505196506000871161078a57600080fd5b600194505b6004548510156109395760048054869081106107a757fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561080557600080fd5b505af1158015610819573d6000803e3d6000fd5b505050506040513d602081101561082f57600080fd5b5051151561083c5761092e565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561087a57600080fd5b505af115801561088e573d6000803e3d6000fd5b505050506040513d60208110156108a457600080fd5b5051925060ff831615156108c6578560005b602002018051600101905261092e565b8260ff16600114156108da578560016108b6565b8260ff16600214156108ee578560026108b6565b8260ff1660031415610902578560036108b6565b8260ff1660041415610916578560046108b6565b8260ff166005141561092e5760a08601805160010190525b60019094019361078f565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e909102016028909102016032909102019150818781151561097f57fe5b04815281600a880281151561099057fe5b04602082015281601488028115156109a457fe5b04604082015281601e88028115156109b857fe5b04606082015281602888028115156109cc57fe5b04608082015281603288028115156109e057fe5b0460a0820152600194505b600454851015610bc8576004805486908110610a0357fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a6157600080fd5b505af1158015610a75573d6000803e3d6000fd5b505050506040513d6020811015610a8b57600080fd5b50511515610a9857610bbd565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b505050506040513d6020811015610b0057600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610bbd91600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610b6457600080fd5b505af1158015610b78573d6000803e3d6000fd5b505050506040513d6020811015610b8e57600080fd5b50518260ff861660068110610b9f57fe5b6020020151600154600160a060020a0316919063ffffffff610d0e16565b6001909401936109eb565b50505050505050565b600454600019015b90565b61024c33610dad565b61024c33610dbe565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b505050506040513d6020811015610c7d57600080fd5b505190506000811115610cad57600054600154610cad91600160a060020a0391821691168363ffffffff610d0e16565b61026b610dcf565b61026b60038263ffffffff610e0616565b6000600160a060020a0382161515610cdd57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61026b60028263ffffffff610e0616565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610d7157600080fd5b505af1158015610d85573d6000803e3d6000fd5b505050506040513d6020811015610d9b57600080fd5b50511515610da857600080fd5b505050565b61026b60038263ffffffff610e5416565b61026b60028263ffffffff610e5416565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a0381161515610e1b57600080fd5b610e258282610cc6565b15610e2f57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610e6957600080fd5b610e738282610cc6565b1515610e7e57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610da857600083815260209020610da8918101908301610ee3565b60c0604051908101604052806006906020820280388339509192915050565b610bd991905b80821115610efd5760008155600101610ee9565b50905600a165627a7a723058201033067a6ceafcfdd5906365e4a9ea37491edaca7ecea2eae390d605b7aa71c30029", "functionHashes": { "addCoreTeam(address)": "2e6b6849", "addSystem(address)": "74be7592", @@ -178,25 +187,27 @@ "registerMiner(address)": "341ccfcb", "renounceCoreTeam()": "d43acc79", "renounceSystem()": "e9d61859", + "terminate()": "0c08bf88", "unregisterMiner(address)": "81f909f3" }, "gasEstimates": { "creation": { - "codeDepositCost": "686800", + "codeDepositCost": "777000", "executionCost": "infinite", "totalCost": "infinite" }, "external": { "addCoreTeam(address)": "infinite", "addSystem(address)": "infinite", - "getMinerByIndex(uint256)": "980", - "getMinerCount()": "633", + "getMinerByIndex(uint256)": "1002", + "getMinerCount()": "655", "isCoreTeam(address)": "infinite", "isSystem(address)": "infinite", "mine()": "infinite", "registerMiner(address)": "infinite", "renounceCoreTeam()": "infinite", "renounceSystem()": "infinite", + "terminate()": "infinite", "unregisterMiner(address)": "infinite" } } diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json index 873957ff2..27cf6e665 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json @@ -78,6 +78,15 @@ "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol": { "AlgoMiner": { "abi": [ + { + "constant": false, + "inputs": [], + "name": "terminate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "constant": false, "inputs": [], @@ -385,7 +394,7 @@ "type": "uint8" }, { - "name": "ownerAddress", + "name": "minerAccountAddress", "type": "address" }, { @@ -404,28 +413,28 @@ "evm": { "bytecode": { "linkReferences": {}, - "object": "60806040523480156200001157600080fd5b506040516080806200104f83398101604090815281516020830151918301516060909301519092906200004d3364010000000062000103810204565b620000613364010000000062000121810204565b62000075336401000000006200013c810204565b60008360ff16101580156200008e575060058360ff1611155b15156200009a57600080fd5b6003805461ffff191661ffff959095169490941762ff000019166201000060ff949094169390930292909217630100000060b860020a0319166301000000600160a060020a03928316021790925560048054600160a060020a03191691909216179055620001ea565b6200011e60008264010000000062000d8f6200015782021704565b50565b6200011e60018264010000000062000d8f6200015782021704565b6200011e60028264010000000062000d8f6200015782021704565b600160a060020a03811615156200016d57600080fd5b620001828282640100000000620001b2810204565b156200018d57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001ca57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610e5580620001fa6000396000f30060806040526004361061013d5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663162f986d81146101425780631777fb4b1461015957806319a74ab31461018257806321b79d9814610197578063231d4e2a146101ac57806329d10b6e146101cd5780632e6b6849146101ee578063302c11ca1461020f57806334cdcf2614610240578063363aa6c714610261578063427534a414610276578063608d3d3d1461028b57806374be7592146102ac57806380258e47146102cd57806381a24459146102f857806399f4b251146103195780639e614ca01461032e578063ada436e914610343578063b2a32cd514610364578063be95249414610379578063c6846ef81461038e578063d43acc79146103b5578063da408679146103ca578063e9d61859146103df575b600080fd5b34801561014e57600080fd5b506101576103f4565b005b34801561016557600080fd5b5061016e61045a565b604080519115158252519081900360200190f35b34801561018e57600080fd5b5061016e61045f565b3480156101a357600080fd5b50610157610496565b3480156101b857600080fd5b50610157600160a060020a0360043516610516565b3480156101d957600080fd5b50610157600160a060020a0360043516610602565b3480156101fa57600080fd5b50610157600160a060020a036004351661061f565b34801561021b57600080fd5b5061022461063c565b60408051600160a060020a039092168252519081900360200190f35b34801561024c57600080fd5b5061016e600160a060020a0360043516610652565b34801561026d57600080fd5b5061015761066a565b34801561028257600080fd5b50610157610713565b34801561029757600080fd5b5061016e600160a060020a0360043516610776565b3480156102b857600080fd5b50610157600160a060020a0360043516610789565b3480156102d957600080fd5b506102e26107a6565b6040805160ff9092168252519081900360200190f35b34801561030457600080fd5b5061016e600160a060020a03600435166107b5565b34801561032557600080fd5b506101576107c8565b34801561033a57600080fd5b50610157610999565b34801561034f57600080fd5b50610157600160a060020a03600435166109f3565b34801561037057600080fd5b50610157610a89565b34801561038557600080fd5b50610157610b9c565b34801561039a57600080fd5b506103a3610ba7565b60408051918252519081900360200190f35b3480156103c157600080fd5b50610157610bad565b3480156103d657600080fd5b50610157610bb6565b3480156103eb57600080fd5b50610157610c31565b6103fd336107b5565b151561040857600080fd5b600160045460a060020a900460ff16600381111561042257fe5b1461042c57600080fd5b600480546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550565b600190565b6000600160045460a060020a900460ff16600381111561047b57fe5b148015610491575060045460a860020a900460ff165b905090565b60035463010000009004600160a060020a031633146104b457600080fd5b600160045460a060020a900460ff1660038111156104ce57fe5b146104d857600080fd5b60045460a860020a900460ff16156104ef57600080fd5b6004805475ff000000000000000000000000000000000000000000191660a860020a179055565b61051f33610776565b151561052a57600080fd5b600060045460a060020a900460ff16600381111561054457fe5b1461054e57600080fd5b60048054604080517f70a082310000000000000000000000000000000000000000000000000000000081523093810193909352516105ff928492600160a060020a0316916370a08231916024808201926020929091908290030181600087803b1580156105ba57600080fd5b505af11580156105ce573d6000803e3d6000fd5b505050506040513d60208110156105e457600080fd5b5051600454600160a060020a0316919063ffffffff610c3a16565b50565b61060b336107b5565b151561061657600080fd5b6105ff81610cf2565b61062833610776565b151561063357600080fd5b6105ff81610d03565b60035463010000009004600160a060020a031690565b6000610664818363ffffffff610d1416565b92915050565b610673336107b5565b151561067e57600080fd5b600360045460a060020a900460ff16600381111561069857fe5b14156106a357600080fd5b6004805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001775ff000000000000000000000000000000000000000000191690556003805476ffffffffffffffffffffffffffffffffffffffff00000019169055565b61071c336107b5565b151561072757600080fd5b600260045460a060020a900460ff16600381111561074157fe5b1461074b57600080fd5b600480546001919074ff0000000000000000000000000000000000000000191660a060020a83610453565b600061066460018363ffffffff610d1416565b61079233610652565b151561079d57600080fd5b6105ff81610d4b565b60035462010000900460ff1690565b600061066460028363ffffffff610d1416565b60006107d333610652565b15156107de57600080fd5b600160045460a060020a900460ff1660038111156107f857fe5b1461080257600080fd5b60045460a860020a900460ff16151561081a57600080fd5b60045460b860020a900461ffff161515610890576004805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610958565b60048054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610958576004805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600554600290046005555b5060055461016d90046000811161096e57600080fd5b6003546004546105ff91600160a060020a03918216916301000000909104168363ffffffff610c3a16565b6109a233610776565b15156109ad57600080fd5b600060045460a060020a900460ff1660038111156109c757fe5b14156109d257600080fd5b6004805475ffff000000000000000000000000000000000000000019169055565b6109fc336107b5565b1515610a0757600080fd5b600360045460a060020a900460ff166003811115610a2157fe5b14610a2b57600080fd5b6004805474ff0000000000000000000000000000000000000000191660a060020a17905560038054600160a060020a039290921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b6000610a9433610776565b1515610a9f57600080fd5b600060045460a060020a900460ff166003811115610ab957fe5b14610ac357600080fd5b6005541515610b755760048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251600160a060020a03909116916370a082319160248083019260209291908290030181600087803b158015610b3357600080fd5b505af1158015610b47573d6000803e3d6000fd5b505050506040513d6020811015610b5d57600080fd5b50519050801515610b6d57600080fd5b600281046005555b506004805474ff0000000000000000000000000000000000000000191660a060020a179055565b610ba533610d5c565b565b61016d81565b610ba533610d6d565b60035463010000009004600160a060020a03163314610bd457600080fd5b600160045460a060020a900460ff166003811115610bee57fe5b14610bf857600080fd5b60045460a860020a900460ff161515610c1057600080fd5b6004805475ff00000000000000000000000000000000000000000019169055565b610ba533610d7e565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610cb657600080fd5b505af1158015610cca573d6000803e3d6000fd5b505050506040513d6020811015610ce057600080fd5b50511515610ced57600080fd5b505050565b6105ff60028263ffffffff610d8f16565b6105ff60018263ffffffff610d8f16565b6000600160a060020a0382161515610d2b57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6105ff60008263ffffffff610d8f16565b6105ff60028263ffffffff610ddd16565b6105ff60018263ffffffff610ddd16565b6105ff60008263ffffffff610ddd16565b600160a060020a0381161515610da457600080fd5b610dae8282610d14565b15610db857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610df257600080fd5b610dfc8282610d14565b1515610e0757600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058201294b6d23ba0b99db018d2b973943cf860ea9ceb1232ea85e77d5e6f5d5a2e890029", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x80 DUP1 PUSH3 0x104F DUP4 CODECOPY DUP2 ADD PUSH1 0x40 SWAP1 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD SWAP2 DUP4 ADD MLOAD PUSH1 0x60 SWAP1 SWAP4 ADD MLOAD SWAP1 SWAP3 SWAP1 PUSH3 0x4D CALLER PUSH5 0x100000000 PUSH3 0x103 DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x61 CALLER PUSH5 0x100000000 PUSH3 0x121 DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x75 CALLER PUSH5 0x100000000 PUSH3 0x13C DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0xFF AND LT ISZERO DUP1 ISZERO PUSH3 0x8E JUMPI POP PUSH1 0x5 DUP4 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH3 0x9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH2 0xFFFF SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR PUSH3 0xFF0000 NOT AND PUSH3 0x10000 PUSH1 0xFF SWAP5 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 MUL SWAP3 SWAP1 SWAP3 OR PUSH4 0x1000000 PUSH1 0xB8 PUSH1 0x2 EXP SUB NOT AND PUSH4 0x1000000 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP3 DUP4 AND MUL OR SWAP1 SWAP3 SSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH3 0x1EA JUMP JUMPDEST PUSH3 0x11E PUSH1 0x0 DUP3 PUSH5 0x100000000 PUSH3 0xD8F PUSH3 0x157 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x11E PUSH1 0x1 DUP3 PUSH5 0x100000000 PUSH3 0xD8F PUSH3 0x157 DUP3 MUL OR DIV JUMP JUMPDEST PUSH3 0x11E PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH3 0xD8F PUSH3 0x157 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH3 0x16D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x182 DUP3 DUP3 PUSH5 0x100000000 PUSH3 0x1B2 DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH3 0x18D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x1CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xE55 DUP1 PUSH3 0x1FA PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x13D JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x162F986D DUP2 EQ PUSH2 0x142 JUMPI DUP1 PUSH4 0x1777FB4B EQ PUSH2 0x159 JUMPI DUP1 PUSH4 0x19A74AB3 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0x21B79D98 EQ PUSH2 0x197 JUMPI DUP1 PUSH4 0x231D4E2A EQ PUSH2 0x1AC JUMPI DUP1 PUSH4 0x29D10B6E EQ PUSH2 0x1CD JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0x302C11CA EQ PUSH2 0x20F JUMPI DUP1 PUSH4 0x34CDCF26 EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0x363AA6C7 EQ PUSH2 0x261 JUMPI DUP1 PUSH4 0x427534A4 EQ PUSH2 0x276 JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0x74BE7592 EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0x80258E47 EQ PUSH2 0x2CD JUMPI DUP1 PUSH4 0x81A24459 EQ PUSH2 0x2F8 JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x319 JUMPI DUP1 PUSH4 0x9E614CA0 EQ PUSH2 0x32E JUMPI DUP1 PUSH4 0xADA436E9 EQ PUSH2 0x343 JUMPI DUP1 PUSH4 0xB2A32CD5 EQ PUSH2 0x364 JUMPI DUP1 PUSH4 0xBE952494 EQ PUSH2 0x379 JUMPI DUP1 PUSH4 0xC6846EF8 EQ PUSH2 0x38E JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x3B5 JUMPI DUP1 PUSH4 0xDA408679 EQ PUSH2 0x3CA JUMPI DUP1 PUSH4 0xE9D61859 EQ PUSH2 0x3DF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x14E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0x3F4 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x165 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x45A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x45F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0x496 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x516 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x602 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x61F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x224 PUSH2 0x63C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x652 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0x66A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0x713 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x297 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x776 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x789 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2E2 PUSH2 0x7A6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x304 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x7B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x325 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0x7C8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0x999 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x9F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x370 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0xA89 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x385 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0xB9C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A3 PUSH2 0xBA7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0xBAD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0xBB6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0xC31 JUMP JUMPDEST PUSH2 0x3FD CALLER PUSH2 0x7B5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x408 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x422 JUMPI INVALID JUMPDEST EQ PUSH2 0x42C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x2 SWAP2 SWAP1 PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 JUMPDEST MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x47B JUMPI INVALID JUMPDEST EQ DUP1 ISZERO PUSH2 0x491 JUMPI POP PUSH1 0x4 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0x4B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4CE JUMPI INVALID JUMPDEST EQ PUSH2 0x4D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x4EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND PUSH1 0xA8 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x51F CALLER PUSH2 0x776 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x52A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x544 JUMPI INVALID JUMPDEST EQ PUSH2 0x54E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x5FF SWAP3 DUP5 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xC3A AND JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x60B CALLER PUSH2 0x7B5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x616 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5FF DUP2 PUSH2 0xCF2 JUMP JUMPDEST PUSH2 0x628 CALLER PUSH2 0x776 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x633 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5FF DUP2 PUSH2 0xD03 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x664 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xD14 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x673 CALLER PUSH2 0x7B5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x67E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x698 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x6A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH21 0x30000000000000000000000000000000000000000 OR PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH23 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x71C CALLER PUSH2 0x7B5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x727 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x741 JUMPI INVALID JUMPDEST EQ PUSH2 0x74B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 SWAP2 SWAP1 PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 PUSH2 0x453 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x664 PUSH1 0x1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xD14 AND JUMP JUMPDEST PUSH2 0x792 CALLER PUSH2 0x652 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x79D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5FF DUP2 PUSH2 0xD4B JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x664 PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xD14 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D3 CALLER PUSH2 0x652 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x7DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x7F8 JUMPI INVALID JUMPDEST EQ PUSH2 0x802 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0x81A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH2 0xFFFF AND ISZERO ISZERO PUSH2 0x890 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP2 AND PUSH23 0x100000000000000000000000000000000000000000000 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH2 0x958 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH2 0xFFFF PUSH1 0xB8 PUSH1 0x2 EXP DUP1 DUP5 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD DUP2 AND DUP3 MUL PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE SWAP1 SWAP2 DIV AND PUSH2 0x16E EQ ISZERO PUSH2 0x958 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH1 0x1 PUSH1 0xFF PUSH23 0x100000000000000000000000000000000000000000000 DUP1 DUP6 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD AND MUL PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH1 0x5 SLOAD PUSH1 0x2 SWAP1 DIV PUSH1 0x5 SSTORE JUMPDEST POP PUSH1 0x5 SLOAD PUSH2 0x16D SWAP1 DIV PUSH1 0x0 DUP2 GT PUSH2 0x96E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x4 SLOAD PUSH2 0x5FF SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 PUSH4 0x1000000 SWAP1 SWAP2 DIV AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xC3A AND JUMP JUMPDEST PUSH2 0x9A2 CALLER PUSH2 0x776 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x9AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x9C7 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x9D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH22 0xFFFF0000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x9FC CALLER PUSH2 0x7B5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xA07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA21 JUMPI INVALID JUMPDEST EQ PUSH2 0xA2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP3 SWAP1 SWAP3 AND PUSH4 0x1000000 MUL PUSH23 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA94 CALLER PUSH2 0x776 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xA9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xAB9 JUMPI INVALID JUMPDEST EQ PUSH2 0xAC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD ISZERO ISZERO PUSH2 0xB75 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB47 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO ISZERO PUSH2 0xB6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 DUP2 DIV PUSH1 0x5 SSTORE JUMPDEST POP PUSH1 0x4 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xBA5 CALLER PUSH2 0xD5C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x16D DUP2 JUMP JUMPDEST PUSH2 0xBA5 CALLER PUSH2 0xD6D JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0xBD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xBEE JUMPI INVALID JUMPDEST EQ PUSH2 0xBF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0xC10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xBA5 CALLER PUSH2 0xD7E JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xCCA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xCED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x5FF PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD8F AND JUMP JUMPDEST PUSH2 0x5FF PUSH1 0x1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD8F AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xD2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x5FF PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD8F AND JUMP JUMPDEST PUSH2 0x5FF PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xDDD AND JUMP JUMPDEST PUSH2 0x5FF PUSH1 0x1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xDDD AND JUMP JUMPDEST PUSH2 0x5FF PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xDDD AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xDA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDAE DUP3 DUP3 PUSH2 0xD14 JUMP JUMPDEST ISZERO PUSH2 0xDB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xDF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDFC DUP3 DUP3 PUSH2 0xD14 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xE07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 SLT SWAP5 0xb6 0xd2 EXTCODESIZE LOG0 0xb9 SWAP14 0xb0 XOR 0xd2 0xb9 PUSH20 0x943CF860EA9CEB1232EA85E77D5E6F5D5A2E8900 0x29 ", - "sourceMap": "558:3961:1:-;;;1139:396;8:9:-1;5:2;;;30:1;27;20:12;5:2;1139:396:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;364:22:3;375:10;364;;;;:22;:::i;:::-;368:24:0;381:10;368:12;;;;:24;:::i;:::-;366:26:2;381:10;366:14;;;;:26;:::i;:::-;1370:1:1;1358:8;:13;;;;:30;;;;;1387:1;1375:8;:13;;;;1358:30;1350:39;;;;;;;;1402:10;:22;;-1:-1:-1;;1402:22:1;;;;;;;;;;-1:-1:-1;;1435:20:1;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1466:21:1;;-1:-1:-1;;;;;1466:21:1;;;;;;;;1498:6;:29;;-1:-1:-1;;;;;;1498:29:1;;;;;;;;558:3961;;800:92:3;857:27;:14;876:7;857:18;;;;;;:27;:::i;:::-;800:92;:::o;824:96:0:-;883:29;:16;904:7;883:20;;;;;;:29;:::i;836:94:2:-;897:25;:12;914:7;897:16;;;;;;:25;:::i;244:167:5:-;-1:-1:-1;;;;;316:21:5;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:5;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:5;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:5;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:5;:11;:20;;;;;;;;;;;;;;;725:166::o;558:3961:1:-;;;;;;;" + "object": "60806040523480156200001157600080fd5b506040516080806200122083398101604090815281516020830151918301516060909301516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a038416179055919391620000819064010000000062000126810204565b620000953364010000000062000144810204565b620000a9336401000000006200015f810204565b60008360ff1610158015620000c2575060058360ff1611155b1515620000ce57600080fd5b506005805461ffff191661ffff949094169390931762ff000019166201000060ff939093169290920291909117630100000060b860020a0319166301000000600160a060020a0392909216919091021790556200020d565b6200014160028264010000000062000f3d6200017a82021704565b50565b6200014160038264010000000062000f3d6200017a82021704565b6200014160048264010000000062000f3d6200017a82021704565b600160a060020a03811615156200019057600080fd5b620001a58282640100000000620001d5810204565b15620001b057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001ed57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b611003806200021d6000396000f3006080604052600436106101485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630c08bf88811461014d578063162f986d146101645780631777fb4b1461017957806319a74ab3146101a257806321b79d98146101b7578063231d4e2a146101cc57806329d10b6e146101ed5780632e6b68491461020e578063302c11ca1461022f57806334cdcf2614610260578063363aa6c714610281578063427534a414610296578063608d3d3d146102ab57806374be7592146102cc57806380258e47146102ed57806381a244591461031857806399f4b251146103395780639e614ca01461034e578063ada436e914610363578063b2a32cd514610384578063be95249414610399578063c6846ef8146103ae578063d43acc79146103d5578063da408679146103ea578063e9d61859146103ff575b600080fd5b34801561015957600080fd5b50610162610414565b005b34801561017057600080fd5b50610162610432565b34801561018557600080fd5b5061018e6104a1565b604080519115158252519081900360200190f35b3480156101ae57600080fd5b5061018e6104a6565b3480156101c357600080fd5b506101626104dd565b3480156101d857600080fd5b50610162600160a060020a0360043516610577565b3480156101f957600080fd5b50610162600160a060020a0360043516610663565b34801561021a57600080fd5b50610162600160a060020a0360043516610680565b34801561023b57600080fd5b5061024461069d565b60408051600160a060020a039092168252519081900360200190f35b34801561026c57600080fd5b5061018e600160a060020a03600435166106b3565b34801561028d57600080fd5b506101626106cc565b3480156102a257600080fd5b50610162610764565b3480156102b757600080fd5b5061018e600160a060020a03600435166107d0565b3480156102d857600080fd5b50610162600160a060020a03600435166107e3565b3480156102f957600080fd5b50610302610800565b6040805160ff9092168252519081900360200190f35b34801561032457600080fd5b5061018e600160a060020a036004351661080f565b34801561034557600080fd5b50610162610822565b34801561035a57600080fd5b50610162610a1e565b34801561036f57600080fd5b50610162600160a060020a0360043516610a92565b34801561039057600080fd5b50610162610b2b565b3480156103a557600080fd5b50610162610c45565b3480156103ba57600080fd5b506103c3610c4e565b60408051918252519081900360200190f35b3480156103e157600080fd5b50610162610c54565b3480156103f657600080fd5b50610162610c5d565b34801561040b57600080fd5b50610162610cf2565b61041d336107d0565b151561042857600080fd5b610430610cfb565b565b60005460a060020a900460ff161561044957600080fd5b6104523361080f565b151561045d57600080fd5b600160055460b860020a900460ff16600381111561047757fe5b1461048157600080fd5b600580546002919060b860020a60ff02191660b860020a835b0217905550565b600190565b6000600160055460b860020a900460ff1660038111156104c257fe5b1480156104d8575060055460c060020a900460ff165b905090565b60005460a060020a900460ff16156104f457600080fd5b60055463010000009004600160a060020a0316331461051257600080fd5b600160055460b860020a900460ff16600381111561052c57fe5b1461053657600080fd5b60055460c060020a900460ff161561054d57600080fd5b6005805478ff000000000000000000000000000000000000000000000000191660c060020a179055565b610580336107d0565b151561058b57600080fd5b600060055460b860020a900460ff1660038111156105a557fe5b146105af57600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051610660928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b15801561061b57600080fd5b505af115801561062f573d6000803e3d6000fd5b505050506040513d602081101561064557600080fd5b5051600154600160a060020a0316919063ffffffff610dc216565b50565b61066c3361080f565b151561067757600080fd5b61066081610e7a565b610689336107d0565b151561069457600080fd5b61066081610e8b565b60055463010000009004600160a060020a031690565b60006106c660028363ffffffff610e9c16565b92915050565b60005460a060020a900460ff16156106e357600080fd5b6106ec3361080f565b15156106f757600080fd5b600360055460b860020a900460ff16600381111561071157fe5b141561071c57600080fd5b6005805460b860020a60ff021916770300000000000000000000000000000000000000000000001778ff00ffffffffffffffffffffffffffffffffffffffff00000019169055565b60005460a060020a900460ff161561077b57600080fd5b6107843361080f565b151561078f57600080fd5b600260055460b860020a900460ff1660038111156107a957fe5b146107b357600080fd5b600580546001919060b860020a60ff02191660b860020a8361049a565b60006106c660038363ffffffff610e9c16565b6107ec336106b3565b15156107f757600080fd5b61066081610ed3565b60055462010000900460ff1690565b60006106c660048363ffffffff610e9c16565b6000805460a060020a900460ff161561083a57600080fd5b610843336106b3565b151561084e57600080fd5b600160055460b860020a900460ff16600381111561086857fe5b1461087257600080fd5b60055460c060020a900460ff16151561088a57600080fd5b60055460d060020a900461ffff16151561090957600580547bffff00000000000000000000000000000000000000000000000000001979ff0000000000000000000000000000000000000000000000000019909116790100000000000000000000000000000000000000000000000000171660d060020a1790556109dd565b60058054600161ffff60d060020a808404821692909201811682027bffff00000000000000000000000000000000000000000000000000001990931692909217928390559091041661016e14156109dd57600580547bffff000000000000000000000000000000000000000000000000000019600160ff790100000000000000000000000000000000000000000000000000808504821692909201160279ff0000000000000000000000000000000000000000000000000019909216919091171660d060020a179055600654600290046006555b5060065461016d9004600081116109f357600080fd5b60055460015461066091600160a060020a03918216916301000000909104168363ffffffff610dc216565b60005460a060020a900460ff1615610a3557600080fd5b610a3e336107d0565b1515610a4957600080fd5b600060055460b860020a900460ff166003811115610a6357fe5b1415610a6e57600080fd5b6005805478ffff000000000000000000000000000000000000000000000019169055565b60005460a060020a900460ff1615610aa957600080fd5b610ab23361080f565b1515610abd57600080fd5b600360055460b860020a900460ff166003811115610ad757fe5b14610ae157600080fd5b60058054600160a060020a039290921663010000000260b860020a60ff021990921660b860020a1776ffffffffffffffffffffffffffffffffffffffff0000001916919091179055565b6000805460a060020a900460ff1615610b4357600080fd5b610b4c336107d0565b1515610b5757600080fd5b600060055460b860020a900460ff166003811115610b7157fe5b14610b7b57600080fd5b6006541515610c2c57600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b158015610bea57600080fd5b505af1158015610bfe573d6000803e3d6000fd5b505050506040513d6020811015610c1457600080fd5b50519050801515610c2457600080fd5b600281046006555b506005805460b860020a60ff02191660b860020a179055565b61043033610ee4565b61016d81565b61043033610ef5565b60005460a060020a900460ff1615610c7457600080fd5b60055463010000009004600160a060020a03163314610c9257600080fd5b600160055460b860020a900460ff166003811115610cac57fe5b14610cb657600080fd5b60055460c060020a900460ff161515610cce57600080fd5b6005805478ff00000000000000000000000000000000000000000000000019169055565b61043033610f06565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610d6057600080fd5b505af1158015610d74573d6000803e3d6000fd5b505050506040513d6020811015610d8a57600080fd5b505190506000811115610dba57600054600154610dba91600160a060020a0391821691168363ffffffff610dc216565b610660610f17565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610e3e57600080fd5b505af1158015610e52573d6000803e3d6000fd5b505050506040513d6020811015610e6857600080fd5b50511515610e7557600080fd5b505050565b61066060048263ffffffff610f3d16565b61066060038263ffffffff610f3d16565b6000600160a060020a0382161515610eb357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61066060028263ffffffff610f3d16565b61066060048263ffffffff610f8b16565b61066060038263ffffffff610f8b16565b61066060028263ffffffff610f8b16565b6000805474ff0000000000000000000000000000000000000000191660a060020a179055565b600160a060020a0381161515610f5257600080fd5b610f5c8282610e9c565b15610f6657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610fa057600080fd5b610faa8282610e9c565b1515610fb557600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058200a38ca8f69ea6e0732674e2a58d5b93661b5c2aa8a6c6b89ced63a3d5f3186730029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x80 DUP1 PUSH3 0x1220 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 SWAP1 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD SWAP2 DUP4 ADD MLOAD PUSH1 0x60 SWAP1 SWAP4 ADD MLOAD PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP2 DUP3 AND DUP2 OR PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND OR SWAP1 SSTORE SWAP2 SWAP4 SWAP2 PUSH3 0x81 SWAP1 PUSH5 0x100000000 PUSH3 0x126 DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x95 CALLER PUSH5 0x100000000 PUSH3 0x144 DUP2 MUL DIV JUMP JUMPDEST PUSH3 0xA9 CALLER PUSH5 0x100000000 PUSH3 0x15F DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0xFF AND LT ISZERO DUP1 ISZERO PUSH3 0xC2 JUMPI POP PUSH1 0x5 DUP4 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH3 0xCE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x5 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH2 0xFFFF SWAP5 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR PUSH3 0xFF0000 NOT AND PUSH3 0x10000 PUSH1 0xFF SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR PUSH4 0x1000000 PUSH1 0xB8 PUSH1 0x2 EXP SUB NOT AND PUSH4 0x1000000 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 MUL OR SWAP1 SSTORE PUSH3 0x20D JUMP JUMPDEST PUSH3 0x141 PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH3 0xF3D PUSH3 0x17A DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x141 PUSH1 0x3 DUP3 PUSH5 0x100000000 PUSH3 0xF3D PUSH3 0x17A DUP3 MUL OR DIV JUMP JUMPDEST PUSH3 0x141 PUSH1 0x4 DUP3 PUSH5 0x100000000 PUSH3 0xF3D PUSH3 0x17A DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH3 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1A5 DUP3 DUP3 PUSH5 0x100000000 PUSH3 0x1D5 DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH3 0x1B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x1ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1003 DUP1 PUSH3 0x21D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x148 JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0xC08BF88 DUP2 EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x162F986D EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x1777FB4B EQ PUSH2 0x179 JUMPI DUP1 PUSH4 0x19A74AB3 EQ PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x21B79D98 EQ PUSH2 0x1B7 JUMPI DUP1 PUSH4 0x231D4E2A EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0x29D10B6E EQ PUSH2 0x1ED JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0x302C11CA EQ PUSH2 0x22F JUMPI DUP1 PUSH4 0x34CDCF26 EQ PUSH2 0x260 JUMPI DUP1 PUSH4 0x363AA6C7 EQ PUSH2 0x281 JUMPI DUP1 PUSH4 0x427534A4 EQ PUSH2 0x296 JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x2AB JUMPI DUP1 PUSH4 0x74BE7592 EQ PUSH2 0x2CC JUMPI DUP1 PUSH4 0x80258E47 EQ PUSH2 0x2ED JUMPI DUP1 PUSH4 0x81A24459 EQ PUSH2 0x318 JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x339 JUMPI DUP1 PUSH4 0x9E614CA0 EQ PUSH2 0x34E JUMPI DUP1 PUSH4 0xADA436E9 EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0xB2A32CD5 EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0xBE952494 EQ PUSH2 0x399 JUMPI DUP1 PUSH4 0xC6846EF8 EQ PUSH2 0x3AE JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x3D5 JUMPI DUP1 PUSH4 0xDA408679 EQ PUSH2 0x3EA JUMPI DUP1 PUSH4 0xE9D61859 EQ PUSH2 0x3FF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x159 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x414 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x432 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0x4A1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0x4A6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x4DD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x577 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x663 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x680 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x244 PUSH2 0x69D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x6B3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x6CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x764 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x7D0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x7E3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH2 0x800 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x80F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x345 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x822 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0xA1E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x36F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0xA92 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0xB2B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0xC45 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C3 PUSH2 0xC4E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0xC54 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0xC5D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0xCF2 JUMP JUMPDEST PUSH2 0x41D CALLER PUSH2 0x7D0 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x430 PUSH2 0xCFB JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x452 CALLER PUSH2 0x80F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x477 JUMPI INVALID JUMPDEST EQ PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x2 SWAP2 SWAP1 PUSH1 0xB8 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xB8 PUSH1 0x2 EXP DUP4 JUMPDEST MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4C2 JUMPI INVALID JUMPDEST EQ DUP1 ISZERO PUSH2 0x4D8 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xC0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x4F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0x512 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x52C JUMPI INVALID JUMPDEST EQ PUSH2 0x536 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xC0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x54D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH25 0xFF000000000000000000000000000000000000000000000000 NOT AND PUSH1 0xC0 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x580 CALLER PUSH2 0x7D0 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x58B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5A5 JUMPI INVALID JUMPDEST EQ PUSH2 0x5AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x660 SWAP3 DUP5 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x61B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x62F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x645 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xDC2 AND JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x66C CALLER PUSH2 0x80F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x660 DUP2 PUSH2 0xE7A JUMP JUMPDEST PUSH2 0x689 CALLER PUSH2 0x7D0 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x694 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x660 DUP2 PUSH2 0xE8B JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C6 PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xE9C AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x6E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6EC CALLER PUSH2 0x80F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x6F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x711 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x71C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH24 0x30000000000000000000000000000000000000000000000 OR PUSH25 0xFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x77B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x784 CALLER PUSH2 0x80F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x78F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x7A9 JUMPI INVALID JUMPDEST EQ PUSH2 0x7B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 SWAP2 SWAP1 PUSH1 0xB8 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xB8 PUSH1 0x2 EXP DUP4 PUSH2 0x49A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C6 PUSH1 0x3 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xE9C AND JUMP JUMPDEST PUSH2 0x7EC CALLER PUSH2 0x6B3 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x7F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x660 DUP2 PUSH2 0xED3 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C6 PUSH1 0x4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xE9C AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x83A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x843 CALLER PUSH2 0x6B3 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x84E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x868 JUMPI INVALID JUMPDEST EQ PUSH2 0x872 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xC0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0x88A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xD0 PUSH1 0x2 EXP SWAP1 DIV PUSH2 0xFFFF AND ISZERO ISZERO PUSH2 0x909 JUMPI PUSH1 0x5 DUP1 SLOAD PUSH28 0xFFFF0000000000000000000000000000000000000000000000000000 NOT PUSH26 0xFF00000000000000000000000000000000000000000000000000 NOT SWAP1 SWAP2 AND PUSH26 0x100000000000000000000000000000000000000000000000000 OR AND PUSH1 0xD0 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH2 0x9DD JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH2 0xFFFF PUSH1 0xD0 PUSH1 0x2 EXP DUP1 DUP5 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD DUP2 AND DUP3 MUL PUSH28 0xFFFF0000000000000000000000000000000000000000000000000000 NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE SWAP1 SWAP2 DIV AND PUSH2 0x16E EQ ISZERO PUSH2 0x9DD JUMPI PUSH1 0x5 DUP1 SLOAD PUSH28 0xFFFF0000000000000000000000000000000000000000000000000000 NOT PUSH1 0x1 PUSH1 0xFF PUSH26 0x100000000000000000000000000000000000000000000000000 DUP1 DUP6 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD AND MUL PUSH26 0xFF00000000000000000000000000000000000000000000000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR AND PUSH1 0xD0 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH1 0x6 SLOAD PUSH1 0x2 SWAP1 DIV PUSH1 0x6 SSTORE JUMPDEST POP PUSH1 0x6 SLOAD PUSH2 0x16D SWAP1 DIV PUSH1 0x0 DUP2 GT PUSH2 0x9F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 SLOAD PUSH2 0x660 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 PUSH4 0x1000000 SWAP1 SWAP2 DIV AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xDC2 AND JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xA35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA3E CALLER PUSH2 0x7D0 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xA49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA63 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xA6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xAA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAB2 CALLER PUSH2 0x80F JUMP JUMPDEST ISZERO ISZERO PUSH2 0xABD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xAD7 JUMPI INVALID JUMPDEST EQ PUSH2 0xAE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP3 SWAP1 SWAP3 AND PUSH4 0x1000000 MUL PUSH1 0xB8 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT SWAP1 SWAP3 AND PUSH1 0xB8 PUSH1 0x2 EXP OR PUSH23 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 NOT AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xB43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB4C CALLER PUSH2 0x7D0 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xB57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xB71 JUMPI INVALID JUMPDEST EQ PUSH2 0xB7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD ISZERO ISZERO PUSH2 0xC2C JUMPI PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO ISZERO PUSH2 0xC24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 DUP2 DIV PUSH1 0x6 SSTORE JUMPDEST POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x430 CALLER PUSH2 0xEE4 JUMP JUMPDEST PUSH2 0x16D DUP2 JUMP JUMPDEST PUSH2 0x430 CALLER PUSH2 0xEF5 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xC74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0xC92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xCAC JUMPI INVALID JUMPDEST EQ PUSH2 0xCB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xC0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0xCCE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH25 0xFF000000000000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x430 CALLER PUSH2 0xF06 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD74 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0xDBA JUMPI PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0xDBA SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xDC2 AND JUMP JUMPDEST PUSH2 0x660 PUSH2 0xF17 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE52 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xE75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x660 PUSH1 0x4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xF3D AND JUMP JUMPDEST PUSH2 0x660 PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xF3D AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xEB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x660 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xF3D AND JUMP JUMPDEST PUSH2 0x660 PUSH1 0x4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xF8B AND JUMP JUMPDEST PUSH2 0x660 PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xF8B AND JUMP JUMPDEST PUSH2 0x660 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xF8B AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xF52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF5C DUP3 DUP3 PUSH2 0xE9C JUMP JUMPDEST ISZERO PUSH2 0xF66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xFA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFAA DUP3 DUP3 PUSH2 0xE9C JUMP JUMPDEST ISZERO ISZERO PUSH2 0xFB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 EXP CODESIZE 0xca DUP16 PUSH10 0xEA6E0732674E2A58D5B9 CALLDATASIZE PUSH2 0xB5C2 0xaa DUP11 PUSH13 0x6B89CED63A3D5F318673002900 ", + "sourceMap": "592:4229:1:-;;;1163:410;8:9:-1;5:2;;;30:1;27;20:12;5:2;1163:410:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;156:8:6;:21;;167:10;-1:-1:-1;;;;;;156:21:6;;;;;-1:-1:-1;;;;;;188:19:6;;;;-1:-1:-1;636:29:4;;;;;-1:-1:-1;;;;;636:29:4;;;;;1163:410:1;;;364:22:3;;:10;;;;:22;:::i;:::-;368:24:0;381:10;368:12;;;;:24;:::i;:::-;366:26:2;381:10;366:14;;;;:26;:::i;:::-;1441:1:1;1429:8;:13;;;;:30;;;;;1458:1;1446:8;:13;;;;1429:30;1421:39;;;;;;;;-1:-1:-1;1473:10:1;:22;;-1:-1:-1;;1473:22:1;;;;;;;;;;-1:-1:-1;;1506:20:1;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1537:28:1;;-1:-1:-1;;;;;1537:28:1;;;;;;;;;;;592:4229;;800:92:3;857:27;:14;876:7;857:18;;;;;;:27;:::i;:::-;800:92;:::o;824:96:0:-;883:29;:16;904:7;883:20;;;;;;:29;:::i;836:94:2:-;897:25;:12;914:7;897:16;;;;;;:25;:::i;244:167:7:-;-1:-1:-1;;;;;316:21:7;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:7;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:7;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:7;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:7;:11;:20;;;;;;;;;;;;;;;725:166::o;592:4229:1:-;;;;;;;" }, "gasEstimates": { "creation": { - "codeDepositCost": "733800", + "codeDepositCost": "819800", "executionCost": "infinite", "totalCost": "infinite" }, "external": { - "DAYS_PER_YEAR()": "624", + "DAYS_PER_YEAR()": "646", "activateMiner()": "infinite", "addCoreTeam(address)": "infinite", "addSupervisor(address)": "infinite", "addSystem(address)": "infinite", "deactivateMiner()": "infinite", - "getCategory()": "696", - "getMiner()": "702", - "isAlgoMiner()": "212", + "getCategory()": "718", + "getMiner()": "724", + "isAlgoMiner()": "234", "isCoreTeam(address)": "infinite", - "isMining()": "859", + "isMining()": "881", "isSupervisor(address)": "infinite", "isSystem(address)": "infinite", "migrateMiner(address)": "infinite", @@ -436,9 +445,10 @@ "renounceSystem()": "infinite", "resetMiner(address)": "infinite", "resumeMining()": "infinite", - "startMining()": "21420", + "startMining()": "21742", "stopAndRemoveOwnership()": "infinite", - "stopMining()": "21772" + "stopMining()": "22094", + "terminate()": "infinite" } }, "methodIdentifiers": { @@ -465,10 +475,11 @@ "resumeMining()": "427534a4", "startMining()": "21b79d98", "stopAndRemoveOwnership()": "363aa6c7", - "stopMining()": "da408679" + "stopMining()": "da408679", + "terminate()": "0c08bf88" } }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"pauseMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isAlgoMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isMining\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"startMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newMinerAddress\",\"type\":\"address\"}],\"name\":\"migrateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSystem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopAndRemoveOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"resumeMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCategory\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSupervisor\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"deactivateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwnerAddress\",\"type\":\"address\"}],\"name\":\"resetMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"activateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DAYS_PER_YEAR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"minerType\",\"type\":\"uint16\"},{\"name\":\"category\",\"type\":\"uint8\"},{\"name\":\"ownerAddress\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":\"AlgoMiner\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":{\"keccak256\":\"0x3ac3214ab22215c557c0d9142bea5ee16bcedce1d06f4d36dded90b7c14e830a\",\"urls\":[\"bzzr://bf787e40723cedd9971737e335d4fe5d7cefef399c5de208ed362e7e336a624b\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol\":{\"keccak256\":\"0x20955eaf60f79f885c941d97e208320c9e0bc1f05b8121342f8187f9a39fd46b\",\"urls\":[\"bzzr://8e30e53aa0322307873f8c0a4fc3c58b7562a0fde92a0921a52bdef4e129ec4b\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol\":{\"keccak256\":\"0x6fffe504e6805d95ca42269cc995a3de9401a12bc037068b056c186ce8569d8d\",\"urls\":[\"bzzr://a0923a2d2b1e4992f552ce49638b19d6d8328950c1d5dc1395f0d625daf21c68\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0x94c226040dfda257ee61c1455bbb920db28b6ad0f5cba33ecc76319c003630b7\",\"urls\":[\"bzzr://bdd0568ed74054f0f91933dab7fbba6789cceb60ab2f5200d719347161e8feed\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"terminate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pauseMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isAlgoMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isMining\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"startMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newMinerAddress\",\"type\":\"address\"}],\"name\":\"migrateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSystem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopAndRemoveOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"resumeMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCategory\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSupervisor\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"deactivateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwnerAddress\",\"type\":\"address\"}],\"name\":\"resetMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"activateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DAYS_PER_YEAR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"minerType\",\"type\":\"uint16\"},{\"name\":\"category\",\"type\":\"uint8\"},{\"name\":\"minerAccountAddress\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":\"AlgoMiner\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":{\"keccak256\":\"0xb98f40d28a99d50fe3a6c5b8411495818db9a438b3f765f73280ae03c6c6063b\",\"urls\":[\"bzzr://dba29214974be1b8b9698babc431c5784cae1dc4785c928e3a050f1ff8ed0434\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol\":{\"keccak256\":\"0x20955eaf60f79f885c941d97e208320c9e0bc1f05b8121342f8187f9a39fd46b\",\"urls\":[\"bzzr://8e30e53aa0322307873f8c0a4fc3c58b7562a0fde92a0921a52bdef4e129ec4b\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol\":{\"keccak256\":\"0x6fffe504e6805d95ca42269cc995a3de9401a12bc037068b056c186ce8569d8d\",\"urls\":[\"bzzr://a0923a2d2b1e4992f552ce49638b19d6d8328950c1d5dc1395f0d625daf21c68\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol\":{\"keccak256\":\"0x71adbf7f060599239b7a981594e43dc8fbe8597fd2853b6fe9e70ff39883d73a\",\"urls\":[\"bzzr://70691c1638cdc0f744f8c5b5a94e4f857ba40ad053816cfbd15e13ed41a3bc66\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0x94c226040dfda257ee61c1455bbb920db28b6ad0f5cba33ecc76319c003630b7\",\"urls\":[\"bzzr://bdd0568ed74054f0f91933dab7fbba6789cceb60ab2f5200d719347161e8feed\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol\":{\"keccak256\":\"0x29a8fa3204dbd204355714601ce21d7d717a586a4de21009d8f2a3ca7981963f\",\"urls\":[\"bzzr://55d9b762620cef1e6f7b11a26d6cc123f5b608a59e0d36f9bc0a1e8ff0ff5c42\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -624,6 +635,40 @@ } } }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol": { + "ERC20TokenHolder": { + "abi": [ + { + "inputs": [ + { + "name": "tokenAddress", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": {} + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol": { "IAlgoMiner": { "abi": [ @@ -708,6 +753,35 @@ } } }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol": { + "Terminable": { + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": {} + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { "Roles": { "abi": [], @@ -720,7 +794,7 @@ "linkReferences": {}, "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820ba9d82b11504517181f938ed511f09c0a22046ef39e2e32460a2175b508e16a80029", "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xba SWAP14 DUP3 0xb1 ISZERO DIV MLOAD PUSH18 0x81F938ED511F09C0A22046EF39E2E32460A2 OR JUMPDEST POP DUP15 AND 0xa8 STOP 0x29 ", - "sourceMap": "109:784:5:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "sourceMap": "109:784:7:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -754,7 +828,7 @@ "linkReferences": {}, "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820da2bd0dd3588878574232c2d13f92e16f4b0e8ad94ede9adb0d087f862d4f8cf0029", "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xda 0x2b 0xd0 0xdd CALLDATALOAD DUP9 DUP8 DUP6 PUSH21 0x232C2D13F92E16F4B0E8AD94EDE9ADB0D087F862D4 0xf8 0xcf STOP 0x29 ", - "sourceMap": "117:1531:6:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "sourceMap": "117:1531:8:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -994,7 +1068,7 @@ "linkReferences": {}, "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820c0f55d8db2bd761049fa5ba6b6c207a4d595b758946aba3715580373517606710029", "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xc0 0xf5 0x5d DUP14 0xb2 0xbd PUSH23 0x1049FA5BA6B6C207A4D595B758946ABA37155803735176 MOD PUSH18 0x2900000000000000000000000000000000 ", - "sourceMap": "353:1296:8:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "sourceMap": "353:1296:10:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -1048,7 +1122,7 @@ "id": 2, "nodeType": "ImportDirective", "scope": 87, - "sourceUnit": 816, + "sourceUnit": 935, "src": "28:189:0", "symbolAliases": [], "unitAlias": "" @@ -1073,10 +1147,10 @@ "id": 3, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 815, + "referencedDeclaration": 934, "src": "260:5:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$815", + "typeIdentifier": "t_contract$_Roles_$934", "typeString": "library Roles" } }, @@ -1087,10 +1161,10 @@ "id": 4, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 728, + "referencedDeclaration": 847, "src": "270:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", "typeString": "struct Roles.Role" } } @@ -1105,7 +1179,7 @@ "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage", + "typeIdentifier": "t_struct$_Role_$847_storage", "typeString": "struct Roles.Role" }, "typeName": { @@ -1113,10 +1187,10 @@ "id": 6, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 728, + "referencedDeclaration": 847, "src": "289:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -1141,7 +1215,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1171, + "referencedDeclaration": 1290, "src": "381:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1249,7 +1323,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1171, + "referencedDeclaration": 1290, "src": "462:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1315,10 +1389,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, + "referencedDeclaration": 1293, "src": "443:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -1403,7 +1477,7 @@ "referencedDeclaration": 7, "src": "584:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage", + "typeIdentifier": "t_struct$_Role_$847_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1414,10 +1488,10 @@ "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 814, + "referencedDeclaration": 933, "src": "584:20:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$728_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$847_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, @@ -1677,7 +1751,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1171, + "referencedDeclaration": 1290, "src": "797:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1804,7 +1878,7 @@ "referencedDeclaration": 7, "src": "883:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage", + "typeIdentifier": "t_struct$_Role_$847_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1815,10 +1889,10 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 760, + "referencedDeclaration": 879, "src": "883:20:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$728_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$847_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -1936,7 +2010,7 @@ "referencedDeclaration": 7, "src": "990:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage", + "typeIdentifier": "t_struct$_Role_$847_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1947,10 +2021,10 @@ "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 791, + "referencedDeclaration": 910, "src": "990:23:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$728_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$847_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -2042,10 +2116,10 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol", "exportedSymbols": { "AlgoMiner": [ - 524 + 549 ] }, - "id": 525, + "id": 550, "nodeType": "SourceUnit", "nodes": [ { @@ -2063,8 +2137,8 @@ "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "id": 89, "nodeType": "ImportDirective", - "scope": 525, - "sourceUnit": 1013, + "scope": 550, + "sourceUnit": 1132, "src": "27:195:1", "symbolAliases": [], "unitAlias": "" @@ -2074,8 +2148,8 @@ "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "id": 90, "nodeType": "ImportDirective", - "scope": 525, - "sourceUnit": 1157, + "scope": 550, + "sourceUnit": 1276, "src": "224:198:1", "symbolAliases": [], "unitAlias": "" @@ -2085,42 +2159,53 @@ "file": "./IAlgoMiner.sol", "id": 91, "nodeType": "ImportDirective", - "scope": 525, - "sourceUnit": 722, + "scope": 550, + "sourceUnit": 804, "src": "426:26:1", "symbolAliases": [], "unitAlias": "" }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol", + "file": "./ERC20TokenHolder.sol", + "id": 92, + "nodeType": "ImportDirective", + "scope": 550, + "sourceUnit": 781, + "src": "454:32:1", + "symbolAliases": [], + "unitAlias": "" + }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol", "file": "./AlgoSystemRole.sol", - "id": 92, + "id": 93, "nodeType": "ImportDirective", - "scope": 525, - "sourceUnit": 699, - "src": "454:30:1", + "scope": 550, + "sourceUnit": 724, + "src": "488:30:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol", "file": "./AlgoCoreTeamRole.sol", - "id": 93, + "id": 94, "nodeType": "ImportDirective", - "scope": 525, + "scope": 550, "sourceUnit": 87, - "src": "486:32:1", + "src": "520:32:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol", "file": "./AlgoSupervisorRole.sol", - "id": 94, + "id": 95, "nodeType": "ImportDirective", - "scope": 525, - "sourceUnit": 612, - "src": "520:34:1", + "scope": 550, + "sourceUnit": 637, + "src": "554:34:1", "symbolAliases": [], "unitAlias": "" }, @@ -2130,131 +2215,153 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 95, - "name": "AlgoSystemRole", + "id": 96, + "name": "ERC20TokenHolder", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 698, - "src": "580:14:1", + "referencedDeclaration": 780, + "src": "614:16:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoSystemRole_$698", - "typeString": "contract AlgoSystemRole" + "typeIdentifier": "t_contract$_ERC20TokenHolder_$780", + "typeString": "contract ERC20TokenHolder" } }, - "id": 96, + "id": 97, "nodeType": "InheritanceSpecifier", - "src": "580:14:1" + "src": "614:16:1" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 97, + "id": 98, + "name": "AlgoSystemRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 723, + "src": "632:14:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AlgoSystemRole_$723", + "typeString": "contract AlgoSystemRole" + } + }, + "id": 99, + "nodeType": "InheritanceSpecifier", + "src": "632:14:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 100, "name": "AlgoCoreTeamRole", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 86, - "src": "596:16:1", + "src": "648:16:1", "typeDescriptions": { "typeIdentifier": "t_contract$_AlgoCoreTeamRole_$86", "typeString": "contract AlgoCoreTeamRole" } }, - "id": 98, + "id": 101, "nodeType": "InheritanceSpecifier", - "src": "596:16:1" + "src": "648:16:1" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 99, + "id": 102, "name": "AlgoSupervisorRole", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 611, - "src": "614:18:1", + "referencedDeclaration": 636, + "src": "666:18:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoSupervisorRole_$611", + "typeIdentifier": "t_contract$_AlgoSupervisorRole_$636", "typeString": "contract AlgoSupervisorRole" } }, - "id": 100, + "id": 103, "nodeType": "InheritanceSpecifier", - "src": "614:18:1" + "src": "666:18:1" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 101, + "id": 104, "name": "IAlgoMiner", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 721, - "src": "634:10:1", + "referencedDeclaration": 803, + "src": "686:10:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$721", + "typeIdentifier": "t_contract$_IAlgoMiner_$803", "typeString": "contract IAlgoMiner" } }, - "id": 102, + "id": 105, "nodeType": "InheritanceSpecifier", - "src": "634:10:1" + "src": "686:10:1" } ], "contractDependencies": [ + 636, 86, - 611, - 698, - 721 + 780, + 723, + 803, + 840 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 524, + "id": 549, "linearizedBaseContracts": [ - 524, - 721, - 611, + 549, + 803, + 636, 86, - 698 + 723, + 780, + 840 ], "name": "AlgoMiner", "nodeType": "ContractDefinition", "nodes": [ { - "id": 105, + "id": 108, "libraryName": { "contractScope": null, - "id": 103, + "id": 106, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1156, - "src": "658:9:1", + "referencedDeclaration": 1275, + "src": "710:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1156", + "typeIdentifier": "t_contract$_SafeERC20_$1275", "typeString": "library SafeERC20" } }, "nodeType": "UsingForDirective", - "src": "652:27:1", + "src": "704:27:1", "typeName": { "contractScope": null, - "id": 104, + "id": 107, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1012, - "src": "672:6:1", + "referencedDeclaration": 1131, + "src": "724:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" } } }, { "constant": true, - "id": 108, + "id": 111, "name": "DAYS_PER_YEAR", "nodeType": "VariableDeclaration", - "scope": 524, - "src": "687:43:1", + "scope": 549, + "src": "739:43:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2262,10 +2369,10 @@ "typeString": "uint256" }, "typeName": { - "id": 106, + "id": 109, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "687:7:1", + "src": "739:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2274,14 +2381,14 @@ "value": { "argumentTypes": null, "hexValue": "333635", - "id": 107, + "id": 110, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "727:3:1", + "src": "779:3:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_365_by_1", @@ -2293,44 +2400,44 @@ }, { "canonicalName": "AlgoMiner.MinerState", - "id": 113, + "id": 116, "members": [ { - "id": 109, + "id": 112, "name": "Deactivated", "nodeType": "EnumValue", - "src": "766:11:1" + "src": "818:11:1" }, { - "id": 110, + "id": 113, "name": "Activated", "nodeType": "EnumValue", - "src": "788:9:1" + "src": "840:9:1" }, { - "id": 111, + "id": 114, "name": "Suspended", "nodeType": "EnumValue", - "src": "808:9:1" + "src": "860:9:1" }, { - "id": 112, + "id": 115, "name": "Stopped", "nodeType": "EnumValue", - "src": "828:7:1" + "src": "880:7:1" } ], "name": "MinerState", "nodeType": "EnumDefinition", - "src": "739:103:1" + "src": "791:103:1" }, { "constant": false, - "id": 115, + "id": 118, "name": "_minerType", "nodeType": "VariableDeclaration", - "scope": 524, - "src": "850:25:1", + "scope": 549, + "src": "902:25:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2338,10 +2445,10 @@ "typeString": "uint16" }, "typeName": { - "id": 114, + "id": 117, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "850:6:1", + "src": "902:6:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -2352,11 +2459,11 @@ }, { "constant": false, - "id": 117, + "id": 120, "name": "_category", "nodeType": "VariableDeclaration", - "scope": 524, - "src": "882:23:1", + "scope": 549, + "src": "934:23:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2364,10 +2471,10 @@ "typeString": "uint8" }, "typeName": { - "id": 116, + "id": 119, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "882:5:1", + "src": "934:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2378,11 +2485,11 @@ }, { "constant": false, - "id": 119, + "id": 122, "name": "_miner", "nodeType": "VariableDeclaration", - "scope": 524, - "src": "912:22:1", + "scope": 549, + "src": "964:22:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2390,10 +2497,10 @@ "typeString": "address" }, "typeName": { - "id": 118, + "id": 121, "name": "address", "nodeType": "ElementaryTypeName", - "src": "912:7:1", + "src": "964:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2404,54 +2511,26 @@ }, { "constant": false, - "id": 121, - "name": "_token", - "nodeType": "VariableDeclaration", - "scope": 524, - "src": "941:21:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", - "typeString": "contract IERC20" - }, - "typeName": { - "contractScope": null, - "id": 120, - "name": "IERC20", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1012, - "src": "941:6:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", - "typeString": "contract IERC20" - } - }, - "value": null, - "visibility": "private" - }, - { - "constant": false, - "id": 123, + "id": 124, "name": "_state", "nodeType": "VariableDeclaration", - "scope": 524, - "src": "971:25:1", + "scope": 549, + "src": "995:25:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" }, "typeName": { "contractScope": null, - "id": 122, + "id": 123, "name": "MinerState", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 113, - "src": "971:10:1", + "referencedDeclaration": 116, + "src": "995:10:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -2460,11 +2539,11 @@ }, { "constant": false, - "id": 125, + "id": 126, "name": "_mining", "nodeType": "VariableDeclaration", - "scope": 524, - "src": "1003:20:1", + "scope": 549, + "src": "1027:20:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2472,10 +2551,10 @@ "typeString": "bool" }, "typeName": { - "id": 124, + "id": 125, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1003:4:1", + "src": "1027:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2486,11 +2565,11 @@ }, { "constant": false, - "id": 127, + "id": 128, "name": "_currentYear", "nodeType": "VariableDeclaration", - "scope": 524, - "src": "1030:26:1", + "scope": 549, + "src": "1054:26:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2498,10 +2577,10 @@ "typeString": "uint8" }, "typeName": { - "id": 126, + "id": 127, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1030:5:1", + "src": "1054:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2512,11 +2591,11 @@ }, { "constant": false, - "id": 129, + "id": 130, "name": "_currentDay", "nodeType": "VariableDeclaration", - "scope": 524, - "src": "1063:26:1", + "scope": 549, + "src": "1087:26:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2524,10 +2603,10 @@ "typeString": "uint16" }, "typeName": { - "id": 128, + "id": 129, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "1063:6:1", + "src": "1087:6:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -2538,11 +2617,11 @@ }, { "constant": false, - "id": 131, + "id": 132, "name": "_currentYearSupply", "nodeType": "VariableDeclaration", - "scope": 524, - "src": "1096:34:1", + "scope": 549, + "src": "1120:34:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2550,10 +2629,10 @@ "typeString": "uint256" }, "typeName": { - "id": 130, + "id": 131, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1096:7:1", + "src": "1120:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2564,9 +2643,9 @@ }, { "body": { - "id": 176, + "id": 174, "nodeType": "Block", - "src": "1329:206:1", + "src": "1400:173:1", "statements": [ { "expression": { @@ -2578,7 +2657,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 155, + "id": 159, "isConstant": false, "isLValue": false, "isPure": false, @@ -2589,19 +2668,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 151, + "id": 155, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 149, + "id": 153, "name": "category", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 135, - "src": "1358:8:1", + "referencedDeclaration": 136, + "src": "1429:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2612,14 +2691,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 150, + "id": 154, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1370:1:1", + "src": "1441:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2627,7 +2706,7 @@ }, "value": "0" }, - "src": "1358:13:1", + "src": "1429:13:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2641,19 +2720,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 154, + "id": 158, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 152, + "id": 156, "name": "category", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 135, - "src": "1375:8:1", + "referencedDeclaration": 136, + "src": "1446:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2664,14 +2743,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "35", - "id": 153, + "id": 157, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1387:1:1", + "src": "1458:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -2679,13 +2758,13 @@ }, "value": "5" }, - "src": "1375:13:1", + "src": "1446:13:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1358:30:1", + "src": "1429:30:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2699,21 +2778,21 @@ "typeString": "bool" } ], - "id": 148, + "id": 152, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "1350:7:1", + "referencedDeclaration": 1293, + "src": "1421:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 156, + "id": 160, "isConstant": false, "isLValue": false, "isPure": false, @@ -2721,61 +2800,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1350:39:1", + "src": "1421:39:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 157, - "nodeType": "ExpressionStatement", - "src": "1350:39:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 160, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 158, - "name": "_minerType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 115, - "src": "1402:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 159, - "name": "minerType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 133, - "src": "1415:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "src": "1402:22:1", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, "id": 161, "nodeType": "ExpressionStatement", - "src": "1402:22:1" + "src": "1421:39:1" }, { "expression": { @@ -2788,14 +2821,14 @@ "leftHandSide": { "argumentTypes": null, "id": 162, - "name": "_category", + "name": "_minerType", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 117, - "src": "1435:9:1", + "referencedDeclaration": 118, + "src": "1473:10:1", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint16", + "typeString": "uint16" } }, "nodeType": "Assignment", @@ -2803,25 +2836,25 @@ "rightHandSide": { "argumentTypes": null, "id": 163, - "name": "category", + "name": "minerType", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 135, - "src": "1447:8:1", + "referencedDeclaration": 134, + "src": "1486:9:1", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint16", + "typeString": "uint16" } }, - "src": "1435:20:1", + "src": "1473:22:1", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint16", + "typeString": "uint16" } }, "id": 165, "nodeType": "ExpressionStatement", - "src": "1435:20:1" + "src": "1473:22:1" }, { "expression": { @@ -2834,14 +2867,14 @@ "leftHandSide": { "argumentTypes": null, "id": 166, - "name": "_miner", + "name": "_category", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 119, - "src": "1466:6:1", + "referencedDeclaration": 120, + "src": "1506:9:1", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } }, "nodeType": "Assignment", @@ -2849,30 +2882,30 @@ "rightHandSide": { "argumentTypes": null, "id": 167, - "name": "ownerAddress", + "name": "category", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 137, - "src": "1475:12:1", + "referencedDeclaration": 136, + "src": "1518:8:1", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } }, - "src": "1466:21:1", + "src": "1506:20:1", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } }, "id": 169, "nodeType": "ExpressionStatement", - "src": "1466:21:1" + "src": "1506:20:1" }, { "expression": { "argumentTypes": null, - "id": 174, + "id": 172, "isConstant": false, "isLValue": false, "isPure": false, @@ -2880,122 +2913,81 @@ "leftHandSide": { "argumentTypes": null, "id": 170, - "name": "_token", + "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 121, - "src": "1498:6:1", + "referencedDeclaration": 122, + "src": "1537:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", - "typeString": "contract IERC20" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 172, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 139, - "src": "1514:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 171, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1012, - "src": "1507:6:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$1012_$", - "typeString": "type(contract IERC20)" - } - }, - "id": 173, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1507:20:1", + "id": 171, + "name": "minerAccountAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 138, + "src": "1546:19:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", - "typeString": "contract IERC20" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "src": "1498:29:1", + "src": "1537:28:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", - "typeString": "contract IERC20" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 175, + "id": 173, "nodeType": "ExpressionStatement", - "src": "1498:29:1" + "src": "1537:28:1" } ] }, "documentation": null, - "id": 177, + "id": 175, "implemented": true, "isConstructor": true, "isDeclaredConst": false, "modifiers": [ { - "arguments": [], - "id": 142, - "modifierName": { - "argumentTypes": null, - "id": 141, - "name": "AlgoSystemRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 698, - "src": "1238:14:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AlgoSystemRole_$698_$", - "typeString": "type(contract AlgoSystemRole)" + "arguments": [ + { + "argumentTypes": null, + "id": 143, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 140, + "src": "1286:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } } - }, - "nodeType": "ModifierInvocation", - "src": "1238:16:1" - }, - { - "arguments": [], + ], "id": 144, "modifierName": { "argumentTypes": null, - "id": 143, - "name": "AlgoCoreTeamRole", + "id": 142, + "name": "ERC20TokenHolder", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 86, - "src": "1264:16:1", + "referencedDeclaration": 780, + "src": "1269:16:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AlgoCoreTeamRole_$86_$", - "typeString": "type(contract AlgoCoreTeamRole)" + "typeIdentifier": "t_type$_t_contract$_ERC20TokenHolder_$780_$", + "typeString": "type(contract ERC20TokenHolder)" } }, "nodeType": "ModifierInvocation", - "src": "1264:18:1" + "src": "1269:30:1" }, { "arguments": [], @@ -3003,33 +2995,71 @@ "modifierName": { "argumentTypes": null, "id": 145, + "name": "AlgoSystemRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 723, + "src": "1309:14:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_AlgoSystemRole_$723_$", + "typeString": "type(contract AlgoSystemRole)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1309:16:1" + }, + { + "arguments": [], + "id": 148, + "modifierName": { + "argumentTypes": null, + "id": 147, + "name": "AlgoCoreTeamRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 86, + "src": "1335:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_AlgoCoreTeamRole_$86_$", + "typeString": "type(contract AlgoCoreTeamRole)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1335:18:1" + }, + { + "arguments": [], + "id": 150, + "modifierName": { + "argumentTypes": null, + "id": 149, "name": "AlgoSupervisorRole", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 611, - "src": "1292:18:1", + "referencedDeclaration": 636, + "src": "1363:18:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AlgoSupervisorRole_$611_$", + "typeIdentifier": "t_type$_t_contract$_AlgoSupervisorRole_$636_$", "typeString": "type(contract AlgoSupervisorRole)" } }, "nodeType": "ModifierInvocation", - "src": "1292:20:1" + "src": "1363:20:1" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 140, + "id": 141, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 133, + "id": 134, "name": "minerType", "nodeType": "VariableDeclaration", - "scope": 177, - "src": "1151:16:1", + "scope": 175, + "src": "1175:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3037,10 +3067,10 @@ "typeString": "uint16" }, "typeName": { - "id": 132, + "id": 133, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "1151:6:1", + "src": "1175:6:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -3051,11 +3081,11 @@ }, { "constant": false, - "id": 135, + "id": 136, "name": "category", "nodeType": "VariableDeclaration", - "scope": 177, - "src": "1169:14:1", + "scope": 175, + "src": "1193:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3063,10 +3093,10 @@ "typeString": "uint8" }, "typeName": { - "id": 134, + "id": 135, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1169:5:1", + "src": "1193:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3077,11 +3107,11 @@ }, { "constant": false, - "id": 137, - "name": "ownerAddress", + "id": 138, + "name": "minerAccountAddress", "nodeType": "VariableDeclaration", - "scope": 177, - "src": "1185:20:1", + "scope": 175, + "src": "1209:27:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3089,10 +3119,10 @@ "typeString": "address" }, "typeName": { - "id": 136, + "id": 137, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1185:7:1", + "src": "1209:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3103,11 +3133,11 @@ }, { "constant": false, - "id": 139, + "id": 140, "name": "tokenAddress", "nodeType": "VariableDeclaration", - "scope": 177, - "src": "1207:20:1", + "scope": 175, + "src": "1238:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3115,10 +3145,10 @@ "typeString": "address" }, "typeName": { - "id": 138, + "id": 139, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1207:7:1", + "src": "1238:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3128,26 +3158,26 @@ "visibility": "internal" } ], - "src": "1150:78:1" + "src": "1174:85:1" }, "payable": false, "returnParameters": { - "id": 147, + "id": 151, "nodeType": "ParameterList", "parameters": [], - "src": "1329:0:1" + "src": "1400:0:1" }, - "scope": 524, - "src": "1139:396:1", + "scope": 549, + "src": "1163:410:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 187, + "id": 185, "nodeType": "Block", - "src": "1564:60:1", + "src": "1602:60:1", "statements": [ { "expression": { @@ -3159,7 +3189,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 183, + "id": 181, "isConstant": false, "isLValue": false, "isPure": false, @@ -3168,18 +3198,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 180, + "id": 178, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1171, - "src": "1583:3:1", + "referencedDeclaration": 1290, + "src": "1621:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 181, + "id": 179, "isConstant": false, "isLValue": false, "isPure": false, @@ -3187,7 +3217,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1583:10:1", + "src": "1621:10:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3197,18 +3227,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 182, + "id": 180, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 119, - "src": "1597:6:1", + "referencedDeclaration": 122, + "src": "1635:6:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1583:20:1", + "src": "1621:20:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3222,21 +3252,21 @@ "typeString": "bool" } ], - "id": 179, + "id": 177, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "1575:7:1", + "referencedDeclaration": 1293, + "src": "1613:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 184, + "id": 182, "isConstant": false, "isLValue": false, "isPure": false, @@ -3244,41 +3274,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1575:29:1", + "src": "1613:29:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 185, + "id": 183, "nodeType": "ExpressionStatement", - "src": "1575:29:1" + "src": "1613:29:1" }, { - "id": 186, + "id": 184, "nodeType": "PlaceholderStatement", - "src": "1615:1:1" + "src": "1653:1:1" } ] }, "documentation": null, - "id": 188, + "id": 186, "name": "onlyMiner", "nodeType": "ModifierDefinition", "parameters": { - "id": 178, + "id": 176, "nodeType": "ParameterList", "parameters": [], - "src": "1561:2:1" + "src": "1599:2:1" }, - "src": "1543:81:1", + "src": "1581:81:1", "visibility": "internal" }, { "body": { "id": 231, "nodeType": "Block", - "src": "1681:326:1", + "src": "1733:326:1", "statements": [ { "expression": { @@ -3287,7 +3317,7 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" }, "id": 197, @@ -3301,10 +3331,10 @@ "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "1700:6:1", + "referencedDeclaration": 124, + "src": "1752:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -3318,10 +3348,10 @@ "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "1710:10:1", + "referencedDeclaration": 116, + "src": "1762:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, @@ -3333,13 +3363,13 @@ "memberName": "Deactivated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1710:22:1", + "src": "1762:22:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "1700:32:1", + "src": "1752:32:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3357,11 +3387,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "1692:7:1", + "referencedDeclaration": 1293, + "src": "1744:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -3375,7 +3405,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1692:41:1", + "src": "1744:41:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -3383,7 +3413,7 @@ }, "id": 199, "nodeType": "ExpressionStatement", - "src": "1692:41:1" + "src": "1744:41:1" }, { "condition": { @@ -3403,8 +3433,8 @@ "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 131, - "src": "1749:18:1", + "referencedDeclaration": 132, + "src": "1801:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3422,7 +3452,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1771:1:1", + "src": "1823:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3430,7 +3460,7 @@ }, "value": "0" }, - "src": "1749:23:1", + "src": "1801:23:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3439,11 +3469,11 @@ "falseBody": null, "id": 225, "nodeType": "IfStatement", - "src": "1746:212:1", + "src": "1798:212:1", "trueBody": { "id": 224, "nodeType": "Block", - "src": "1774:184:1", + "src": "1826:184:1", "statements": [ { "assignments": [ @@ -3456,7 +3486,7 @@ "name": "currentBalance", "nodeType": "VariableDeclaration", "scope": 232, - "src": "1789:22:1", + "src": "1841:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3467,7 +3497,7 @@ "id": 203, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1789:7:1", + "src": "1841:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3490,10 +3520,10 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1200, - "src": "1839:4:1", + "referencedDeclaration": 1323, + "src": "1891:4:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoMiner_$524", + "typeIdentifier": "t_contract$_AlgoMiner_$549", "typeString": "contract AlgoMiner" } } @@ -3501,7 +3531,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_AlgoMiner_$524", + "typeIdentifier": "t_contract$_AlgoMiner_$549", "typeString": "contract AlgoMiner" } ], @@ -3511,7 +3541,7 @@ "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1831:7:1", + "src": "1883:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" @@ -3526,7 +3556,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1831:13:1", + "src": "1883:13:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3546,10 +3576,10 @@ "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 121, - "src": "1814:6:1", + "referencedDeclaration": 735, + "src": "1866:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" } }, @@ -3560,8 +3590,8 @@ "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 957, - "src": "1814:16:1", + "referencedDeclaration": 1076, + "src": "1866:16:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" @@ -3575,14 +3605,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1814:31:1", + "src": "1866:31:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1789:56:1" + "src": "1841:56:1" }, { "expression": { @@ -3606,7 +3636,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 204, - "src": "1870:14:1", + "src": "1922:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3624,7 +3654,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1888:1:1", + "src": "1940:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3632,7 +3662,7 @@ }, "value": "0" }, - "src": "1870:19:1", + "src": "1922:19:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3650,11 +3680,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "1862:7:1", + "referencedDeclaration": 1293, + "src": "1914:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -3668,7 +3698,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1862:28:1", + "src": "1914:28:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -3676,7 +3706,7 @@ }, "id": 217, "nodeType": "ExpressionStatement", - "src": "1862:28:1" + "src": "1914:28:1" }, { "expression": { @@ -3692,8 +3722,8 @@ "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 131, - "src": "1907:18:1", + "referencedDeclaration": 132, + "src": "1959:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3719,7 +3749,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 204, - "src": "1928:14:1", + "src": "1980:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3737,7 +3767,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1945:1:1", + "src": "1997:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -3745,13 +3775,13 @@ }, "value": "2" }, - "src": "1928:18:1", + "src": "1980:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1907:39:1", + "src": "1959:39:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3759,7 +3789,7 @@ }, "id": 223, "nodeType": "ExpressionStatement", - "src": "1907:39:1" + "src": "1959:39:1" } ] } @@ -3778,10 +3808,10 @@ "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "1970:6:1", + "referencedDeclaration": 124, + "src": "2022:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -3795,10 +3825,10 @@ "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "1979:10:1", + "referencedDeclaration": 116, + "src": "2031:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, @@ -3810,21 +3840,21 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1979:20:1", + "src": "2031:20:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "1970:29:1", + "src": "2022:29:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, "id": 230, "nodeType": "ExpressionStatement", - "src": "1970:29:1" + "src": "2022:29:1" } ] }, @@ -3834,6 +3864,25 @@ "isConstructor": false, "isDeclaredConst": false, "modifiers": [ + { + "arguments": null, + "id": 189, + "modifierName": { + "argumentTypes": null, + "id": 188, + "name": "notTerminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 831, + "src": "1706:13:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1706:13:1" + }, { "arguments": null, "id": 191, @@ -3844,42 +3893,42 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, - "src": "1668:12:1", + "src": "1720:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1668:12:1" + "src": "1720:12:1" } ], "name": "activateMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 189, + "id": 187, "nodeType": "ParameterList", "parameters": [], - "src": "1658:2:1" + "src": "1696:2:1" }, "payable": false, "returnParameters": { "id": 192, "nodeType": "ParameterList", "parameters": [], - "src": "1681:0:1" + "src": "1733:0:1" }, - "scope": 524, - "src": "1636:371:1", + "scope": 549, + "src": "1674:385:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 253, + "id": 255, "nodeType": "Block", - "src": "2062:138:1", + "src": "2128:138:1", "statements": [ { "expression": { @@ -3888,24 +3937,24 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" }, - "id": 241, + "id": 243, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 238, + "id": 240, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2081:6:1", + "referencedDeclaration": 124, + "src": "2147:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -3915,18 +3964,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 239, + "id": 241, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "2091:10:1", + "referencedDeclaration": 116, + "src": "2157:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 240, + "id": 242, "isConstant": false, "isLValue": false, "isPure": true, @@ -3934,13 +3983,13 @@ "memberName": "Deactivated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2091:22:1", + "src": "2157:22:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2081:32:1", + "src": "2147:32:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3954,21 +4003,21 @@ "typeString": "bool" } ], - "id": 237, + "id": 239, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "2073:7:1", + "referencedDeclaration": 1293, + "src": "2139:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 242, + "id": 244, "isConstant": false, "isLValue": false, "isPure": false, @@ -3976,34 +4025,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2073:41:1", + "src": "2139:41:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 243, + "id": 245, "nodeType": "ExpressionStatement", - "src": "2073:41:1" + "src": "2139:41:1" }, { "expression": { "argumentTypes": null, - "id": 247, + "id": 249, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 244, + "id": 246, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2135:6:1", + "referencedDeclaration": 124, + "src": "2201:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -4013,18 +4062,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 245, + "id": 247, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "2144:10:1", + "referencedDeclaration": 116, + "src": "2210:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 246, + "id": 248, "isConstant": false, "isLValue": false, "isPure": true, @@ -4032,38 +4081,38 @@ "memberName": "Deactivated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2144:22:1", + "src": "2210:22:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2135:31:1", + "src": "2201:31:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 248, + "id": 250, "nodeType": "ExpressionStatement", - "src": "2135:31:1" + "src": "2201:31:1" }, { "expression": { "argumentTypes": null, - "id": 251, + "id": 253, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 249, + "id": 251, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "2177:7:1", + "referencedDeclaration": 126, + "src": "2243:7:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4074,14 +4123,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 250, + "id": 252, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2187:5:1", + "src": "2253:5:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4089,20 +4138,20 @@ }, "value": "false" }, - "src": "2177:15:1", + "src": "2243:15:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 252, + "id": 254, "nodeType": "ExpressionStatement", - "src": "2177:15:1" + "src": "2243:15:1" } ] }, "documentation": null, - "id": 254, + "id": 256, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -4113,18 +4162,37 @@ "modifierName": { "argumentTypes": null, "id": 234, - "name": "onlyCoreTeam", + "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 27, - "src": "2049:12:1", + "referencedDeclaration": 831, + "src": "2101:13:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2049:12:1" + "src": "2101:13:1" + }, + { + "arguments": null, + "id": 237, + "modifierName": { + "argumentTypes": null, + "id": 236, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "2115:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2115:12:1" } ], "name": "deactivateMiner", @@ -4133,26 +4201,26 @@ "id": 233, "nodeType": "ParameterList", "parameters": [], - "src": "2039:2:1" + "src": "2091:2:1" }, "payable": false, "returnParameters": { - "id": 236, + "id": 238, "nodeType": "ParameterList", "parameters": [], - "src": "2062:0:1" + "src": "2128:0:1" }, - "scope": 524, - "src": "2015:185:1", + "scope": 549, + "src": "2067:199:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 280, + "id": 282, "nodeType": "Block", - "src": "2275:142:1", + "src": "2399:142:1", "statements": [ { "expression": { @@ -4161,24 +4229,24 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" }, - "id": 265, + "id": 267, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 262, + "id": 264, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2294:6:1", + "referencedDeclaration": 124, + "src": "2418:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -4188,18 +4256,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 263, + "id": 265, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "2304:10:1", + "referencedDeclaration": 116, + "src": "2428:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 264, + "id": 266, "isConstant": false, "isLValue": false, "isPure": true, @@ -4207,13 +4275,13 @@ "memberName": "Deactivated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2304:22:1", + "src": "2428:22:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2294:32:1", + "src": "2418:32:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4227,21 +4295,21 @@ "typeString": "bool" } ], - "id": 261, + "id": 263, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "2286:7:1", + "referencedDeclaration": 1293, + "src": "2410:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 266, + "id": 268, "isConstant": false, "isLValue": false, "isPure": false, @@ -4249,15 +4317,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2286:41:1", + "src": "2410:41:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 267, + "id": 269, "nodeType": "ExpressionStatement", - "src": "2286:41:1" + "src": "2410:41:1" }, { "expression": { @@ -4265,12 +4333,12 @@ "arguments": [ { "argumentTypes": null, - "id": 271, + "id": 273, "name": "newMinerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "2360:15:1", + "referencedDeclaration": 258, + "src": "2484:15:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4284,14 +4352,14 @@ "arguments": [ { "argumentTypes": null, - "id": 275, + "id": 277, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1200, - "src": "2402:4:1", + "referencedDeclaration": 1323, + "src": "2526:4:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoMiner_$524", + "typeIdentifier": "t_contract$_AlgoMiner_$549", "typeString": "contract AlgoMiner" } } @@ -4299,24 +4367,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_AlgoMiner_$524", + "typeIdentifier": "t_contract$_AlgoMiner_$549", "typeString": "contract AlgoMiner" } ], - "id": 274, + "id": 276, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2394:7:1", + "src": "2518:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 276, + "id": 278, "isConstant": false, "isLValue": false, "isPure": false, @@ -4324,7 +4392,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2394:13:1", + "src": "2518:13:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4340,32 +4408,32 @@ ], "expression": { "argumentTypes": null, - "id": 272, + "id": 274, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 121, - "src": "2377:6:1", + "referencedDeclaration": 735, + "src": "2501:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" } }, - "id": 273, + "id": 275, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 957, - "src": "2377:16:1", + "referencedDeclaration": 1076, + "src": "2501:16:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 277, + "id": 279, "isConstant": false, "isLValue": false, "isPure": false, @@ -4373,7 +4441,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2377:31:1", + "src": "2501:31:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4393,32 +4461,32 @@ ], "expression": { "argumentTypes": null, - "id": 268, + "id": 270, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 121, - "src": "2340:6:1", + "referencedDeclaration": 735, + "src": "2464:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" } }, - "id": 270, + "id": 272, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1037, - "src": "2340:19:1", + "referencedDeclaration": 1156, + "src": "2464:19:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1012_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1131_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1131_$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 278, + "id": 280, "isConstant": false, "isLValue": false, "isPure": false, @@ -4426,57 +4494,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2340:69:1", + "src": "2464:69:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 279, + "id": 281, "nodeType": "ExpressionStatement", - "src": "2340:69:1" + "src": "2464:69:1" } ] }, "documentation": null, - "id": 281, + "id": 283, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 259, + "id": 261, "modifierName": { "argumentTypes": null, - "id": 258, + "id": 260, "name": "onlyCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, - "src": "2262:12:1", + "src": "2386:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2262:12:1" + "src": "2386:12:1" } ], "name": "migrateMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 257, + "id": 259, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 256, + "id": 258, "name": "newMinerAddress", "nodeType": "VariableDeclaration", - "scope": 281, - "src": "2230:23:1", + "scope": 283, + "src": "2354:23:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4484,10 +4552,10 @@ "typeString": "address" }, "typeName": { - "id": 255, + "id": 257, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2230:7:1", + "src": "2354:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4497,26 +4565,26 @@ "visibility": "internal" } ], - "src": "2229:25:1" + "src": "2353:25:1" }, "payable": false, "returnParameters": { - "id": 260, + "id": 262, "nodeType": "ParameterList", "parameters": [], - "src": "2275:0:1" + "src": "2399:0:1" }, - "scope": 524, - "src": "2208:209:1", + "scope": 549, + "src": "2332:209:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 298, + "id": 302, "nodeType": "Block", - "src": "2470:108:1", + "src": "2608:108:1", "statements": [ { "expression": { @@ -4525,24 +4593,24 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" }, - "id": 290, + "id": 294, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 287, + "id": 291, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2489:6:1", + "referencedDeclaration": 124, + "src": "2627:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -4552,18 +4620,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 288, + "id": 292, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "2499:10:1", + "referencedDeclaration": 116, + "src": "2637:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 289, + "id": 293, "isConstant": false, "isLValue": false, "isPure": true, @@ -4571,13 +4639,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2499:20:1", + "src": "2637:20:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2489:30:1", + "src": "2627:30:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4591,21 +4659,21 @@ "typeString": "bool" } ], - "id": 286, + "id": 290, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "2481:7:1", + "referencedDeclaration": 1293, + "src": "2619:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 291, + "id": 295, "isConstant": false, "isLValue": false, "isPure": false, @@ -4613,34 +4681,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2481:39:1", + "src": "2619:39:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 292, + "id": 296, "nodeType": "ExpressionStatement", - "src": "2481:39:1" + "src": "2619:39:1" }, { "expression": { "argumentTypes": null, - "id": 296, + "id": 300, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 293, + "id": 297, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2541:6:1", + "referencedDeclaration": 124, + "src": "2679:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -4650,18 +4718,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 294, + "id": 298, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "2550:10:1", + "referencedDeclaration": 116, + "src": "2688:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 295, + "id": 299, "isConstant": false, "isLValue": false, "isPure": true, @@ -4669,76 +4737,95 @@ "memberName": "Suspended", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2550:20:1", + "src": "2688:20:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2541:29:1", + "src": "2679:29:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 297, + "id": 301, "nodeType": "ExpressionStatement", - "src": "2541:29:1" + "src": "2679:29:1" } ] }, "documentation": null, - "id": 299, + "id": 303, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 284, + "id": 286, "modifierName": { "argumentTypes": null, - "id": 283, - "name": "onlySupervisor", + "id": 285, + "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 552, - "src": "2455:14:1", + "referencedDeclaration": 831, + "src": "2579:13:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2455:14:1" + "src": "2579:13:1" + }, + { + "arguments": null, + "id": 288, + "modifierName": { + "argumentTypes": null, + "id": 287, + "name": "onlySupervisor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 577, + "src": "2593:14:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2593:14:1" } ], "name": "pauseMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 282, + "id": 284, "nodeType": "ParameterList", "parameters": [], - "src": "2445:2:1" + "src": "2569:2:1" }, "payable": false, "returnParameters": { - "id": 285, + "id": 289, "nodeType": "ParameterList", "parameters": [], - "src": "2470:0:1" + "src": "2608:0:1" }, - "scope": 524, - "src": "2425:153:1", + "scope": 549, + "src": "2549:167:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 316, + "id": 322, "nodeType": "Block", - "src": "2632:100:1", + "src": "2784:100:1", "statements": [ { "expression": { @@ -4747,24 +4834,24 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" }, - "id": 308, + "id": 314, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 305, + "id": 311, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2651:6:1", + "referencedDeclaration": 124, + "src": "2803:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -4774,18 +4861,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 306, + "id": 312, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "2661:10:1", + "referencedDeclaration": 116, + "src": "2813:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 307, + "id": 313, "isConstant": false, "isLValue": false, "isPure": true, @@ -4793,13 +4880,13 @@ "memberName": "Suspended", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2661:20:1", + "src": "2813:20:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2651:30:1", + "src": "2803:30:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4813,21 +4900,21 @@ "typeString": "bool" } ], - "id": 304, + "id": 310, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "2643:7:1", + "referencedDeclaration": 1293, + "src": "2795:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 309, + "id": 315, "isConstant": false, "isLValue": false, "isPure": false, @@ -4835,34 +4922,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2643:39:1", + "src": "2795:39:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 310, + "id": 316, "nodeType": "ExpressionStatement", - "src": "2643:39:1" + "src": "2795:39:1" }, { "expression": { "argumentTypes": null, - "id": 314, + "id": 320, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 311, + "id": 317, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2695:6:1", + "referencedDeclaration": 124, + "src": "2847:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -4872,18 +4959,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 312, + "id": 318, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "2704:10:1", + "referencedDeclaration": 116, + "src": "2856:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 313, + "id": 319, "isConstant": false, "isLValue": false, "isPure": true, @@ -4891,76 +4978,95 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2704:20:1", + "src": "2856:20:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2695:29:1", + "src": "2847:29:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 315, + "id": 321, "nodeType": "ExpressionStatement", - "src": "2695:29:1" + "src": "2847:29:1" } ] }, "documentation": null, - "id": 317, + "id": 323, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 302, + "id": 306, "modifierName": { "argumentTypes": null, - "id": 301, - "name": "onlySupervisor", + "id": 305, + "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 552, - "src": "2617:14:1", + "referencedDeclaration": 831, + "src": "2755:13:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2617:14:1" + "src": "2755:13:1" + }, + { + "arguments": null, + "id": 308, + "modifierName": { + "argumentTypes": null, + "id": 307, + "name": "onlySupervisor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 577, + "src": "2769:14:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2769:14:1" } ], "name": "resumeMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 300, + "id": 304, "nodeType": "ParameterList", "parameters": [], - "src": "2607:2:1" + "src": "2745:2:1" }, "payable": false, "returnParameters": { - "id": 303, + "id": 309, "nodeType": "ParameterList", "parameters": [], - "src": "2632:0:1" + "src": "2784:0:1" }, - "scope": 524, - "src": "2586:146:1", + "scope": 549, + "src": "2724:160:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 344, + "id": 352, "nodeType": "Block", - "src": "2796:160:1", + "src": "2962:160:1", "statements": [ { "expression": { @@ -4969,24 +5075,24 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" }, - "id": 326, + "id": 334, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 323, + "id": 331, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2815:6:1", + "referencedDeclaration": 124, + "src": "2981:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -4996,18 +5102,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 324, + "id": 332, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "2825:10:1", + "referencedDeclaration": 116, + "src": "2991:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 325, + "id": 333, "isConstant": false, "isLValue": false, "isPure": true, @@ -5015,13 +5121,13 @@ "memberName": "Stopped", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2825:18:1", + "src": "2991:18:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2815:28:1", + "src": "2981:28:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5035,21 +5141,21 @@ "typeString": "bool" } ], - "id": 322, + "id": 330, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "2807:7:1", + "referencedDeclaration": 1293, + "src": "2973:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 327, + "id": 335, "isConstant": false, "isLValue": false, "isPure": false, @@ -5057,34 +5163,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2807:37:1", + "src": "2973:37:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 328, + "id": 336, "nodeType": "ExpressionStatement", - "src": "2807:37:1" + "src": "2973:37:1" }, { "expression": { "argumentTypes": null, - "id": 332, + "id": 340, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 329, + "id": 337, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2865:6:1", + "referencedDeclaration": 124, + "src": "3031:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -5094,18 +5200,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 330, + "id": 338, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "2874:10:1", + "referencedDeclaration": 116, + "src": "3040:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 331, + "id": 339, "isConstant": false, "isLValue": false, "isPure": true, @@ -5113,38 +5219,38 @@ "memberName": "Stopped", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2874:18:1", + "src": "3040:18:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2865:27:1", + "src": "3031:27:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 333, + "id": 341, "nodeType": "ExpressionStatement", - "src": "2865:27:1" + "src": "3031:27:1" }, { "expression": { "argumentTypes": null, - "id": 336, + "id": 344, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 334, + "id": 342, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "2903:7:1", + "referencedDeclaration": 126, + "src": "3069:7:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5155,14 +5261,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 335, + "id": 343, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2913:5:1", + "src": "3079:5:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5170,32 +5276,32 @@ }, "value": "false" }, - "src": "2903:15:1", + "src": "3069:15:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 337, + "id": 345, "nodeType": "ExpressionStatement", - "src": "2903:15:1" + "src": "3069:15:1" }, { "expression": { "argumentTypes": null, - "id": 342, + "id": 350, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 338, + "id": 346, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 119, - "src": "2929:6:1", + "referencedDeclaration": 122, + "src": "3095:6:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5209,14 +5315,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 340, + "id": 348, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2946:1:1", + "src": "3112:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5232,20 +5338,20 @@ "typeString": "int_const 0" } ], - "id": 339, + "id": 347, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2938:7:1", + "src": "3104:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 341, + "id": 349, "isConstant": false, "isLValue": false, "isPure": true, @@ -5253,76 +5359,95 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2938:10:1", + "src": "3104:10:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2929:19:1", + "src": "3095:19:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 343, + "id": 351, "nodeType": "ExpressionStatement", - "src": "2929:19:1" + "src": "3095:19:1" } ] }, "documentation": null, - "id": 345, + "id": 353, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 320, + "id": 326, "modifierName": { "argumentTypes": null, - "id": 319, - "name": "onlySupervisor", + "id": 325, + "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 552, - "src": "2781:14:1", + "referencedDeclaration": 831, + "src": "2933:13:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2781:14:1" + "src": "2933:13:1" + }, + { + "arguments": null, + "id": 328, + "modifierName": { + "argumentTypes": null, + "id": 327, + "name": "onlySupervisor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 577, + "src": "2947:14:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2947:14:1" } ], "name": "stopAndRemoveOwnership", "nodeType": "FunctionDefinition", "parameters": { - "id": 318, + "id": 324, "nodeType": "ParameterList", "parameters": [], - "src": "2771:2:1" + "src": "2923:2:1" }, "payable": false, "returnParameters": { - "id": 321, + "id": 329, "nodeType": "ParameterList", "parameters": [], - "src": "2796:0:1" + "src": "2962:0:1" }, - "scope": 524, - "src": "2740:216:1", + "scope": 549, + "src": "2892:230:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 368, + "id": 378, "nodeType": "Block", - "src": "3031:133:1", + "src": "3211:133:1", "statements": [ { "expression": { @@ -5331,24 +5456,24 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" }, - "id": 356, + "id": 366, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 353, + "id": 363, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "3050:6:1", + "referencedDeclaration": 124, + "src": "3230:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -5358,18 +5483,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 354, + "id": 364, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "3060:10:1", + "referencedDeclaration": 116, + "src": "3240:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 355, + "id": 365, "isConstant": false, "isLValue": false, "isPure": true, @@ -5377,13 +5502,13 @@ "memberName": "Stopped", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3060:18:1", + "src": "3240:18:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3050:28:1", + "src": "3230:28:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5397,21 +5522,21 @@ "typeString": "bool" } ], - "id": 352, + "id": 362, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "3042:7:1", + "referencedDeclaration": 1293, + "src": "3222:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 357, + "id": 367, "isConstant": false, "isLValue": false, "isPure": false, @@ -5419,34 +5544,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3042:37:1", + "src": "3222:37:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 358, + "id": 368, "nodeType": "ExpressionStatement", - "src": "3042:37:1" + "src": "3222:37:1" }, { "expression": { "argumentTypes": null, - "id": 362, + "id": 372, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 359, + "id": 369, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "3092:6:1", + "referencedDeclaration": 124, + "src": "3272:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -5456,18 +5581,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 360, + "id": 370, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "3101:10:1", + "referencedDeclaration": 116, + "src": "3281:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 361, + "id": 371, "isConstant": false, "isLValue": false, "isPure": true, @@ -5475,38 +5600,38 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3101:20:1", + "src": "3281:20:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3092:29:1", + "src": "3272:29:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 363, + "id": 373, "nodeType": "ExpressionStatement", - "src": "3092:29:1" + "src": "3272:29:1" }, { "expression": { "argumentTypes": null, - "id": 366, + "id": 376, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 364, + "id": 374, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 119, - "src": "3132:6:1", + "referencedDeclaration": 122, + "src": "3312:6:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5516,68 +5641,87 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 365, + "id": 375, "name": "newOwnerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 347, - "src": "3141:15:1", + "referencedDeclaration": 355, + "src": "3321:15:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3132:24:1", + "src": "3312:24:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 367, + "id": 377, "nodeType": "ExpressionStatement", - "src": "3132:24:1" + "src": "3312:24:1" } ] }, "documentation": null, - "id": 369, + "id": 379, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 350, + "id": 358, "modifierName": { "argumentTypes": null, - "id": 349, - "name": "onlySupervisor", + "id": 357, + "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 552, - "src": "3016:14:1", + "referencedDeclaration": 831, + "src": "3182:13:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3016:14:1" + "src": "3182:13:1" + }, + { + "arguments": null, + "id": 360, + "modifierName": { + "argumentTypes": null, + "id": 359, + "name": "onlySupervisor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 577, + "src": "3196:14:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3196:14:1" } ], "name": "resetMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 348, + "id": 356, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 347, + "id": 355, "name": "newOwnerAddress", "nodeType": "VariableDeclaration", - "scope": 369, - "src": "2984:23:1", + "scope": 379, + "src": "3150:23:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5585,10 +5729,10 @@ "typeString": "address" }, "typeName": { - "id": 346, + "id": 354, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2984:7:1", + "src": "3150:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5598,26 +5742,26 @@ "visibility": "internal" } ], - "src": "2983:25:1" + "src": "3149:25:1" }, "payable": false, "returnParameters": { - "id": 351, + "id": 361, "nodeType": "ParameterList", "parameters": [], - "src": "3031:0:1" + "src": "3211:0:1" }, - "scope": 524, - "src": "2964:200:1", + "scope": 549, + "src": "3130:214:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 390, + "id": 402, "nodeType": "Block", - "src": "3212:121:1", + "src": "3406:121:1", "statements": [ { "expression": { @@ -5626,24 +5770,24 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" }, - "id": 378, + "id": 390, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 375, + "id": 387, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "3231:6:1", + "referencedDeclaration": 124, + "src": "3425:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -5653,18 +5797,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 376, + "id": 388, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "3241:10:1", + "referencedDeclaration": 116, + "src": "3435:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 377, + "id": 389, "isConstant": false, "isLValue": false, "isPure": true, @@ -5672,13 +5816,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3241:20:1", + "src": "3435:20:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3231:30:1", + "src": "3425:30:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5692,21 +5836,21 @@ "typeString": "bool" } ], - "id": 374, + "id": 386, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "3223:7:1", + "referencedDeclaration": 1293, + "src": "3417:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 379, + "id": 391, "isConstant": false, "isLValue": false, "isPure": false, @@ -5714,15 +5858,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3223:39:1", + "src": "3417:39:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 380, + "id": 392, "nodeType": "ExpressionStatement", - "src": "3223:39:1" + "src": "3417:39:1" }, { "expression": { @@ -5730,7 +5874,7 @@ "arguments": [ { "argumentTypes": null, - "id": 383, + "id": 395, "isConstant": false, "isLValue": false, "isPure": false, @@ -5738,15 +5882,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "3281:8:1", + "src": "3475:8:1", "subExpression": { "argumentTypes": null, - "id": 382, + "id": 394, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "3282:7:1", + "referencedDeclaration": 126, + "src": "3476:7:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5765,21 +5909,21 @@ "typeString": "bool" } ], - "id": 381, + "id": 393, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "3273:7:1", + "referencedDeclaration": 1293, + "src": "3467:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 384, + "id": 396, "isConstant": false, "isLValue": false, "isPure": false, @@ -5787,32 +5931,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3273:17:1", + "src": "3467:17:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 385, + "id": 397, "nodeType": "ExpressionStatement", - "src": "3273:17:1" + "src": "3467:17:1" }, { "expression": { "argumentTypes": null, - "id": 388, + "id": 400, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 386, + "id": 398, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "3311:7:1", + "referencedDeclaration": 126, + "src": "3505:7:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5823,14 +5967,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 387, + "id": 399, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3321:4:1", + "src": "3515:4:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5838,70 +5982,89 @@ }, "value": "true" }, - "src": "3311:14:1", + "src": "3505:14:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 389, + "id": 401, "nodeType": "ExpressionStatement", - "src": "3311:14:1" + "src": "3505:14:1" } ] }, "documentation": null, - "id": 391, + "id": 403, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 372, + "id": 382, "modifierName": { "argumentTypes": null, - "id": 371, - "name": "onlyMiner", + "id": 381, + "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 188, - "src": "3202:9:1", + "referencedDeclaration": 831, + "src": "3382:13:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3202:9:1" + "src": "3382:13:1" + }, + { + "arguments": null, + "id": 384, + "modifierName": { + "argumentTypes": null, + "id": 383, + "name": "onlyMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 186, + "src": "3396:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3396:9:1" } ], "name": "startMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 370, + "id": 380, "nodeType": "ParameterList", "parameters": [], - "src": "3192:2:1" + "src": "3372:2:1" }, "payable": false, "returnParameters": { - "id": 373, + "id": 385, "nodeType": "ParameterList", "parameters": [], - "src": "3212:0:1" + "src": "3406:0:1" }, - "scope": 524, - "src": "3172:161:1", + "scope": 549, + "src": "3352:175:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 411, + "id": 425, "nodeType": "Block", - "src": "3380:121:1", + "src": "3588:121:1", "statements": [ { "expression": { @@ -5910,24 +6073,24 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" }, - "id": 400, + "id": 414, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 397, + "id": 411, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "3399:6:1", + "referencedDeclaration": 124, + "src": "3607:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -5937,18 +6100,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 398, + "id": 412, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "3409:10:1", + "referencedDeclaration": 116, + "src": "3617:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 399, + "id": 413, "isConstant": false, "isLValue": false, "isPure": true, @@ -5956,13 +6119,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3409:20:1", + "src": "3617:20:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3399:30:1", + "src": "3607:30:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5976,21 +6139,21 @@ "typeString": "bool" } ], - "id": 396, + "id": 410, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "3391:7:1", + "referencedDeclaration": 1293, + "src": "3599:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 401, + "id": 415, "isConstant": false, "isLValue": false, "isPure": false, @@ -5998,15 +6161,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3391:39:1", + "src": "3599:39:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 402, + "id": 416, "nodeType": "ExpressionStatement", - "src": "3391:39:1" + "src": "3599:39:1" }, { "expression": { @@ -6014,223 +6177,12 @@ "arguments": [ { "argumentTypes": null, - "id": 404, + "id": 418, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "3449:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 403, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1174, - 1175 - ], - "referencedDeclaration": 1174, - "src": "3441:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 405, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3441:16:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 406, - "nodeType": "ExpressionStatement", - "src": "3441:16:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 409, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 407, - "name": "_mining", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "3478:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 408, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3488:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "3478:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 410, - "nodeType": "ExpressionStatement", - "src": "3478:15:1" - } - ] - }, - "documentation": null, - "id": 412, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": null, - "id": 394, - "modifierName": { - "argumentTypes": null, - "id": 393, - "name": "onlyMiner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 188, - "src": "3370:9:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "3370:9:1" - } - ], - "name": "stopMining", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 392, - "nodeType": "ParameterList", - "parameters": [], - "src": "3360:2:1" - }, - "payable": false, - "returnParameters": { - "id": 395, - "nodeType": "ParameterList", - "parameters": [], - "src": "3380:0:1" - }, - "scope": 524, - "src": "3341:160:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 485, - "nodeType": "Block", - "src": "3543:579:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_MinerState_$113", - "typeString": "enum AlgoMiner.MinerState" - }, - "id": 421, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 418, - "name": "_state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "3562:6:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", - "typeString": "enum AlgoMiner.MinerState" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 419, - "name": "MinerState", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "3572:10:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", - "typeString": "type(enum AlgoMiner.MinerState)" - } - }, - "id": 420, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Activated", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3572:20:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", - "typeString": "enum AlgoMiner.MinerState" - } - }, - "src": "3562:30:1", + "referencedDeclaration": 126, + "src": "3657:7:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6248,17 +6200,17 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "3554:7:1", + "referencedDeclaration": 1293, + "src": "3649:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 422, + "id": 419, "isConstant": false, "isLValue": false, "isPure": false, @@ -6266,28 +6218,201 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3554:39:1", + "src": "3649:16:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 423, + "id": 420, "nodeType": "ExpressionStatement", - "src": "3554:39:1" + "src": "3649:16:1" }, + { + "expression": { + "argumentTypes": null, + "id": 423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 421, + "name": "_mining", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 126, + "src": "3686:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 422, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3696:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "3686:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 424, + "nodeType": "ExpressionStatement", + "src": "3686:15:1" + } + ] + }, + "documentation": null, + "id": 426, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 406, + "modifierName": { + "argumentTypes": null, + "id": 405, + "name": "notTerminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 831, + "src": "3564:13:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3564:13:1" + }, + { + "arguments": null, + "id": 408, + "modifierName": { + "argumentTypes": null, + "id": 407, + "name": "onlyMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 186, + "src": "3578:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3578:9:1" + } + ], + "name": "stopMining", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 404, + "nodeType": "ParameterList", + "parameters": [], + "src": "3554:2:1" + }, + "payable": false, + "returnParameters": { + "id": 409, + "nodeType": "ParameterList", + "parameters": [], + "src": "3588:0:1" + }, + "scope": 549, + "src": "3535:174:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 501, + "nodeType": "Block", + "src": "3765:579:1", + "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 425, - "name": "_mining", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "3612:7:1", + "commonType": { + "typeIdentifier": "t_enum$_MinerState_$116", + "typeString": "enum AlgoMiner.MinerState" + }, + "id": 437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 434, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 124, + "src": "3784:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$116", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 435, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 116, + "src": "3794:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 436, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Activated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3794:20:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$116", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "3784:30:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6301,21 +6426,21 @@ "typeString": "bool" } ], - "id": 424, + "id": 433, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "3604:7:1", + "referencedDeclaration": 1293, + "src": "3776:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 426, + "id": 438, "isConstant": false, "isLValue": false, "isPure": false, @@ -6323,15 +6448,72 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3604:16:1", + "src": "3776:39:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 427, + "id": 439, "nodeType": "ExpressionStatement", - "src": "3604:16:1" + "src": "3776:39:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 441, + "name": "_mining", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 126, + "src": "3834:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 440, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1293, + 1294 + ], + "referencedDeclaration": 1293, + "src": "3826:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 442, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3826:16:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 443, + "nodeType": "ExpressionStatement", + "src": "3826:16:1" }, { "condition": { @@ -6340,19 +6522,19 @@ "typeIdentifier": "t_uint16", "typeString": "uint16" }, - "id": 430, + "id": 446, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 428, + "id": 444, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 129, - "src": "3636:11:1", + "referencedDeclaration": 130, + "src": "3858:11:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -6363,14 +6545,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 429, + "id": 445, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3651:1:1", + "src": "3873:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6378,21 +6560,21 @@ }, "value": "0" }, - "src": "3636:16:1", + "src": "3858:16:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 464, + "id": 480, "nodeType": "Block", - "src": "3733:238:1", + "src": "3955:238:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 441, + "id": 457, "isConstant": false, "isLValue": false, "isPure": false, @@ -6400,15 +6582,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3748:13:1", + "src": "3970:13:1", "subExpression": { "argumentTypes": null, - "id": 440, + "id": 456, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 129, - "src": "3748:11:1", + "referencedDeclaration": 130, + "src": "3970:11:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -6419,9 +6601,9 @@ "typeString": "uint16" } }, - "id": 442, + "id": 458, "nodeType": "ExpressionStatement", - "src": "3748:13:1" + "src": "3970:13:1" }, { "condition": { @@ -6430,19 +6612,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 448, + "id": 464, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 443, + "id": 459, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 129, - "src": "3779:11:1", + "referencedDeclaration": 130, + "src": "4001:11:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -6459,19 +6641,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 446, + "id": 462, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 444, + "id": 460, "name": "DAYS_PER_YEAR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 108, - "src": "3795:13:1", + "referencedDeclaration": 111, + "src": "4017:13:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6482,14 +6664,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 445, + "id": 461, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3811:1:1", + "src": "4033:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6497,45 +6679,45 @@ }, "value": "1" }, - "src": "3795:17:1", + "src": "4017:17:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 447, + "id": 463, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3794:19:1", + "src": "4016:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3779:34:1", + "src": "4001:34:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 463, + "id": 479, "nodeType": "IfStatement", - "src": "3776:184:1", + "src": "3998:184:1", "trueBody": { - "id": 462, + "id": 478, "nodeType": "Block", - "src": "3815:145:1", + "src": "4037:145:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 450, + "id": 466, "isConstant": false, "isLValue": false, "isPure": false, @@ -6543,15 +6725,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3834:14:1", + "src": "4056:14:1", "subExpression": { "argumentTypes": null, - "id": 449, + "id": 465, "name": "_currentYear", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "3834:12:1", + "referencedDeclaration": 128, + "src": "4056:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6562,26 +6744,26 @@ "typeString": "uint8" } }, - "id": 451, + "id": 467, "nodeType": "ExpressionStatement", - "src": "3834:14:1" + "src": "4056:14:1" }, { "expression": { "argumentTypes": null, - "id": 454, + "id": 470, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 452, + "id": 468, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 129, - "src": "3867:11:1", + "referencedDeclaration": 130, + "src": "4089:11:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -6592,14 +6774,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 453, + "id": 469, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3881:1:1", + "src": "4103:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6607,32 +6789,32 @@ }, "value": "1" }, - "src": "3867:15:1", + "src": "4089:15:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 455, + "id": 471, "nodeType": "ExpressionStatement", - "src": "3867:15:1" + "src": "4089:15:1" }, { "expression": { "argumentTypes": null, - "id": 460, + "id": 476, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 456, + "id": 472, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 131, - "src": "3901:18:1", + "referencedDeclaration": 132, + "src": "4123:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6646,19 +6828,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 459, + "id": 475, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 457, + "id": 473, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 131, - "src": "3922:18:1", + "referencedDeclaration": 132, + "src": "4144:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6669,14 +6851,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 458, + "id": 474, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3943:1:1", + "src": "4165:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -6684,51 +6866,51 @@ }, "value": "2" }, - "src": "3922:22:1", + "src": "4144:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3901:43:1", + "src": "4123:43:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 461, + "id": 477, "nodeType": "ExpressionStatement", - "src": "3901:43:1" + "src": "4123:43:1" } ] } } ] }, - "id": 465, + "id": 481, "nodeType": "IfStatement", - "src": "3633:338:1", + "src": "3855:338:1", "trueBody": { - "id": 439, + "id": 455, "nodeType": "Block", - "src": "3654:73:1", + "src": "3876:73:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 433, + "id": 449, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 431, + "id": 447, "name": "_currentYear", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "3669:12:1", + "referencedDeclaration": 128, + "src": "3891:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6739,14 +6921,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 432, + "id": 448, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3684:1:1", + "src": "3906:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6754,32 +6936,32 @@ }, "value": "1" }, - "src": "3669:16:1", + "src": "3891:16:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 434, + "id": 450, "nodeType": "ExpressionStatement", - "src": "3669:16:1" + "src": "3891:16:1" }, { "expression": { "argumentTypes": null, - "id": 437, + "id": 453, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 435, + "id": 451, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 129, - "src": "3700:11:1", + "referencedDeclaration": 130, + "src": "3922:11:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -6790,14 +6972,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 436, + "id": 452, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3714:1:1", + "src": "3936:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6805,31 +6987,31 @@ }, "value": "1" }, - "src": "3700:15:1", + "src": "3922:15:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 438, + "id": 454, "nodeType": "ExpressionStatement", - "src": "3700:15:1" + "src": "3922:15:1" } ] } }, { "assignments": [ - 467 + 483 ], "declarations": [ { "constant": false, - "id": 467, + "id": 483, "name": "tokens", "nodeType": "VariableDeclaration", - "scope": 486, - "src": "3983:14:1", + "scope": 502, + "src": "4205:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6837,10 +7019,10 @@ "typeString": "uint256" }, "typeName": { - "id": 466, + "id": 482, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3983:7:1", + "src": "4205:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6850,26 +7032,26 @@ "visibility": "internal" } ], - "id": 471, + "id": 487, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 470, + "id": 486, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 468, + "id": 484, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 131, - "src": "4000:18:1", + "referencedDeclaration": 132, + "src": "4222:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6879,25 +7061,25 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 469, + "id": 485, "name": "DAYS_PER_YEAR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 108, - "src": "4021:13:1", + "referencedDeclaration": 111, + "src": "4243:13:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4000:34:1", + "src": "4222:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "3983:51:1" + "src": "4205:51:1" }, { "expression": { @@ -6909,19 +7091,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 475, + "id": 491, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 473, + "id": 489, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 467, - "src": "4055:6:1", + "referencedDeclaration": 483, + "src": "4277:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6932,14 +7114,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 474, + "id": 490, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4064:1:1", + "src": "4286:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6947,7 +7129,7 @@ }, "value": "0" }, - "src": "4055:10:1", + "src": "4277:10:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6961,21 +7143,21 @@ "typeString": "bool" } ], - "id": 472, + "id": 488, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "4047:7:1", + "referencedDeclaration": 1293, + "src": "4269:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 476, + "id": 492, "isConstant": false, "isLValue": false, "isPure": false, @@ -6983,15 +7165,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4047:19:1", + "src": "4269:19:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 477, + "id": 493, "nodeType": "ExpressionStatement", - "src": "4047:19:1" + "src": "4269:19:1" }, { "expression": { @@ -6999,12 +7181,12 @@ "arguments": [ { "argumentTypes": null, - "id": 481, + "id": 497, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 119, - "src": "4099:6:1", + "referencedDeclaration": 122, + "src": "4321:6:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7012,12 +7194,12 @@ }, { "argumentTypes": null, - "id": 482, + "id": 498, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 467, - "src": "4107:6:1", + "referencedDeclaration": 483, + "src": "4329:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7037,32 +7219,32 @@ ], "expression": { "argumentTypes": null, - "id": 478, + "id": 494, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 121, - "src": "4079:6:1", + "referencedDeclaration": 735, + "src": "4301:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" } }, - "id": 480, + "id": 496, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1037, - "src": "4079:19:1", + "referencedDeclaration": 1156, + "src": "4301:19:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1012_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1131_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1131_$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 483, + "id": 499, "isConstant": false, "isLValue": false, "isPure": false, @@ -7070,175 +7252,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4079:35:1", + "src": "4301:35:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 484, - "nodeType": "ExpressionStatement", - "src": "4079:35:1" - } - ] - }, - "documentation": null, - "id": 486, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": null, - "id": 415, - "modifierName": { - "argumentTypes": null, - "id": 414, - "name": "onlySystem", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 639, - "src": "3532:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "3532:10:1" - } - ], - "name": "mine", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 413, - "nodeType": "ParameterList", - "parameters": [], - "src": "3522:2:1" - }, - "payable": false, - "returnParameters": { - "id": 416, - "nodeType": "ParameterList", - "parameters": [], - "src": "3543:0:1" - }, - "scope": 524, - "src": "3509:613:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 493, - "nodeType": "Block", - "src": "4180:30:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 491, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4198:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 490, - "id": 492, - "nodeType": "Return", - "src": "4191:11:1" - } - ] - }, - "documentation": null, - "id": 494, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "isAlgoMiner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 487, - "nodeType": "ParameterList", - "parameters": [], - "src": "4150:2:1" - }, - "payable": false, - "returnParameters": { - "id": 490, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 489, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 494, - "src": "4174:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 488, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4174:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4173:6:1" - }, - "scope": 524, - "src": "4130:80:1", - "stateMutability": "pure", - "superFunction": 705, - "visibility": "public" - }, - { - "body": { - "id": 501, - "nodeType": "Block", - "src": "4269:35:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 499, - "name": "_category", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 117, - "src": "4287:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "functionReturnParameters": 498, "id": 500, - "nodeType": "Return", - "src": "4280:16:1" + "nodeType": "ExpressionStatement", + "src": "4301:35:1" } ] }, @@ -7246,28 +7268,299 @@ "id": 502, "implemented": true, "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 429, + "modifierName": { + "argumentTypes": null, + "id": 428, + "name": "notTerminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 831, + "src": "3740:13:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3740:13:1" + }, + { + "arguments": null, + "id": 431, + "modifierName": { + "argumentTypes": null, + "id": 430, + "name": "onlySystem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 664, + "src": "3754:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3754:10:1" + } + ], + "name": "mine", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 427, + "nodeType": "ParameterList", + "parameters": [], + "src": "3730:2:1" + }, + "payable": false, + "returnParameters": { + "id": 432, + "nodeType": "ParameterList", + "parameters": [], + "src": "3765:0:1" + }, + "scope": 549, + "src": "3717:627:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 510, + "nodeType": "Block", + "src": "4393:31:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 507, + "name": "_terminate", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 779 + ], + "referencedDeclaration": 779, + "src": "4404:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4404:12:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 509, + "nodeType": "ExpressionStatement", + "src": "4404:12:1" + } + ] + }, + "documentation": null, + "id": 511, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 505, + "modifierName": { + "argumentTypes": null, + "id": 504, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "4380:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "4380:12:1" + } + ], + "name": "terminate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 503, + "nodeType": "ParameterList", + "parameters": [], + "src": "4370:2:1" + }, + "payable": false, + "returnParameters": { + "id": 506, + "nodeType": "ParameterList", + "parameters": [], + "src": "4393:0:1" + }, + "scope": 549, + "src": "4352:72:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 518, + "nodeType": "Block", + "src": "4482:30:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 516, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4500:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 515, + "id": 517, + "nodeType": "Return", + "src": "4493:11:1" + } + ] + }, + "documentation": null, + "id": 519, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isAlgoMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 512, + "nodeType": "ParameterList", + "parameters": [], + "src": "4452:2:1" + }, + "payable": false, + "returnParameters": { + "id": 515, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 514, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 519, + "src": "4476:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 513, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4476:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4475:6:1" + }, + "scope": 549, + "src": "4432:80:1", + "stateMutability": "pure", + "superFunction": 787, + "visibility": "public" + }, + { + "body": { + "id": 526, + "nodeType": "Block", + "src": "4571:35:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 524, + "name": "_category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "4589:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 523, + "id": 525, + "nodeType": "Return", + "src": "4582:16:1" + } + ] + }, + "documentation": null, + "id": 527, + "implemented": true, + "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "getCategory", "nodeType": "FunctionDefinition", "parameters": { - "id": 495, + "id": 520, "nodeType": "ParameterList", "parameters": [], - "src": "4238:2:1" + "src": "4540:2:1" }, "payable": false, "returnParameters": { - "id": 498, + "id": 523, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 497, + "id": 522, "name": "", "nodeType": "VariableDeclaration", - "scope": 502, - "src": "4262:5:1", + "scope": 527, + "src": "4564:5:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7275,10 +7568,10 @@ "typeString": "uint8" }, "typeName": { - "id": 496, + "id": 521, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4262:5:1", + "src": "4564:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7288,19 +7581,19 @@ "visibility": "internal" } ], - "src": "4261:7:1" + "src": "4563:7:1" }, - "scope": 524, - "src": "4218:86:1", + "scope": 549, + "src": "4520:86:1", "stateMutability": "view", - "superFunction": 710, + "superFunction": 792, "visibility": "public" }, { "body": { - "id": 514, + "id": 539, "nodeType": "Block", - "src": "4359:67:1", + "src": "4661:67:1", "statements": [ { "expression": { @@ -7309,7 +7602,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 512, + "id": 537, "isConstant": false, "isLValue": false, "isPure": false, @@ -7317,24 +7610,24 @@ "leftExpression": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" }, - "id": 510, + "id": 535, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 507, + "id": 532, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "4377:6:1", + "referencedDeclaration": 124, + "src": "4679:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -7344,18 +7637,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 508, + "id": 533, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "4387:10:1", + "referencedDeclaration": 116, + "src": "4689:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 509, + "id": 534, "isConstant": false, "isLValue": false, "isPure": true, @@ -7363,13 +7656,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4387:20:1", + "src": "4689:20:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "4377:30:1", + "src": "4679:30:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7379,32 +7672,32 @@ "operator": "&&", "rightExpression": { "argumentTypes": null, - "id": 511, + "id": 536, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "4411:7:1", + "referencedDeclaration": 126, + "src": "4713:7:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "4377:41:1", + "src": "4679:41:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 506, - "id": 513, + "functionReturnParameters": 531, + "id": 538, "nodeType": "Return", - "src": "4370:48:1" + "src": "4672:48:1" } ] }, "documentation": null, - "id": 515, + "id": 540, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7412,23 +7705,23 @@ "name": "isMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 503, + "id": 528, "nodeType": "ParameterList", "parameters": [], - "src": "4329:2:1" + "src": "4631:2:1" }, "payable": false, "returnParameters": { - "id": 506, + "id": 531, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 505, + "id": 530, "name": "", "nodeType": "VariableDeclaration", - "scope": 515, - "src": "4353:4:1", + "scope": 540, + "src": "4655:4:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7436,10 +7729,10 @@ "typeString": "bool" }, "typeName": { - "id": 504, + "id": 529, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4353:4:1", + "src": "4655:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7449,43 +7742,43 @@ "visibility": "internal" } ], - "src": "4352:6:1" + "src": "4654:6:1" }, - "scope": 524, - "src": "4312:114:1", + "scope": 549, + "src": "4614:114:1", "stateMutability": "view", - "superFunction": 715, + "superFunction": 797, "visibility": "public" }, { "body": { - "id": 522, + "id": 547, "nodeType": "Block", - "src": "4484:32:1", + "src": "4786:32:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 520, + "id": 545, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 119, - "src": "4502:6:1", + "referencedDeclaration": 122, + "src": "4804:6:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "functionReturnParameters": 519, - "id": 521, + "functionReturnParameters": 544, + "id": 546, "nodeType": "Return", - "src": "4495:13:1" + "src": "4797:13:1" } ] }, "documentation": null, - "id": 523, + "id": 548, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7493,23 +7786,23 @@ "name": "getMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 516, + "id": 541, "nodeType": "ParameterList", "parameters": [], - "src": "4451:2:1" + "src": "4753:2:1" }, "payable": false, "returnParameters": { - "id": 519, + "id": 544, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 518, + "id": 543, "name": "", "nodeType": "VariableDeclaration", - "scope": 523, - "src": "4475:7:1", + "scope": 548, + "src": "4777:7:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7517,10 +7810,10 @@ "typeString": "address" }, "typeName": { - "id": 517, + "id": 542, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4475:7:1", + "src": "4777:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7530,20 +7823,20 @@ "visibility": "internal" } ], - "src": "4474:9:1" + "src": "4776:9:1" }, - "scope": 524, - "src": "4434:82:1", + "scope": 549, + "src": "4736:82:1", "stateMutability": "view", - "superFunction": 720, + "superFunction": 802, "visibility": "public" } ], - "scope": 525, - "src": "558:3961:1" + "scope": 550, + "src": "592:4229:1" } ], - "src": "0:4521:1" + "src": "0:4823:1" }, "id": 1 }, @@ -7552,14 +7845,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol", "exportedSymbols": { "AlgoSupervisorRole": [ - 611 + 636 ] }, - "id": 612, + "id": 637, "nodeType": "SourceUnit", "nodes": [ { - "id": 526, + "id": 551, "literals": [ "solidity", "^", @@ -7572,10 +7865,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", - "id": 527, + "id": 552, "nodeType": "ImportDirective", - "scope": 612, - "sourceUnit": 816, + "scope": 637, + "sourceUnit": 935, "src": "28:189:2", "symbolAliases": [], "unitAlias": "" @@ -7586,24 +7879,24 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 611, + "id": 636, "linearizedBaseContracts": [ - 611 + 636 ], "name": "AlgoSupervisorRole", "nodeType": "ContractDefinition", "nodes": [ { - "id": 530, + "id": 555, "libraryName": { "contractScope": null, - "id": 528, + "id": 553, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 815, + "referencedDeclaration": 934, "src": "262:5:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$815", + "typeIdentifier": "t_contract$_Roles_$934", "typeString": "library Roles" } }, @@ -7611,39 +7904,39 @@ "src": "256:27:2", "typeName": { "contractScope": null, - "id": 529, + "id": 554, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 728, + "referencedDeclaration": 847, "src": "272:10:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", "typeString": "struct Roles.Role" } } }, { "constant": false, - "id": 532, + "id": 557, "name": "_supervisors", "nodeType": "VariableDeclaration", - "scope": 611, + "scope": 636, "src": "291:31:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage", + "typeIdentifier": "t_struct$_Role_$847_storage", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 531, + "id": 556, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 728, + "referencedDeclaration": 847, "src": "291:10:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -7652,7 +7945,7 @@ }, { "body": { - "id": 540, + "id": 565, "nodeType": "Block", "src": "355:45:2", "statements": [ @@ -7664,18 +7957,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 536, + "id": 561, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1171, + "referencedDeclaration": 1290, "src": "381:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 537, + "id": 562, "isConstant": false, "isLValue": false, "isPure": false, @@ -7697,18 +7990,18 @@ "typeString": "address" } ], - "id": 535, + "id": 560, "name": "_addSupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 598, + "referencedDeclaration": 623, "src": "366:14:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 538, + "id": 563, "isConstant": false, "isLValue": false, "isPure": false, @@ -7722,14 +8015,14 @@ "typeString": "tuple()" } }, - "id": 539, + "id": 564, "nodeType": "ExpressionStatement", "src": "366:26:2" } ] }, "documentation": null, - "id": 541, + "id": 566, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -7737,19 +8030,19 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 533, + "id": 558, "nodeType": "ParameterList", "parameters": [], "src": "343:2:2" }, "payable": false, "returnParameters": { - "id": 534, + "id": 559, "nodeType": "ParameterList", "parameters": [], "src": "355:0:2" }, - "scope": 611, + "scope": 636, "src": "331:69:2", "stateMutability": "nonpayable", "superFunction": null, @@ -7757,7 +8050,7 @@ }, { "body": { - "id": 551, + "id": 576, "nodeType": "Block", "src": "434:64:2", "statements": [ @@ -7772,18 +8065,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 545, + "id": 570, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1171, + "referencedDeclaration": 1290, "src": "466:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 546, + "id": 571, "isConstant": false, "isLValue": false, "isPure": false, @@ -7805,18 +8098,18 @@ "typeString": "address" } ], - "id": 544, + "id": 569, "name": "isSupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 565, + "referencedDeclaration": 590, "src": "453:12:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)" } }, - "id": 547, + "id": 572, "isConstant": false, "isLValue": false, "isPure": false, @@ -7838,21 +8131,21 @@ "typeString": "bool" } ], - "id": 543, + "id": 568, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, + "referencedDeclaration": 1293, "src": "445:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 548, + "id": 573, "isConstant": false, "isLValue": false, "isPure": false, @@ -7866,23 +8159,23 @@ "typeString": "tuple()" } }, - "id": 549, + "id": 574, "nodeType": "ExpressionStatement", "src": "445:33:2" }, { - "id": 550, + "id": 575, "nodeType": "PlaceholderStatement", "src": "489:1:2" } ] }, "documentation": null, - "id": 552, + "id": 577, "name": "onlySupervisor", "nodeType": "ModifierDefinition", "parameters": { - "id": 542, + "id": 567, "nodeType": "ParameterList", "parameters": [], "src": "431:2:2" @@ -7892,7 +8185,7 @@ }, { "body": { - "id": 564, + "id": 589, "nodeType": "Block", "src": "572:51:2", "statements": [ @@ -7902,11 +8195,11 @@ "arguments": [ { "argumentTypes": null, - "id": 561, + "id": 586, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 554, + "referencedDeclaration": 579, "src": "607:7:2", "typeDescriptions": { "typeIdentifier": "t_address", @@ -7923,32 +8216,32 @@ ], "expression": { "argumentTypes": null, - "id": 559, + "id": 584, "name": "_supervisors", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 532, + "referencedDeclaration": 557, "src": "590:12:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage", + "typeIdentifier": "t_struct$_Role_$847_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 560, + "id": 585, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 814, + "referencedDeclaration": 933, "src": "590:16:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$728_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$847_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 562, + "id": 587, "isConstant": false, "isLValue": false, "isPure": false, @@ -7962,15 +8255,15 @@ "typeString": "bool" } }, - "functionReturnParameters": 558, - "id": 563, + "functionReturnParameters": 583, + "id": 588, "nodeType": "Return", "src": "583:32:2" } ] }, "documentation": null, - "id": 565, + "id": 590, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7978,15 +8271,15 @@ "name": "isSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 555, + "id": 580, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 554, + "id": 579, "name": "account", "nodeType": "VariableDeclaration", - "scope": 565, + "scope": 590, "src": "528:15:2", "stateVariable": false, "storageLocation": "default", @@ -7995,7 +8288,7 @@ "typeString": "address" }, "typeName": { - "id": 553, + "id": 578, "name": "address", "nodeType": "ElementaryTypeName", "src": "528:7:2", @@ -8012,15 +8305,15 @@ }, "payable": false, "returnParameters": { - "id": 558, + "id": 583, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 557, + "id": 582, "name": "", "nodeType": "VariableDeclaration", - "scope": 565, + "scope": 590, "src": "566:4:2", "stateVariable": false, "storageLocation": "default", @@ -8029,7 +8322,7 @@ "typeString": "bool" }, "typeName": { - "id": 556, + "id": 581, "name": "bool", "nodeType": "ElementaryTypeName", "src": "566:4:2", @@ -8044,7 +8337,7 @@ ], "src": "565:6:2" }, - "scope": 611, + "scope": 636, "src": "506:117:2", "stateMutability": "view", "superFunction": null, @@ -8052,7 +8345,7 @@ }, { "body": { - "id": 576, + "id": 601, "nodeType": "Block", "src": "693:42:2", "statements": [ @@ -8062,11 +8355,11 @@ "arguments": [ { "argumentTypes": null, - "id": 573, + "id": 598, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 567, + "referencedDeclaration": 592, "src": "719:7:2", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8081,18 +8374,18 @@ "typeString": "address" } ], - "id": 572, + "id": 597, "name": "_addSupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 598, + "referencedDeclaration": 623, "src": "704:14:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 574, + "id": 599, "isConstant": false, "isLValue": false, "isPure": false, @@ -8106,28 +8399,28 @@ "typeString": "tuple()" } }, - "id": 575, + "id": 600, "nodeType": "ExpressionStatement", "src": "704:23:2" } ] }, "documentation": null, - "id": 577, + "id": 602, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 570, + "id": 595, "modifierName": { "argumentTypes": null, - "id": 569, + "id": 594, "name": "onlySupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 552, + "referencedDeclaration": 577, "src": "678:14:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -8141,15 +8434,15 @@ "name": "addSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 568, + "id": 593, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 567, + "id": 592, "name": "account", "nodeType": "VariableDeclaration", - "scope": 577, + "scope": 602, "src": "654:15:2", "stateVariable": false, "storageLocation": "default", @@ -8158,7 +8451,7 @@ "typeString": "address" }, "typeName": { - "id": 566, + "id": 591, "name": "address", "nodeType": "ElementaryTypeName", "src": "654:7:2", @@ -8175,12 +8468,12 @@ }, "payable": false, "returnParameters": { - "id": 571, + "id": 596, "nodeType": "ParameterList", "parameters": [], "src": "693:0:2" }, - "scope": 611, + "scope": 636, "src": "631:104:2", "stateMutability": "nonpayable", "superFunction": null, @@ -8188,7 +8481,7 @@ }, { "body": { - "id": 585, + "id": 610, "nodeType": "Block", "src": "780:48:2", "statements": [ @@ -8200,18 +8493,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 581, + "id": 606, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1171, + "referencedDeclaration": 1290, "src": "809:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 582, + "id": 607, "isConstant": false, "isLValue": false, "isPure": false, @@ -8233,18 +8526,18 @@ "typeString": "address" } ], - "id": 580, + "id": 605, "name": "_removeSupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 610, + "referencedDeclaration": 635, "src": "791:17:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 583, + "id": 608, "isConstant": false, "isLValue": false, "isPure": false, @@ -8258,14 +8551,14 @@ "typeString": "tuple()" } }, - "id": 584, + "id": 609, "nodeType": "ExpressionStatement", "src": "791:29:2" } ] }, "documentation": null, - "id": 586, + "id": 611, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8273,19 +8566,19 @@ "name": "renounceSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 578, + "id": 603, "nodeType": "ParameterList", "parameters": [], "src": "770:2:2" }, "payable": false, "returnParameters": { - "id": 579, + "id": 604, "nodeType": "ParameterList", "parameters": [], "src": "780:0:2" }, - "scope": 611, + "scope": 636, "src": "743:85:2", "stateMutability": "nonpayable", "superFunction": null, @@ -8293,7 +8586,7 @@ }, { "body": { - "id": 597, + "id": 622, "nodeType": "Block", "src": "886:44:2", "statements": [ @@ -8303,11 +8596,11 @@ "arguments": [ { "argumentTypes": null, - "id": 594, + "id": 619, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, + "referencedDeclaration": 613, "src": "914:7:2", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8324,32 +8617,32 @@ ], "expression": { "argumentTypes": null, - "id": 591, + "id": 616, "name": "_supervisors", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 532, + "referencedDeclaration": 557, "src": "897:12:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage", + "typeIdentifier": "t_struct$_Role_$847_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 593, + "id": 618, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 760, + "referencedDeclaration": 879, "src": "897:16:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$728_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$847_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 595, + "id": 620, "isConstant": false, "isLValue": false, "isPure": false, @@ -8363,14 +8656,14 @@ "typeString": "tuple()" } }, - "id": 596, + "id": 621, "nodeType": "ExpressionStatement", "src": "897:25:2" } ] }, "documentation": null, - "id": 598, + "id": 623, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8378,15 +8671,15 @@ "name": "_addSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 589, + "id": 614, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 588, + "id": 613, "name": "account", "nodeType": "VariableDeclaration", - "scope": 598, + "scope": 623, "src": "860:15:2", "stateVariable": false, "storageLocation": "default", @@ -8395,7 +8688,7 @@ "typeString": "address" }, "typeName": { - "id": 587, + "id": 612, "name": "address", "nodeType": "ElementaryTypeName", "src": "860:7:2", @@ -8412,12 +8705,12 @@ }, "payable": false, "returnParameters": { - "id": 590, + "id": 615, "nodeType": "ParameterList", "parameters": [], "src": "886:0:2" }, - "scope": 611, + "scope": 636, "src": "836:94:2", "stateMutability": "nonpayable", "superFunction": null, @@ -8425,7 +8718,7 @@ }, { "body": { - "id": 609, + "id": 634, "nodeType": "Block", "src": "991:47:2", "statements": [ @@ -8435,11 +8728,11 @@ "arguments": [ { "argumentTypes": null, - "id": 606, + "id": 631, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 600, + "referencedDeclaration": 625, "src": "1022:7:2", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8456,32 +8749,32 @@ ], "expression": { "argumentTypes": null, - "id": 603, + "id": 628, "name": "_supervisors", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 532, + "referencedDeclaration": 557, "src": "1002:12:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage", + "typeIdentifier": "t_struct$_Role_$847_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 605, + "id": 630, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 791, + "referencedDeclaration": 910, "src": "1002:19:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$728_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$847_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 607, + "id": 632, "isConstant": false, "isLValue": false, "isPure": false, @@ -8495,14 +8788,14 @@ "typeString": "tuple()" } }, - "id": 608, + "id": 633, "nodeType": "ExpressionStatement", "src": "1002:28:2" } ] }, "documentation": null, - "id": 610, + "id": 635, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8510,15 +8803,15 @@ "name": "_removeSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 601, + "id": 626, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 600, + "id": 625, "name": "account", "nodeType": "VariableDeclaration", - "scope": 610, + "scope": 635, "src": "965:15:2", "stateVariable": false, "storageLocation": "default", @@ -8527,7 +8820,7 @@ "typeString": "address" }, "typeName": { - "id": 599, + "id": 624, "name": "address", "nodeType": "ElementaryTypeName", "src": "965:7:2", @@ -8544,19 +8837,19 @@ }, "payable": false, "returnParameters": { - "id": 602, + "id": 627, "nodeType": "ParameterList", "parameters": [], "src": "991:0:2" }, - "scope": 611, + "scope": 636, "src": "938:100:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 612, + "scope": 637, "src": "221:820:2" } ], @@ -8569,14 +8862,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol", "exportedSymbols": { "AlgoSystemRole": [ - 698 + 723 ] }, - "id": 699, + "id": 724, "nodeType": "SourceUnit", "nodes": [ { - "id": 613, + "id": 638, "literals": [ "solidity", "^", @@ -8589,10 +8882,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", - "id": 614, + "id": 639, "nodeType": "ImportDirective", - "scope": 699, - "sourceUnit": 816, + "scope": 724, + "sourceUnit": 935, "src": "28:189:3", "symbolAliases": [], "unitAlias": "" @@ -8603,24 +8896,24 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 698, + "id": 723, "linearizedBaseContracts": [ - 698 + 723 ], "name": "AlgoSystemRole", "nodeType": "ContractDefinition", "nodes": [ { - "id": 617, + "id": 642, "libraryName": { "contractScope": null, - "id": 615, + "id": 640, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 815, + "referencedDeclaration": 934, "src": "258:5:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$815", + "typeIdentifier": "t_contract$_Roles_$934", "typeString": "library Roles" } }, @@ -8628,39 +8921,39 @@ "src": "252:27:3", "typeName": { "contractScope": null, - "id": 616, + "id": 641, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 728, + "referencedDeclaration": 847, "src": "268:10:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", "typeString": "struct Roles.Role" } } }, { "constant": false, - "id": 619, + "id": 644, "name": "_systemMembers", "nodeType": "VariableDeclaration", - "scope": 698, + "scope": 723, "src": "287:33:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage", + "typeIdentifier": "t_struct$_Role_$847_storage", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 618, + "id": 643, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 728, + "referencedDeclaration": 847, "src": "287:10:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -8669,7 +8962,7 @@ }, { "body": { - "id": 627, + "id": 652, "nodeType": "Block", "src": "353:41:3", "statements": [ @@ -8681,18 +8974,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 623, + "id": 648, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1171, + "referencedDeclaration": 1290, "src": "375:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 624, + "id": 649, "isConstant": false, "isLValue": false, "isPure": false, @@ -8714,18 +9007,18 @@ "typeString": "address" } ], - "id": 622, + "id": 647, "name": "_addSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 685, + "referencedDeclaration": 710, "src": "364:10:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 625, + "id": 650, "isConstant": false, "isLValue": false, "isPure": false, @@ -8739,14 +9032,14 @@ "typeString": "tuple()" } }, - "id": 626, + "id": 651, "nodeType": "ExpressionStatement", "src": "364:22:3" } ] }, "documentation": null, - "id": 628, + "id": 653, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -8754,19 +9047,19 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 620, + "id": 645, "nodeType": "ParameterList", "parameters": [], "src": "341:2:3" }, "payable": false, "returnParameters": { - "id": 621, + "id": 646, "nodeType": "ParameterList", "parameters": [], "src": "353:0:3" }, - "scope": 698, + "scope": 723, "src": "329:65:3", "stateMutability": "nonpayable", "superFunction": null, @@ -8774,7 +9067,7 @@ }, { "body": { - "id": 638, + "id": 663, "nodeType": "Block", "src": "424:60:3", "statements": [ @@ -8789,18 +9082,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 632, + "id": 657, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1171, + "referencedDeclaration": 1290, "src": "452:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 633, + "id": 658, "isConstant": false, "isLValue": false, "isPure": false, @@ -8822,18 +9115,18 @@ "typeString": "address" } ], - "id": 631, + "id": 656, "name": "isSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 652, + "referencedDeclaration": 677, "src": "443:8:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)" } }, - "id": 634, + "id": 659, "isConstant": false, "isLValue": false, "isPure": false, @@ -8855,21 +9148,21 @@ "typeString": "bool" } ], - "id": 630, + "id": 655, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, + "referencedDeclaration": 1293, "src": "435:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 635, + "id": 660, "isConstant": false, "isLValue": false, "isPure": false, @@ -8883,23 +9176,23 @@ "typeString": "tuple()" } }, - "id": 636, + "id": 661, "nodeType": "ExpressionStatement", "src": "435:29:3" }, { - "id": 637, + "id": 662, "nodeType": "PlaceholderStatement", "src": "475:1:3" } ] }, "documentation": null, - "id": 639, + "id": 664, "name": "onlySystem", "nodeType": "ModifierDefinition", "parameters": { - "id": 629, + "id": 654, "nodeType": "ParameterList", "parameters": [], "src": "421:2:3" @@ -8909,7 +9202,7 @@ }, { "body": { - "id": 651, + "id": 676, "nodeType": "Block", "src": "554:53:3", "statements": [ @@ -8919,11 +9212,11 @@ "arguments": [ { "argumentTypes": null, - "id": 648, + "id": 673, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 641, + "referencedDeclaration": 666, "src": "591:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8940,32 +9233,32 @@ ], "expression": { "argumentTypes": null, - "id": 646, + "id": 671, "name": "_systemMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 619, + "referencedDeclaration": 644, "src": "572:14:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage", + "typeIdentifier": "t_struct$_Role_$847_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 647, + "id": 672, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 814, + "referencedDeclaration": 933, "src": "572:18:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$728_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$847_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 649, + "id": 674, "isConstant": false, "isLValue": false, "isPure": false, @@ -8979,15 +9272,15 @@ "typeString": "bool" } }, - "functionReturnParameters": 645, - "id": 650, + "functionReturnParameters": 670, + "id": 675, "nodeType": "Return", "src": "565:34:3" } ] }, "documentation": null, - "id": 652, + "id": 677, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -8995,15 +9288,15 @@ "name": "isSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 642, + "id": 667, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 641, + "id": 666, "name": "account", "nodeType": "VariableDeclaration", - "scope": 652, + "scope": 677, "src": "510:15:3", "stateVariable": false, "storageLocation": "default", @@ -9012,7 +9305,7 @@ "typeString": "address" }, "typeName": { - "id": 640, + "id": 665, "name": "address", "nodeType": "ElementaryTypeName", "src": "510:7:3", @@ -9029,15 +9322,15 @@ }, "payable": false, "returnParameters": { - "id": 645, + "id": 670, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 644, + "id": 669, "name": "", "nodeType": "VariableDeclaration", - "scope": 652, + "scope": 677, "src": "548:4:3", "stateVariable": false, "storageLocation": "default", @@ -9046,7 +9339,7 @@ "typeString": "bool" }, "typeName": { - "id": 643, + "id": 668, "name": "bool", "nodeType": "ElementaryTypeName", "src": "548:4:3", @@ -9061,7 +9354,7 @@ ], "src": "547:6:3" }, - "scope": 698, + "scope": 723, "src": "492:115:3", "stateMutability": "view", "superFunction": null, @@ -9069,7 +9362,7 @@ }, { "body": { - "id": 663, + "id": 688, "nodeType": "Block", "src": "669:38:3", "statements": [ @@ -9079,11 +9372,11 @@ "arguments": [ { "argumentTypes": null, - "id": 660, + "id": 685, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 654, + "referencedDeclaration": 679, "src": "691:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9098,18 +9391,18 @@ "typeString": "address" } ], - "id": 659, + "id": 684, "name": "_addSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 685, + "referencedDeclaration": 710, "src": "680:10:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 661, + "id": 686, "isConstant": false, "isLValue": false, "isPure": false, @@ -9123,28 +9416,28 @@ "typeString": "tuple()" } }, - "id": 662, + "id": 687, "nodeType": "ExpressionStatement", "src": "680:19:3" } ] }, "documentation": null, - "id": 664, + "id": 689, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 657, + "id": 682, "modifierName": { "argumentTypes": null, - "id": 656, + "id": 681, "name": "onlySystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 639, + "referencedDeclaration": 664, "src": "658:10:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -9158,15 +9451,15 @@ "name": "addSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 655, + "id": 680, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 654, + "id": 679, "name": "account", "nodeType": "VariableDeclaration", - "scope": 664, + "scope": 689, "src": "634:15:3", "stateVariable": false, "storageLocation": "default", @@ -9175,7 +9468,7 @@ "typeString": "address" }, "typeName": { - "id": 653, + "id": 678, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:3", @@ -9192,12 +9485,12 @@ }, "payable": false, "returnParameters": { - "id": 658, + "id": 683, "nodeType": "ParameterList", "parameters": [], "src": "669:0:3" }, - "scope": 698, + "scope": 723, "src": "615:92:3", "stateMutability": "nonpayable", "superFunction": null, @@ -9205,7 +9498,7 @@ }, { "body": { - "id": 672, + "id": 697, "nodeType": "Block", "src": "748:44:3", "statements": [ @@ -9217,18 +9510,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 668, + "id": 693, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1171, + "referencedDeclaration": 1290, "src": "773:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 669, + "id": 694, "isConstant": false, "isLValue": false, "isPure": false, @@ -9250,18 +9543,18 @@ "typeString": "address" } ], - "id": 667, + "id": 692, "name": "_removeSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 697, + "referencedDeclaration": 722, "src": "759:13:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 670, + "id": 695, "isConstant": false, "isLValue": false, "isPure": false, @@ -9275,14 +9568,14 @@ "typeString": "tuple()" } }, - "id": 671, + "id": 696, "nodeType": "ExpressionStatement", "src": "759:25:3" } ] }, "documentation": null, - "id": 673, + "id": 698, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -9290,19 +9583,19 @@ "name": "renounceSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 665, + "id": 690, "nodeType": "ParameterList", "parameters": [], "src": "738:2:3" }, "payable": false, "returnParameters": { - "id": 666, + "id": 691, "nodeType": "ParameterList", "parameters": [], "src": "748:0:3" }, - "scope": 698, + "scope": 723, "src": "715:77:3", "stateMutability": "nonpayable", "superFunction": null, @@ -9310,7 +9603,7 @@ }, { "body": { - "id": 684, + "id": 709, "nodeType": "Block", "src": "846:46:3", "statements": [ @@ -9320,11 +9613,11 @@ "arguments": [ { "argumentTypes": null, - "id": 681, + "id": 706, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 675, + "referencedDeclaration": 700, "src": "876:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9341,32 +9634,32 @@ ], "expression": { "argumentTypes": null, - "id": 678, + "id": 703, "name": "_systemMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 619, + "referencedDeclaration": 644, "src": "857:14:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage", + "typeIdentifier": "t_struct$_Role_$847_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 680, + "id": 705, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 760, + "referencedDeclaration": 879, "src": "857:18:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$728_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$847_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 682, + "id": 707, "isConstant": false, "isLValue": false, "isPure": false, @@ -9380,14 +9673,14 @@ "typeString": "tuple()" } }, - "id": 683, + "id": 708, "nodeType": "ExpressionStatement", "src": "857:27:3" } ] }, "documentation": null, - "id": 685, + "id": 710, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -9395,15 +9688,15 @@ "name": "_addSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 676, + "id": 701, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 675, + "id": 700, "name": "account", "nodeType": "VariableDeclaration", - "scope": 685, + "scope": 710, "src": "820:15:3", "stateVariable": false, "storageLocation": "default", @@ -9412,7 +9705,7 @@ "typeString": "address" }, "typeName": { - "id": 674, + "id": 699, "name": "address", "nodeType": "ElementaryTypeName", "src": "820:7:3", @@ -9429,12 +9722,12 @@ }, "payable": false, "returnParameters": { - "id": 677, + "id": 702, "nodeType": "ParameterList", "parameters": [], "src": "846:0:3" }, - "scope": 698, + "scope": 723, "src": "800:92:3", "stateMutability": "nonpayable", "superFunction": null, @@ -9442,7 +9735,7 @@ }, { "body": { - "id": 696, + "id": 721, "nodeType": "Block", "src": "949:49:3", "statements": [ @@ -9452,11 +9745,11 @@ "arguments": [ { "argumentTypes": null, - "id": 693, + "id": 718, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 687, + "referencedDeclaration": 712, "src": "982:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9473,32 +9766,32 @@ ], "expression": { "argumentTypes": null, - "id": 690, + "id": 715, "name": "_systemMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 619, + "referencedDeclaration": 644, "src": "960:14:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage", + "typeIdentifier": "t_struct$_Role_$847_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 692, + "id": 717, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 791, + "referencedDeclaration": 910, "src": "960:21:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$728_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$847_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 694, + "id": 719, "isConstant": false, "isLValue": false, "isPure": false, @@ -9512,14 +9805,14 @@ "typeString": "tuple()" } }, - "id": 695, + "id": 720, "nodeType": "ExpressionStatement", "src": "960:30:3" } ] }, "documentation": null, - "id": 697, + "id": 722, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -9527,15 +9820,15 @@ "name": "_removeSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 688, + "id": 713, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 687, + "id": 712, "name": "account", "nodeType": "VariableDeclaration", - "scope": 697, + "scope": 722, "src": "923:15:3", "stateVariable": false, "storageLocation": "default", @@ -9544,7 +9837,7 @@ "typeString": "address" }, "typeName": { - "id": 686, + "id": 711, "name": "address", "nodeType": "ElementaryTypeName", "src": "923:7:3", @@ -9561,19 +9854,19 @@ }, "payable": false, "returnParameters": { - "id": 689, + "id": 714, "nodeType": "ParameterList", "parameters": [], "src": "949:0:3" }, - "scope": 698, + "scope": 723, "src": "900:98:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 699, + "scope": 724, "src": "221:780:3" } ], @@ -9581,19 +9874,19 @@ }, "id": 3 }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol": { "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol", "exportedSymbols": { - "IAlgoMiner": [ - 721 + "ERC20TokenHolder": [ + 780 ] }, - "id": 722, + "id": 781, "nodeType": "SourceUnit", "nodes": [ { - "id": 700, + "id": 725, "literals": [ "solidity", "0.4", @@ -9602,15 +9895,709 @@ "nodeType": "PragmaDirective", "src": "0:23:4" }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "id": 726, + "nodeType": "ImportDirective", + "scope": 781, + "sourceUnit": 1132, + "src": "27:195:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "id": 727, + "nodeType": "ImportDirective", + "scope": 781, + "sourceUnit": 1276, + "src": "224:198:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", + "file": "./Terminable.sol", + "id": 728, + "nodeType": "ImportDirective", + "scope": 781, + "sourceUnit": 841, + "src": "426:26:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 729, + "name": "Terminable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 840, + "src": "485:10:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Terminable_$840", + "typeString": "contract Terminable" + } + }, + "id": 730, + "nodeType": "InheritanceSpecifier", + "src": "485:10:4" + } + ], + "contractDependencies": [ + 840 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 780, + "linearizedBaseContracts": [ + 780, + 840 + ], + "name": "ERC20TokenHolder", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 733, + "libraryName": { + "contractScope": null, + "id": 731, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1275, + "src": "509:9:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$1275", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "503:27:4", + "typeName": { + "contractScope": null, + "id": 732, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1131, + "src": "523:6:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1131", + "typeString": "contract IERC20" + } + } + }, + { + "constant": false, + "id": 735, + "name": "_token", + "nodeType": "VariableDeclaration", + "scope": 780, + "src": "538:22:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1131", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 734, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1131, + "src": "538:6:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1131", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 748, + "nodeType": "Block", + "src": "625:48:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 742, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 735, + "src": "636:6:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1131", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 744, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 737, + "src": "652:12:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 743, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1131, + "src": "645:6:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$1131_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "645:20:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1131", + "typeString": "contract IERC20" + } + }, + "src": "636:29:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1131", + "typeString": "contract IERC20" + } + }, + "id": 747, + "nodeType": "ExpressionStatement", + "src": "636:29:4" + } + ] + }, + "documentation": null, + "id": 749, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 740, + "modifierName": { + "argumentTypes": null, + "id": 739, + "name": "Terminable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 840, + "src": "603:10:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Terminable_$840_$", + "typeString": "type(contract Terminable)" + } + }, + "nodeType": "ModifierInvocation", + "src": "603:12:4" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 738, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 737, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 749, + "src": "581:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 736, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "581:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "580:22:4" + }, + "payable": false, + "returnParameters": { + "id": 741, + "nodeType": "ParameterList", + "parameters": [], + "src": "625:0:4" + }, + "scope": 780, + "src": "569:104:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 778, + "nodeType": "Block", + "src": "712:214:4", + "statements": [ + { + "assignments": [ + 753 + ], + "declarations": [ + { + "constant": false, + "id": 753, + "name": "currentBalance", + "nodeType": "VariableDeclaration", + "scope": 779, + "src": "723:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 752, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "723:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 760, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 757, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1317, + "src": "773:4:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20TokenHolder_$780", + "typeString": "contract ERC20TokenHolder" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20TokenHolder_$780", + "typeString": "contract ERC20TokenHolder" + } + ], + "id": 756, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "765:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "765:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 754, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 735, + "src": "748:6:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1131", + "typeString": "contract IERC20" + } + }, + "id": 755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 1076, + "src": "748:16:4", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "748:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "723:56:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 761, + "name": "currentBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 753, + "src": "793:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 762, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "810:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "793:18:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 772, + "nodeType": "IfStatement", + "src": "790:95:4", + "trueBody": { + "id": 771, + "nodeType": "Block", + "src": "813:72:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 767, + "name": "_creator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 807, + "src": "848:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 768, + "name": "currentBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 753, + "src": "858:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 764, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 735, + "src": "828:6:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1131", + "typeString": "contract IERC20" + } + }, + "id": 766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1156, + "src": "828:19:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1131_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1131_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "828:45:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 770, + "nodeType": "ExpressionStatement", + "src": "828:45:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 773, + "name": "Terminable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 840, + "src": "895:10:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Terminable_$840_$", + "typeString": "type(contract Terminable)" + } + }, + "id": 775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_terminate", + "nodeType": "MemberAccess", + "referencedDeclaration": 839, + "src": "895:21:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "895:23:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 777, + "nodeType": "ExpressionStatement", + "src": "895:23:4" + } + ] + }, + "documentation": null, + "id": 779, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_terminate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 750, + "nodeType": "ParameterList", + "parameters": [], + "src": "700:2:4" + }, + "payable": false, + "returnParameters": { + "id": 751, + "nodeType": "ParameterList", + "parameters": [], + "src": "712:0:4" + }, + "scope": 780, + "src": "681:245:4", + "stateMutability": "nonpayable", + "superFunction": 839, + "visibility": "internal" + } + ], + "scope": 781, + "src": "456:473:4" + } + ], + "src": "0:929:4" + }, + "id": 4 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", + "exportedSymbols": { + "IAlgoMiner": [ + 803 + ] + }, + "id": 804, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 782, + "literals": [ + "solidity", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:23:5" + }, { "baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 721, + "id": 803, "linearizedBaseContracts": [ - 721 + 803 ], "name": "IAlgoMiner", "nodeType": "ContractDefinition", @@ -9618,7 +10605,7 @@ { "body": null, "documentation": null, - "id": 705, + "id": 787, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -9626,23 +10613,23 @@ "name": "isAlgoMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 701, + "id": 783, "nodeType": "ParameterList", "parameters": [], - "src": "74:2:4" + "src": "74:2:5" }, "payable": false, "returnParameters": { - "id": 704, + "id": 786, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 703, + "id": 785, "name": "", "nodeType": "VariableDeclaration", - "scope": 705, - "src": "98:4:4", + "scope": 787, + "src": "98:4:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9650,10 +10637,10 @@ "typeString": "bool" }, "typeName": { - "id": 702, + "id": 784, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "98:4:4", + "src": "98:4:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9663,10 +10650,10 @@ "visibility": "internal" } ], - "src": "97:6:4" + "src": "97:6:5" }, - "scope": 721, - "src": "54:50:4", + "scope": 803, + "src": "54:50:5", "stateMutability": "pure", "superFunction": null, "visibility": "public" @@ -9674,7 +10661,7 @@ { "body": null, "documentation": null, - "id": 710, + "id": 792, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -9682,23 +10669,23 @@ "name": "getCategory", "nodeType": "FunctionDefinition", "parameters": { - "id": 706, + "id": 788, "nodeType": "ParameterList", "parameters": [], - "src": "130:2:4" + "src": "130:2:5" }, "payable": false, "returnParameters": { - "id": 709, + "id": 791, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 708, + "id": 790, "name": "", "nodeType": "VariableDeclaration", - "scope": 710, - "src": "154:5:4", + "scope": 792, + "src": "154:5:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9706,10 +10693,10 @@ "typeString": "uint8" }, "typeName": { - "id": 707, + "id": 789, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "154:5:4", + "src": "154:5:5", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -9719,10 +10706,10 @@ "visibility": "internal" } ], - "src": "153:7:4" + "src": "153:7:5" }, - "scope": 721, - "src": "110:51:4", + "scope": 803, + "src": "110:51:5", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -9730,7 +10717,7 @@ { "body": null, "documentation": null, - "id": 715, + "id": 797, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -9738,23 +10725,23 @@ "name": "isMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 711, + "id": 793, "nodeType": "ParameterList", "parameters": [], - "src": "184:2:4" + "src": "184:2:5" }, "payable": false, "returnParameters": { - "id": 714, + "id": 796, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 713, + "id": 795, "name": "", "nodeType": "VariableDeclaration", - "scope": 715, - "src": "208:4:4", + "scope": 797, + "src": "208:4:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9762,10 +10749,10 @@ "typeString": "bool" }, "typeName": { - "id": 712, + "id": 794, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "208:4:4", + "src": "208:4:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9775,10 +10762,10 @@ "visibility": "internal" } ], - "src": "207:6:4" + "src": "207:6:5" }, - "scope": 721, - "src": "167:47:4", + "scope": 803, + "src": "167:47:5", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -9786,7 +10773,7 @@ { "body": null, "documentation": null, - "id": 720, + "id": 802, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -9794,23 +10781,23 @@ "name": "getMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 716, + "id": 798, "nodeType": "ParameterList", "parameters": [], - "src": "237:2:4" + "src": "237:2:5" }, "payable": false, "returnParameters": { - "id": 719, + "id": 801, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 718, + "id": 800, "name": "", "nodeType": "VariableDeclaration", - "scope": 720, - "src": "261:7:4", + "scope": 802, + "src": "261:7:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9818,10 +10805,10 @@ "typeString": "address" }, "typeName": { - "id": 717, + "id": 799, "name": "address", "nodeType": "ElementaryTypeName", - "src": "261:7:4", + "src": "261:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9831,119 +10818,262 @@ "visibility": "internal" } ], - "src": "260:9:4" + "src": "260:9:5" }, - "scope": 721, - "src": "220:50:4", + "scope": 803, + "src": "220:50:5", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 722, - "src": "27:246:4" + "scope": 804, + "src": "27:246:5" } ], - "src": "0:273:4" + "src": "0:273:5" }, - "id": 4 + "id": 5 }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol": { "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", "exportedSymbols": { - "Roles": [ - 815 + "Terminable": [ + 840 ] }, - "id": 816, + "id": 841, "nodeType": "SourceUnit", "nodes": [ { - "id": 723, + "id": 805, "literals": [ "solidity", - "^", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:24:5" + "src": "0:23:6" }, { "baseContracts": [], "contractDependencies": [], - "contractKind": "library", - "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", + "contractKind": "contract", + "documentation": null, "fullyImplemented": true, - "id": 815, + "id": 840, "linearizedBaseContracts": [ - 815 + 840 ], - "name": "Roles", + "name": "Terminable", "nodeType": "ContractDefinition", "nodes": [ { - "canonicalName": "Roles.Role", - "id": 728, - "members": [ - { - "constant": false, - "id": 727, - "name": "bearer", - "nodeType": "VariableDeclaration", - "scope": 728, - "src": "145:32:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 726, - "keyType": { - "id": 724, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "154:7:5", + "constant": false, + "id": 807, + "name": "_creator", + "nodeType": "VariableDeclaration", + "scope": 840, + "src": "56:25:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 806, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "56:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 809, + "name": "_terminated", + "nodeType": "VariableDeclaration", + "scope": 840, + "src": "88:25:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 808, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "88:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 821, + "nodeType": "Block", + "src": "145:70:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 812, + "name": "_creator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 807, + "src": "156:8:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 813, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1290, + "src": "167:3:6", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 814, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "167:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "156:21:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "nodeType": "Mapping", - "src": "145:25:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 725, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "165:4:5", + "id": 816, + "nodeType": "ExpressionStatement", + "src": "156:21:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 817, + "name": "_terminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "188:11:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 818, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "202:5:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "188:19:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } - } - }, - "value": null, - "visibility": "internal" - } - ], - "name": "Role", - "nodeType": "StructDefinition", - "scope": 815, - "src": "127:55:5", - "visibility": "public" + }, + "id": 820, + "nodeType": "ExpressionStatement", + "src": "188:19:6" + } + ] + }, + "documentation": null, + "id": 822, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 810, + "nodeType": "ParameterList", + "parameters": [], + "src": "133:2:6" + }, + "payable": false, + "returnParameters": { + "id": 811, + "nodeType": "ParameterList", + "parameters": [], + "src": "145:0:6" + }, + "scope": 840, + "src": "122:93:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" }, { "body": { - "id": 759, + "id": 830, "nodeType": "Block", - "src": "302:109:5", + "src": "248:52:6", "statements": [ { "expression": { @@ -9951,139 +11081,7 @@ "arguments": [ { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 740, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 736, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 732, - "src": "316:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 738, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "335:1:5", - "subdenomination": null, - "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": 737, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "327:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 739, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "327:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "316:21:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 735, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1174, - 1175 - ], - "referencedDeclaration": 1174, - "src": "308:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 741, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "308:30:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 742, - "nodeType": "ExpressionStatement", - "src": "308:30:5" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 748, + "id": 826, "isConstant": false, "isLValue": false, "isPure": false, @@ -10091,68 +11089,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "352:19:5", + "src": "267:12:6", "subExpression": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 745, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 730, - "src": "357:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - { - "argumentTypes": null, - "id": 746, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 732, - "src": "363:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 744, - "name": "has", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 814, - "src": "353:3:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$_t_bool_$", - "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" - } - }, - "id": 747, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "353:18:5", + "id": 825, + "name": "_terminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "268:11:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10171,21 +11116,21 @@ "typeString": "bool" } ], - "id": 743, + "id": 824, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "344:7:5", + "referencedDeclaration": 1293, + "src": "259:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 749, + "id": 827, "isConstant": false, "isLValue": false, "isPure": false, @@ -10193,75 +11138,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "344:28:5", + "src": "259:21:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 750, + "id": 828, "nodeType": "ExpressionStatement", - "src": "344:28:5" + "src": "259:21:6" }, + { + "id": 829, + "nodeType": "PlaceholderStatement", + "src": "291:1:6" + } + ] + }, + "documentation": null, + "id": 831, + "name": "notTerminated", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 823, + "nodeType": "ParameterList", + "parameters": [], + "src": "245:2:6" + }, + "src": "223:77:6", + "visibility": "internal" + }, + { + "body": { + "id": 838, + "nodeType": "Block", + "src": "339:37:6", + "statements": [ { "expression": { "argumentTypes": null, - "id": 757, + "id": 836, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 751, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 730, - "src": "379:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - "id": 754, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "bearer", - "nodeType": "MemberAccess", - "referencedDeclaration": 727, - "src": "379:11:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 755, - "indexExpression": { - "argumentTypes": null, - "id": 753, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 732, - "src": "391:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "379:20:5", + "id": 834, + "name": "_terminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "350:11:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10272,14 +11200,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 756, + "id": 835, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "402:4:5", + "src": "364:4:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -10287,2503 +11215,67 @@ }, "value": "true" }, - "src": "379:27:5", + "src": "350:18:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 758, + "id": 837, "nodeType": "ExpressionStatement", - "src": "379:27:5" + "src": "350:18:6" } ] }, - "documentation": "@dev give an account access to this role", - "id": 760, + "documentation": null, + "id": 839, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], - "name": "add", + "name": "_terminate", "nodeType": "FunctionDefinition", "parameters": { - "id": 733, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 730, - "name": "role", - "nodeType": "VariableDeclaration", - "scope": 760, - "src": "257:17:5", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", - "typeString": "struct Roles.Role" - }, - "typeName": { - "contractScope": null, - "id": 729, - "name": "Role", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 728, - "src": "257:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", - "typeString": "struct Roles.Role" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 732, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 760, - "src": "276:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 731, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "276:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "256:36:5" - }, - "payable": false, - "returnParameters": { - "id": 734, + "id": 832, "nodeType": "ParameterList", "parameters": [], - "src": "302:0:5" - }, - "scope": 815, - "src": "244:167:5", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 790, - "nodeType": "Block", - "src": "538:109:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 772, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 768, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 764, - "src": "552:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 770, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "571:1:5", - "subdenomination": null, - "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": 769, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "563:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 771, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "563:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "552:21:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 767, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1174, - 1175 - ], - "referencedDeclaration": 1174, - "src": "544:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 773, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "544:30:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 774, - "nodeType": "ExpressionStatement", - "src": "544:30:5" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 777, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 762, - "src": "592:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - { - "argumentTypes": null, - "id": 778, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 764, - "src": "598:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 776, - "name": "has", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 814, - "src": "588:3:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$_t_bool_$", - "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" - } - }, - "id": 779, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "588:18:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 775, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1174, - 1175 - ], - "referencedDeclaration": 1174, - "src": "580:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 780, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "580:27:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 781, - "nodeType": "ExpressionStatement", - "src": "580:27:5" - }, - { - "expression": { - "argumentTypes": null, - "id": 788, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 782, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 762, - "src": "614:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - "id": 785, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "bearer", - "nodeType": "MemberAccess", - "referencedDeclaration": 727, - "src": "614:11:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 786, - "indexExpression": { - "argumentTypes": null, - "id": 784, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 764, - "src": "626:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "614:20:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 787, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "637:5:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "614:28:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 789, - "nodeType": "ExpressionStatement", - "src": "614:28:5" - } - ] - }, - "documentation": "@dev remove an account's access to this role", - "id": 791, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "remove", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 765, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 762, - "name": "role", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "493:17:5", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", - "typeString": "struct Roles.Role" - }, - "typeName": { - "contractScope": null, - "id": 761, - "name": "Role", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 728, - "src": "493:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", - "typeString": "struct Roles.Role" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 764, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "512:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 763, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "512:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "492:36:5" + "src": "327:2:6" }, "payable": false, "returnParameters": { - "id": 766, + "id": 833, "nodeType": "ParameterList", "parameters": [], - "src": "538:0:5" + "src": "339:0:6" }, - "scope": 815, - "src": "477:170:5", + "scope": 840, + "src": "308:68:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" - }, - { - "body": { - "id": 813, - "nodeType": "Block", - "src": "817:74:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 805, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 801, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 795, - "src": "831:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 803, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "850:1:5", - "subdenomination": null, - "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": 802, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "842:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 804, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "842:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "831:21:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 800, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1174, - 1175 - ], - "referencedDeclaration": 1174, - "src": "823:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 806, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "823:30:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 807, - "nodeType": "ExpressionStatement", - "src": "823:30:5" - }, - { - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 808, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 793, - "src": "866:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - "id": 809, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "bearer", - "nodeType": "MemberAccess", - "referencedDeclaration": 727, - "src": "866:11:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 811, - "indexExpression": { - "argumentTypes": null, - "id": 810, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 795, - "src": "878:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "866:20:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 799, - "id": 812, - "nodeType": "Return", - "src": "859:27:5" - } - ] - }, - "documentation": "@dev check if an account has this role\n@return bool", - "id": 814, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "has", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 796, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 793, - "name": "role", - "nodeType": "VariableDeclaration", - "scope": 814, - "src": "738:17:5", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", - "typeString": "struct Roles.Role" - }, - "typeName": { - "contractScope": null, - "id": 792, - "name": "Role", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 728, - "src": "738:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", - "typeString": "struct Roles.Role" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 795, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 814, - "src": "757:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 794, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "757:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "737:36:5" - }, - "payable": false, - "returnParameters": { - "id": 799, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 798, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 814, - "src": "809:4:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 797, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "809:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "808:6:5" - }, - "scope": 815, - "src": "725:166:5", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" } ], - "scope": 816, - "src": "109:784:5" + "scope": 841, + "src": "27:352:6" } ], - "src": "0:894:5" - }, - "id": 5 - }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { - "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", - "exportedSymbols": { - "SafeMath": [ - 943 - ] - }, - "id": 944, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 817, - "literals": [ - "solidity", - "^", - "0.4", - ".24" - ], - "nodeType": "PragmaDirective", - "src": "0:24:6" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", - "fullyImplemented": true, - "id": 943, - "linearizedBaseContracts": [ - 943 - ], - "name": "SafeMath", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 849, - "nodeType": "Block", - "src": "271:314:6", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 828, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 826, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 819, - "src": "486:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 827, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "491:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "486:6:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 832, - "nodeType": "IfStatement", - "src": "482:35:6", - "trueBody": { - "id": 831, - "nodeType": "Block", - "src": "494:23:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "hexValue": "30", - "id": 829, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "509:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "functionReturnParameters": 825, - "id": 830, - "nodeType": "Return", - "src": "502:8:6" - } - ] - } - }, - { - "assignments": [ - 834 - ], - "declarations": [ - { - "constant": false, - "id": 834, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 850, - "src": "523:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 833, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "523:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 838, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 837, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 835, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 819, - "src": "535:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "id": 836, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 821, - "src": "539:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "535:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "523:17:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 844, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 842, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 840, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 834, - "src": "554:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "id": 841, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 819, - "src": "558:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "554:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 843, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 821, - "src": "563:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "554:10:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 839, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1174, - 1175 - ], - "referencedDeclaration": 1174, - "src": "546:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 845, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "546:19:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 846, - "nodeType": "ExpressionStatement", - "src": "546:19:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 847, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 834, - "src": "579:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 825, - "id": 848, - "nodeType": "Return", - "src": "572:8:6" - } - ] - }, - "documentation": "@dev Multiplies two numbers, reverts on overflow.", - "id": 850, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "mul", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 822, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 819, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 850, - "src": "217:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 818, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "217:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 821, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 850, - "src": "228:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 820, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "228:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "216:22:6" - }, - "payable": false, - "returnParameters": { - "id": 825, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 824, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 850, - "src": "262:7:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 823, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "262:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "261:9:6" - }, - "scope": 943, - "src": "204:381:6", - "stateMutability": "pure", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 873, - "nodeType": "Block", - "src": "762:203:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 862, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 860, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 854, - "src": "776:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 861, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "780:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "776:5:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 859, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1174, - 1175 - ], - "referencedDeclaration": 1174, - "src": "768:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 863, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "768:14:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 864, - "nodeType": "ExpressionStatement", - "src": "768:14:6" - }, - { - "assignments": [ - 866 - ], - "declarations": [ - { - "constant": false, - "id": 866, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 874, - "src": "846:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 865, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "846:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 870, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 869, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 867, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 852, - "src": "858:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "id": 868, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 854, - "src": "862:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "858:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "846:17:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 871, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 866, - "src": "959:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 858, - "id": 872, - "nodeType": "Return", - "src": "952:8:6" - } - ] - }, - "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", - "id": 874, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "div", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 855, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 852, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 874, - "src": "708:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 851, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "708:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 854, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 874, - "src": "719:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 853, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "719:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "707:22:6" - }, - "payable": false, - "returnParameters": { - "id": 858, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 857, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 874, - "src": "753:7:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 856, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "753:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "752:9:6" - }, - "scope": 943, - "src": "695:270:6", - "stateMutability": "pure", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 897, - "nodeType": "Block", - "src": "1145:64:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 886, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 884, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 878, - "src": "1159:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "id": 885, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 876, - "src": "1164:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1159:6:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 883, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1174, - 1175 - ], - "referencedDeclaration": 1174, - "src": "1151:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 887, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1151:15:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 888, - "nodeType": "ExpressionStatement", - "src": "1151:15:6" - }, - { - "assignments": [ - 890 - ], - "declarations": [ - { - "constant": false, - "id": 890, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 898, - "src": "1172:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 889, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1172:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 894, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 893, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 891, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 876, - "src": "1184:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 892, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 878, - "src": "1188:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1184:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1172:17:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 895, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 890, - "src": "1203:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 882, - "id": 896, - "nodeType": "Return", - "src": "1196:8:6" - } - ] - }, - "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", - "id": 898, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "sub", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 879, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 876, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 898, - "src": "1091:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 875, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1091:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 878, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 898, - "src": "1102:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 877, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1102:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1090:22:6" - }, - "payable": false, - "returnParameters": { - "id": 882, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 881, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 898, - "src": "1136:7:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 880, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1136:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1135:9:6" - }, - "scope": 943, - "src": "1078:131:6", - "stateMutability": "pure", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 921, - "nodeType": "Block", - "src": "1339:64:6", - "statements": [ - { - "assignments": [ - 908 - ], - "declarations": [ - { - "constant": false, - "id": 908, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 922, - "src": "1345:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 907, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1345:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 912, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 911, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 909, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 900, - "src": "1357:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 910, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 902, - "src": "1361:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1357:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1345:17:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 916, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 914, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "1376:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "id": 915, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 900, - "src": "1381:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1376:6:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 913, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1174, - 1175 - ], - "referencedDeclaration": 1174, - "src": "1368:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 917, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1368:15:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 918, - "nodeType": "ExpressionStatement", - "src": "1368:15:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 919, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "1397:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 906, - "id": 920, - "nodeType": "Return", - "src": "1390:8:6" - } - ] - }, - "documentation": "@dev Adds two numbers, reverts on overflow.", - "id": 922, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "add", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 903, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 900, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 922, - "src": "1285:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 899, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1285:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 902, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 922, - "src": "1296:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 901, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1296:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1284:22:6" - }, - "payable": false, - "returnParameters": { - "id": 906, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 905, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 922, - "src": "1330:7:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 904, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1330:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1329:9:6" - }, - "scope": 943, - "src": "1272:131:6", - "stateMutability": "pure", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 941, - "nodeType": "Block", - "src": "1602:44:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 934, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 932, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 926, - "src": "1616:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 933, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1621:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1616:6:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 931, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1174, - 1175 - ], - "referencedDeclaration": 1174, - "src": "1608:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 935, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1608:15:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 936, - "nodeType": "ExpressionStatement", - "src": "1608:15:6" - }, - { - "expression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 939, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 937, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 924, - "src": "1636:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "argumentTypes": null, - "id": 938, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 926, - "src": "1640:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1636:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 930, - "id": 940, - "nodeType": "Return", - "src": "1629:12:6" - } - ] - }, - "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", - "id": 942, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "mod", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 927, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 924, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 942, - "src": "1548:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 923, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1548:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 926, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 942, - "src": "1559:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 925, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1559:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1547:22:6" - }, - "payable": false, - "returnParameters": { - "id": 930, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 929, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 942, - "src": "1593:7:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 928, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1593:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1592:9:6" - }, - "scope": 943, - "src": "1535:111:6", - "stateMutability": "pure", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 944, - "src": "117:1531:6" - } - ], - "src": "0:1649:6" + "src": "0:379:6" }, "id": 6 }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "exportedSymbols": { - "IERC20": [ - 1012 + "Roles": [ + 934 ] }, - "id": 1013, + "id": 935, "nodeType": "SourceUnit", "nodes": [ { - "id": 945, + "id": 842, "literals": [ "solidity", "^", @@ -12796,93 +11288,1189 @@ { "baseContracts": [], "contractDependencies": [], - "contractKind": "interface", - "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", - "fullyImplemented": false, - "id": 1012, + "contractKind": "library", + "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", + "fullyImplemented": true, + "id": 934, "linearizedBaseContracts": [ - 1012 + 934 ], - "name": "IERC20", + "name": "Roles", "nodeType": "ContractDefinition", "nodes": [ { - "body": null, - "documentation": null, - "id": 950, - "implemented": false, + "canonicalName": "Roles.Role", + "id": 847, + "members": [ + { + "constant": false, + "id": 846, + "name": "bearer", + "nodeType": "VariableDeclaration", + "scope": 847, + "src": "145:32:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 845, + "keyType": { + "id": 843, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "154:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "145:25:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 844, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "165:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Role", + "nodeType": "StructDefinition", + "scope": 934, + "src": "127:55:7", + "visibility": "public" + }, + { + "body": { + "id": 878, + "nodeType": "Block", + "src": "302:109:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 855, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 851, + "src": "316:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 857, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "335:1:7", + "subdenomination": null, + "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": 856, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "327:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 858, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "327:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "316:21:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 854, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1293, + 1294 + ], + "referencedDeclaration": 1293, + "src": "308:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "308:30:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 861, + "nodeType": "ExpressionStatement", + "src": "308:30:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 867, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "352:19:7", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 864, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 849, + "src": "357:4:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 865, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 851, + "src": "363:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 863, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 933, + "src": "353:3:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "353:18:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 862, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1293, + 1294 + ], + "referencedDeclaration": 1293, + "src": "344:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "344:28:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 869, + "nodeType": "ExpressionStatement", + "src": "344:28:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 870, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 849, + "src": "379:4:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 873, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 846, + "src": "379:11:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 874, + "indexExpression": { + "argumentTypes": null, + "id": 872, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 851, + "src": "391:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "379:20:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 875, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "402:4:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "379:27:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 877, + "nodeType": "ExpressionStatement", + "src": "379:27:7" + } + ] + }, + "documentation": "@dev give an account access to this role", + "id": 879, + "implemented": true, "isConstructor": false, - "isDeclaredConst": true, + "isDeclaredConst": false, "modifiers": [], - "name": "totalSupply", + "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 946, + "id": 852, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 849, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 879, + "src": "257:17:7", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 848, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 847, + "src": "257:4:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 851, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 879, + "src": "276:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 850, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "276:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "256:36:7" + }, + "payable": false, + "returnParameters": { + "id": 853, "nodeType": "ParameterList", "parameters": [], - "src": "156:2:7" + "src": "302:0:7" }, - "payable": false, - "returnParameters": { - "id": 949, + "scope": 934, + "src": "244:167:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 909, + "nodeType": "Block", + "src": "538:109:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 887, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 883, + "src": "552:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 889, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "571:1:7", + "subdenomination": null, + "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": 888, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "563:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 890, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "563:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "552:21:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 886, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1293, + 1294 + ], + "referencedDeclaration": 1293, + "src": "544:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "544:30:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 893, + "nodeType": "ExpressionStatement", + "src": "544:30:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 896, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 881, + "src": "592:4:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 897, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 883, + "src": "598:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 895, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 933, + "src": "588:3:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 898, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "588:18:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 894, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1293, + 1294 + ], + "referencedDeclaration": 1293, + "src": "580:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "580:27:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 900, + "nodeType": "ExpressionStatement", + "src": "580:27:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 907, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 901, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 881, + "src": "614:4:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 904, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 846, + "src": "614:11:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 905, + "indexExpression": { + "argumentTypes": null, + "id": 903, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 883, + "src": "626:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "614:20:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 906, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "637:5:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "614:28:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 908, + "nodeType": "ExpressionStatement", + "src": "614:28:7" + } + ] + }, + "documentation": "@dev remove an account's access to this role", + "id": 910, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "remove", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 884, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 948, - "name": "", + "id": 881, + "name": "role", "nodeType": "VariableDeclaration", - "scope": 950, - "src": "182:7:7", + "scope": 910, + "src": "493:17:7", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 880, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 847, + "src": "493:4:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 883, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 910, + "src": "512:15:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 947, - "name": "uint256", + "id": 882, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "182:7:7", + "src": "512:7:7", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "value": null, "visibility": "internal" } ], - "src": "181:9:7" + "src": "492:36:7" }, - "scope": 1012, - "src": "136:55:7", - "stateMutability": "view", + "payable": false, + "returnParameters": { + "id": 885, + "nodeType": "ParameterList", + "parameters": [], + "src": "538:0:7" + }, + "scope": 934, + "src": "477:170:7", + "stateMutability": "nonpayable", "superFunction": null, - "visibility": "external" + "visibility": "internal" }, { - "body": null, - "documentation": null, - "id": 957, - "implemented": false, + "body": { + "id": 932, + "nodeType": "Block", + "src": "817:74:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 924, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 920, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 914, + "src": "831:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 922, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "850:1:7", + "subdenomination": null, + "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": 921, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "842:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 923, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "842:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "831:21:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 919, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1293, + 1294 + ], + "referencedDeclaration": 1293, + "src": "823:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "823:30:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 926, + "nodeType": "ExpressionStatement", + "src": "823:30:7" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 927, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 912, + "src": "866:4:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 928, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 846, + "src": "866:11:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 930, + "indexExpression": { + "argumentTypes": null, + "id": 929, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 914, + "src": "878:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "866:20:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 918, + "id": 931, + "nodeType": "Return", + "src": "859:27:7" + } + ] + }, + "documentation": "@dev check if an account has this role\n@return bool", + "id": 933, + "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], - "name": "balanceOf", + "name": "has", "nodeType": "FunctionDefinition", "parameters": { - "id": 953, + "id": 915, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 952, - "name": "who", + "id": 912, + "name": "role", "nodeType": "VariableDeclaration", - "scope": 957, - "src": "214:11:7", + "scope": 933, + "src": "738:17:7", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 911, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 847, + "src": "738:4:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 914, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 933, + "src": "757:15:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12890,10 +12478,10 @@ "typeString": "address" }, "typeName": { - "id": 951, + "id": 913, "name": "address", "nodeType": "ElementaryTypeName", - "src": "214:7:7", + "src": "757:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12903,724 +12491,70 @@ "visibility": "internal" } ], - "src": "213:13:7" + "src": "737:36:7" }, "payable": false, "returnParameters": { - "id": 956, + "id": 918, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 955, + "id": 917, "name": "", "nodeType": "VariableDeclaration", - "scope": 957, - "src": "250:7:7", + "scope": 933, + "src": "809:4:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" }, "typeName": { - "id": 954, - "name": "uint256", + "id": 916, + "name": "bool", "nodeType": "ElementaryTypeName", - "src": "250:7:7", + "src": "809:4:7", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, "value": null, "visibility": "internal" } ], - "src": "249:9:7" + "src": "808:6:7" }, - "scope": 1012, - "src": "195:64:7", + "scope": 934, + "src": "725:166:7", "stateMutability": "view", "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 966, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "allowance", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 962, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 959, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 966, - "src": "282:13:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 958, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "282:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 961, - "name": "spender", - "nodeType": "VariableDeclaration", - "scope": 966, - "src": "297:15:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 960, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "297:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "281:32:7" - }, - "payable": false, - "returnParameters": { - "id": 965, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 964, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 966, - "src": "341:7:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 963, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "341:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "340:9:7" - }, - "scope": 1012, - "src": "263:87:7", - "stateMutability": "view", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 975, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "transfer", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 971, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 968, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 975, - "src": "372:10:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 967, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "372:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 970, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 975, - "src": "384:13:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 969, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "384:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "371:27:7" - }, - "payable": false, - "returnParameters": { - "id": 974, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 973, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 975, - "src": "417:4:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 972, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "417:4:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "416:6:7" - }, - "scope": 1012, - "src": "354:69:7", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 984, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "approve", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 980, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 977, - "name": "spender", - "nodeType": "VariableDeclaration", - "scope": 984, - "src": "444:15:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 976, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "444:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 979, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 984, - "src": "461:13:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 978, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "461:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "443:32:7" - }, - "payable": false, - "returnParameters": { - "id": 983, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 982, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 984, - "src": "498:4:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 981, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "498:4:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "497:6:7" - }, - "scope": 1012, - "src": "427:77:7", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 995, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "transferFrom", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 991, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 986, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 995, - "src": "530:12:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 985, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "530:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 988, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 995, - "src": "544:10:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 987, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "544:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 990, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 995, - "src": "556:13:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 989, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "556:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "529:41:7" - }, - "payable": false, - "returnParameters": { - "id": 994, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 993, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 995, - "src": "593:4:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 992, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "593:4:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "592:6:7" - }, - "scope": 1012, - "src": "508:91:7", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" - }, - { - "anonymous": false, - "documentation": null, - "id": 1003, - "name": "Transfer", - "nodeType": "EventDefinition", - "parameters": { - "id": 1002, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 997, - "indexed": true, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 1003, - "src": "623:20:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 996, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "623:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 999, - "indexed": true, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1003, - "src": "649:18:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 998, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "649:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1001, - "indexed": false, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1003, - "src": "673:13:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1000, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "673:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "617:73:7" - }, - "src": "603:88:7" - }, - { - "anonymous": false, - "documentation": null, - "id": 1011, - "name": "Approval", - "nodeType": "EventDefinition", - "parameters": { - "id": 1010, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1005, - "indexed": true, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 1011, - "src": "715:21:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1004, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "715:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1007, - "indexed": true, - "name": "spender", - "nodeType": "VariableDeclaration", - "scope": 1011, - "src": "742:23:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1006, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "742:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1009, - "indexed": false, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1011, - "src": "771:13:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1008, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "771:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "709:79:7" - }, - "src": "695:94:7" + "visibility": "internal" } ], - "scope": 1013, - "src": "115:676:7" + "scope": 935, + "src": "109:784:7" } ], - "src": "0:792:7" + "src": "0:894:7" }, "id": 7 }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "exportedSymbols": { - "SafeERC20": [ - 1156 + "SafeMath": [ + 1062 ] }, - "id": 1157, + "id": 1063, "nodeType": "SourceUnit", "nodes": [ { - "id": 1014, + "id": 936, "literals": [ "solidity", "^", @@ -13630,155 +12564,269 @@ "nodeType": "PragmaDirective", "src": "0:24:8" }, - { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "file": "./IERC20.sol", - "id": 1015, - "nodeType": "ImportDirective", - "scope": 1157, - "sourceUnit": 1013, - "src": "26:22:8", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", - "file": "../../math/SafeMath.sol", - "id": 1016, - "nodeType": "ImportDirective", - "scope": 1157, - "sourceUnit": 944, - "src": "49:33:8", - "symbolAliases": [], - "unitAlias": "" - }, { "baseContracts": [], "contractDependencies": [], "contractKind": "library", - "documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.", + "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", "fullyImplemented": true, - "id": 1156, + "id": 1062, "linearizedBaseContracts": [ - 1156 + 1062 ], - "name": "SafeERC20", + "name": "SafeMath", "nodeType": "ContractDefinition", "nodes": [ - { - "id": 1019, - "libraryName": { - "contractScope": null, - "id": 1017, - "name": "SafeMath", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 943, - "src": "382:8:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$943", - "typeString": "library SafeMath" - } - }, - "nodeType": "UsingForDirective", - "src": "376:27:8", - "typeName": { - "id": 1018, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "395:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, { "body": { - "id": 1036, + "id": 968, "nodeType": "Block", - "src": "501:45:8", + "src": "271:314:8", "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 945, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 938, + "src": "486:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 946, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "491:1:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "486:6:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 951, + "nodeType": "IfStatement", + "src": "482:35:8", + "trueBody": { + "id": 950, + "nodeType": "Block", + "src": "494:23:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 948, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "509:1:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 944, + "id": 949, + "nodeType": "Return", + "src": "502:8:8" + } + ] + } + }, + { + "assignments": [ + 953 + ], + "declarations": [ + { + "constant": false, + "id": 953, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 969, + "src": "523:9:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 952, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "523:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 957, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 956, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 954, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 938, + "src": "535:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 955, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 940, + "src": "539:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "535:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "523:17:8" + }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1031, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1023, - "src": "530:2:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - { - "argumentTypes": null, - "id": 1032, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1025, - "src": "534:5:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 1029, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1021, - "src": "515:5:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", - "typeString": "contract IERC20" - } - }, - "id": 1030, + "id": 961, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "transfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 975, - "src": "515:14:8", + "leftExpression": { + "argumentTypes": null, + "id": 959, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 953, + "src": "554:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 960, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 938, + "src": "558:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "554:5:8", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256) external returns (bool)" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 1033, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "515:25:8", + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 962, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 940, + "src": "563:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "554:10:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -13792,21 +12840,21 @@ "typeString": "bool" } ], - "id": 1028, + "id": 958, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "507:7:8", + "referencedDeclaration": 1293, + "src": "546:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1034, + "id": 964, "isConstant": false, "isLValue": false, "isPure": false, @@ -13814,91 +12862,56 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "507:34:8", + "src": "546:19:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1035, + "id": 965, "nodeType": "ExpressionStatement", - "src": "507:34:8" + "src": "546:19:8" + }, + { + "expression": { + "argumentTypes": null, + "id": 966, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 953, + "src": "579:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 944, + "id": 967, + "nodeType": "Return", + "src": "572:8:8" } ] }, - "documentation": null, - "id": 1037, + "documentation": "@dev Multiplies two numbers, reverts on overflow.", + "id": 969, "implemented": true, "isConstructor": false, - "isDeclaredConst": false, + "isDeclaredConst": true, "modifiers": [], - "name": "safeTransfer", + "name": "mul", "nodeType": "FunctionDefinition", "parameters": { - "id": 1026, + "id": 941, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1021, - "name": "token", + "id": 938, + "name": "a", "nodeType": "VariableDeclaration", - "scope": 1037, - "src": "434:12:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", - "typeString": "contract IERC20" - }, - "typeName": { - "contractScope": null, - "id": 1020, - "name": "IERC20", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1012, - "src": "434:6:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", - "typeString": "contract IERC20" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1023, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1037, - "src": "452:10:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1022, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "452:7:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1025, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1037, - "src": "468:13:8", + "scope": 969, + "src": "217:9:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13906,10 +12919,36 @@ "typeString": "uint256" }, "typeName": { - "id": 1024, + "id": 937, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "468:7:8", + "src": "217:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 940, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 969, + "src": "228:9:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 939, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "228:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13919,26 +12958,53 @@ "visibility": "internal" } ], - "src": "428:57:8" + "src": "216:22:8" }, "payable": false, "returnParameters": { - "id": 1027, + "id": 944, "nodeType": "ParameterList", - "parameters": [], - "src": "501:0:8" + "parameters": [ + { + "constant": false, + "id": 943, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 969, + "src": "262:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 942, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "262:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "261:9:8" }, - "scope": 1156, - "src": "407:139:8", - "stateMutability": "nonpayable", + "scope": 1062, + "src": "204:381:8", + "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1057, + "id": 992, "nodeType": "Block", - "src": "666:55:8", + "src": "762:203:8", "statements": [ { "expression": { @@ -13946,98 +13012,49 @@ "arguments": [ { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1051, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1041, - "src": "699:4:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1052, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1043, - "src": "705:2:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1053, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1045, - "src": "709:5:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 1049, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1039, - "src": "680:5:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", - "typeString": "contract IERC20" - } - }, - "id": 1050, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "transferFrom", - "nodeType": "MemberAccess", - "referencedDeclaration": 995, - "src": "680:18:8", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,address,uint256) external returns (bool)" - } + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 1054, + "id": 981, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "680:35:8", + "leftExpression": { + "argumentTypes": null, + "id": 979, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 973, + "src": "776:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 980, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "780:1:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "776:5:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14051,21 +13068,21 @@ "typeString": "bool" } ], - "id": 1048, + "id": 978, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "672:7:8", + "referencedDeclaration": 1293, + "src": "768:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1055, + "id": 982, "isConstant": false, "isLValue": false, "isPure": false, @@ -14073,105 +13090,1019 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "672:44:8", + "src": "768:14:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1056, + "id": 983, "nodeType": "ExpressionStatement", - "src": "672:44:8" + "src": "768:14:8" + }, + { + "assignments": [ + 985 + ], + "declarations": [ + { + "constant": false, + "id": 985, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 993, + "src": "846:9:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 984, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "846:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 989, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 986, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 971, + "src": "858:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 987, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 973, + "src": "862:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "858:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "846:17:8" + }, + { + "expression": { + "argumentTypes": null, + "id": 990, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "959:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 977, + "id": 991, + "nodeType": "Return", + "src": "952:8:8" } ] }, - "documentation": null, - "id": 1058, + "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", + "id": 993, "implemented": true, "isConstructor": false, - "isDeclaredConst": false, + "isDeclaredConst": true, "modifiers": [], - "name": "safeTransferFrom", + "name": "div", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 974, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 971, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 993, + "src": "708:9:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 970, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "708:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 973, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 993, + "src": "719:9:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 972, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "719:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "707:22:8" + }, + "payable": false, + "returnParameters": { + "id": 977, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 976, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 993, + "src": "753:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 975, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "753:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "752:9:8" + }, + "scope": 1062, + "src": "695:270:8", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1016, + "nodeType": "Block", + "src": "1145:64:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1005, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1003, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 997, + "src": "1159:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 1004, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 995, + "src": "1164:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1159:6:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1002, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1293, + 1294 + ], + "referencedDeclaration": 1293, + "src": "1151:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1006, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1151:15:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1007, + "nodeType": "ExpressionStatement", + "src": "1151:15:8" + }, + { + "assignments": [ + 1009 + ], + "declarations": [ + { + "constant": false, + "id": 1009, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 1017, + "src": "1172:9:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1008, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1172:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1013, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1010, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 995, + "src": "1184:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 1011, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 997, + "src": "1188:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1184:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1172:17:8" + }, + { + "expression": { + "argumentTypes": null, + "id": 1014, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1009, + "src": "1203:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1001, + "id": 1015, + "nodeType": "Return", + "src": "1196:8:8" + } + ] + }, + "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", + "id": 1017, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 998, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 995, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 1017, + "src": "1091:9:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 994, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1091:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 997, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 1017, + "src": "1102:9:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 996, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1102:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1090:22:8" + }, + "payable": false, + "returnParameters": { + "id": 1001, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1000, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1017, + "src": "1136:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 999, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1136:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1135:9:8" + }, + "scope": 1062, + "src": "1078:131:8", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1040, + "nodeType": "Block", + "src": "1339:64:8", + "statements": [ + { + "assignments": [ + 1027 + ], + "declarations": [ + { + "constant": false, + "id": 1027, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 1041, + "src": "1345:9:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1026, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1345:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1031, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1028, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1019, + "src": "1357:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 1029, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1021, + "src": "1361:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1357:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1345:17:8" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1033, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "1376:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 1034, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1019, + "src": "1381:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1376:6:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1032, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1293, + 1294 + ], + "referencedDeclaration": 1293, + "src": "1368:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1036, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1368:15:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1037, + "nodeType": "ExpressionStatement", + "src": "1368:15:8" + }, + { + "expression": { + "argumentTypes": null, + "id": 1038, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "1397:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1025, + "id": 1039, + "nodeType": "Return", + "src": "1390:8:8" + } + ] + }, + "documentation": "@dev Adds two numbers, reverts on overflow.", + "id": 1041, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1022, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1019, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 1041, + "src": "1285:9:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1018, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1285:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1021, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 1041, + "src": "1296:9:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1020, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1296:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1284:22:8" + }, + "payable": false, + "returnParameters": { + "id": 1025, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1024, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1041, + "src": "1330:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1023, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1330:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1329:9:8" + }, + "scope": 1062, + "src": "1272:131:8", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1060, + "nodeType": "Block", + "src": "1602:44:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1053, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1051, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "1616:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1052, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1621:1:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1616:6:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1050, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1293, + 1294 + ], + "referencedDeclaration": 1293, + "src": "1608:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1054, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1608:15:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1055, + "nodeType": "ExpressionStatement", + "src": "1608:15:8" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1056, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1043, + "src": "1636:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "id": 1057, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "1640:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1636:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1049, + "id": 1059, + "nodeType": "Return", + "src": "1629:12:8" + } + ] + }, + "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", + "id": 1061, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "mod", "nodeType": "FunctionDefinition", "parameters": { "id": 1046, "nodeType": "ParameterList", "parameters": [ - { - "constant": false, - "id": 1039, - "name": "token", - "nodeType": "VariableDeclaration", - "scope": 1058, - "src": "581:12:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", - "typeString": "contract IERC20" - }, - "typeName": { - "contractScope": null, - "id": 1038, - "name": "IERC20", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1012, - "src": "581:6:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", - "typeString": "contract IERC20" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1041, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 1058, - "src": "599:12:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1040, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "599:7:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, { "constant": false, "id": 1043, - "name": "to", + "name": "a", "nodeType": "VariableDeclaration", - "scope": 1058, - "src": "617:10:8", + "scope": 1061, + "src": "1548:9:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { "id": 1042, - "name": "address", + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "617:7:8", + "src": "1548:7:8", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, @@ -14180,10 +14111,10 @@ { "constant": false, "id": 1045, - "name": "value", + "name": "b", "nodeType": "VariableDeclaration", - "scope": 1058, - "src": "633:13:8", + "scope": 1061, + "src": "1559:9:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14194,7 +14125,7 @@ "id": 1044, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "633:7:8", + "src": "1559:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14204,26 +14135,1510 @@ "visibility": "internal" } ], - "src": "575:75:8" + "src": "1547:22:8" }, "payable": false, "returnParameters": { - "id": 1047, + "id": 1049, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1048, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1061, + "src": "1593:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1047, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1593:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1592:9:8" + }, + "scope": 1062, + "src": "1535:111:8", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 1063, + "src": "117:1531:8" + } + ], + "src": "0:1649:8" + }, + "id": 8 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "exportedSymbols": { + "IERC20": [ + 1131 + ] + }, + "id": 1132, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1064, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:9" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", + "fullyImplemented": false, + "id": 1131, + "linearizedBaseContracts": [ + 1131 + ], + "name": "IERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 1069, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1065, "nodeType": "ParameterList", "parameters": [], - "src": "666:0:8" + "src": "156:2:9" }, - "scope": 1156, - "src": "550:171:8", + "payable": false, + "returnParameters": { + "id": 1068, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1067, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1069, + "src": "182:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1066, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "182:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "181:9:9" + }, + "scope": 1131, + "src": "136:55:9", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1076, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1072, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1071, + "name": "who", + "nodeType": "VariableDeclaration", + "scope": 1076, + "src": "214:11:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1070, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "214:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "213:13:9" + }, + "payable": false, + "returnParameters": { + "id": 1075, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1074, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1076, + "src": "250:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1073, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "250:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "249:9:9" + }, + "scope": 1131, + "src": "195:64:9", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1085, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1081, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1078, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1085, + "src": "282:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1077, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "282:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1080, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1085, + "src": "297:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1079, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "297:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "281:32:9" + }, + "payable": false, + "returnParameters": { + "id": 1084, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1083, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1085, + "src": "341:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1082, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "341:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "340:9:9" + }, + "scope": 1131, + "src": "263:87:9", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1094, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1090, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1087, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1094, + "src": "372:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1086, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "372:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1089, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1094, + "src": "384:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1088, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "384:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "371:27:9" + }, + "payable": false, + "returnParameters": { + "id": 1093, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1092, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1094, + "src": "417:4:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1091, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "417:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "416:6:9" + }, + "scope": 1131, + "src": "354:69:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1103, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1099, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1096, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1103, + "src": "444:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1095, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "444:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1098, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1103, + "src": "461:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1097, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "461:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "443:32:9" + }, + "payable": false, + "returnParameters": { + "id": 1102, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1101, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1103, + "src": "498:4:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1100, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "498:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "497:6:9" + }, + "scope": 1131, + "src": "427:77:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1114, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1110, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1105, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 1114, + "src": "530:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1104, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "530:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1107, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1114, + "src": "544:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1106, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "544:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1109, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1114, + "src": "556:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1108, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "556:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "529:41:9" + }, + "payable": false, + "returnParameters": { + "id": 1113, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1112, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1114, + "src": "593:4:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1111, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "593:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "592:6:9" + }, + "scope": 1131, + "src": "508:91:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": null, + "id": 1122, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 1121, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1116, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 1122, + "src": "623:20:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1115, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "623:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1118, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1122, + "src": "649:18:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1117, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "649:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1120, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1122, + "src": "673:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1119, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "673:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "617:73:9" + }, + "src": "603:88:9" + }, + { + "anonymous": false, + "documentation": null, + "id": 1130, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 1129, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1124, + "indexed": true, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1130, + "src": "715:21:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1123, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "715:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1126, + "indexed": true, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1130, + "src": "742:23:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1125, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "742:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1128, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1130, + "src": "771:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1127, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "771:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "709:79:9" + }, + "src": "695:94:9" + } + ], + "scope": 1132, + "src": "115:676:9" + } + ], + "src": "0:792:9" + }, + "id": 9 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "exportedSymbols": { + "SafeERC20": [ + 1275 + ] + }, + "id": 1276, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1133, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:10" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 1134, + "nodeType": "ImportDirective", + "scope": 1276, + "sourceUnit": 1132, + "src": "26:22:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 1135, + "nodeType": "ImportDirective", + "scope": 1276, + "sourceUnit": 1063, + "src": "49:33:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.", + "fullyImplemented": true, + "id": 1275, + "linearizedBaseContracts": [ + 1275 + ], + "name": "SafeERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 1138, + "libraryName": { + "contractScope": null, + "id": 1136, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1062, + "src": "382:8:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$1062", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "376:27:10", + "typeName": { + "id": 1137, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "395:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "body": { + "id": 1155, + "nodeType": "Block", + "src": "501:45:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1150, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1142, + "src": "530:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1151, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1144, + "src": "534:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1148, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1140, + "src": "515:5:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1131", + "typeString": "contract IERC20" + } + }, + "id": 1149, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1094, + "src": "515:14:10", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "515:25:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1147, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1293, + 1294 + ], + "referencedDeclaration": 1293, + "src": "507:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "507:34:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1154, + "nodeType": "ExpressionStatement", + "src": "507:34:10" + } + ] + }, + "documentation": null, + "id": 1156, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeTransfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1145, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1140, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1156, + "src": "434:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1131", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 1139, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1131, + "src": "434:6:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1131", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1142, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1156, + "src": "452:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1141, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "452:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1144, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1156, + "src": "468:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1143, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "468:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "428:57:10" + }, + "payable": false, + "returnParameters": { + "id": 1146, + "nodeType": "ParameterList", + "parameters": [], + "src": "501:0:10" + }, + "scope": 1275, + "src": "407:139:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1092, + "id": 1176, "nodeType": "Block", - "src": "823:330:8", + "src": "666:55:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1170, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1160, + "src": "699:4:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1171, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1162, + "src": "705:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1172, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1164, + "src": "709:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1168, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1158, + "src": "680:5:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1131", + "typeString": "contract IERC20" + } + }, + "id": 1169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 1114, + "src": "680:18:10", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 1173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "680:35:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1167, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1293, + 1294 + ], + "referencedDeclaration": 1293, + "src": "672:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "672:44:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1175, + "nodeType": "ExpressionStatement", + "src": "672:44:10" + } + ] + }, + "documentation": null, + "id": 1177, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1165, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1158, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1177, + "src": "581:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1131", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 1157, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1131, + "src": "581:6:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1131", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1160, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 1177, + "src": "599:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1159, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "599:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1162, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1177, + "src": "617:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1161, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "617:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1164, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1177, + "src": "633:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1163, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "633:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "575:75:10" + }, + "payable": false, + "returnParameters": { + "id": 1166, + "nodeType": "ParameterList", + "parameters": [], + "src": "666:0:10" + }, + "scope": 1275, + "src": "550:171:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1211, + "nodeType": "Block", + "src": "823:330:10", "statements": [ { "expression": { @@ -14235,7 +15650,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1081, + "id": 1200, "isConstant": false, "isLValue": false, "isPure": false, @@ -14249,19 +15664,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1070, + "id": 1189, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1068, + "id": 1187, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1064, - "src": "1045:5:8", + "referencedDeclaration": 1183, + "src": "1045:5:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14272,14 +15687,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1069, + "id": 1188, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1054:1:8", + "src": "1054:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -14287,21 +15702,21 @@ }, "value": "0" }, - "src": "1045:10:8", + "src": "1045:10:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 1071, + "id": 1190, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "1044:12:8", + "src": "1044:12:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14318,7 +15733,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1079, + "id": 1198, "isConstant": false, "isLValue": false, "isPure": false, @@ -14330,18 +15745,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1074, + "id": 1193, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1171, - "src": "1077:3:8", + "referencedDeclaration": 1290, + "src": "1077:3:10", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1075, + "id": 1194, "isConstant": false, "isLValue": false, "isPure": false, @@ -14349,7 +15764,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1077:10:8", + "src": "1077:10:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14357,12 +15772,12 @@ }, { "argumentTypes": null, - "id": 1076, + "id": 1195, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1062, - "src": "1089:7:8", + "referencedDeclaration": 1181, + "src": "1089:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14382,32 +15797,32 @@ ], "expression": { "argumentTypes": null, - "id": 1072, + "id": 1191, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1060, - "src": "1061:5:8", + "referencedDeclaration": 1179, + "src": "1061:5:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" } }, - "id": 1073, + "id": 1192, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 966, - "src": "1061:15:8", + "referencedDeclaration": 1085, + "src": "1061:15:10", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1077, + "id": 1196, "isConstant": false, "isLValue": false, "isPure": false, @@ -14415,7 +15830,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1061:36:8", + "src": "1061:36:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14426,14 +15841,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1078, + "id": 1197, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1101:1:8", + "src": "1101:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -14441,27 +15856,27 @@ }, "value": "0" }, - "src": "1061:41:8", + "src": "1061:41:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 1080, + "id": 1199, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "1060:43:8", + "src": "1060:43:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1044:59:8", + "src": "1044:59:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14475,21 +15890,21 @@ "typeString": "bool" } ], - "id": 1067, + "id": 1186, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "1036:7:8", + "referencedDeclaration": 1293, + "src": "1036:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1082, + "id": 1201, "isConstant": false, "isLValue": false, "isPure": false, @@ -14497,15 +15912,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1036:68:8", + "src": "1036:68:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1083, + "id": 1202, "nodeType": "ExpressionStatement", - "src": "1036:68:8" + "src": "1036:68:10" }, { "expression": { @@ -14516,12 +15931,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1087, + "id": 1206, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1062, - "src": "1132:7:8", + "referencedDeclaration": 1181, + "src": "1132:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14529,12 +15944,12 @@ }, { "argumentTypes": null, - "id": 1088, + "id": 1207, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1064, - "src": "1141:5:8", + "referencedDeclaration": 1183, + "src": "1141:5:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14554,32 +15969,32 @@ ], "expression": { "argumentTypes": null, - "id": 1085, + "id": 1204, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1060, - "src": "1118:5:8", + "referencedDeclaration": 1179, + "src": "1118:5:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" } }, - "id": 1086, + "id": 1205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 984, - "src": "1118:13:8", + "referencedDeclaration": 1103, + "src": "1118:13:10", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1089, + "id": 1208, "isConstant": false, "isLValue": false, "isPure": false, @@ -14587,7 +16002,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1118:29:8", + "src": "1118:29:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14601,21 +16016,21 @@ "typeString": "bool" } ], - "id": 1084, + "id": 1203, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "1110:7:8", + "referencedDeclaration": 1293, + "src": "1110:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1090, + "id": 1209, "isConstant": false, "isLValue": false, "isPure": false, @@ -14623,20 +16038,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1110:38:8", + "src": "1110:38:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1091, + "id": 1210, "nodeType": "ExpressionStatement", - "src": "1110:38:8" + "src": "1110:38:10" } ] }, "documentation": null, - "id": 1093, + "id": 1212, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -14644,31 +16059,31 @@ "name": "safeApprove", "nodeType": "FunctionDefinition", "parameters": { - "id": 1065, + "id": 1184, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1060, + "id": 1179, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1093, - "src": "751:12:8", + "scope": 1212, + "src": "751:12:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1059, + "id": 1178, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1012, - "src": "751:6:8", + "referencedDeclaration": 1131, + "src": "751:6:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" } }, @@ -14677,11 +16092,11 @@ }, { "constant": false, - "id": 1062, + "id": 1181, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1093, - "src": "769:15:8", + "scope": 1212, + "src": "769:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14689,10 +16104,10 @@ "typeString": "address" }, "typeName": { - "id": 1061, + "id": 1180, "name": "address", "nodeType": "ElementaryTypeName", - "src": "769:7:8", + "src": "769:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14703,11 +16118,11 @@ }, { "constant": false, - "id": 1064, + "id": 1183, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1093, - "src": "790:13:8", + "scope": 1212, + "src": "790:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14715,10 +16130,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1063, + "id": 1182, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "790:7:8", + "src": "790:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14728,39 +16143,39 @@ "visibility": "internal" } ], - "src": "745:62:8" + "src": "745:62:10" }, "payable": false, "returnParameters": { - "id": 1066, + "id": 1185, "nodeType": "ParameterList", "parameters": [], - "src": "823:0:8" + "src": "823:0:10" }, - "scope": 1156, - "src": "725:428:8", + "scope": 1275, + "src": "725:428:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1123, + "id": 1242, "nodeType": "Block", - "src": "1265:135:8", + "src": "1265:135:10", "statements": [ { "assignments": [ - 1103 + 1222 ], "declarations": [ { "constant": false, - "id": 1103, + "id": 1222, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 1124, - "src": "1271:20:8", + "scope": 1243, + "src": "1271:20:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14768,10 +16183,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1102, + "id": 1221, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1271:7:8", + "src": "1271:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14781,18 +16196,18 @@ "visibility": "internal" } ], - "id": 1114, + "id": 1233, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1112, + "id": 1231, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1099, - "src": "1338:5:8", + "referencedDeclaration": 1218, + "src": "1338:5:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14814,14 +16229,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1107, + "id": 1226, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1192, - "src": "1318:4:8", + "referencedDeclaration": 1311, + "src": "1318:4:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1156", + "typeIdentifier": "t_contract$_SafeERC20_$1275", "typeString": "library SafeERC20" } } @@ -14829,24 +16244,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$1156", + "typeIdentifier": "t_contract$_SafeERC20_$1275", "typeString": "library SafeERC20" } ], - "id": 1106, + "id": 1225, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1310:7:8", + "src": "1310:7:10", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1108, + "id": 1227, "isConstant": false, "isLValue": false, "isPure": false, @@ -14854,7 +16269,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1310:13:8", + "src": "1310:13:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14862,12 +16277,12 @@ }, { "argumentTypes": null, - "id": 1109, + "id": 1228, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1097, - "src": "1325:7:8", + "referencedDeclaration": 1216, + "src": "1325:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14887,32 +16302,32 @@ ], "expression": { "argumentTypes": null, - "id": 1104, + "id": 1223, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1095, - "src": "1294:5:8", + "referencedDeclaration": 1214, + "src": "1294:5:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" } }, - "id": 1105, + "id": 1224, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 966, - "src": "1294:15:8", + "referencedDeclaration": 1085, + "src": "1294:15:10", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1110, + "id": 1229, "isConstant": false, "isLValue": false, "isPure": false, @@ -14920,27 +16335,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1294:39:8", + "src": "1294:39:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1111, + "id": 1230, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 922, - "src": "1294:43:8", + "referencedDeclaration": 1041, + "src": "1294:43:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1113, + "id": 1232, "isConstant": false, "isLValue": false, "isPure": false, @@ -14948,14 +16363,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1294:50:8", + "src": "1294:50:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1271:73:8" + "src": "1271:73:10" }, { "expression": { @@ -14966,12 +16381,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1118, + "id": 1237, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1097, - "src": "1372:7:8", + "referencedDeclaration": 1216, + "src": "1372:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14979,12 +16394,12 @@ }, { "argumentTypes": null, - "id": 1119, + "id": 1238, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1103, - "src": "1381:12:8", + "referencedDeclaration": 1222, + "src": "1381:12:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15004,32 +16419,32 @@ ], "expression": { "argumentTypes": null, - "id": 1116, + "id": 1235, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1095, - "src": "1358:5:8", + "referencedDeclaration": 1214, + "src": "1358:5:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" } }, - "id": 1117, + "id": 1236, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 984, - "src": "1358:13:8", + "referencedDeclaration": 1103, + "src": "1358:13:10", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1120, + "id": 1239, "isConstant": false, "isLValue": false, "isPure": false, @@ -15037,7 +16452,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1358:36:8", + "src": "1358:36:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -15051,21 +16466,21 @@ "typeString": "bool" } ], - "id": 1115, + "id": 1234, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "1350:7:8", + "referencedDeclaration": 1293, + "src": "1350:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1121, + "id": 1240, "isConstant": false, "isLValue": false, "isPure": false, @@ -15073,20 +16488,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1350:45:8", + "src": "1350:45:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1122, + "id": 1241, "nodeType": "ExpressionStatement", - "src": "1350:45:8" + "src": "1350:45:10" } ] }, "documentation": null, - "id": 1124, + "id": 1243, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -15094,31 +16509,31 @@ "name": "safeIncreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1100, + "id": 1219, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1095, + "id": 1214, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1124, - "src": "1193:12:8", + "scope": 1243, + "src": "1193:12:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1094, + "id": 1213, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1012, - "src": "1193:6:8", + "referencedDeclaration": 1131, + "src": "1193:6:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" } }, @@ -15127,11 +16542,11 @@ }, { "constant": false, - "id": 1097, + "id": 1216, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1124, - "src": "1211:15:8", + "scope": 1243, + "src": "1211:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15139,10 +16554,10 @@ "typeString": "address" }, "typeName": { - "id": 1096, + "id": 1215, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1211:7:8", + "src": "1211:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15153,11 +16568,11 @@ }, { "constant": false, - "id": 1099, + "id": 1218, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1124, - "src": "1232:13:8", + "scope": 1243, + "src": "1232:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15165,10 +16580,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1098, + "id": 1217, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1232:7:8", + "src": "1232:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15178,39 +16593,39 @@ "visibility": "internal" } ], - "src": "1187:62:8" + "src": "1187:62:10" }, "payable": false, "returnParameters": { - "id": 1101, + "id": 1220, "nodeType": "ParameterList", "parameters": [], - "src": "1265:0:8" + "src": "1265:0:10" }, - "scope": 1156, - "src": "1157:243:8", + "scope": 1275, + "src": "1157:243:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1154, + "id": 1273, "nodeType": "Block", - "src": "1512:135:8", + "src": "1512:135:10", "statements": [ { "assignments": [ - 1134 + 1253 ], "declarations": [ { "constant": false, - "id": 1134, + "id": 1253, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 1155, - "src": "1518:20:8", + "scope": 1274, + "src": "1518:20:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15218,10 +16633,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1133, + "id": 1252, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1518:7:8", + "src": "1518:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15231,18 +16646,18 @@ "visibility": "internal" } ], - "id": 1145, + "id": 1264, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1143, + "id": 1262, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1130, - "src": "1585:5:8", + "referencedDeclaration": 1249, + "src": "1585:5:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15264,14 +16679,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1138, + "id": 1257, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1192, - "src": "1565:4:8", + "referencedDeclaration": 1311, + "src": "1565:4:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1156", + "typeIdentifier": "t_contract$_SafeERC20_$1275", "typeString": "library SafeERC20" } } @@ -15279,24 +16694,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$1156", + "typeIdentifier": "t_contract$_SafeERC20_$1275", "typeString": "library SafeERC20" } ], - "id": 1137, + "id": 1256, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1557:7:8", + "src": "1557:7:10", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1139, + "id": 1258, "isConstant": false, "isLValue": false, "isPure": false, @@ -15304,7 +16719,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1557:13:8", + "src": "1557:13:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15312,12 +16727,12 @@ }, { "argumentTypes": null, - "id": 1140, + "id": 1259, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1128, - "src": "1572:7:8", + "referencedDeclaration": 1247, + "src": "1572:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15337,32 +16752,32 @@ ], "expression": { "argumentTypes": null, - "id": 1135, + "id": 1254, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1126, - "src": "1541:5:8", + "referencedDeclaration": 1245, + "src": "1541:5:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" } }, - "id": 1136, + "id": 1255, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 966, - "src": "1541:15:8", + "referencedDeclaration": 1085, + "src": "1541:15:10", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1141, + "id": 1260, "isConstant": false, "isLValue": false, "isPure": false, @@ -15370,27 +16785,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1541:39:8", + "src": "1541:39:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1142, + "id": 1261, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 898, - "src": "1541:43:8", + "referencedDeclaration": 1017, + "src": "1541:43:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1144, + "id": 1263, "isConstant": false, "isLValue": false, "isPure": false, @@ -15398,14 +16813,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1541:50:8", + "src": "1541:50:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1518:73:8" + "src": "1518:73:10" }, { "expression": { @@ -15416,12 +16831,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1149, + "id": 1268, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1128, - "src": "1619:7:8", + "referencedDeclaration": 1247, + "src": "1619:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15429,12 +16844,12 @@ }, { "argumentTypes": null, - "id": 1150, + "id": 1269, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1134, - "src": "1628:12:8", + "referencedDeclaration": 1253, + "src": "1628:12:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15454,32 +16869,32 @@ ], "expression": { "argumentTypes": null, - "id": 1147, + "id": 1266, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1126, - "src": "1605:5:8", + "referencedDeclaration": 1245, + "src": "1605:5:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" } }, - "id": 1148, + "id": 1267, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 984, - "src": "1605:13:8", + "referencedDeclaration": 1103, + "src": "1605:13:10", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1151, + "id": 1270, "isConstant": false, "isLValue": false, "isPure": false, @@ -15487,7 +16902,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1605:36:8", + "src": "1605:36:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -15501,21 +16916,21 @@ "typeString": "bool" } ], - "id": 1146, + "id": 1265, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "1597:7:8", + "referencedDeclaration": 1293, + "src": "1597:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1152, + "id": 1271, "isConstant": false, "isLValue": false, "isPure": false, @@ -15523,20 +16938,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1597:45:8", + "src": "1597:45:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1153, + "id": 1272, "nodeType": "ExpressionStatement", - "src": "1597:45:8" + "src": "1597:45:10" } ] }, "documentation": null, - "id": 1155, + "id": 1274, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -15544,31 +16959,31 @@ "name": "safeDecreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1131, + "id": 1250, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1126, + "id": 1245, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1155, - "src": "1440:12:8", + "scope": 1274, + "src": "1440:12:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1125, + "id": 1244, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1012, - "src": "1440:6:8", + "referencedDeclaration": 1131, + "src": "1440:6:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" } }, @@ -15577,11 +16992,11 @@ }, { "constant": false, - "id": 1128, + "id": 1247, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1155, - "src": "1458:15:8", + "scope": 1274, + "src": "1458:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15589,10 +17004,10 @@ "typeString": "address" }, "typeName": { - "id": 1127, + "id": 1246, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1458:7:8", + "src": "1458:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15603,11 +17018,11 @@ }, { "constant": false, - "id": 1130, + "id": 1249, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1155, - "src": "1479:13:8", + "scope": 1274, + "src": "1479:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15615,10 +17030,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1129, + "id": 1248, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1479:7:8", + "src": "1479:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15628,29 +17043,29 @@ "visibility": "internal" } ], - "src": "1434:62:8" + "src": "1434:62:10" }, "payable": false, "returnParameters": { - "id": 1132, + "id": 1251, "nodeType": "ParameterList", "parameters": [], - "src": "1512:0:8" + "src": "1512:0:10" }, - "scope": 1156, - "src": "1404:243:8", + "scope": 1275, + "src": "1404:243:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 1157, - "src": "353:1296:8" + "scope": 1276, + "src": "353:1296:10" } ], - "src": "0:1650:8" + "src": "0:1650:10" }, - "id": 8 + "id": 10 } } } \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.abi b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.abi index 88576e784..7673494cb 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.abi +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.abi @@ -1 +1 @@ -[{"constant":false,"inputs":[],"name":"pauseMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isAlgoMiner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"isMining","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"startMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMinerAddress","type":"address"}],"name":"migrateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMiner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSystem","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"stopAndRemoveOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"resumeMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCategory","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSupervisor","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"mine","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deactivateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwnerAddress","type":"address"}],"name":"resetMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"activateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"DAYS_PER_YEAR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"stopMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"minerType","type":"uint16"},{"name":"category","type":"uint8"},{"name":"ownerAddress","type":"address"},{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file +[{"constant":false,"inputs":[],"name":"terminate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pauseMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isAlgoMiner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"isMining","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"startMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMinerAddress","type":"address"}],"name":"migrateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMiner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSystem","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"stopAndRemoveOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"resumeMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCategory","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSupervisor","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"mine","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deactivateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwnerAddress","type":"address"}],"name":"resetMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"activateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"DAYS_PER_YEAR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"stopMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"minerType","type":"uint16"},{"name":"category","type":"uint8"},{"name":"minerAccountAddress","type":"address"},{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin index 481853b90..5d1e3dc47 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b506040516080806200104f83398101604090815281516020830151918301516060909301519092906200004d3364010000000062000103810204565b620000613364010000000062000121810204565b62000075336401000000006200013c810204565b60008360ff16101580156200008e575060058360ff1611155b15156200009a57600080fd5b6003805461ffff191661ffff959095169490941762ff000019166201000060ff949094169390930292909217630100000060b860020a0319166301000000600160a060020a03928316021790925560048054600160a060020a03191691909216179055620001ea565b6200011e60008264010000000062000d8f6200015782021704565b50565b6200011e60018264010000000062000d8f6200015782021704565b6200011e60028264010000000062000d8f6200015782021704565b600160a060020a03811615156200016d57600080fd5b620001828282640100000000620001b2810204565b156200018d57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001ca57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610e5580620001fa6000396000f30060806040526004361061013d5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663162f986d81146101425780631777fb4b1461015957806319a74ab31461018257806321b79d9814610197578063231d4e2a146101ac57806329d10b6e146101cd5780632e6b6849146101ee578063302c11ca1461020f57806334cdcf2614610240578063363aa6c714610261578063427534a414610276578063608d3d3d1461028b57806374be7592146102ac57806380258e47146102cd57806381a24459146102f857806399f4b251146103195780639e614ca01461032e578063ada436e914610343578063b2a32cd514610364578063be95249414610379578063c6846ef81461038e578063d43acc79146103b5578063da408679146103ca578063e9d61859146103df575b600080fd5b34801561014e57600080fd5b506101576103f4565b005b34801561016557600080fd5b5061016e61045a565b604080519115158252519081900360200190f35b34801561018e57600080fd5b5061016e61045f565b3480156101a357600080fd5b50610157610496565b3480156101b857600080fd5b50610157600160a060020a0360043516610516565b3480156101d957600080fd5b50610157600160a060020a0360043516610602565b3480156101fa57600080fd5b50610157600160a060020a036004351661061f565b34801561021b57600080fd5b5061022461063c565b60408051600160a060020a039092168252519081900360200190f35b34801561024c57600080fd5b5061016e600160a060020a0360043516610652565b34801561026d57600080fd5b5061015761066a565b34801561028257600080fd5b50610157610713565b34801561029757600080fd5b5061016e600160a060020a0360043516610776565b3480156102b857600080fd5b50610157600160a060020a0360043516610789565b3480156102d957600080fd5b506102e26107a6565b6040805160ff9092168252519081900360200190f35b34801561030457600080fd5b5061016e600160a060020a03600435166107b5565b34801561032557600080fd5b506101576107c8565b34801561033a57600080fd5b50610157610999565b34801561034f57600080fd5b50610157600160a060020a03600435166109f3565b34801561037057600080fd5b50610157610a89565b34801561038557600080fd5b50610157610b9c565b34801561039a57600080fd5b506103a3610ba7565b60408051918252519081900360200190f35b3480156103c157600080fd5b50610157610bad565b3480156103d657600080fd5b50610157610bb6565b3480156103eb57600080fd5b50610157610c31565b6103fd336107b5565b151561040857600080fd5b600160045460a060020a900460ff16600381111561042257fe5b1461042c57600080fd5b600480546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550565b600190565b6000600160045460a060020a900460ff16600381111561047b57fe5b148015610491575060045460a860020a900460ff165b905090565b60035463010000009004600160a060020a031633146104b457600080fd5b600160045460a060020a900460ff1660038111156104ce57fe5b146104d857600080fd5b60045460a860020a900460ff16156104ef57600080fd5b6004805475ff000000000000000000000000000000000000000000191660a860020a179055565b61051f33610776565b151561052a57600080fd5b600060045460a060020a900460ff16600381111561054457fe5b1461054e57600080fd5b60048054604080517f70a082310000000000000000000000000000000000000000000000000000000081523093810193909352516105ff928492600160a060020a0316916370a08231916024808201926020929091908290030181600087803b1580156105ba57600080fd5b505af11580156105ce573d6000803e3d6000fd5b505050506040513d60208110156105e457600080fd5b5051600454600160a060020a0316919063ffffffff610c3a16565b50565b61060b336107b5565b151561061657600080fd5b6105ff81610cf2565b61062833610776565b151561063357600080fd5b6105ff81610d03565b60035463010000009004600160a060020a031690565b6000610664818363ffffffff610d1416565b92915050565b610673336107b5565b151561067e57600080fd5b600360045460a060020a900460ff16600381111561069857fe5b14156106a357600080fd5b6004805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001775ff000000000000000000000000000000000000000000191690556003805476ffffffffffffffffffffffffffffffffffffffff00000019169055565b61071c336107b5565b151561072757600080fd5b600260045460a060020a900460ff16600381111561074157fe5b1461074b57600080fd5b600480546001919074ff0000000000000000000000000000000000000000191660a060020a83610453565b600061066460018363ffffffff610d1416565b61079233610652565b151561079d57600080fd5b6105ff81610d4b565b60035462010000900460ff1690565b600061066460028363ffffffff610d1416565b60006107d333610652565b15156107de57600080fd5b600160045460a060020a900460ff1660038111156107f857fe5b1461080257600080fd5b60045460a860020a900460ff16151561081a57600080fd5b60045460b860020a900461ffff161515610890576004805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610958565b60048054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610958576004805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600554600290046005555b5060055461016d90046000811161096e57600080fd5b6003546004546105ff91600160a060020a03918216916301000000909104168363ffffffff610c3a16565b6109a233610776565b15156109ad57600080fd5b600060045460a060020a900460ff1660038111156109c757fe5b14156109d257600080fd5b6004805475ffff000000000000000000000000000000000000000019169055565b6109fc336107b5565b1515610a0757600080fd5b600360045460a060020a900460ff166003811115610a2157fe5b14610a2b57600080fd5b6004805474ff0000000000000000000000000000000000000000191660a060020a17905560038054600160a060020a039290921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b6000610a9433610776565b1515610a9f57600080fd5b600060045460a060020a900460ff166003811115610ab957fe5b14610ac357600080fd5b6005541515610b755760048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251600160a060020a03909116916370a082319160248083019260209291908290030181600087803b158015610b3357600080fd5b505af1158015610b47573d6000803e3d6000fd5b505050506040513d6020811015610b5d57600080fd5b50519050801515610b6d57600080fd5b600281046005555b506004805474ff0000000000000000000000000000000000000000191660a060020a179055565b610ba533610d5c565b565b61016d81565b610ba533610d6d565b60035463010000009004600160a060020a03163314610bd457600080fd5b600160045460a060020a900460ff166003811115610bee57fe5b14610bf857600080fd5b60045460a860020a900460ff161515610c1057600080fd5b6004805475ff00000000000000000000000000000000000000000019169055565b610ba533610d7e565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610cb657600080fd5b505af1158015610cca573d6000803e3d6000fd5b505050506040513d6020811015610ce057600080fd5b50511515610ced57600080fd5b505050565b6105ff60028263ffffffff610d8f16565b6105ff60018263ffffffff610d8f16565b6000600160a060020a0382161515610d2b57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6105ff60008263ffffffff610d8f16565b6105ff60028263ffffffff610ddd16565b6105ff60018263ffffffff610ddd16565b6105ff60008263ffffffff610ddd16565b600160a060020a0381161515610da457600080fd5b610dae8282610d14565b15610db857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610df257600080fd5b610dfc8282610d14565b1515610e0757600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058201294b6d23ba0b99db018d2b973943cf860ea9ceb1232ea85e77d5e6f5d5a2e890029 \ No newline at end of file +60806040523480156200001157600080fd5b506040516080806200122083398101604090815281516020830151918301516060909301516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a038416179055919391620000819064010000000062000126810204565b620000953364010000000062000144810204565b620000a9336401000000006200015f810204565b60008360ff1610158015620000c2575060058360ff1611155b1515620000ce57600080fd5b506005805461ffff191661ffff949094169390931762ff000019166201000060ff939093169290920291909117630100000060b860020a0319166301000000600160a060020a0392909216919091021790556200020d565b6200014160028264010000000062000f3d6200017a82021704565b50565b6200014160038264010000000062000f3d6200017a82021704565b6200014160048264010000000062000f3d6200017a82021704565b600160a060020a03811615156200019057600080fd5b620001a58282640100000000620001d5810204565b15620001b057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001ed57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b611003806200021d6000396000f3006080604052600436106101485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630c08bf88811461014d578063162f986d146101645780631777fb4b1461017957806319a74ab3146101a257806321b79d98146101b7578063231d4e2a146101cc57806329d10b6e146101ed5780632e6b68491461020e578063302c11ca1461022f57806334cdcf2614610260578063363aa6c714610281578063427534a414610296578063608d3d3d146102ab57806374be7592146102cc57806380258e47146102ed57806381a244591461031857806399f4b251146103395780639e614ca01461034e578063ada436e914610363578063b2a32cd514610384578063be95249414610399578063c6846ef8146103ae578063d43acc79146103d5578063da408679146103ea578063e9d61859146103ff575b600080fd5b34801561015957600080fd5b50610162610414565b005b34801561017057600080fd5b50610162610432565b34801561018557600080fd5b5061018e6104a1565b604080519115158252519081900360200190f35b3480156101ae57600080fd5b5061018e6104a6565b3480156101c357600080fd5b506101626104dd565b3480156101d857600080fd5b50610162600160a060020a0360043516610577565b3480156101f957600080fd5b50610162600160a060020a0360043516610663565b34801561021a57600080fd5b50610162600160a060020a0360043516610680565b34801561023b57600080fd5b5061024461069d565b60408051600160a060020a039092168252519081900360200190f35b34801561026c57600080fd5b5061018e600160a060020a03600435166106b3565b34801561028d57600080fd5b506101626106cc565b3480156102a257600080fd5b50610162610764565b3480156102b757600080fd5b5061018e600160a060020a03600435166107d0565b3480156102d857600080fd5b50610162600160a060020a03600435166107e3565b3480156102f957600080fd5b50610302610800565b6040805160ff9092168252519081900360200190f35b34801561032457600080fd5b5061018e600160a060020a036004351661080f565b34801561034557600080fd5b50610162610822565b34801561035a57600080fd5b50610162610a1e565b34801561036f57600080fd5b50610162600160a060020a0360043516610a92565b34801561039057600080fd5b50610162610b2b565b3480156103a557600080fd5b50610162610c45565b3480156103ba57600080fd5b506103c3610c4e565b60408051918252519081900360200190f35b3480156103e157600080fd5b50610162610c54565b3480156103f657600080fd5b50610162610c5d565b34801561040b57600080fd5b50610162610cf2565b61041d336107d0565b151561042857600080fd5b610430610cfb565b565b60005460a060020a900460ff161561044957600080fd5b6104523361080f565b151561045d57600080fd5b600160055460b860020a900460ff16600381111561047757fe5b1461048157600080fd5b600580546002919060b860020a60ff02191660b860020a835b0217905550565b600190565b6000600160055460b860020a900460ff1660038111156104c257fe5b1480156104d8575060055460c060020a900460ff165b905090565b60005460a060020a900460ff16156104f457600080fd5b60055463010000009004600160a060020a0316331461051257600080fd5b600160055460b860020a900460ff16600381111561052c57fe5b1461053657600080fd5b60055460c060020a900460ff161561054d57600080fd5b6005805478ff000000000000000000000000000000000000000000000000191660c060020a179055565b610580336107d0565b151561058b57600080fd5b600060055460b860020a900460ff1660038111156105a557fe5b146105af57600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051610660928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b15801561061b57600080fd5b505af115801561062f573d6000803e3d6000fd5b505050506040513d602081101561064557600080fd5b5051600154600160a060020a0316919063ffffffff610dc216565b50565b61066c3361080f565b151561067757600080fd5b61066081610e7a565b610689336107d0565b151561069457600080fd5b61066081610e8b565b60055463010000009004600160a060020a031690565b60006106c660028363ffffffff610e9c16565b92915050565b60005460a060020a900460ff16156106e357600080fd5b6106ec3361080f565b15156106f757600080fd5b600360055460b860020a900460ff16600381111561071157fe5b141561071c57600080fd5b6005805460b860020a60ff021916770300000000000000000000000000000000000000000000001778ff00ffffffffffffffffffffffffffffffffffffffff00000019169055565b60005460a060020a900460ff161561077b57600080fd5b6107843361080f565b151561078f57600080fd5b600260055460b860020a900460ff1660038111156107a957fe5b146107b357600080fd5b600580546001919060b860020a60ff02191660b860020a8361049a565b60006106c660038363ffffffff610e9c16565b6107ec336106b3565b15156107f757600080fd5b61066081610ed3565b60055462010000900460ff1690565b60006106c660048363ffffffff610e9c16565b6000805460a060020a900460ff161561083a57600080fd5b610843336106b3565b151561084e57600080fd5b600160055460b860020a900460ff16600381111561086857fe5b1461087257600080fd5b60055460c060020a900460ff16151561088a57600080fd5b60055460d060020a900461ffff16151561090957600580547bffff00000000000000000000000000000000000000000000000000001979ff0000000000000000000000000000000000000000000000000019909116790100000000000000000000000000000000000000000000000000171660d060020a1790556109dd565b60058054600161ffff60d060020a808404821692909201811682027bffff00000000000000000000000000000000000000000000000000001990931692909217928390559091041661016e14156109dd57600580547bffff000000000000000000000000000000000000000000000000000019600160ff790100000000000000000000000000000000000000000000000000808504821692909201160279ff0000000000000000000000000000000000000000000000000019909216919091171660d060020a179055600654600290046006555b5060065461016d9004600081116109f357600080fd5b60055460015461066091600160a060020a03918216916301000000909104168363ffffffff610dc216565b60005460a060020a900460ff1615610a3557600080fd5b610a3e336107d0565b1515610a4957600080fd5b600060055460b860020a900460ff166003811115610a6357fe5b1415610a6e57600080fd5b6005805478ffff000000000000000000000000000000000000000000000019169055565b60005460a060020a900460ff1615610aa957600080fd5b610ab23361080f565b1515610abd57600080fd5b600360055460b860020a900460ff166003811115610ad757fe5b14610ae157600080fd5b60058054600160a060020a039290921663010000000260b860020a60ff021990921660b860020a1776ffffffffffffffffffffffffffffffffffffffff0000001916919091179055565b6000805460a060020a900460ff1615610b4357600080fd5b610b4c336107d0565b1515610b5757600080fd5b600060055460b860020a900460ff166003811115610b7157fe5b14610b7b57600080fd5b6006541515610c2c57600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b158015610bea57600080fd5b505af1158015610bfe573d6000803e3d6000fd5b505050506040513d6020811015610c1457600080fd5b50519050801515610c2457600080fd5b600281046006555b506005805460b860020a60ff02191660b860020a179055565b61043033610ee4565b61016d81565b61043033610ef5565b60005460a060020a900460ff1615610c7457600080fd5b60055463010000009004600160a060020a03163314610c9257600080fd5b600160055460b860020a900460ff166003811115610cac57fe5b14610cb657600080fd5b60055460c060020a900460ff161515610cce57600080fd5b6005805478ff00000000000000000000000000000000000000000000000019169055565b61043033610f06565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610d6057600080fd5b505af1158015610d74573d6000803e3d6000fd5b505050506040513d6020811015610d8a57600080fd5b505190506000811115610dba57600054600154610dba91600160a060020a0391821691168363ffffffff610dc216565b610660610f17565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610e3e57600080fd5b505af1158015610e52573d6000803e3d6000fd5b505050506040513d6020811015610e6857600080fd5b50511515610e7557600080fd5b505050565b61066060048263ffffffff610f3d16565b61066060038263ffffffff610f3d16565b6000600160a060020a0382161515610eb357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61066060028263ffffffff610f3d16565b61066060048263ffffffff610f8b16565b61066060038263ffffffff610f8b16565b61066060028263ffffffff610f8b16565b6000805474ff0000000000000000000000000000000000000000191660a060020a179055565b600160a060020a0381161515610f5257600080fd5b610f5c8282610e9c565b15610f6657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610fa057600080fd5b610faa8282610e9c565b1515610fb557600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058200a38ca8f69ea6e0732674e2a58d5b93661b5c2aa8a6c6b89ced63a3d5f3186730029 \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json index 1533a78f8..55de43ce4 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json @@ -1,5 +1,14 @@ { "abi": [ + { + "constant": false, + "inputs": [], + "name": "terminate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "constant": false, "inputs": [], @@ -307,7 +316,7 @@ "type": "uint8" }, { - "name": "ownerAddress", + "name": "minerAccountAddress", "type": "address" }, { @@ -320,7 +329,7 @@ "type": "constructor" } ], - "bytecode": "60806040523480156200001157600080fd5b506040516080806200104f83398101604090815281516020830151918301516060909301519092906200004d3364010000000062000103810204565b620000613364010000000062000121810204565b62000075336401000000006200013c810204565b60008360ff16101580156200008e575060058360ff1611155b15156200009a57600080fd5b6003805461ffff191661ffff959095169490941762ff000019166201000060ff949094169390930292909217630100000060b860020a0319166301000000600160a060020a03928316021790925560048054600160a060020a03191691909216179055620001ea565b6200011e60008264010000000062000d8f6200015782021704565b50565b6200011e60018264010000000062000d8f6200015782021704565b6200011e60028264010000000062000d8f6200015782021704565b600160a060020a03811615156200016d57600080fd5b620001828282640100000000620001b2810204565b156200018d57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001ca57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610e5580620001fa6000396000f30060806040526004361061013d5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663162f986d81146101425780631777fb4b1461015957806319a74ab31461018257806321b79d9814610197578063231d4e2a146101ac57806329d10b6e146101cd5780632e6b6849146101ee578063302c11ca1461020f57806334cdcf2614610240578063363aa6c714610261578063427534a414610276578063608d3d3d1461028b57806374be7592146102ac57806380258e47146102cd57806381a24459146102f857806399f4b251146103195780639e614ca01461032e578063ada436e914610343578063b2a32cd514610364578063be95249414610379578063c6846ef81461038e578063d43acc79146103b5578063da408679146103ca578063e9d61859146103df575b600080fd5b34801561014e57600080fd5b506101576103f4565b005b34801561016557600080fd5b5061016e61045a565b604080519115158252519081900360200190f35b34801561018e57600080fd5b5061016e61045f565b3480156101a357600080fd5b50610157610496565b3480156101b857600080fd5b50610157600160a060020a0360043516610516565b3480156101d957600080fd5b50610157600160a060020a0360043516610602565b3480156101fa57600080fd5b50610157600160a060020a036004351661061f565b34801561021b57600080fd5b5061022461063c565b60408051600160a060020a039092168252519081900360200190f35b34801561024c57600080fd5b5061016e600160a060020a0360043516610652565b34801561026d57600080fd5b5061015761066a565b34801561028257600080fd5b50610157610713565b34801561029757600080fd5b5061016e600160a060020a0360043516610776565b3480156102b857600080fd5b50610157600160a060020a0360043516610789565b3480156102d957600080fd5b506102e26107a6565b6040805160ff9092168252519081900360200190f35b34801561030457600080fd5b5061016e600160a060020a03600435166107b5565b34801561032557600080fd5b506101576107c8565b34801561033a57600080fd5b50610157610999565b34801561034f57600080fd5b50610157600160a060020a03600435166109f3565b34801561037057600080fd5b50610157610a89565b34801561038557600080fd5b50610157610b9c565b34801561039a57600080fd5b506103a3610ba7565b60408051918252519081900360200190f35b3480156103c157600080fd5b50610157610bad565b3480156103d657600080fd5b50610157610bb6565b3480156103eb57600080fd5b50610157610c31565b6103fd336107b5565b151561040857600080fd5b600160045460a060020a900460ff16600381111561042257fe5b1461042c57600080fd5b600480546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550565b600190565b6000600160045460a060020a900460ff16600381111561047b57fe5b148015610491575060045460a860020a900460ff165b905090565b60035463010000009004600160a060020a031633146104b457600080fd5b600160045460a060020a900460ff1660038111156104ce57fe5b146104d857600080fd5b60045460a860020a900460ff16156104ef57600080fd5b6004805475ff000000000000000000000000000000000000000000191660a860020a179055565b61051f33610776565b151561052a57600080fd5b600060045460a060020a900460ff16600381111561054457fe5b1461054e57600080fd5b60048054604080517f70a082310000000000000000000000000000000000000000000000000000000081523093810193909352516105ff928492600160a060020a0316916370a08231916024808201926020929091908290030181600087803b1580156105ba57600080fd5b505af11580156105ce573d6000803e3d6000fd5b505050506040513d60208110156105e457600080fd5b5051600454600160a060020a0316919063ffffffff610c3a16565b50565b61060b336107b5565b151561061657600080fd5b6105ff81610cf2565b61062833610776565b151561063357600080fd5b6105ff81610d03565b60035463010000009004600160a060020a031690565b6000610664818363ffffffff610d1416565b92915050565b610673336107b5565b151561067e57600080fd5b600360045460a060020a900460ff16600381111561069857fe5b14156106a357600080fd5b6004805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001775ff000000000000000000000000000000000000000000191690556003805476ffffffffffffffffffffffffffffffffffffffff00000019169055565b61071c336107b5565b151561072757600080fd5b600260045460a060020a900460ff16600381111561074157fe5b1461074b57600080fd5b600480546001919074ff0000000000000000000000000000000000000000191660a060020a83610453565b600061066460018363ffffffff610d1416565b61079233610652565b151561079d57600080fd5b6105ff81610d4b565b60035462010000900460ff1690565b600061066460028363ffffffff610d1416565b60006107d333610652565b15156107de57600080fd5b600160045460a060020a900460ff1660038111156107f857fe5b1461080257600080fd5b60045460a860020a900460ff16151561081a57600080fd5b60045460b860020a900461ffff161515610890576004805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610958565b60048054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610958576004805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600554600290046005555b5060055461016d90046000811161096e57600080fd5b6003546004546105ff91600160a060020a03918216916301000000909104168363ffffffff610c3a16565b6109a233610776565b15156109ad57600080fd5b600060045460a060020a900460ff1660038111156109c757fe5b14156109d257600080fd5b6004805475ffff000000000000000000000000000000000000000019169055565b6109fc336107b5565b1515610a0757600080fd5b600360045460a060020a900460ff166003811115610a2157fe5b14610a2b57600080fd5b6004805474ff0000000000000000000000000000000000000000191660a060020a17905560038054600160a060020a039290921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b6000610a9433610776565b1515610a9f57600080fd5b600060045460a060020a900460ff166003811115610ab957fe5b14610ac357600080fd5b6005541515610b755760048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251600160a060020a03909116916370a082319160248083019260209291908290030181600087803b158015610b3357600080fd5b505af1158015610b47573d6000803e3d6000fd5b505050506040513d6020811015610b5d57600080fd5b50519050801515610b6d57600080fd5b600281046005555b506004805474ff0000000000000000000000000000000000000000191660a060020a179055565b610ba533610d5c565b565b61016d81565b610ba533610d6d565b60035463010000009004600160a060020a03163314610bd457600080fd5b600160045460a060020a900460ff166003811115610bee57fe5b14610bf857600080fd5b60045460a860020a900460ff161515610c1057600080fd5b6004805475ff00000000000000000000000000000000000000000019169055565b610ba533610d7e565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610cb657600080fd5b505af1158015610cca573d6000803e3d6000fd5b505050506040513d6020811015610ce057600080fd5b50511515610ced57600080fd5b505050565b6105ff60028263ffffffff610d8f16565b6105ff60018263ffffffff610d8f16565b6000600160a060020a0382161515610d2b57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6105ff60008263ffffffff610d8f16565b6105ff60028263ffffffff610ddd16565b6105ff60018263ffffffff610ddd16565b6105ff60008263ffffffff610ddd16565b600160a060020a0381161515610da457600080fd5b610dae8282610d14565b15610db857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610df257600080fd5b610dfc8282610d14565b1515610e0757600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058201294b6d23ba0b99db018d2b973943cf860ea9ceb1232ea85e77d5e6f5d5a2e890029", + "bytecode": "60806040523480156200001157600080fd5b506040516080806200122083398101604090815281516020830151918301516060909301516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a038416179055919391620000819064010000000062000126810204565b620000953364010000000062000144810204565b620000a9336401000000006200015f810204565b60008360ff1610158015620000c2575060058360ff1611155b1515620000ce57600080fd5b506005805461ffff191661ffff949094169390931762ff000019166201000060ff939093169290920291909117630100000060b860020a0319166301000000600160a060020a0392909216919091021790556200020d565b6200014160028264010000000062000f3d6200017a82021704565b50565b6200014160038264010000000062000f3d6200017a82021704565b6200014160048264010000000062000f3d6200017a82021704565b600160a060020a03811615156200019057600080fd5b620001a58282640100000000620001d5810204565b15620001b057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001ed57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b611003806200021d6000396000f3006080604052600436106101485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630c08bf88811461014d578063162f986d146101645780631777fb4b1461017957806319a74ab3146101a257806321b79d98146101b7578063231d4e2a146101cc57806329d10b6e146101ed5780632e6b68491461020e578063302c11ca1461022f57806334cdcf2614610260578063363aa6c714610281578063427534a414610296578063608d3d3d146102ab57806374be7592146102cc57806380258e47146102ed57806381a244591461031857806399f4b251146103395780639e614ca01461034e578063ada436e914610363578063b2a32cd514610384578063be95249414610399578063c6846ef8146103ae578063d43acc79146103d5578063da408679146103ea578063e9d61859146103ff575b600080fd5b34801561015957600080fd5b50610162610414565b005b34801561017057600080fd5b50610162610432565b34801561018557600080fd5b5061018e6104a1565b604080519115158252519081900360200190f35b3480156101ae57600080fd5b5061018e6104a6565b3480156101c357600080fd5b506101626104dd565b3480156101d857600080fd5b50610162600160a060020a0360043516610577565b3480156101f957600080fd5b50610162600160a060020a0360043516610663565b34801561021a57600080fd5b50610162600160a060020a0360043516610680565b34801561023b57600080fd5b5061024461069d565b60408051600160a060020a039092168252519081900360200190f35b34801561026c57600080fd5b5061018e600160a060020a03600435166106b3565b34801561028d57600080fd5b506101626106cc565b3480156102a257600080fd5b50610162610764565b3480156102b757600080fd5b5061018e600160a060020a03600435166107d0565b3480156102d857600080fd5b50610162600160a060020a03600435166107e3565b3480156102f957600080fd5b50610302610800565b6040805160ff9092168252519081900360200190f35b34801561032457600080fd5b5061018e600160a060020a036004351661080f565b34801561034557600080fd5b50610162610822565b34801561035a57600080fd5b50610162610a1e565b34801561036f57600080fd5b50610162600160a060020a0360043516610a92565b34801561039057600080fd5b50610162610b2b565b3480156103a557600080fd5b50610162610c45565b3480156103ba57600080fd5b506103c3610c4e565b60408051918252519081900360200190f35b3480156103e157600080fd5b50610162610c54565b3480156103f657600080fd5b50610162610c5d565b34801561040b57600080fd5b50610162610cf2565b61041d336107d0565b151561042857600080fd5b610430610cfb565b565b60005460a060020a900460ff161561044957600080fd5b6104523361080f565b151561045d57600080fd5b600160055460b860020a900460ff16600381111561047757fe5b1461048157600080fd5b600580546002919060b860020a60ff02191660b860020a835b0217905550565b600190565b6000600160055460b860020a900460ff1660038111156104c257fe5b1480156104d8575060055460c060020a900460ff165b905090565b60005460a060020a900460ff16156104f457600080fd5b60055463010000009004600160a060020a0316331461051257600080fd5b600160055460b860020a900460ff16600381111561052c57fe5b1461053657600080fd5b60055460c060020a900460ff161561054d57600080fd5b6005805478ff000000000000000000000000000000000000000000000000191660c060020a179055565b610580336107d0565b151561058b57600080fd5b600060055460b860020a900460ff1660038111156105a557fe5b146105af57600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051610660928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b15801561061b57600080fd5b505af115801561062f573d6000803e3d6000fd5b505050506040513d602081101561064557600080fd5b5051600154600160a060020a0316919063ffffffff610dc216565b50565b61066c3361080f565b151561067757600080fd5b61066081610e7a565b610689336107d0565b151561069457600080fd5b61066081610e8b565b60055463010000009004600160a060020a031690565b60006106c660028363ffffffff610e9c16565b92915050565b60005460a060020a900460ff16156106e357600080fd5b6106ec3361080f565b15156106f757600080fd5b600360055460b860020a900460ff16600381111561071157fe5b141561071c57600080fd5b6005805460b860020a60ff021916770300000000000000000000000000000000000000000000001778ff00ffffffffffffffffffffffffffffffffffffffff00000019169055565b60005460a060020a900460ff161561077b57600080fd5b6107843361080f565b151561078f57600080fd5b600260055460b860020a900460ff1660038111156107a957fe5b146107b357600080fd5b600580546001919060b860020a60ff02191660b860020a8361049a565b60006106c660038363ffffffff610e9c16565b6107ec336106b3565b15156107f757600080fd5b61066081610ed3565b60055462010000900460ff1690565b60006106c660048363ffffffff610e9c16565b6000805460a060020a900460ff161561083a57600080fd5b610843336106b3565b151561084e57600080fd5b600160055460b860020a900460ff16600381111561086857fe5b1461087257600080fd5b60055460c060020a900460ff16151561088a57600080fd5b60055460d060020a900461ffff16151561090957600580547bffff00000000000000000000000000000000000000000000000000001979ff0000000000000000000000000000000000000000000000000019909116790100000000000000000000000000000000000000000000000000171660d060020a1790556109dd565b60058054600161ffff60d060020a808404821692909201811682027bffff00000000000000000000000000000000000000000000000000001990931692909217928390559091041661016e14156109dd57600580547bffff000000000000000000000000000000000000000000000000000019600160ff790100000000000000000000000000000000000000000000000000808504821692909201160279ff0000000000000000000000000000000000000000000000000019909216919091171660d060020a179055600654600290046006555b5060065461016d9004600081116109f357600080fd5b60055460015461066091600160a060020a03918216916301000000909104168363ffffffff610dc216565b60005460a060020a900460ff1615610a3557600080fd5b610a3e336107d0565b1515610a4957600080fd5b600060055460b860020a900460ff166003811115610a6357fe5b1415610a6e57600080fd5b6005805478ffff000000000000000000000000000000000000000000000019169055565b60005460a060020a900460ff1615610aa957600080fd5b610ab23361080f565b1515610abd57600080fd5b600360055460b860020a900460ff166003811115610ad757fe5b14610ae157600080fd5b60058054600160a060020a039290921663010000000260b860020a60ff021990921660b860020a1776ffffffffffffffffffffffffffffffffffffffff0000001916919091179055565b6000805460a060020a900460ff1615610b4357600080fd5b610b4c336107d0565b1515610b5757600080fd5b600060055460b860020a900460ff166003811115610b7157fe5b14610b7b57600080fd5b6006541515610c2c57600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b158015610bea57600080fd5b505af1158015610bfe573d6000803e3d6000fd5b505050506040513d6020811015610c1457600080fd5b50519050801515610c2457600080fd5b600281046006555b506005805460b860020a60ff02191660b860020a179055565b61043033610ee4565b61016d81565b61043033610ef5565b60005460a060020a900460ff1615610c7457600080fd5b60055463010000009004600160a060020a03163314610c9257600080fd5b600160055460b860020a900460ff166003811115610cac57fe5b14610cb657600080fd5b60055460c060020a900460ff161515610cce57600080fd5b6005805478ff00000000000000000000000000000000000000000000000019169055565b61043033610f06565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610d6057600080fd5b505af1158015610d74573d6000803e3d6000fd5b505050506040513d6020811015610d8a57600080fd5b505190506000811115610dba57600054600154610dba91600160a060020a0391821691168363ffffffff610dc216565b610660610f17565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610e3e57600080fd5b505af1158015610e52573d6000803e3d6000fd5b505050506040513d6020811015610e6857600080fd5b50511515610e7557600080fd5b505050565b61066060048263ffffffff610f3d16565b61066060038263ffffffff610f3d16565b6000600160a060020a0382161515610eb357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61066060028263ffffffff610f3d16565b61066060048263ffffffff610f8b16565b61066060038263ffffffff610f8b16565b61066060028263ffffffff610f8b16565b6000805474ff0000000000000000000000000000000000000000191660a060020a179055565b600160a060020a0381161515610f5257600080fd5b610f5c8282610e9c565b15610f6657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610fa057600080fd5b610faa8282610e9c565b1515610fb557600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058200a38ca8f69ea6e0732674e2a58d5b93661b5c2aa8a6c6b89ced63a3d5f3186730029", "functionHashes": { "DAYS_PER_YEAR()": "c6846ef8", "activateMiner()": "b2a32cd5", @@ -345,26 +354,27 @@ "resumeMining()": "427534a4", "startMining()": "21b79d98", "stopAndRemoveOwnership()": "363aa6c7", - "stopMining()": "da408679" + "stopMining()": "da408679", + "terminate()": "0c08bf88" }, "gasEstimates": { "creation": { - "codeDepositCost": "733800", + "codeDepositCost": "819800", "executionCost": "infinite", "totalCost": "infinite" }, "external": { - "DAYS_PER_YEAR()": "624", + "DAYS_PER_YEAR()": "646", "activateMiner()": "infinite", "addCoreTeam(address)": "infinite", "addSupervisor(address)": "infinite", "addSystem(address)": "infinite", "deactivateMiner()": "infinite", - "getCategory()": "696", - "getMiner()": "702", - "isAlgoMiner()": "212", + "getCategory()": "718", + "getMiner()": "724", + "isAlgoMiner()": "234", "isCoreTeam(address)": "infinite", - "isMining()": "859", + "isMining()": "881", "isSupervisor(address)": "infinite", "isSystem(address)": "infinite", "migrateMiner(address)": "infinite", @@ -375,9 +385,10 @@ "renounceSystem()": "infinite", "resetMiner(address)": "infinite", "resumeMining()": "infinite", - "startMining()": "21420", + "startMining()": "21742", "stopAndRemoveOwnership()": "infinite", - "stopMining()": "21772" + "stopMining()": "22094", + "terminate()": "infinite" } } } \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json index b4bb44849..996c88e64 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json @@ -78,6 +78,15 @@ "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol": { "AlgoPool": { "abi": [ + { + "constant": false, + "inputs": [], + "name": "terminate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "constant": false, "inputs": [ @@ -254,27 +263,28 @@ "evm": { "bytecode": { "linkReferences": {}, - "object": "608060405234801561001057600080fd5b506040516040806107aa83398101604052805160209091015161003b33640100000000610077810204565b60018054600160a060020a0390921662010000026201000060b060020a031961ffff90941661ffff199093169290921792909216179055610120565b61008f6000826401000000006105b561009282021704565b50565b600160a060020a03811615156100a757600080fd5b6100ba82826401000000006100e9810204565b156100c457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561010057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61067b8061012f6000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632296f4c7811461009a57806325109e8b146100bd5780632e6b6849146100e4578063455acbcd14610105578063492fba841461011a57806349dc9ed01461012f578063608d3d3d146101445780639fc3c98314610179578063a89febb21461018e578063aed6183f146101a3578063d43acc79146101b8575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a03600435166101cd565b005b3480156100c957600080fd5b506100d2610416565b60408051918252519081900360200190f35b3480156100f057600080fd5b506100bb600160a060020a0360043516610422565b34801561011157600080fd5b506100d2610442565b34801561012657600080fd5b506100d2610451565b34801561013b57600080fd5b506100d261045f565b34801561015057600080fd5b50610165600160a060020a036004351661046e565b604080519115158252519081900360200190f35b34801561018557600080fd5b506100d2610486565b34801561019a57600080fd5b506100d2610494565b3480156101af57600080fd5b506100d26104a3565b3480156101c457600080fd5b506100bb6104b2565b60008060006101db3361046e565b15156101e657600080fd5b600160a060020a03841660009081526002602052604090205460ff161561020c57600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561024d57600080fd5b505af1158015610261573d6000803e3d6000fd5b505050506040513d602081101561027757600080fd5b5051151561028457600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102c257600080fd5b505af11580156102d6573d6000803e3d6000fd5b505050506040513d60208110156102ec57600080fd5b50519150600060ff831610801590610308575060058260ff1611155b151561031357600080fd5b50600060ff82161515610331575069152d02c7e14af68000006103c2565b8160ff166001141561034e575069d3c21bcecceda10000006103c2565b8160ff166002141561036c57506a01a784379d99db420000006103c2565b8160ff166003141561038a57506a027b46536c66c8e30000006103c2565b8160ff16600414156103a857506a034f086f3b33b6840000006103c2565b8160ff16600514156103c257506a0422ca8b0a00a4250000005b600081116103cf57600080fd5b600160a060020a038085166000908152600260205260409020805460ff1916600190811790915554610410916201000090910416858363ffffffff6104bd16565b50505050565b670de0b6b3a764000081565b61042b3361046e565b151561043657600080fd5b61043f8161055c565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b6000610480818363ffffffff61056d16565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b6104bb336105a4565b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561052057600080fd5b505af1158015610534573d6000803e3d6000fd5b505050506040513d602081101561054a57600080fd5b5051151561055757600080fd5b505050565b61043f60008263ffffffff6105b516565b6000600160a060020a038216151561058457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61043f60008263ffffffff61060316565b600160a060020a03811615156105ca57600080fd5b6105d4828261056d565b156105de57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561061857600080fd5b610622828261056d565b151561062d57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058200648204d7a0ac13aa2e9ab7514200c49dd33ae54f0178fd146385ad3444f20ee0029", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 PUSH2 0x7AA DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH2 0x3B CALLER PUSH5 0x100000000 PUSH2 0x77 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND PUSH3 0x10000 MUL PUSH3 0x10000 PUSH1 0xB0 PUSH1 0x2 EXP SUB NOT PUSH2 0xFFFF SWAP1 SWAP5 AND PUSH2 0xFFFF NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH2 0x120 JUMP JUMPDEST PUSH2 0x8F PUSH1 0x0 DUP3 PUSH5 0x100000000 PUSH2 0x5B5 PUSH2 0x92 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBA DUP3 DUP3 PUSH5 0x100000000 PUSH2 0xE9 DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH2 0xC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x67B DUP1 PUSH2 0x12F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x95 JUMPI PUSH4 0xFFFFFFFF PUSH1 0xE0 PUSH1 0x2 EXP PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x2296F4C7 DUP2 EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0x25109E8B EQ PUSH2 0xBD JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x455ACBCD EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x492FBA84 EQ PUSH2 0x11A JUMPI DUP1 PUSH4 0x49DC9ED0 EQ PUSH2 0x12F JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x9FC3C983 EQ PUSH2 0x179 JUMPI DUP1 PUSH4 0xA89FEBB2 EQ PUSH2 0x18E JUMPI DUP1 PUSH4 0xAED6183F EQ PUSH2 0x1A3 JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x1B8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x1CD JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x416 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x422 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x111 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x442 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x126 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x451 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x45F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x46E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x486 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x494 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x4A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH2 0x4B2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1DB CALLER PUSH2 0x46E JUMP JUMPDEST ISZERO ISZERO PUSH2 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x20C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 SWAP3 POP DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x261 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x277 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP PUSH1 0x0 PUSH1 0xFF DUP4 AND LT DUP1 ISZERO SWAP1 PUSH2 0x308 JUMPI POP PUSH1 0x5 DUP3 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0x313 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0xFF DUP3 AND ISZERO ISZERO PUSH2 0x331 JUMPI POP PUSH10 0x152D02C7E14AF6800000 PUSH2 0x3C2 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x34E JUMPI POP PUSH10 0xD3C21BCECCEDA1000000 PUSH2 0x3C2 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x36C JUMPI POP PUSH11 0x1A784379D99DB42000000 PUSH2 0x3C2 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x38A JUMPI POP PUSH11 0x27B46536C66C8E3000000 PUSH2 0x3C2 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x3A8 JUMPI POP PUSH11 0x34F086F3B33B684000000 PUSH2 0x3C2 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x3C2 JUMPI POP PUSH11 0x422CA8B0A00A425000000 JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x3CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x410 SWAP2 PUSH3 0x10000 SWAP1 SWAP2 DIV AND DUP6 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x4BD AND JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH2 0x42B CALLER PUSH2 0x46E JUMP JUMPDEST ISZERO ISZERO PUSH2 0x436 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43F DUP2 PUSH2 0x55C JUMP JUMPDEST POP JUMP JUMPDEST PUSH11 0x34F086F3B33B684000000 DUP2 JUMP JUMPDEST PUSH10 0xD3C21BCECCEDA1000000 DUP2 JUMP JUMPDEST PUSH11 0x27B46536C66C8E3000000 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x480 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x56D AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH10 0x152D02C7E14AF6800000 DUP2 JUMP JUMPDEST PUSH11 0x422CA8B0A00A425000000 DUP2 JUMP JUMPDEST PUSH11 0x1A784379D99DB42000000 DUP2 JUMP JUMPDEST PUSH2 0x4BB CALLER PUSH2 0x5A4 JUMP JUMPDEST JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x520 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x534 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x54A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x557 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x43F PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x5B5 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x584 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x43F PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x603 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x5CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5D4 DUP3 DUP3 PUSH2 0x56D JUMP JUMPDEST ISZERO PUSH2 0x5DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x618 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x622 DUP3 DUP3 PUSH2 0x56D JUMP JUMPDEST ISZERO ISZERO PUSH2 0x62D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 MOD 0x48 KECCAK256 0x4d PUSH27 0xAC13AA2E9AB7514200C49DD33AE54F0178FD146385AD3444F20EE STOP 0x29 ", - "sourceMap": "490:1831:1:-;;;1158:174;8:9:-1;5:2;;;30:1;27;20:12;5:2;1158:174:1;;;;;;;;;;;;;;;;;;;368:24:0;381:10;368:12;;;;:24;:::i;:::-;1264:9:1;:20;;-1:-1:-1;;;;;1295:29:1;;;;;-1:-1:-1;;;;;;1264:20:1;;;;-1:-1:-1;;1264:20:1;;;;;;;1295:29;;;;;;;490:1831;;824:96:0;883:29;:16;904:7;883:20;;;;;;:29;:::i;:::-;824:96;:::o;244:167:3:-;-1:-1:-1;;;;;316:21:3;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:3;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:3;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:3;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:3;:11;:20;;;;;;;;;;;;;;;725:166::o;490:1831:1:-;;;;;;;" + "object": "608060405234801561001057600080fd5b5060405160408061091a8339810160405280516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561006f9064010000000061008b810204565b506003805461ffff191661ffff92909216919091179055610134565b6100a36002826401000000006107116100a682021704565b50565b600160a060020a03811615156100bb57600080fd5b6100ce82826401000000006100fd810204565b156100d857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561011457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6107d7806101436000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632296f4c7146100bc57806325109e8b146100dd5780632e6b684914610104578063455acbcd14610125578063492fba841461013a57806349dc9ed01461014f578063608d3d3d146101645780639fc3c98314610199578063a89febb2146101ae578063aed6183f146101c3578063d43acc79146101d8575b600080fd5b3480156100b157600080fd5b506100ba6101ed565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661020b565b3480156100e957600080fd5b506100f2610475565b60408051918252519081900360200190f35b34801561011057600080fd5b506100ba600160a060020a0360043516610481565b34801561013157600080fd5b506100f26104a1565b34801561014657600080fd5b506100f26104b0565b34801561015b57600080fd5b506100f26104be565b34801561017057600080fd5b50610185600160a060020a03600435166104cd565b604080519115158252519081900360200190f35b3480156101a557600080fd5b506100f26104e6565b3480156101ba57600080fd5b506100f26104f4565b3480156101cf57600080fd5b506100f2610503565b3480156101e457600080fd5b506100ba610512565b6101f6336104cd565b151561020157600080fd5b61020961051b565b565b600080548190819074010000000000000000000000000000000000000000900460ff161561023857600080fd5b610241336104cd565b151561024c57600080fd5b600160a060020a03841660009081526004602052604090205460ff161561027257600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102b357600080fd5b505af11580156102c7573d6000803e3d6000fd5b505050506040513d60208110156102dd57600080fd5b505115156102ea57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032857600080fd5b505af115801561033c573d6000803e3d6000fd5b505050506040513d602081101561035257600080fd5b50519150600060ff83161080159061036e575060058260ff1611155b151561037957600080fd5b50600060ff82161515610397575069152d02c7e14af6800000610428565b8160ff16600114156103b4575069d3c21bcecceda1000000610428565b8160ff16600214156103d257506a01a784379d99db42000000610428565b8160ff16600314156103f057506a027b46536c66c8e3000000610428565b8160ff166004141561040e57506a034f086f3b33b684000000610428565b8160ff166005141561042857506a0422ca8b0a00a4250000005b6000811161043557600080fd5b600160a060020a038085166000908152600460205260409020805460ff191660019081179091555461046f9116858363ffffffff6105e216565b50505050565b670de0b6b3a764000081565b61048a336104cd565b151561049557600080fd5b61049e81610681565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b60006104e060028363ffffffff61069216565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b610209336106c9565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561058057600080fd5b505af1158015610594573d6000803e3d6000fd5b505050506040513d60208110156105aa57600080fd5b5051905060008111156105da576000546001546105da91600160a060020a0391821691168363ffffffff6105e216565b61049e6106da565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561064557600080fd5b505af1158015610659573d6000803e3d6000fd5b505050506040513d602081101561066f57600080fd5b5051151561067c57600080fd5b505050565b61049e60028263ffffffff61071116565b6000600160a060020a03821615156106a957600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61049e60028263ffffffff61075f16565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a038116151561072657600080fd5b6107308282610692565b1561073a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561077457600080fd5b61077e8282610692565b151561078957600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a7230582003c6fe797e016b5da34d582d5503b392dfdb98114c82abcb7165886533dc93b80029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 PUSH2 0x91A DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP2 DUP3 AND DUP2 OR PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND OR SWAP1 SSTORE PUSH2 0x6F SWAP1 PUSH5 0x100000000 PUSH2 0x8B DUP2 MUL DIV JUMP JUMPDEST POP PUSH1 0x3 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH2 0xFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x134 JUMP JUMPDEST PUSH2 0xA3 PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH2 0x711 PUSH2 0xA6 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCE DUP3 DUP3 PUSH5 0x100000000 PUSH2 0xFD DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH2 0xD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x114 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x7D7 DUP1 PUSH2 0x143 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA0 JUMPI PUSH4 0xFFFFFFFF PUSH1 0xE0 PUSH1 0x2 EXP PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0xC08BF88 DUP2 EQ PUSH2 0xA5 JUMPI DUP1 PUSH4 0x2296F4C7 EQ PUSH2 0xBC JUMPI DUP1 PUSH4 0x25109E8B EQ PUSH2 0xDD JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x455ACBCD EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0x492FBA84 EQ PUSH2 0x13A JUMPI DUP1 PUSH4 0x49DC9ED0 EQ PUSH2 0x14F JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x9FC3C983 EQ PUSH2 0x199 JUMPI DUP1 PUSH4 0xA89FEBB2 EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0xAED6183F EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x1D8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0x1ED JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x20B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF2 PUSH2 0x475 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x481 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x131 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF2 PUSH2 0x4A1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x146 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF2 PUSH2 0x4B0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF2 PUSH2 0x4BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x185 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x4CD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF2 PUSH2 0x4E6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF2 PUSH2 0x4F4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF2 PUSH2 0x503 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0x512 JUMP JUMPDEST PUSH2 0x1F6 CALLER PUSH2 0x4CD JUMP JUMPDEST ISZERO ISZERO PUSH2 0x201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x209 PUSH2 0x51B JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 DUP2 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x238 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x241 CALLER PUSH2 0x4CD JUMP JUMPDEST ISZERO ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 SWAP3 POP DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2C7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x2EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x328 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x33C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP PUSH1 0x0 PUSH1 0xFF DUP4 AND LT DUP1 ISZERO SWAP1 PUSH2 0x36E JUMPI POP PUSH1 0x5 DUP3 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0xFF DUP3 AND ISZERO ISZERO PUSH2 0x397 JUMPI POP PUSH10 0x152D02C7E14AF6800000 PUSH2 0x428 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x3B4 JUMPI POP PUSH10 0xD3C21BCECCEDA1000000 PUSH2 0x428 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x3D2 JUMPI POP PUSH11 0x1A784379D99DB42000000 PUSH2 0x428 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x3F0 JUMPI POP PUSH11 0x27B46536C66C8E3000000 PUSH2 0x428 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x40E JUMPI POP PUSH11 0x34F086F3B33B684000000 PUSH2 0x428 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x428 JUMPI POP PUSH11 0x422CA8B0A00A425000000 JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x435 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x46F SWAP2 AND DUP6 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x5E2 AND JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH2 0x48A CALLER PUSH2 0x4CD JUMP JUMPDEST ISZERO ISZERO PUSH2 0x495 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x49E DUP2 PUSH2 0x681 JUMP JUMPDEST POP JUMP JUMPDEST PUSH11 0x34F086F3B33B684000000 DUP2 JUMP JUMPDEST PUSH10 0xD3C21BCECCEDA1000000 DUP2 JUMP JUMPDEST PUSH11 0x27B46536C66C8E3000000 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E0 PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x692 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH10 0x152D02C7E14AF6800000 DUP2 JUMP JUMPDEST PUSH11 0x422CA8B0A00A425000000 DUP2 JUMP JUMPDEST PUSH11 0x1A784379D99DB42000000 DUP2 JUMP JUMPDEST PUSH2 0x209 CALLER PUSH2 0x6C9 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x580 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x594 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0x5DA JUMPI PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0x5DA SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0x5E2 AND JUMP JUMPDEST PUSH2 0x49E PUSH2 0x6DA JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x645 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x659 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x66F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x67C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x49E PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x711 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x6A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x49E PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x75F AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x726 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x730 DUP3 DUP3 PUSH2 0x692 JUMP JUMPDEST ISZERO PUSH2 0x73A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x774 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x77E DUP3 DUP3 PUSH2 0x692 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x789 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 SUB 0xc6 INVALID PUSH26 0x7E016B5DA34D582D5503B392DFDB98114C82ABCB7165886533DC SWAP4 0xb8 STOP 0x29 ", + "sourceMap": "524:1915:1:-;;;1182:174;8:9:-1;5:2;;;30:1;27;20:12;5:2;1182:174:1;;;;;;;;;;;;;;;;;;;156:8:4;:21;;167:10;-1:-1:-1;;;;;;156:21:4;;;;;-1:-1:-1;;;;;;188:19:4;;;;-1:-1:-1;636:29:2;;;;;-1:-1:-1;;;;;636:29:2;;;;;368:24:0;;:12;;;;:24;:::i;:::-;-1:-1:-1;1328:9:1;:20;;-1:-1:-1;;1328:20:1;;;;;;;;;;;;524:1915;;824:96:0;883:29;:16;904:7;883:20;;;;;;:29;:::i;:::-;824:96;:::o;244:167:5:-;-1:-1:-1;;;;;316:21:5;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:5;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:5;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:5;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:5;:11;:20;;;;;;;;;;;;;;;725:166::o;524:1915:1:-;;;;;;;" }, "gasEstimates": { "creation": { - "codeDepositCost": "331800", + "codeDepositCost": "401400", "executionCost": "infinite", "totalCost": "infinite" }, "external": { - "CAT_0_VALUE()": "401", - "CAT_1_VALUE()": "335", - "CAT_2_VALUE()": "445", - "CAT_3_VALUE()": "357", - "CAT_4_VALUE()": "313", - "CAT_5_VALUE()": "423", - "TOKEN_FACTOR()": "269", + "CAT_0_VALUE()": "423", + "CAT_1_VALUE()": "357", + "CAT_2_VALUE()": "467", + "CAT_3_VALUE()": "379", + "CAT_4_VALUE()": "335", + "CAT_5_VALUE()": "445", + "TOKEN_FACTOR()": "291", "addCoreTeam(address)": "infinite", "isCoreTeam(address)": "infinite", "renounceCoreTeam()": "infinite", + "terminate()": "infinite", "trasferToMiner(address)": "infinite" } }, @@ -289,10 +299,45 @@ "addCoreTeam(address)": "2e6b6849", "isCoreTeam(address)": "608d3d3d", "renounceCoreTeam()": "d43acc79", + "terminate()": "0c08bf88", "trasferToMiner(address)": "2296f4c7" } }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"trasferToMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"TOKEN_FACTOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_4_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_1_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_3_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_0_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_5_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_2_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"poolType\",\"type\":\"uint16\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":\"AlgoPool\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":{\"keccak256\":\"0x36684faaffdccd3408380faed00c3c73ed986c568a88e0cb9e8d12761b4d49cc\",\"urls\":[\"bzzr://9eb7271afec474b033f225a395d76b8dff2afd730dc21f9f10ec6c059714de6b\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0xb457e39e512b5475c3e70193ab0a751f6626a50417954247f0cf47c7ca15eff7\",\"urls\":[\"bzzr://3b585a4055121fee393f2b691538036c87f56556f43f0b6e851a88de7b8275e6\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"terminate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"trasferToMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"TOKEN_FACTOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_4_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_1_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_3_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_0_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_5_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_2_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"poolType\",\"type\":\"uint16\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":\"AlgoPool\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":{\"keccak256\":\"0xbb72ddedfb108359e22306e75ce9d1e16ce7fa9e743dfec3a25402df643f3b43\",\"urls\":[\"bzzr://ac95c8dff53cdf9caa690eb44d9f5545d941fdaa6131c412440c503c912db991\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol\":{\"keccak256\":\"0x71adbf7f060599239b7a981594e43dc8fbe8597fd2853b6fe9e70ff39883d73a\",\"urls\":[\"bzzr://70691c1638cdc0f744f8c5b5a94e4f857ba40ad053816cfbd15e13ed41a3bc66\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0x94c226040dfda257ee61c1455bbb920db28b6ad0f5cba33ecc76319c003630b7\",\"urls\":[\"bzzr://bdd0568ed74054f0f91933dab7fbba6789cceb60ab2f5200d719347161e8feed\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol\":{\"keccak256\":\"0x29a8fa3204dbd204355714601ce21d7d717a586a4de21009d8f2a3ca7981963f\",\"urls\":[\"bzzr://55d9b762620cef1e6f7b11a26d6cc123f5b608a59e0d36f9bc0a1e8ff0ff5c42\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol": { + "ERC20TokenHolder": { + "abi": [ + { + "inputs": [ + { + "name": "tokenAddress", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": {} + }, + "metadata": "", "userdoc": { "methods": {} } @@ -315,6 +360,34 @@ "stateMutability": "pure", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "isMining", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getMiner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [], @@ -343,7 +416,9 @@ "gasEstimates": null, "methodIdentifiers": { "getCategory()": "80258e47", - "isAlgoMiner()": "1777fb4b" + "getMiner()": "302c11ca", + "isAlgoMiner()": "1777fb4b", + "isMining()": "19a74ab3" } }, "metadata": "", @@ -352,6 +427,35 @@ } } }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol": { + "Terminable": { + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": {} + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { "Roles": { "abi": [], @@ -364,7 +468,7 @@ "linkReferences": {}, "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820ba9d82b11504517181f938ed511f09c0a22046ef39e2e32460a2175b508e16a80029", "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xba SWAP14 DUP3 0xb1 ISZERO DIV MLOAD PUSH18 0x81F938ED511F09C0A22046EF39E2E32460A2 OR JUMPDEST POP DUP15 AND 0xa8 STOP 0x29 ", - "sourceMap": "109:784:3:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "sourceMap": "109:784:5:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -398,7 +502,7 @@ "linkReferences": {}, "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820da2bd0dd3588878574232c2d13f92e16f4b0e8ad94ede9adb0d087f862d4f8cf0029", "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xda 0x2b 0xd0 0xdd CALLDATALOAD DUP9 DUP8 DUP6 PUSH21 0x232C2D13F92E16F4B0E8AD94EDE9ADB0D087F862D4 0xf8 0xcf STOP 0x29 ", - "sourceMap": "117:1531:4:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "sourceMap": "117:1531:6:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -638,7 +742,7 @@ "linkReferences": {}, "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820c0f55d8db2bd761049fa5ba6b6c207a4d595b758946aba3715580373517606710029", "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xc0 0xf5 0x5d DUP14 0xb2 0xbd PUSH23 0x1049FA5BA6B6C207A4D595B758946ABA37155803735176 MOD PUSH18 0x2900000000000000000000000000000000 ", - "sourceMap": "353:1296:6:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "sourceMap": "353:1296:8:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -692,7 +796,7 @@ "id": 2, "nodeType": "ImportDirective", "scope": 87, - "sourceUnit": 399, + "sourceUnit": 512, "src": "28:189:0", "symbolAliases": [], "unitAlias": "" @@ -717,10 +821,10 @@ "id": 3, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 398, + "referencedDeclaration": 511, "src": "260:5:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$398", + "typeIdentifier": "t_contract$_Roles_$511", "typeString": "library Roles" } }, @@ -731,10 +835,10 @@ "id": 4, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 311, + "referencedDeclaration": 424, "src": "270:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", "typeString": "struct Roles.Role" } } @@ -749,7 +853,7 @@ "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage", + "typeIdentifier": "t_struct$_Role_$424_storage", "typeString": "struct Roles.Role" }, "typeName": { @@ -757,10 +861,10 @@ "id": 6, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 311, + "referencedDeclaration": 424, "src": "289:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -785,7 +889,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 754, + "referencedDeclaration": 867, "src": "381:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -893,7 +997,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 754, + "referencedDeclaration": 867, "src": "462:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -959,10 +1063,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, + "referencedDeclaration": 870, "src": "443:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -1047,7 +1151,7 @@ "referencedDeclaration": 7, "src": "584:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage", + "typeIdentifier": "t_struct$_Role_$424_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1058,10 +1162,10 @@ "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 397, + "referencedDeclaration": 510, "src": "584:20:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$311_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$311_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$424_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$424_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, @@ -1321,7 +1425,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 754, + "referencedDeclaration": 867, "src": "797:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1448,7 +1552,7 @@ "referencedDeclaration": 7, "src": "883:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage", + "typeIdentifier": "t_struct$_Role_$424_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1459,10 +1563,10 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 343, + "referencedDeclaration": 456, "src": "883:20:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$311_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$311_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$424_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$424_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -1580,7 +1684,7 @@ "referencedDeclaration": 7, "src": "990:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage", + "typeIdentifier": "t_struct$_Role_$424_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1591,10 +1695,10 @@ "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 374, + "referencedDeclaration": 487, "src": "990:23:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$311_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$311_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$424_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$424_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -1686,10 +1790,10 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol", "exportedSymbols": { "AlgoPool": [ - 291 + 300 ] }, - "id": 292, + "id": 301, "nodeType": "SourceUnit", "nodes": [ { @@ -1707,8 +1811,8 @@ "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "id": 89, "nodeType": "ImportDirective", - "scope": 292, - "sourceUnit": 596, + "scope": 301, + "sourceUnit": 709, "src": "27:195:1", "symbolAliases": [], "unitAlias": "" @@ -1718,8 +1822,8 @@ "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "id": 90, "nodeType": "ImportDirective", - "scope": 292, - "sourceUnit": 740, + "scope": 301, + "sourceUnit": 853, "src": "224:198:1", "symbolAliases": [], "unitAlias": "" @@ -1729,20 +1833,31 @@ "file": "./IAlgoMiner.sol", "id": 91, "nodeType": "ImportDirective", - "scope": 292, - "sourceUnit": 305, + "scope": 301, + "sourceUnit": 381, "src": "426:26:1", "symbolAliases": [], "unitAlias": "" }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol", + "file": "./ERC20TokenHolder.sol", + "id": 92, + "nodeType": "ImportDirective", + "scope": 301, + "sourceUnit": 358, + "src": "454:32:1", + "symbolAliases": [], + "unitAlias": "" + }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol", "file": "./AlgoCoreTeamRole.sol", - "id": 92, + "id": 93, "nodeType": "ImportDirective", - "scope": 292, + "scope": 301, "sourceUnit": 87, - "src": "454:32:1", + "src": "488:32:1", "symbolAliases": [], "unitAlias": "" }, @@ -1752,71 +1867,93 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 93, + "id": 94, + "name": "ERC20TokenHolder", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 357, + "src": "545:16:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20TokenHolder_$357", + "typeString": "contract ERC20TokenHolder" + } + }, + "id": 95, + "nodeType": "InheritanceSpecifier", + "src": "545:16:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 96, "name": "AlgoCoreTeamRole", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 86, - "src": "511:16:1", + "src": "563:16:1", "typeDescriptions": { "typeIdentifier": "t_contract$_AlgoCoreTeamRole_$86", "typeString": "contract AlgoCoreTeamRole" } }, - "id": 94, + "id": 97, "nodeType": "InheritanceSpecifier", - "src": "511:16:1" + "src": "563:16:1" } ], "contractDependencies": [ - 86 + 357, + 86, + 417 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 291, + "id": 300, "linearizedBaseContracts": [ - 291, - 86 + 300, + 86, + 357, + 417 ], "name": "AlgoPool", "nodeType": "ContractDefinition", "nodes": [ { - "id": 97, + "id": 100, "libraryName": { "contractScope": null, - "id": 95, + "id": 98, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 739, - "src": "541:9:1", + "referencedDeclaration": 852, + "src": "593:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$739", + "typeIdentifier": "t_contract$_SafeERC20_$852", "typeString": "library SafeERC20" } }, "nodeType": "UsingForDirective", - "src": "535:27:1", + "src": "587:27:1", "typeName": { "contractScope": null, - "id": 96, + "id": 99, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 595, - "src": "555:6:1", + "referencedDeclaration": 708, + "src": "607:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } } }, { "constant": true, - "id": 104, + "id": 107, "name": "TOKEN_FACTOR", "nodeType": "VariableDeclaration", - "scope": 291, - "src": "570:56:1", + "scope": 300, + "src": "622:56:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1824,10 +1961,10 @@ "typeString": "uint256" }, "typeName": { - "id": 98, + "id": 101, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "570:7:1", + "src": "622:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1839,7 +1976,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 103, + "id": 106, "isConstant": false, "isLValue": false, "isPure": true, @@ -1847,14 +1984,14 @@ "leftExpression": { "argumentTypes": null, "hexValue": "3130", - "id": 99, + "id": 102, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "609:2:1", + "src": "661:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", @@ -1870,14 +2007,14 @@ { "argumentTypes": null, "hexValue": "3138", - "id": 101, + "id": 104, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "623:2:1", + "src": "675:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_18_by_1", @@ -1893,20 +2030,20 @@ "typeString": "int_const 18" } ], - "id": 100, + "id": 103, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "615:7:1", + "src": "667:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": "uint256" }, - "id": 102, + "id": 105, "isConstant": false, "isLValue": false, "isPure": true, @@ -1914,13 +2051,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "615:11:1", + "src": "667:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "609:17:1", + "src": "661:17:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1930,11 +2067,11 @@ }, { "constant": true, - "id": 109, + "id": 112, "name": "CAT_0_VALUE", "nodeType": "VariableDeclaration", - "scope": 291, - "src": "633:59:1", + "scope": 300, + "src": "685:59:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1942,10 +2079,10 @@ "typeString": "uint256" }, "typeName": { - "id": 105, + "id": 108, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "633:7:1", + "src": "685:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1957,7 +2094,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 108, + "id": 111, "isConstant": false, "isLValue": false, "isPure": true, @@ -1965,14 +2102,14 @@ "leftExpression": { "argumentTypes": null, "hexValue": "313030303030", - "id": 106, + "id": 109, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "671:6:1", + "src": "723:6:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_100000_by_1", @@ -1984,18 +2121,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 107, + "id": 110, "name": "TOKEN_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 104, - "src": "680:12:1", + "referencedDeclaration": 107, + "src": "732:12:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "671:21:1", + "src": "723:21:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2005,11 +2142,11 @@ }, { "constant": true, - "id": 114, + "id": 117, "name": "CAT_1_VALUE", "nodeType": "VariableDeclaration", - "scope": 291, - "src": "699:60:1", + "scope": 300, + "src": "751:60:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2017,10 +2154,10 @@ "typeString": "uint256" }, "typeName": { - "id": 110, + "id": 113, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "699:7:1", + "src": "751:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2032,7 +2169,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 113, + "id": 116, "isConstant": false, "isLValue": false, "isPure": true, @@ -2040,14 +2177,14 @@ "leftExpression": { "argumentTypes": null, "hexValue": "31303030303030", - "id": 111, + "id": 114, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "737:7:1", + "src": "789:7:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000000_by_1", @@ -2059,18 +2196,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 112, + "id": 115, "name": "TOKEN_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 104, - "src": "747:12:1", + "referencedDeclaration": 107, + "src": "799:12:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "737:22:1", + "src": "789:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2080,11 +2217,11 @@ }, { "constant": true, - "id": 121, + "id": 124, "name": "CAT_2_VALUE", "nodeType": "VariableDeclaration", - "scope": 291, - "src": "766:64:1", + "scope": 300, + "src": "818:64:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2092,10 +2229,10 @@ "typeString": "uint256" }, "typeName": { - "id": 115, + "id": 118, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "766:7:1", + "src": "818:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2107,7 +2244,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 120, + "id": 123, "isConstant": false, "isLValue": false, "isPure": true, @@ -2118,7 +2255,7 @@ "typeIdentifier": "t_rational_2000000_by_1", "typeString": "int_const 2000000" }, - "id": 118, + "id": 121, "isConstant": false, "isLValue": false, "isPure": true, @@ -2126,14 +2263,14 @@ "leftExpression": { "argumentTypes": null, "hexValue": "32", - "id": 116, + "id": 119, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "804:1:1", + "src": "856:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -2146,14 +2283,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31303030303030", - "id": 117, + "id": 120, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "808:7:1", + "src": "860:7:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000000_by_1", @@ -2161,7 +2298,7 @@ }, "value": "1000000" }, - "src": "804:11:1", + "src": "856:11:1", "typeDescriptions": { "typeIdentifier": "t_rational_2000000_by_1", "typeString": "int_const 2000000" @@ -2171,18 +2308,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 119, + "id": 122, "name": "TOKEN_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 104, - "src": "818:12:1", + "referencedDeclaration": 107, + "src": "870:12:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "804:26:1", + "src": "856:26:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2192,11 +2329,11 @@ }, { "constant": true, - "id": 128, + "id": 131, "name": "CAT_3_VALUE", "nodeType": "VariableDeclaration", - "scope": 291, - "src": "837:64:1", + "scope": 300, + "src": "889:64:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2204,10 +2341,10 @@ "typeString": "uint256" }, "typeName": { - "id": 122, + "id": 125, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "837:7:1", + "src": "889:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2219,7 +2356,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 127, + "id": 130, "isConstant": false, "isLValue": false, "isPure": true, @@ -2230,7 +2367,7 @@ "typeIdentifier": "t_rational_3000000_by_1", "typeString": "int_const 3000000" }, - "id": 125, + "id": 128, "isConstant": false, "isLValue": false, "isPure": true, @@ -2238,14 +2375,14 @@ "leftExpression": { "argumentTypes": null, "hexValue": "33", - "id": 123, + "id": 126, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "875:1:1", + "src": "927:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", @@ -2258,14 +2395,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31303030303030", - "id": 124, + "id": 127, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "879:7:1", + "src": "931:7:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000000_by_1", @@ -2273,7 +2410,7 @@ }, "value": "1000000" }, - "src": "875:11:1", + "src": "927:11:1", "typeDescriptions": { "typeIdentifier": "t_rational_3000000_by_1", "typeString": "int_const 3000000" @@ -2283,18 +2420,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 126, + "id": 129, "name": "TOKEN_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 104, - "src": "889:12:1", + "referencedDeclaration": 107, + "src": "941:12:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "875:26:1", + "src": "927:26:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2304,11 +2441,11 @@ }, { "constant": true, - "id": 135, + "id": 138, "name": "CAT_4_VALUE", "nodeType": "VariableDeclaration", - "scope": 291, - "src": "908:64:1", + "scope": 300, + "src": "960:64:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2316,10 +2453,10 @@ "typeString": "uint256" }, "typeName": { - "id": 129, + "id": 132, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "908:7:1", + "src": "960:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2331,7 +2468,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 134, + "id": 137, "isConstant": false, "isLValue": false, "isPure": true, @@ -2342,7 +2479,7 @@ "typeIdentifier": "t_rational_4000000_by_1", "typeString": "int_const 4000000" }, - "id": 132, + "id": 135, "isConstant": false, "isLValue": false, "isPure": true, @@ -2350,14 +2487,14 @@ "leftExpression": { "argumentTypes": null, "hexValue": "34", - "id": 130, + "id": 133, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "946:1:1", + "src": "998:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", @@ -2370,14 +2507,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31303030303030", - "id": 131, + "id": 134, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "950:7:1", + "src": "1002:7:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000000_by_1", @@ -2385,7 +2522,7 @@ }, "value": "1000000" }, - "src": "946:11:1", + "src": "998:11:1", "typeDescriptions": { "typeIdentifier": "t_rational_4000000_by_1", "typeString": "int_const 4000000" @@ -2395,18 +2532,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 133, + "id": 136, "name": "TOKEN_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 104, - "src": "960:12:1", + "referencedDeclaration": 107, + "src": "1012:12:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "946:26:1", + "src": "998:26:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2416,11 +2553,11 @@ }, { "constant": true, - "id": 142, + "id": 145, "name": "CAT_5_VALUE", "nodeType": "VariableDeclaration", - "scope": 291, - "src": "979:64:1", + "scope": 300, + "src": "1031:64:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2428,10 +2565,10 @@ "typeString": "uint256" }, "typeName": { - "id": 136, + "id": 139, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "979:7:1", + "src": "1031:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2443,7 +2580,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 141, + "id": 144, "isConstant": false, "isLValue": false, "isPure": true, @@ -2454,7 +2591,7 @@ "typeIdentifier": "t_rational_5000000_by_1", "typeString": "int_const 5000000" }, - "id": 139, + "id": 142, "isConstant": false, "isLValue": false, "isPure": true, @@ -2462,14 +2599,14 @@ "leftExpression": { "argumentTypes": null, "hexValue": "35", - "id": 137, + "id": 140, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1017:1:1", + "src": "1069:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -2482,14 +2619,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31303030303030", - "id": 138, + "id": 141, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1021:7:1", + "src": "1073:7:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000000_by_1", @@ -2497,7 +2634,7 @@ }, "value": "1000000" }, - "src": "1017:11:1", + "src": "1069:11:1", "typeDescriptions": { "typeIdentifier": "t_rational_5000000_by_1", "typeString": "int_const 5000000" @@ -2507,18 +2644,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 140, + "id": 143, "name": "TOKEN_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 104, - "src": "1031:12:1", + "referencedDeclaration": 107, + "src": "1083:12:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1017:26:1", + "src": "1069:26:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2528,11 +2665,11 @@ }, { "constant": false, - "id": 144, + "id": 147, "name": "_poolType", "nodeType": "VariableDeclaration", - "scope": 291, - "src": "1052:24:1", + "scope": 300, + "src": "1104:24:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2540,10 +2677,10 @@ "typeString": "uint16" }, "typeName": { - "id": 143, + "id": 146, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "1052:6:1", + "src": "1104:6:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -2554,39 +2691,11 @@ }, { "constant": false, - "id": 146, - "name": "_token", - "nodeType": "VariableDeclaration", - "scope": 291, - "src": "1083:21:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", - "typeString": "contract IERC20" - }, - "typeName": { - "contractScope": null, - "id": 145, - "name": "IERC20", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 595, - "src": "1083:6:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", - "typeString": "contract IERC20" - } - }, - "value": null, - "visibility": "private" - }, - { - "constant": false, - "id": 150, + "id": 151, "name": "_fundedMiners", "nodeType": "VariableDeclaration", - "scope": 291, - "src": "1111:38:1", + "scope": 300, + "src": "1135:38:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2594,28 +2703,28 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 149, + "id": 150, "keyType": { - "id": 147, + "id": 148, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1119:7:1", + "src": "1143:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "1111:24:1", + "src": "1135:24:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 148, + "id": 149, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1130:4:1", + "src": "1154:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2627,60 +2736,14 @@ }, { "body": { - "id": 169, + "id": 167, "nodeType": "Block", - "src": "1253:79:1", + "src": "1317:39:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 161, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 159, - "name": "_poolType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 144, - "src": "1264:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 160, - "name": "poolType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 152, - "src": "1276:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "src": "1264:20:1", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 162, - "nodeType": "ExpressionStatement", - "src": "1264:20:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 167, + "id": 165, "isConstant": false, "isLValue": false, "isPure": false, @@ -2688,118 +2751,115 @@ "leftHandSide": { "argumentTypes": null, "id": 163, - "name": "_token", + "name": "_poolType", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 146, - "src": "1295:6:1", + "referencedDeclaration": 147, + "src": "1328:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", - "typeString": "contract IERC20" + "typeIdentifier": "t_uint16", + "typeString": "uint16" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 165, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 154, - "src": "1311:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 164, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 595, - "src": "1304:6:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$595_$", - "typeString": "type(contract IERC20)" - } - }, - "id": 166, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1304:20:1", + "id": 164, + "name": "poolType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 153, + "src": "1340:8:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", - "typeString": "contract IERC20" + "typeIdentifier": "t_uint16", + "typeString": "uint16" } }, - "src": "1295:29:1", + "src": "1328:20:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", - "typeString": "contract IERC20" + "typeIdentifier": "t_uint16", + "typeString": "uint16" } }, - "id": 168, + "id": 166, "nodeType": "ExpressionStatement", - "src": "1295:29:1" + "src": "1328:20:1" } ] }, "documentation": null, - "id": 170, + "id": 168, "implemented": true, "isConstructor": true, "isDeclaredConst": false, "modifiers": [ { - "arguments": [], - "id": 157, + "arguments": [ + { + "argumentTypes": null, + "id": 158, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 155, + "src": "1259:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 159, "modifierName": { "argumentTypes": null, - "id": 156, + "id": 157, + "name": "ERC20TokenHolder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "1242:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20TokenHolder_$357_$", + "typeString": "type(contract ERC20TokenHolder)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1242:30:1" + }, + { + "arguments": [], + "id": 161, + "modifierName": { + "argumentTypes": null, + "id": 160, "name": "AlgoCoreTeamRole", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86, - "src": "1218:16:1", + "src": "1282:16:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_AlgoCoreTeamRole_$86_$", "typeString": "type(contract AlgoCoreTeamRole)" } }, "nodeType": "ModifierInvocation", - "src": "1218:18:1" + "src": "1282:18:1" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 155, + "id": 156, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 152, + "id": 153, "name": "poolType", "nodeType": "VariableDeclaration", - "scope": 170, - "src": "1170:15:1", + "scope": 168, + "src": "1194:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2807,10 +2867,10 @@ "typeString": "uint16" }, "typeName": { - "id": 151, + "id": 152, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "1170:6:1", + "src": "1194:6:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -2821,11 +2881,11 @@ }, { "constant": false, - "id": 154, + "id": 155, "name": "tokenAddress", "nodeType": "VariableDeclaration", - "scope": 170, - "src": "1187:20:1", + "scope": 168, + "src": "1211:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2833,10 +2893,10 @@ "typeString": "address" }, "typeName": { - "id": 153, + "id": 154, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1187:7:1", + "src": "1211:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2846,17 +2906,17 @@ "visibility": "internal" } ], - "src": "1169:39:1" + "src": "1193:39:1" }, "payable": false, "returnParameters": { - "id": 158, + "id": 162, "nodeType": "ParameterList", "parameters": [], - "src": "1253:0:1" + "src": "1317:0:1" }, - "scope": 291, - "src": "1158:174:1", + "scope": 300, + "src": "1182:174:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -2865,7 +2925,7 @@ "body": { "id": 289, "nodeType": "Block", - "src": "1406:912:1", + "src": "1444:912:1", "statements": [ { "expression": { @@ -2881,7 +2941,7 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1425:28:1", + "src": "1463:28:1", "subExpression": { "argumentTypes": null, "baseExpression": { @@ -2890,8 +2950,8 @@ "name": "_fundedMiners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 150, - "src": "1426:13:1", + "referencedDeclaration": 151, + "src": "1464:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" @@ -2904,8 +2964,8 @@ "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 172, - "src": "1440:12:1", + "referencedDeclaration": 170, + "src": "1478:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2916,7 +2976,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1426:27:1", + "src": "1464:27:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2939,11 +2999,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "1417:7:1", + "referencedDeclaration": 870, + "src": "1455:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -2957,7 +3017,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1417:37:1", + "src": "1455:37:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -2965,7 +3025,7 @@ }, "id": 183, "nodeType": "ExpressionStatement", - "src": "1417:37:1" + "src": "1455:37:1" }, { "assignments": [ @@ -2978,11 +3038,11 @@ "name": "algoMiner", "nodeType": "VariableDeclaration", "scope": 290, - "src": "1467:20:1", + "src": "1505:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$304", + "typeIdentifier": "t_contract$_IAlgoMiner_$380", "typeString": "contract IAlgoMiner" }, "typeName": { @@ -2990,10 +3050,10 @@ "id": 184, "name": "IAlgoMiner", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 304, - "src": "1467:10:1", + "referencedDeclaration": 380, + "src": "1505:10:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$304", + "typeIdentifier": "t_contract$_IAlgoMiner_$380", "typeString": "contract IAlgoMiner" } }, @@ -3011,8 +3071,8 @@ "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 172, - "src": "1501:12:1", + "referencedDeclaration": 170, + "src": "1539:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3030,10 +3090,10 @@ "name": "IAlgoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 304, - "src": "1490:10:1", + "referencedDeclaration": 380, + "src": "1528:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$304_$", + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$380_$", "typeString": "type(contract IAlgoMiner)" } }, @@ -3045,14 +3105,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1490:24:1", + "src": "1528:24:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$304", + "typeIdentifier": "t_contract$_IAlgoMiner_$380", "typeString": "contract IAlgoMiner" } }, "nodeType": "VariableDeclarationStatement", - "src": "1467:47:1" + "src": "1505:47:1" }, { "expression": { @@ -3070,9 +3130,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 185, - "src": "1543:9:1", + "src": "1581:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$304", + "typeIdentifier": "t_contract$_IAlgoMiner_$380", "typeString": "contract IAlgoMiner" } }, @@ -3083,8 +3143,8 @@ "lValueRequested": false, "memberName": "isAlgoMiner", "nodeType": "MemberAccess", - "referencedDeclaration": 298, - "src": "1543:21:1", + "referencedDeclaration": 364, + "src": "1581:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$__$returns$_t_bool_$", "typeString": "function () pure external returns (bool)" @@ -3098,7 +3158,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1543:23:1", + "src": "1581:23:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3116,11 +3176,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "1535:7:1", + "referencedDeclaration": 870, + "src": "1573:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -3134,7 +3194,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1535:32:1", + "src": "1573:32:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -3142,7 +3202,7 @@ }, "id": 195, "nodeType": "ExpressionStatement", - "src": "1535:32:1" + "src": "1573:32:1" }, { "assignments": [ @@ -3155,7 +3215,7 @@ "name": "minerCategory", "nodeType": "VariableDeclaration", "scope": 290, - "src": "1588:19:1", + "src": "1626:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3166,7 +3226,7 @@ "id": 196, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1588:5:1", + "src": "1626:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3189,9 +3249,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 185, - "src": "1610:9:1", + "src": "1648:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$304", + "typeIdentifier": "t_contract$_IAlgoMiner_$380", "typeString": "contract IAlgoMiner" } }, @@ -3202,8 +3262,8 @@ "lValueRequested": false, "memberName": "getCategory", "nodeType": "MemberAccess", - "referencedDeclaration": 303, - "src": "1610:21:1", + "referencedDeclaration": 369, + "src": "1648:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" @@ -3217,14 +3277,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1610:23:1", + "src": "1648:23:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", - "src": "1588:45:1" + "src": "1626:45:1" }, { "expression": { @@ -3259,7 +3319,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 197, - "src": "1654:13:1", + "src": "1692:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3277,7 +3337,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1671:1:1", + "src": "1709:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3285,7 +3345,7 @@ }, "value": "0" }, - "src": "1654:18:1", + "src": "1692:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3311,7 +3371,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 197, - "src": "1676:13:1", + "src": "1714:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3329,7 +3389,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1693:1:1", + "src": "1731:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -3337,13 +3397,13 @@ }, "value": "5" }, - "src": "1676:18:1", + "src": "1714:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1654:40:1", + "src": "1692:40:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3361,11 +3421,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "1646:7:1", + "referencedDeclaration": 870, + "src": "1684:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -3379,7 +3439,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1646:49:1", + "src": "1684:49:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -3387,7 +3447,7 @@ }, "id": 211, "nodeType": "ExpressionStatement", - "src": "1646:49:1" + "src": "1684:49:1" }, { "assignments": [ @@ -3400,7 +3460,7 @@ "name": "value", "nodeType": "VariableDeclaration", "scope": 290, - "src": "1708:13:1", + "src": "1746:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3411,7 +3471,7 @@ "id": 212, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1708:7:1", + "src": "1746:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3432,7 +3492,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1724:1:1", + "src": "1762:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3441,7 +3501,7 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1708:17:1" + "src": "1746:17:1" }, { "condition": { @@ -3462,7 +3522,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 197, - "src": "1741:13:1", + "src": "1779:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3480,7 +3540,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1758:1:1", + "src": "1796:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3488,7 +3548,7 @@ }, "value": "0" }, - "src": "1741:18:1", + "src": "1779:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3513,7 +3573,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 197, - "src": "1816:13:1", + "src": "1854:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3531,7 +3591,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1833:1:1", + "src": "1871:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -3539,7 +3599,7 @@ }, "value": "1" }, - "src": "1816:18:1", + "src": "1854:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3564,7 +3624,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 197, - "src": "1891:13:1", + "src": "1929:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3582,7 +3642,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1908:1:1", + "src": "1946:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -3590,7 +3650,7 @@ }, "value": "2" }, - "src": "1891:18:1", + "src": "1929:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3615,7 +3675,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 197, - "src": "1966:13:1", + "src": "2004:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3633,7 +3693,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1983:1:1", + "src": "2021:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", @@ -3641,7 +3701,7 @@ }, "value": "3" }, - "src": "1966:18:1", + "src": "2004:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3666,7 +3726,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 197, - "src": "2041:13:1", + "src": "2079:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3684,7 +3744,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2058:1:1", + "src": "2096:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", @@ -3692,7 +3752,7 @@ }, "value": "4" }, - "src": "2041:18:1", + "src": "2079:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3717,7 +3777,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 197, - "src": "2116:13:1", + "src": "2154:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3735,7 +3795,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2133:1:1", + "src": "2171:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -3743,7 +3803,7 @@ }, "value": "5" }, - "src": "2116:18:1", + "src": "2154:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3752,11 +3812,11 @@ "falseBody": null, "id": 264, "nodeType": "IfStatement", - "src": "2113:69:1", + "src": "2151:69:1", "trueBody": { "id": 263, "nodeType": "Block", - "src": "2136:46:1", + "src": "2174:46:1", "statements": [ { "expression": { @@ -3773,7 +3833,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 213, - "src": "2151:5:1", + "src": "2189:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3787,14 +3847,14 @@ "name": "CAT_5_VALUE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 142, - "src": "2159:11:1", + "referencedDeclaration": 145, + "src": "2197:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2151:19:1", + "src": "2189:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3802,18 +3862,18 @@ }, "id": 262, "nodeType": "ExpressionStatement", - "src": "2151:19:1" + "src": "2189:19:1" } ] } }, "id": 265, "nodeType": "IfStatement", - "src": "2038:144:1", + "src": "2076:144:1", "trueBody": { "id": 255, "nodeType": "Block", - "src": "2061:46:1", + "src": "2099:46:1", "statements": [ { "expression": { @@ -3830,7 +3890,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 213, - "src": "2076:5:1", + "src": "2114:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3844,14 +3904,14 @@ "name": "CAT_4_VALUE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 135, - "src": "2084:11:1", + "referencedDeclaration": 138, + "src": "2122:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2076:19:1", + "src": "2114:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3859,18 +3919,18 @@ }, "id": 254, "nodeType": "ExpressionStatement", - "src": "2076:19:1" + "src": "2114:19:1" } ] } }, "id": 266, "nodeType": "IfStatement", - "src": "1963:219:1", + "src": "2001:219:1", "trueBody": { "id": 247, "nodeType": "Block", - "src": "1986:46:1", + "src": "2024:46:1", "statements": [ { "expression": { @@ -3887,7 +3947,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 213, - "src": "2001:5:1", + "src": "2039:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3901,14 +3961,14 @@ "name": "CAT_3_VALUE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 128, - "src": "2009:11:1", + "referencedDeclaration": 131, + "src": "2047:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2001:19:1", + "src": "2039:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3916,18 +3976,18 @@ }, "id": 246, "nodeType": "ExpressionStatement", - "src": "2001:19:1" + "src": "2039:19:1" } ] } }, "id": 267, "nodeType": "IfStatement", - "src": "1888:294:1", + "src": "1926:294:1", "trueBody": { "id": 239, "nodeType": "Block", - "src": "1911:46:1", + "src": "1949:46:1", "statements": [ { "expression": { @@ -3944,7 +4004,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 213, - "src": "1926:5:1", + "src": "1964:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3958,14 +4018,14 @@ "name": "CAT_2_VALUE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 121, - "src": "1934:11:1", + "referencedDeclaration": 124, + "src": "1972:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1926:19:1", + "src": "1964:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3973,18 +4033,18 @@ }, "id": 238, "nodeType": "ExpressionStatement", - "src": "1926:19:1" + "src": "1964:19:1" } ] } }, "id": 268, "nodeType": "IfStatement", - "src": "1813:369:1", + "src": "1851:369:1", "trueBody": { "id": 231, "nodeType": "Block", - "src": "1836:46:1", + "src": "1874:46:1", "statements": [ { "expression": { @@ -4001,7 +4061,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 213, - "src": "1851:5:1", + "src": "1889:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4015,14 +4075,14 @@ "name": "CAT_1_VALUE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 114, - "src": "1859:11:1", + "referencedDeclaration": 117, + "src": "1897:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1851:19:1", + "src": "1889:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4030,18 +4090,18 @@ }, "id": 230, "nodeType": "ExpressionStatement", - "src": "1851:19:1" + "src": "1889:19:1" } ] } }, "id": 269, "nodeType": "IfStatement", - "src": "1738:444:1", + "src": "1776:444:1", "trueBody": { "id": 223, "nodeType": "Block", - "src": "1761:46:1", + "src": "1799:46:1", "statements": [ { "expression": { @@ -4058,7 +4118,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 213, - "src": "1776:5:1", + "src": "1814:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4072,14 +4132,14 @@ "name": "CAT_0_VALUE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 109, - "src": "1784:11:1", + "referencedDeclaration": 112, + "src": "1822:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1776:19:1", + "src": "1814:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4087,7 +4147,7 @@ }, "id": 222, "nodeType": "ExpressionStatement", - "src": "1776:19:1" + "src": "1814:19:1" } ] } @@ -4114,7 +4174,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 213, - "src": "2202:5:1", + "src": "2240:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4132,7 +4192,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2210:1:1", + "src": "2248:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4140,7 +4200,7 @@ }, "value": "0" }, - "src": "2202:9:1", + "src": "2240:9:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4158,11 +4218,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "2194:7:1", + "referencedDeclaration": 870, + "src": "2232:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -4176,7 +4236,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2194:18:1", + "src": "2232:18:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -4184,7 +4244,7 @@ }, "id": 275, "nodeType": "ExpressionStatement", - "src": "2194:18:1" + "src": "2232:18:1" }, { "expression": { @@ -4202,8 +4262,8 @@ "name": "_fundedMiners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 150, - "src": "2225:13:1", + "referencedDeclaration": 151, + "src": "2263:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" @@ -4216,8 +4276,8 @@ "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 172, - "src": "2239:12:1", + "referencedDeclaration": 170, + "src": "2277:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4228,7 +4288,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2225:27:1", + "src": "2263:27:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4246,7 +4306,7 @@ "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2255:4:1", + "src": "2293:4:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4254,7 +4314,7 @@ }, "value": "true" }, - "src": "2225:34:1", + "src": "2263:34:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4262,7 +4322,7 @@ }, "id": 281, "nodeType": "ExpressionStatement", - "src": "2225:34:1" + "src": "2263:34:1" }, { "expression": { @@ -4274,8 +4334,8 @@ "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 172, - "src": "2290:12:1", + "referencedDeclaration": 170, + "src": "2328:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4288,7 +4348,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 213, - "src": "2304:5:1", + "src": "2342:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4312,10 +4372,10 @@ "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 146, - "src": "2270:6:1", + "referencedDeclaration": 312, + "src": "2308:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } }, @@ -4326,10 +4386,10 @@ "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 620, - "src": "2270:19:1", + "referencedDeclaration": 733, + "src": "2308:19:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$595_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$595_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$708_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$708_$", "typeString": "function (contract IERC20,address,uint256)" } }, @@ -4341,7 +4401,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2270:40:1", + "src": "2308:40:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -4349,7 +4409,7 @@ }, "id": 288, "nodeType": "ExpressionStatement", - "src": "2270:40:1" + "src": "2308:40:1" } ] }, @@ -4359,6 +4419,25 @@ "isConstructor": false, "isDeclaredConst": false, "modifiers": [ + { + "arguments": null, + "id": 173, + "modifierName": { + "argumentTypes": null, + "id": 172, + "name": "notTerminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 408, + "src": "1417:13:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1417:13:1" + }, { "arguments": null, "id": 175, @@ -4369,29 +4448,29 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, - "src": "1393:12:1", + "src": "1431:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1393:12:1" + "src": "1431:12:1" } ], "name": "trasferToMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 173, + "id": 171, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 172, + "id": 170, "name": "minerAddress", "nodeType": "VariableDeclaration", "scope": 290, - "src": "1364:20:1", + "src": "1388:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4399,10 +4478,10 @@ "typeString": "address" }, "typeName": { - "id": 171, + "id": 169, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1364:7:1", + "src": "1388:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4412,43 +4491,135 @@ "visibility": "internal" } ], - "src": "1363:22:1" + "src": "1387:22:1" }, "payable": false, "returnParameters": { "id": 176, "nodeType": "ParameterList", "parameters": [], - "src": "1406:0:1" + "src": "1444:0:1" }, - "scope": 291, - "src": "1340:978:1", + "scope": 300, + "src": "1364:992:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 298, + "nodeType": "Block", + "src": "2405:31:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 295, + "name": "_terminate", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 356 + ], + "referencedDeclaration": 356, + "src": "2416:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2416:12:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 297, + "nodeType": "ExpressionStatement", + "src": "2416:12:1" + } + ] + }, + "documentation": null, + "id": 299, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 293, + "modifierName": { + "argumentTypes": null, + "id": 292, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "2392:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2392:12:1" + } + ], + "name": "terminate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 291, + "nodeType": "ParameterList", + "parameters": [], + "src": "2382:2:1" + }, + "payable": false, + "returnParameters": { + "id": 294, + "nodeType": "ParameterList", + "parameters": [], + "src": "2405:0:1" + }, + "scope": 300, + "src": "2364:72:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 292, - "src": "490:1831:1" + "scope": 301, + "src": "524:1915:1" } ], - "src": "0:2323:1" + "src": "0:2441:1" }, "id": 1 }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol": { "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol", "exportedSymbols": { - "IAlgoMiner": [ - 304 + "ERC20TokenHolder": [ + 357 ] }, - "id": 305, + "id": 358, "nodeType": "SourceUnit", "nodes": [ { - "id": 293, + "id": 302, "literals": [ "solidity", "0.4", @@ -4457,15 +4628,709 @@ "nodeType": "PragmaDirective", "src": "0:23:2" }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "id": 303, + "nodeType": "ImportDirective", + "scope": 358, + "sourceUnit": 709, + "src": "27:195:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "id": 304, + "nodeType": "ImportDirective", + "scope": 358, + "sourceUnit": 853, + "src": "224:198:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", + "file": "./Terminable.sol", + "id": 305, + "nodeType": "ImportDirective", + "scope": 358, + "sourceUnit": 418, + "src": "426:26:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 306, + "name": "Terminable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 417, + "src": "485:10:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Terminable_$417", + "typeString": "contract Terminable" + } + }, + "id": 307, + "nodeType": "InheritanceSpecifier", + "src": "485:10:2" + } + ], + "contractDependencies": [ + 417 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 357, + "linearizedBaseContracts": [ + 357, + 417 + ], + "name": "ERC20TokenHolder", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 310, + "libraryName": { + "contractScope": null, + "id": 308, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 852, + "src": "509:9:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$852", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "503:27:2", + "typeName": { + "contractScope": null, + "id": 309, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 708, + "src": "523:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$708", + "typeString": "contract IERC20" + } + } + }, + { + "constant": false, + "id": 312, + "name": "_token", + "nodeType": "VariableDeclaration", + "scope": 357, + "src": "538:22:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$708", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 311, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 708, + "src": "538:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$708", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 325, + "nodeType": "Block", + "src": "625:48:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 319, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 312, + "src": "636:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$708", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 321, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 314, + "src": "652:12:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 320, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 708, + "src": "645:6:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$708_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "645:20:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$708", + "typeString": "contract IERC20" + } + }, + "src": "636:29:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$708", + "typeString": "contract IERC20" + } + }, + "id": 324, + "nodeType": "ExpressionStatement", + "src": "636:29:2" + } + ] + }, + "documentation": null, + "id": 326, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 317, + "modifierName": { + "argumentTypes": null, + "id": 316, + "name": "Terminable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 417, + "src": "603:10:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Terminable_$417_$", + "typeString": "type(contract Terminable)" + } + }, + "nodeType": "ModifierInvocation", + "src": "603:12:2" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 315, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 314, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 326, + "src": "581:20:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 313, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "581:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "580:22:2" + }, + "payable": false, + "returnParameters": { + "id": 318, + "nodeType": "ParameterList", + "parameters": [], + "src": "625:0:2" + }, + "scope": 357, + "src": "569:104:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 355, + "nodeType": "Block", + "src": "712:214:2", + "statements": [ + { + "assignments": [ + 330 + ], + "declarations": [ + { + "constant": false, + "id": 330, + "name": "currentBalance", + "nodeType": "VariableDeclaration", + "scope": 356, + "src": "723:22:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 329, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "723:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 337, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 334, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 894, + "src": "773:4:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20TokenHolder_$357", + "typeString": "contract ERC20TokenHolder" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20TokenHolder_$357", + "typeString": "contract ERC20TokenHolder" + } + ], + "id": 333, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "765:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "765:13:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 331, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 312, + "src": "748:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$708", + "typeString": "contract IERC20" + } + }, + "id": 332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 653, + "src": "748:16:2", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "748:31:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "723:56:2" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 338, + "name": "currentBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "793:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "810:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "793:18:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 349, + "nodeType": "IfStatement", + "src": "790:95:2", + "trueBody": { + "id": 348, + "nodeType": "Block", + "src": "813:72:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 344, + "name": "_creator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 384, + "src": "848:8:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 345, + "name": "currentBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "858:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 341, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 312, + "src": "828:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$708", + "typeString": "contract IERC20" + } + }, + "id": 343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 733, + "src": "828:19:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$708_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$708_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "828:45:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 347, + "nodeType": "ExpressionStatement", + "src": "828:45:2" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 350, + "name": "Terminable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 417, + "src": "895:10:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Terminable_$417_$", + "typeString": "type(contract Terminable)" + } + }, + "id": 352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_terminate", + "nodeType": "MemberAccess", + "referencedDeclaration": 416, + "src": "895:21:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 353, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "895:23:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 354, + "nodeType": "ExpressionStatement", + "src": "895:23:2" + } + ] + }, + "documentation": null, + "id": 356, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_terminate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 327, + "nodeType": "ParameterList", + "parameters": [], + "src": "700:2:2" + }, + "payable": false, + "returnParameters": { + "id": 328, + "nodeType": "ParameterList", + "parameters": [], + "src": "712:0:2" + }, + "scope": 357, + "src": "681:245:2", + "stateMutability": "nonpayable", + "superFunction": 416, + "visibility": "internal" + } + ], + "scope": 358, + "src": "456:473:2" + } + ], + "src": "0:929:2" + }, + "id": 2 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", + "exportedSymbols": { + "IAlgoMiner": [ + 380 + ] + }, + "id": 381, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 359, + "literals": [ + "solidity", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:23:3" + }, { "baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 304, + "id": 380, "linearizedBaseContracts": [ - 304 + 380 ], "name": "IAlgoMiner", "nodeType": "ContractDefinition", @@ -4473,7 +5338,7 @@ { "body": null, "documentation": null, - "id": 298, + "id": 364, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -4481,23 +5346,23 @@ "name": "isAlgoMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 294, + "id": 360, "nodeType": "ParameterList", "parameters": [], - "src": "74:2:2" + "src": "74:2:3" }, "payable": false, "returnParameters": { - "id": 297, + "id": 363, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 296, + "id": 362, "name": "", "nodeType": "VariableDeclaration", - "scope": 298, - "src": "98:4:2", + "scope": 364, + "src": "98:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4505,10 +5370,10 @@ "typeString": "bool" }, "typeName": { - "id": 295, + "id": 361, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "98:4:2", + "src": "98:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4518,10 +5383,10 @@ "visibility": "internal" } ], - "src": "97:6:2" + "src": "97:6:3" }, - "scope": 304, - "src": "54:50:2", + "scope": 380, + "src": "54:50:3", "stateMutability": "pure", "superFunction": null, "visibility": "public" @@ -4529,7 +5394,7 @@ { "body": null, "documentation": null, - "id": 303, + "id": 369, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -4537,23 +5402,23 @@ "name": "getCategory", "nodeType": "FunctionDefinition", "parameters": { - "id": 299, + "id": 365, "nodeType": "ParameterList", "parameters": [], - "src": "130:2:2" + "src": "130:2:3" }, "payable": false, "returnParameters": { - "id": 302, + "id": 368, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 301, + "id": 367, "name": "", "nodeType": "VariableDeclaration", - "scope": 303, - "src": "154:5:2", + "scope": 369, + "src": "154:5:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4561,10 +5426,10 @@ "typeString": "uint8" }, "typeName": { - "id": 300, + "id": 366, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "154:5:2", + "src": "154:5:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4574,119 +5439,374 @@ "visibility": "internal" } ], - "src": "153:7:2" + "src": "153:7:3" }, - "scope": 304, - "src": "110:51:2", + "scope": 380, + "src": "110:51:3", "stateMutability": "view", "superFunction": null, "visibility": "public" - } - ], - "scope": 305, - "src": "27:137:2" - } - ], - "src": "0:164:2" - }, - "id": 2 - }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { - "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", - "exportedSymbols": { - "Roles": [ - 398 - ] - }, - "id": 399, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 306, - "literals": [ - "solidity", - "^", - "0.4", - ".24" - ], - "nodeType": "PragmaDirective", - "src": "0:24:3" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", - "fullyImplemented": true, - "id": 398, - "linearizedBaseContracts": [ - 398 - ], - "name": "Roles", - "nodeType": "ContractDefinition", - "nodes": [ + }, { - "canonicalName": "Roles.Role", - "id": 311, - "members": [ - { - "constant": false, - "id": 310, - "name": "bearer", - "nodeType": "VariableDeclaration", - "scope": 311, - "src": "145:32:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 309, - "keyType": { - "id": 307, + "body": null, + "documentation": null, + "id": 374, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isMining", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 370, + "nodeType": "ParameterList", + "parameters": [], + "src": "184:2:3" + }, + "payable": false, + "returnParameters": { + "id": 373, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 372, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 374, + "src": "208:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 371, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "208:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "207:6:3" + }, + "scope": 380, + "src": "167:47:3", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 379, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 375, + "nodeType": "ParameterList", + "parameters": [], + "src": "237:2:3" + }, + "payable": false, + "returnParameters": { + "id": 378, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 377, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 379, + "src": "261:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 376, "name": "address", "nodeType": "ElementaryTypeName", - "src": "154:7:3", + "src": "261:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "nodeType": "Mapping", - "src": "145:25:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "value": null, + "visibility": "internal" + } + ], + "src": "260:9:3" + }, + "scope": 380, + "src": "220:50:3", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 381, + "src": "27:246:3" + } + ], + "src": "0:273:3" + }, + "id": 3 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", + "exportedSymbols": { + "Terminable": [ + 417 + ] + }, + "id": 418, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 382, + "literals": [ + "solidity", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:23:4" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 417, + "linearizedBaseContracts": [ + 417 + ], + "name": "Terminable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 384, + "name": "_creator", + "nodeType": "VariableDeclaration", + "scope": 417, + "src": "56:25:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 383, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "56:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 386, + "name": "_terminated", + "nodeType": "VariableDeclaration", + "scope": 417, + "src": "88:25:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 385, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "88:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 398, + "nodeType": "Block", + "src": "145:70:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 392, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 389, + "name": "_creator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 384, + "src": "156:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 390, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 867, + "src": "167:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 391, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "167:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "156:21:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "valueType": { - "id": 308, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "165:4:3", + "id": 393, + "nodeType": "ExpressionStatement", + "src": "156:21:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 394, + "name": "_terminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 386, + "src": "188:11:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 395, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "202:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "188:19:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } - } - }, - "value": null, - "visibility": "internal" - } - ], - "name": "Role", - "nodeType": "StructDefinition", - "scope": 398, - "src": "127:55:3", - "visibility": "public" + }, + "id": 397, + "nodeType": "ExpressionStatement", + "src": "188:19:4" + } + ] + }, + "documentation": null, + "id": 399, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 387, + "nodeType": "ParameterList", + "parameters": [], + "src": "133:2:4" + }, + "payable": false, + "returnParameters": { + "id": 388, + "nodeType": "ParameterList", + "parameters": [], + "src": "145:0:4" + }, + "scope": 417, + "src": "122:93:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" }, { "body": { - "id": 342, + "id": 407, "nodeType": "Block", - "src": "302:109:3", + "src": "248:52:4", "statements": [ { "expression": { @@ -4694,139 +5814,7 @@ "arguments": [ { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 323, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 319, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "316:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 321, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "335:1:3", - "subdenomination": null, - "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": 320, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "327:7:3", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 322, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "327:10:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "316:21:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 318, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 757, - 758 - ], - "referencedDeclaration": 757, - "src": "308:7:3", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 324, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "308:30:3", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 325, - "nodeType": "ExpressionStatement", - "src": "308:30:3" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 331, + "id": 403, "isConstant": false, "isLValue": false, "isPure": false, @@ -4834,68 +5822,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "352:19:3", + "src": "267:12:4", "subExpression": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 328, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 313, - "src": "357:4:3", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - { - "argumentTypes": null, - "id": 329, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "363:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 327, - "name": "has", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 397, - "src": "353:3:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$311_storage_ptr_$_t_address_$returns$_t_bool_$", - "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" - } - }, - "id": 330, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "353:18:3", + "id": 402, + "name": "_terminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 386, + "src": "268:11:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4914,21 +5849,21 @@ "typeString": "bool" } ], - "id": 326, + "id": 401, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "344:7:3", + "referencedDeclaration": 870, + "src": "259:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 332, + "id": 404, "isConstant": false, "isLValue": false, "isPure": false, @@ -4936,75 +5871,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "344:28:3", + "src": "259:21:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 333, + "id": 405, "nodeType": "ExpressionStatement", - "src": "344:28:3" + "src": "259:21:4" }, + { + "id": 406, + "nodeType": "PlaceholderStatement", + "src": "291:1:4" + } + ] + }, + "documentation": null, + "id": 408, + "name": "notTerminated", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 400, + "nodeType": "ParameterList", + "parameters": [], + "src": "245:2:4" + }, + "src": "223:77:4", + "visibility": "internal" + }, + { + "body": { + "id": 415, + "nodeType": "Block", + "src": "339:37:4", + "statements": [ { "expression": { "argumentTypes": null, - "id": 340, + "id": 413, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 334, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 313, - "src": "379:4:3", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - "id": 337, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "bearer", - "nodeType": "MemberAccess", - "referencedDeclaration": 310, - "src": "379:11:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 338, - "indexExpression": { - "argumentTypes": null, - "id": 336, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "391:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "379:20:3", + "id": 411, + "name": "_terminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 386, + "src": "350:11:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5015,14 +5933,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 339, + "id": 412, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "402:4:3", + "src": "364:4:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5030,105 +5948,150 @@ }, "value": "true" }, - "src": "379:27:3", + "src": "350:18:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 341, + "id": 414, "nodeType": "ExpressionStatement", - "src": "379:27:3" + "src": "350:18:4" } ] }, - "documentation": "@dev give an account access to this role", - "id": 343, + "documentation": null, + "id": 416, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], - "name": "add", + "name": "_terminate", "nodeType": "FunctionDefinition", "parameters": { - "id": 316, + "id": 409, "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 313, - "name": "role", - "nodeType": "VariableDeclaration", - "scope": 343, - "src": "257:17:3", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", - "typeString": "struct Roles.Role" - }, - "typeName": { - "contractScope": null, - "id": 312, - "name": "Role", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 311, - "src": "257:4:3", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", - "typeString": "struct Roles.Role" - } - }, - "value": null, - "visibility": "internal" + "parameters": [], + "src": "327:2:4" + }, + "payable": false, + "returnParameters": { + "id": 410, + "nodeType": "ParameterList", + "parameters": [], + "src": "339:0:4" + }, + "scope": 417, + "src": "308:68:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 418, + "src": "27:352:4" + } + ], + "src": "0:379:4" + }, + "id": 4 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "exportedSymbols": { + "Roles": [ + 511 + ] + }, + "id": 512, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 419, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:5" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", + "fullyImplemented": true, + "id": 511, + "linearizedBaseContracts": [ + 511 + ], + "name": "Roles", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "Roles.Role", + "id": 424, + "members": [ + { + "constant": false, + "id": 423, + "name": "bearer", + "nodeType": "VariableDeclaration", + "scope": 424, + "src": "145:32:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" }, - { - "constant": false, - "id": 315, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 343, - "src": "276:15:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 314, + "typeName": { + "id": 422, + "keyType": { + "id": 420, "name": "address", "nodeType": "ElementaryTypeName", - "src": "276:7:3", + "src": "154:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "value": null, - "visibility": "internal" - } - ], - "src": "256:36:3" - }, - "payable": false, - "returnParameters": { - "id": 317, - "nodeType": "ParameterList", - "parameters": [], - "src": "302:0:3" - }, - "scope": 398, - "src": "244:167:3", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" + "nodeType": "Mapping", + "src": "145:25:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 421, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "165:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Role", + "nodeType": "StructDefinition", + "scope": 511, + "src": "127:55:5", + "visibility": "public" }, { "body": { - "id": 373, + "id": 455, "nodeType": "Block", - "src": "538:109:3", + "src": "302:109:5", "statements": [ { "expression": { @@ -5140,19 +6103,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 355, + "id": 436, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 351, + "id": 432, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 347, - "src": "552:7:3", + "referencedDeclaration": 428, + "src": "316:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5166,14 +6129,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 353, + "id": 434, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "571:1:3", + "src": "335:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5189,20 +6152,20 @@ "typeString": "int_const 0" } ], - "id": 352, + "id": 433, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "563:7:3", + "src": "327:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 354, + "id": 435, "isConstant": false, "isLValue": false, "isPure": true, @@ -5210,13 +6173,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "563:10:3", + "src": "327:10:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "552:21:3", + "src": "316:21:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5230,21 +6193,21 @@ "typeString": "bool" } ], - "id": 350, + "id": 431, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "544:7:3", + "referencedDeclaration": 870, + "src": "308:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 356, + "id": 437, "isConstant": false, "isLValue": false, "isPure": false, @@ -5252,15 +6215,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "544:30:3", + "src": "308:30:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 357, + "id": 438, "nodeType": "ExpressionStatement", - "src": "544:30:3" + "src": "308:30:5" }, { "expression": { @@ -5268,65 +6231,81 @@ "arguments": [ { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 360, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 345, - "src": "592:4:3", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - { - "argumentTypes": null, - "id": 361, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 347, - "src": "598:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 359, - "name": "has", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 397, - "src": "588:3:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$311_storage_ptr_$_t_address_$returns$_t_bool_$", - "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" - } - }, - "id": 362, + "id": 444, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "588:18:3", + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "352:19:5", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 441, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 426, + "src": "357:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 442, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 428, + "src": "363:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 440, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 510, + "src": "353:3:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$424_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 443, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "353:18:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5340,21 +6319,21 @@ "typeString": "bool" } ], - "id": 358, + "id": 439, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "580:7:3", + "referencedDeclaration": 870, + "src": "344:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 363, + "id": 445, "isConstant": false, "isLValue": false, "isPure": false, @@ -5362,20 +6341,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "580:27:3", + "src": "344:28:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 364, + "id": 446, "nodeType": "ExpressionStatement", - "src": "580:27:3" + "src": "344:28:5" }, { "expression": { "argumentTypes": null, - "id": 371, + "id": 453, "isConstant": false, "isLValue": false, "isPure": false, @@ -5386,40 +6365,40 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 365, + "id": 447, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 345, - "src": "614:4:3", + "referencedDeclaration": 426, + "src": "379:4:5", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 368, + "id": 450, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 310, - "src": "614:11:3", + "referencedDeclaration": 423, + "src": "379:11:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 369, + "id": 451, "indexExpression": { "argumentTypes": null, - "id": 367, + "id": 449, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 347, - "src": "626:7:3", + "referencedDeclaration": 428, + "src": "391:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5430,7 +6409,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "614:20:3", + "src": "379:20:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5440,68 +6419,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "hexValue": "66616c7365", - "id": 370, + "hexValue": "74727565", + "id": 452, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "637:5:3", + "src": "402:4:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, - "value": "false" + "value": "true" }, - "src": "614:28:3", + "src": "379:27:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 372, + "id": 454, "nodeType": "ExpressionStatement", - "src": "614:28:3" + "src": "379:27:5" } ] }, - "documentation": "@dev remove an account's access to this role", - "id": 374, + "documentation": "@dev give an account access to this role", + "id": 456, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], - "name": "remove", + "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 348, + "id": 429, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 345, + "id": 426, "name": "role", "nodeType": "VariableDeclaration", - "scope": 374, - "src": "493:17:3", + "scope": 456, + "src": "257:17:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 344, + "id": 425, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 311, - "src": "493:4:3", + "referencedDeclaration": 424, + "src": "257:4:5", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -5510,11 +6489,11 @@ }, { "constant": false, - "id": 347, + "id": 428, "name": "account", "nodeType": "VariableDeclaration", - "scope": 374, - "src": "512:15:3", + "scope": 456, + "src": "276:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5522,10 +6501,10 @@ "typeString": "address" }, "typeName": { - "id": 346, + "id": 427, "name": "address", "nodeType": "ElementaryTypeName", - "src": "512:7:3", + "src": "276:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5535,26 +6514,26 @@ "visibility": "internal" } ], - "src": "492:36:3" + "src": "256:36:5" }, "payable": false, "returnParameters": { - "id": 349, + "id": 430, "nodeType": "ParameterList", "parameters": [], - "src": "538:0:3" + "src": "302:0:5" }, - "scope": 398, - "src": "477:170:3", + "scope": 511, + "src": "244:167:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 396, + "id": 486, "nodeType": "Block", - "src": "817:74:3", + "src": "538:109:5", "statements": [ { "expression": { @@ -5566,19 +6545,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 388, + "id": 468, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 384, + "id": 464, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 378, - "src": "831:7:3", + "referencedDeclaration": 460, + "src": "552:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5592,14 +6571,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 386, + "id": 466, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "850:1:3", + "src": "571:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5615,20 +6594,20 @@ "typeString": "int_const 0" } ], - "id": 385, + "id": 465, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "842:7:3", + "src": "563:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 387, + "id": 467, "isConstant": false, "isLValue": false, "isPure": true, @@ -5636,13 +6615,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "842:10:3", + "src": "563:10:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "831:21:3", + "src": "552:21:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5656,21 +6635,21 @@ "typeString": "bool" } ], - "id": 383, + "id": 463, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "823:7:3", + "referencedDeclaration": 870, + "src": "544:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 389, + "id": 469, "isConstant": false, "isLValue": false, "isPure": false, @@ -5678,114 +6657,256 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "823:30:3", + "src": "544:30:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 390, + "id": 470, "nodeType": "ExpressionStatement", - "src": "823:30:3" + "src": "544:30:5" }, { "expression": { "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "expression": { + "arguments": [ + { "argumentTypes": null, - "id": 391, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 376, - "src": "866:4:3", + "arguments": [ + { + "argumentTypes": null, + "id": 473, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "592:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 474, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 460, + "src": "598:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 472, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 510, + "src": "588:3:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$424_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "588:18:5", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", - "typeString": "struct Roles.Role storage pointer" + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 471, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 870, + 871 + ], + "referencedDeclaration": 870, + "src": "580:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "580:27:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 477, + "nodeType": "ExpressionStatement", + "src": "580:27:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 478, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "614:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 481, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 423, + "src": "614:11:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 482, + "indexExpression": { + "argumentTypes": null, + "id": 480, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 460, + "src": "626:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 392, "isConstant": false, "isLValue": true, "isPure": false, - "lValueRequested": false, - "memberName": "bearer", - "nodeType": "MemberAccess", - "referencedDeclaration": 310, - "src": "866:11:3", + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "614:20:5", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 394, - "indexExpression": { + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { "argumentTypes": null, - "id": 393, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 378, - "src": "878:7:3", + "hexValue": "66616c7365", + "id": 483, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "637:5:5", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "866:20:3", + "src": "614:28:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 382, - "id": 395, - "nodeType": "Return", - "src": "859:27:3" + "id": 485, + "nodeType": "ExpressionStatement", + "src": "614:28:5" } ] }, - "documentation": "@dev check if an account has this role\n@return bool", - "id": 397, + "documentation": "@dev remove an account's access to this role", + "id": 487, "implemented": true, "isConstructor": false, - "isDeclaredConst": true, + "isDeclaredConst": false, "modifiers": [], - "name": "has", + "name": "remove", "nodeType": "FunctionDefinition", "parameters": { - "id": 379, + "id": 461, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 376, + "id": 458, "name": "role", "nodeType": "VariableDeclaration", - "scope": 397, - "src": "738:17:3", + "scope": 487, + "src": "493:17:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 375, + "id": 457, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 311, - "src": "738:4:3", + "referencedDeclaration": 424, + "src": "493:4:5", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -5794,11 +6915,11 @@ }, { "constant": false, - "id": 378, + "id": 460, "name": "account", "nodeType": "VariableDeclaration", - "scope": 397, - "src": "757:15:3", + "scope": 487, + "src": "512:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5806,10 +6927,10 @@ "typeString": "address" }, "typeName": { - "id": 377, + "id": 459, "name": "address", "nodeType": "ElementaryTypeName", - "src": "757:7:3", + "src": "512:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5819,1215 +6940,27 @@ "visibility": "internal" } ], - "src": "737:36:3" + "src": "492:36:5" }, "payable": false, "returnParameters": { - "id": 382, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 381, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 397, - "src": "809:4:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 380, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "809:4:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "808:6:3" - }, - "scope": 398, - "src": "725:166:3", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 399, - "src": "109:784:3" - } - ], - "src": "0:894:3" - }, - "id": 3 - }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { - "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", - "exportedSymbols": { - "SafeMath": [ - 526 - ] - }, - "id": 527, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 400, - "literals": [ - "solidity", - "^", - "0.4", - ".24" - ], - "nodeType": "PragmaDirective", - "src": "0:24:4" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", - "fullyImplemented": true, - "id": 526, - "linearizedBaseContracts": [ - 526 - ], - "name": "SafeMath", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 432, - "nodeType": "Block", - "src": "271:314:4", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 411, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 409, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 402, - "src": "486:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 410, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "491:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "486:6:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 415, - "nodeType": "IfStatement", - "src": "482:35:4", - "trueBody": { - "id": 414, - "nodeType": "Block", - "src": "494:23:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "hexValue": "30", - "id": 412, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "509:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "functionReturnParameters": 408, - "id": 413, - "nodeType": "Return", - "src": "502:8:4" - } - ] - } - }, - { - "assignments": [ - 417 - ], - "declarations": [ - { - "constant": false, - "id": 417, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 433, - "src": "523:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 416, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "523:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 421, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 420, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 418, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 402, - "src": "535:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "id": 419, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 404, - "src": "539:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "535:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "523:17:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 427, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 425, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 423, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 417, - "src": "554:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "id": 424, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 402, - "src": "558:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "554:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 426, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 404, - "src": "563:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "554:10:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 422, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 757, - 758 - ], - "referencedDeclaration": 757, - "src": "546:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 428, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "546:19:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 429, - "nodeType": "ExpressionStatement", - "src": "546:19:4" - }, - { - "expression": { - "argumentTypes": null, - "id": 430, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 417, - "src": "579:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 408, - "id": 431, - "nodeType": "Return", - "src": "572:8:4" - } - ] - }, - "documentation": "@dev Multiplies two numbers, reverts on overflow.", - "id": 433, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "mul", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 405, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 402, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 433, - "src": "217:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 401, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "217:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 404, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 433, - "src": "228:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 403, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "228:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "216:22:4" - }, - "payable": false, - "returnParameters": { - "id": 408, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 407, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 433, - "src": "262:7:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 406, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "262:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "261:9:4" - }, - "scope": 526, - "src": "204:381:4", - "stateMutability": "pure", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 456, - "nodeType": "Block", - "src": "762:203:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 445, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 443, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 437, - "src": "776:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 444, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "780:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "776:5:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 442, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 757, - 758 - ], - "referencedDeclaration": 757, - "src": "768:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 446, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "768:14:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 447, - "nodeType": "ExpressionStatement", - "src": "768:14:4" - }, - { - "assignments": [ - 449 - ], - "declarations": [ - { - "constant": false, - "id": 449, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 457, - "src": "846:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 448, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "846:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 453, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 452, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 450, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 435, - "src": "858:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "id": 451, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 437, - "src": "862:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "858:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "846:17:4" - }, - { - "expression": { - "argumentTypes": null, - "id": 454, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 449, - "src": "959:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 441, - "id": 455, - "nodeType": "Return", - "src": "952:8:4" - } - ] - }, - "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", - "id": 457, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "div", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 438, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 435, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 457, - "src": "708:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 434, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "708:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 437, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 457, - "src": "719:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 436, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "719:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "707:22:4" - }, - "payable": false, - "returnParameters": { - "id": 441, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 440, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 457, - "src": "753:7:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 439, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "753:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "752:9:4" - }, - "scope": 526, - "src": "695:270:4", - "stateMutability": "pure", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 480, - "nodeType": "Block", - "src": "1145:64:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 469, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 467, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 461, - "src": "1159:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "id": 468, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 459, - "src": "1164:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1159:6:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 466, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 757, - 758 - ], - "referencedDeclaration": 757, - "src": "1151:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 470, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1151:15:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 471, - "nodeType": "ExpressionStatement", - "src": "1151:15:4" - }, - { - "assignments": [ - 473 - ], - "declarations": [ - { - "constant": false, - "id": 473, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 481, - "src": "1172:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 472, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1172:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 477, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 476, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 474, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 459, - "src": "1184:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 475, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 461, - "src": "1188:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1184:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1172:17:4" - }, - { - "expression": { - "argumentTypes": null, - "id": 478, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 473, - "src": "1203:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 465, - "id": 479, - "nodeType": "Return", - "src": "1196:8:4" - } - ] - }, - "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", - "id": 481, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "sub", - "nodeType": "FunctionDefinition", - "parameters": { "id": 462, "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 459, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 481, - "src": "1091:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 458, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1091:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 461, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 481, - "src": "1102:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 460, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1102:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1090:22:4" + "parameters": [], + "src": "538:0:5" }, - "payable": false, - "returnParameters": { - "id": 465, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 464, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 481, - "src": "1136:7:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 463, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1136:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1135:9:4" - }, - "scope": 526, - "src": "1078:131:4", - "stateMutability": "pure", + "scope": 511, + "src": "477:170:5", + "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 504, + "id": 509, "nodeType": "Block", - "src": "1339:64:4", + "src": "817:74:5", "statements": [ - { - "assignments": [ - 491 - ], - "declarations": [ - { - "constant": false, - "id": 491, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 505, - "src": "1345:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 490, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1345:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 495, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 494, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 492, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 483, - "src": "1357:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 493, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 485, - "src": "1361:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1357:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1345:17:4" - }, { "expression": { "argumentTypes": null, @@ -7035,10 +6968,10 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 499, + "id": 501, "isConstant": false, "isLValue": false, "isPure": false, @@ -7046,32 +6979,75 @@ "leftExpression": { "argumentTypes": null, "id": 497, - "name": "c", + "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 491, - "src": "1376:1:4", + "src": "831:7:5", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "BinaryOperation", - "operator": ">=", + "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 498, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 483, - "src": "1381:1:4", + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 499, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "850:1:5", + "subdenomination": null, + "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": 498, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "842:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 500, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "842:10:5", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "src": "1376:6:4", + "src": "831:21:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7089,17 +7065,17 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "1368:7:4", + "referencedDeclaration": 870, + "src": "823:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 500, + "id": 502, "isConstant": false, "isLValue": false, "isPure": false, @@ -7107,56 +7083,568 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1368:15:4", + "src": "823:30:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 501, + "id": 503, "nodeType": "ExpressionStatement", - "src": "1368:15:4" + "src": "823:30:5" }, { "expression": { "argumentTypes": null, - "id": 502, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 491, - "src": "1397:1:4", + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 504, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "866:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 505, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 423, + "src": "866:11:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 507, + "indexExpression": { + "argumentTypes": null, + "id": 506, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "878:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "866:20:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 495, + "id": 508, + "nodeType": "Return", + "src": "859:27:5" + } + ] + }, + "documentation": "@dev check if an account has this role\n@return bool", + "id": 510, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "has", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 492, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 489, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "738:17:5", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 488, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 424, + "src": "738:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 491, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "757:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 490, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "757:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "737:36:5" + }, + "payable": false, + "returnParameters": { + "id": 495, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 494, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "809:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 493, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "809:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "808:6:5" + }, + "scope": 511, + "src": "725:166:5", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 512, + "src": "109:784:5" + } + ], + "src": "0:894:5" + }, + "id": 5 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", + "exportedSymbols": { + "SafeMath": [ + 639 + ] + }, + "id": 640, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 513, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:6" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", + "fullyImplemented": true, + "id": 639, + "linearizedBaseContracts": [ + 639 + ], + "name": "SafeMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 545, + "nodeType": "Block", + "src": "271:314:6", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 522, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 515, + "src": "486:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 523, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "491:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "486:6:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 528, + "nodeType": "IfStatement", + "src": "482:35:6", + "trueBody": { + "id": 527, + "nodeType": "Block", + "src": "494:23:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 525, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "509:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 521, + "id": 526, + "nodeType": "Return", + "src": "502:8:6" + } + ] + } + }, + { + "assignments": [ + 530 + ], + "declarations": [ + { + "constant": false, + "id": 530, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 546, + "src": "523:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 529, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "523:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 534, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 531, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 515, + "src": "535:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 532, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 517, + "src": "539:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "535:5:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 489, - "id": 503, + "nodeType": "VariableDeclarationStatement", + "src": "523:17:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 540, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 538, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 536, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "554:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 537, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 515, + "src": "558:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "554:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 539, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 517, + "src": "563:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "554:10:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 535, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 870, + 871 + ], + "referencedDeclaration": 870, + "src": "546:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "546:19:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 542, + "nodeType": "ExpressionStatement", + "src": "546:19:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 543, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "579:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 521, + "id": 544, "nodeType": "Return", - "src": "1390:8:4" + "src": "572:8:6" } ] }, - "documentation": "@dev Adds two numbers, reverts on overflow.", - "id": 505, + "documentation": "@dev Multiplies two numbers, reverts on overflow.", + "id": 546, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], - "name": "add", + "name": "mul", "nodeType": "FunctionDefinition", "parameters": { - "id": 486, + "id": 518, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 483, + "id": 515, "name": "a", "nodeType": "VariableDeclaration", - "scope": 505, - "src": "1285:9:4", + "scope": 546, + "src": "217:9:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7164,10 +7652,10 @@ "typeString": "uint256" }, "typeName": { - "id": 482, + "id": 514, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1285:7:4", + "src": "217:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7178,11 +7666,11 @@ }, { "constant": false, - "id": 485, + "id": 517, "name": "b", "nodeType": "VariableDeclaration", - "scope": 505, - "src": "1296:9:4", + "scope": 546, + "src": "228:9:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7190,10 +7678,10 @@ "typeString": "uint256" }, "typeName": { - "id": 484, + "id": 516, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1296:7:4", + "src": "228:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7203,20 +7691,20 @@ "visibility": "internal" } ], - "src": "1284:22:4" + "src": "216:22:6" }, "payable": false, "returnParameters": { - "id": 489, + "id": 521, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 488, + "id": 520, "name": "", "nodeType": "VariableDeclaration", - "scope": 505, - "src": "1330:7:4", + "scope": 546, + "src": "262:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7224,10 +7712,10 @@ "typeString": "uint256" }, "typeName": { - "id": 487, + "id": 519, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1330:7:4", + "src": "262:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7237,19 +7725,19 @@ "visibility": "internal" } ], - "src": "1329:9:4" + "src": "261:9:6" }, - "scope": 526, - "src": "1272:131:4", + "scope": 639, + "src": "204:381:6", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 524, + "id": 569, "nodeType": "Block", - "src": "1602:44:4", + "src": "762:203:6", "statements": [ { "expression": { @@ -7261,37 +7749,37 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 517, + "id": 558, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 515, + "id": 556, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 509, - "src": "1616:1:4", + "referencedDeclaration": 550, + "src": "776:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", - "operator": "!=", + "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 516, + "id": 557, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1621:1:4", + "src": "780:1:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7299,7 +7787,7 @@ }, "value": "0" }, - "src": "1616:6:4", + "src": "776:5:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7313,21 +7801,21 @@ "typeString": "bool" } ], - "id": 514, + "id": 555, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "1608:7:4", + "referencedDeclaration": 870, + "src": "768:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 518, + "id": 559, "isConstant": false, "isLValue": false, "isPure": false, @@ -7335,88 +7823,137 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1608:15:4", + "src": "768:14:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 519, + "id": 560, "nodeType": "ExpressionStatement", - "src": "1608:15:4" + "src": "768:14:6" }, { - "expression": { + "assignments": [ + 562 + ], + "declarations": [ + { + "constant": false, + "id": 562, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 570, + "src": "846:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 561, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "846:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 566, + "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 522, + "id": 565, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 520, + "id": 563, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 507, - "src": "1636:1:4", + "referencedDeclaration": 548, + "src": "858:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", - "operator": "%", + "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 521, + "id": 564, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 509, - "src": "1640:1:4", + "referencedDeclaration": 550, + "src": "862:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1636:5:4", + "src": "858:5:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 513, - "id": 523, + "nodeType": "VariableDeclarationStatement", + "src": "846:17:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 567, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 562, + "src": "959:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 554, + "id": 568, "nodeType": "Return", - "src": "1629:12:4" + "src": "952:8:6" } ] }, - "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", - "id": 525, + "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", + "id": 570, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], - "name": "mod", + "name": "div", "nodeType": "FunctionDefinition", "parameters": { - "id": 510, + "id": 551, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 507, + "id": 548, "name": "a", "nodeType": "VariableDeclaration", - "scope": 525, - "src": "1548:9:4", + "scope": 570, + "src": "708:9:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7424,10 +7961,10 @@ "typeString": "uint256" }, "typeName": { - "id": 506, + "id": 547, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1548:7:4", + "src": "708:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7438,11 +7975,11 @@ }, { "constant": false, - "id": 509, + "id": 550, "name": "b", "nodeType": "VariableDeclaration", - "scope": 525, - "src": "1559:9:4", + "scope": 570, + "src": "719:9:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7450,10 +7987,10 @@ "typeString": "uint256" }, "typeName": { - "id": 508, + "id": 549, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1559:7:4", + "src": "719:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7463,387 +8000,20 @@ "visibility": "internal" } ], - "src": "1547:22:4" + "src": "707:22:6" }, "payable": false, "returnParameters": { - "id": 513, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 512, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 525, - "src": "1593:7:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 511, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1593:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1592:9:4" - }, - "scope": 526, - "src": "1535:111:4", - "stateMutability": "pure", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 527, - "src": "117:1531:4" - } - ], - "src": "0:1649:4" - }, - "id": 4 - }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol": { - "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "exportedSymbols": { - "IERC20": [ - 595 - ] - }, - "id": 596, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 528, - "literals": [ - "solidity", - "^", - "0.4", - ".24" - ], - "nodeType": "PragmaDirective", - "src": "0:24:5" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "interface", - "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", - "fullyImplemented": false, - "id": 595, - "linearizedBaseContracts": [ - 595 - ], - "name": "IERC20", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": null, - "documentation": null, - "id": 533, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "totalSupply", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 529, - "nodeType": "ParameterList", - "parameters": [], - "src": "156:2:5" - }, - "payable": false, - "returnParameters": { - "id": 532, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 531, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 533, - "src": "182:7:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 530, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "182:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "181:9:5" - }, - "scope": 595, - "src": "136:55:5", - "stateMutability": "view", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 540, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "balanceOf", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 536, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 535, - "name": "who", - "nodeType": "VariableDeclaration", - "scope": 540, - "src": "214:11:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 534, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "214:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "213:13:5" - }, - "payable": false, - "returnParameters": { - "id": 539, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 538, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 540, - "src": "250:7:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 537, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "250:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "249:9:5" - }, - "scope": 595, - "src": "195:64:5", - "stateMutability": "view", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 549, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "allowance", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 545, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 542, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 549, - "src": "282:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 541, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "282:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 544, - "name": "spender", - "nodeType": "VariableDeclaration", - "scope": 549, - "src": "297:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 543, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "297:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "281:32:5" - }, - "payable": false, - "returnParameters": { - "id": 548, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 547, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 549, - "src": "341:7:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 546, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "341:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "340:9:5" - }, - "scope": 595, - "src": "263:87:5", - "stateMutability": "view", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 558, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "transfer", - "nodeType": "FunctionDefinition", - "parameters": { "id": 554, "nodeType": "ParameterList", "parameters": [ - { - "constant": false, - "id": 551, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 558, - "src": "372:10:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 550, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "372:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, { "constant": false, "id": 553, - "name": "value", + "name": "", "nodeType": "VariableDeclaration", - "scope": 558, - "src": "384:13:5", + "scope": 570, + "src": "753:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7854,7 +8024,7 @@ "id": 552, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "384:7:5", + "src": "753:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7864,460 +8034,230 @@ "visibility": "internal" } ], - "src": "371:27:5" + "src": "752:9:6" }, - "payable": false, - "returnParameters": { - "id": 557, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 556, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 558, - "src": "417:4:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 555, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "417:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "416:6:5" - }, - "scope": 595, - "src": "354:69:5", - "stateMutability": "nonpayable", + "scope": 639, + "src": "695:270:6", + "stateMutability": "pure", "superFunction": null, - "visibility": "external" + "visibility": "internal" }, { - "body": null, - "documentation": null, - "id": 567, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "approve", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 563, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 560, - "name": "spender", - "nodeType": "VariableDeclaration", - "scope": 567, - "src": "444:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 559, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "444:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 562, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 567, - "src": "461:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 561, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "461:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "443:32:5" - }, - "payable": false, - "returnParameters": { - "id": 566, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 565, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 567, - "src": "498:4:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 564, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "498:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "497:6:5" - }, - "scope": 595, - "src": "427:77:5", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 578, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "transferFrom", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 574, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 569, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 578, - "src": "530:12:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 568, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "530:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 571, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 578, - "src": "544:10:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 570, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "544:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 573, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 578, - "src": "556:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 572, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "556:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "529:41:5" - }, - "payable": false, - "returnParameters": { - "id": 577, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 576, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 578, - "src": "593:4:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 575, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "593:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "592:6:5" - }, - "scope": 595, - "src": "508:91:5", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" - }, - { - "anonymous": false, - "documentation": null, - "id": 586, - "name": "Transfer", - "nodeType": "EventDefinition", - "parameters": { - "id": 585, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 580, - "indexed": true, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 586, - "src": "623:20:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 579, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "623:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 582, - "indexed": true, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 586, - "src": "649:18:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 581, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "649:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 584, - "indexed": false, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 586, - "src": "673:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 583, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "673:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "617:73:5" - }, - "src": "603:88:5" - }, - { - "anonymous": false, - "documentation": null, - "id": 594, - "name": "Approval", - "nodeType": "EventDefinition", - "parameters": { + "body": { "id": 593, + "nodeType": "Block", + "src": "1145:64:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 580, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 574, + "src": "1159:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 581, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 572, + "src": "1164:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1159:6:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 579, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 870, + 871 + ], + "referencedDeclaration": 870, + "src": "1151:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1151:15:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 584, + "nodeType": "ExpressionStatement", + "src": "1151:15:6" + }, + { + "assignments": [ + 586 + ], + "declarations": [ + { + "constant": false, + "id": 586, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 594, + "src": "1172:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 585, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1172:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 590, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 587, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 572, + "src": "1184:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 588, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 574, + "src": "1188:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1184:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1172:17:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 591, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 586, + "src": "1203:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 578, + "id": 592, + "nodeType": "Return", + "src": "1196:8:6" + } + ] + }, + "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", + "id": 594, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 575, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 588, - "indexed": true, - "name": "owner", + "id": 572, + "name": "a", "nodeType": "VariableDeclaration", "scope": 594, - "src": "715:21:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 587, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "715:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 590, - "indexed": true, - "name": "spender", - "nodeType": "VariableDeclaration", - "scope": 594, - "src": "742:23:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 589, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "742:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 592, - "indexed": false, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 594, - "src": "771:13:5", + "src": "1091:9:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8325,10 +8265,36 @@ "typeString": "uint256" }, "typeName": { - "id": 591, + "id": 571, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "771:7:5", + "src": "1091:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 574, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 594, + "src": "1102:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 573, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1102:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8338,32 +8304,634 @@ "visibility": "internal" } ], - "src": "709:79:5" + "src": "1090:22:6" }, - "src": "695:94:5" + "payable": false, + "returnParameters": { + "id": 578, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 577, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 594, + "src": "1136:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 576, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1136:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1135:9:6" + }, + "scope": 639, + "src": "1078:131:6", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 617, + "nodeType": "Block", + "src": "1339:64:6", + "statements": [ + { + "assignments": [ + 604 + ], + "declarations": [ + { + "constant": false, + "id": 604, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 618, + "src": "1345:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 603, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1345:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 608, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 605, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 596, + "src": "1357:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 606, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 598, + "src": "1361:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1357:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1345:17:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 610, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 604, + "src": "1376:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 611, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 596, + "src": "1381:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1376:6:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 609, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 870, + 871 + ], + "referencedDeclaration": 870, + "src": "1368:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1368:15:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 614, + "nodeType": "ExpressionStatement", + "src": "1368:15:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 615, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 604, + "src": "1397:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 602, + "id": 616, + "nodeType": "Return", + "src": "1390:8:6" + } + ] + }, + "documentation": "@dev Adds two numbers, reverts on overflow.", + "id": 618, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 599, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 596, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 618, + "src": "1285:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 595, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1285:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 598, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 618, + "src": "1296:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 597, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1296:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1284:22:6" + }, + "payable": false, + "returnParameters": { + "id": 602, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 601, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 618, + "src": "1330:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 600, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1330:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1329:9:6" + }, + "scope": 639, + "src": "1272:131:6", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 637, + "nodeType": "Block", + "src": "1602:44:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 628, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 622, + "src": "1616:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 629, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1621:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1616:6:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 627, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 870, + 871 + ], + "referencedDeclaration": 870, + "src": "1608:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1608:15:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 632, + "nodeType": "ExpressionStatement", + "src": "1608:15:6" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 633, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 620, + "src": "1636:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "id": 634, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 622, + "src": "1640:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1636:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 626, + "id": 636, + "nodeType": "Return", + "src": "1629:12:6" + } + ] + }, + "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", + "id": 638, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "mod", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 623, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 620, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 638, + "src": "1548:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 619, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1548:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 622, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 638, + "src": "1559:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 621, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1559:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1547:22:6" + }, + "payable": false, + "returnParameters": { + "id": 626, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 625, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 638, + "src": "1593:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 624, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1593:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1592:9:6" + }, + "scope": 639, + "src": "1535:111:6", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" } ], - "scope": 596, - "src": "115:676:5" + "scope": 640, + "src": "117:1531:6" } ], - "src": "0:792:5" + "src": "0:1649:6" }, - "id": 5 + "id": 6 }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol": { "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "exportedSymbols": { - "SafeERC20": [ - 739 + "IERC20": [ + 708 ] }, - "id": 740, + "id": 709, "nodeType": "SourceUnit", "nodes": [ { - "id": 597, + "id": 641, "literals": [ "solidity", "^", @@ -8371,27 +8939,864 @@ ".24" ], "nodeType": "PragmaDirective", - "src": "0:24:6" + "src": "0:24:7" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", + "fullyImplemented": false, + "id": 708, + "linearizedBaseContracts": [ + 708 + ], + "name": "IERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 646, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 642, + "nodeType": "ParameterList", + "parameters": [], + "src": "156:2:7" + }, + "payable": false, + "returnParameters": { + "id": 645, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 644, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 646, + "src": "182:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 643, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "182:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "181:9:7" + }, + "scope": 708, + "src": "136:55:7", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 653, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 649, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 648, + "name": "who", + "nodeType": "VariableDeclaration", + "scope": 653, + "src": "214:11:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 647, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "214:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "213:13:7" + }, + "payable": false, + "returnParameters": { + "id": 652, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 651, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 653, + "src": "250:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 650, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "250:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "249:9:7" + }, + "scope": 708, + "src": "195:64:7", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 662, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 658, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 655, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 662, + "src": "282:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 654, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "282:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 657, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 662, + "src": "297:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 656, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "297:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "281:32:7" + }, + "payable": false, + "returnParameters": { + "id": 661, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 660, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 662, + "src": "341:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 659, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "341:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "340:9:7" + }, + "scope": 708, + "src": "263:87:7", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 671, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 667, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 664, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 671, + "src": "372:10:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 663, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "372:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 666, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 671, + "src": "384:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 665, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "384:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "371:27:7" + }, + "payable": false, + "returnParameters": { + "id": 670, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 669, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 671, + "src": "417:4:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 668, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "417:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "416:6:7" + }, + "scope": 708, + "src": "354:69:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 680, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 676, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 673, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 680, + "src": "444:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 672, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "444:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 675, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 680, + "src": "461:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 674, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "461:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "443:32:7" + }, + "payable": false, + "returnParameters": { + "id": 679, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 678, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 680, + "src": "498:4:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 677, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "498:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "497:6:7" + }, + "scope": 708, + "src": "427:77:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 691, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 687, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 682, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 691, + "src": "530:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 681, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "530:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 684, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 691, + "src": "544:10:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 683, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "544:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 686, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 691, + "src": "556:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 685, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "556:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "529:41:7" + }, + "payable": false, + "returnParameters": { + "id": 690, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 689, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 691, + "src": "593:4:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 688, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "593:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "592:6:7" + }, + "scope": 708, + "src": "508:91:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": null, + "id": 699, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 698, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 693, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 699, + "src": "623:20:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 692, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "623:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 695, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 699, + "src": "649:18:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 694, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "649:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 697, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 699, + "src": "673:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 696, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "673:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "617:73:7" + }, + "src": "603:88:7" + }, + { + "anonymous": false, + "documentation": null, + "id": 707, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 706, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 701, + "indexed": true, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 707, + "src": "715:21:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 700, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "715:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 703, + "indexed": true, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 707, + "src": "742:23:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 702, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "742:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 705, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 707, + "src": "771:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 704, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "771:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "709:79:7" + }, + "src": "695:94:7" + } + ], + "scope": 709, + "src": "115:676:7" + } + ], + "src": "0:792:7" + }, + "id": 7 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "exportedSymbols": { + "SafeERC20": [ + 852 + ] + }, + "id": 853, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 710, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:8" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "./IERC20.sol", - "id": 598, + "id": 711, "nodeType": "ImportDirective", - "scope": 740, - "sourceUnit": 596, - "src": "26:22:6", + "scope": 853, + "sourceUnit": 709, + "src": "26:22:8", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "file": "../../math/SafeMath.sol", - "id": 599, + "id": 712, "nodeType": "ImportDirective", - "scope": 740, - "sourceUnit": 527, - "src": "49:33:6", + "scope": 853, + "sourceUnit": 640, + "src": "49:33:8", "symbolAliases": [], "unitAlias": "" }, @@ -8401,34 +9806,34 @@ "contractKind": "library", "documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.", "fullyImplemented": true, - "id": 739, + "id": 852, "linearizedBaseContracts": [ - 739 + 852 ], "name": "SafeERC20", "nodeType": "ContractDefinition", "nodes": [ { - "id": 602, + "id": 715, "libraryName": { "contractScope": null, - "id": 600, + "id": 713, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 526, - "src": "382:8:6", + "referencedDeclaration": 639, + "src": "382:8:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$526", + "typeIdentifier": "t_contract$_SafeMath_$639", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", - "src": "376:27:6", + "src": "376:27:8", "typeName": { - "id": 601, + "id": 714, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "395:7:6", + "src": "395:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8437,9 +9842,9 @@ }, { "body": { - "id": 619, + "id": 732, "nodeType": "Block", - "src": "501:45:6", + "src": "501:45:8", "statements": [ { "expression": { @@ -8450,12 +9855,12 @@ "arguments": [ { "argumentTypes": null, - "id": 614, + "id": 727, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 606, - "src": "530:2:6", + "referencedDeclaration": 719, + "src": "530:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8463,12 +9868,12 @@ }, { "argumentTypes": null, - "id": 615, + "id": 728, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 608, - "src": "534:5:6", + "referencedDeclaration": 721, + "src": "534:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8488,32 +9893,32 @@ ], "expression": { "argumentTypes": null, - "id": 612, + "id": 725, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 604, - "src": "515:5:6", + "referencedDeclaration": 717, + "src": "515:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } }, - "id": 613, + "id": 726, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", - "referencedDeclaration": 558, - "src": "515:14:6", + "referencedDeclaration": 671, + "src": "515:14:8", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 616, + "id": 729, "isConstant": false, "isLValue": false, "isPure": false, @@ -8521,7 +9926,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "515:25:6", + "src": "515:25:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8535,21 +9940,21 @@ "typeString": "bool" } ], - "id": 611, + "id": 724, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "507:7:6", + "referencedDeclaration": 870, + "src": "507:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 617, + "id": 730, "isConstant": false, "isLValue": false, "isPure": false, @@ -8557,20 +9962,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "507:34:6", + "src": "507:34:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 618, + "id": 731, "nodeType": "ExpressionStatement", - "src": "507:34:6" + "src": "507:34:8" } ] }, "documentation": null, - "id": 620, + "id": 733, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8578,31 +9983,31 @@ "name": "safeTransfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 609, + "id": 722, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 604, + "id": 717, "name": "token", "nodeType": "VariableDeclaration", - "scope": 620, - "src": "434:12:6", + "scope": 733, + "src": "434:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 603, + "id": 716, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 595, - "src": "434:6:6", + "referencedDeclaration": 708, + "src": "434:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } }, @@ -8611,11 +10016,11 @@ }, { "constant": false, - "id": 606, + "id": 719, "name": "to", "nodeType": "VariableDeclaration", - "scope": 620, - "src": "452:10:6", + "scope": 733, + "src": "452:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8623,10 +10028,10 @@ "typeString": "address" }, "typeName": { - "id": 605, + "id": 718, "name": "address", "nodeType": "ElementaryTypeName", - "src": "452:7:6", + "src": "452:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8637,11 +10042,11 @@ }, { "constant": false, - "id": 608, + "id": 721, "name": "value", "nodeType": "VariableDeclaration", - "scope": 620, - "src": "468:13:6", + "scope": 733, + "src": "468:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8649,10 +10054,10 @@ "typeString": "uint256" }, "typeName": { - "id": 607, + "id": 720, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "468:7:6", + "src": "468:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8662,26 +10067,26 @@ "visibility": "internal" } ], - "src": "428:57:6" + "src": "428:57:8" }, "payable": false, "returnParameters": { - "id": 610, + "id": 723, "nodeType": "ParameterList", "parameters": [], - "src": "501:0:6" + "src": "501:0:8" }, - "scope": 739, - "src": "407:139:6", + "scope": 852, + "src": "407:139:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 640, + "id": 753, "nodeType": "Block", - "src": "666:55:6", + "src": "666:55:8", "statements": [ { "expression": { @@ -8692,12 +10097,12 @@ "arguments": [ { "argumentTypes": null, - "id": 634, + "id": 747, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 624, - "src": "699:4:6", + "referencedDeclaration": 737, + "src": "699:4:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8705,12 +10110,12 @@ }, { "argumentTypes": null, - "id": 635, + "id": 748, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 626, - "src": "705:2:6", + "referencedDeclaration": 739, + "src": "705:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8718,12 +10123,12 @@ }, { "argumentTypes": null, - "id": 636, + "id": 749, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 628, - "src": "709:5:6", + "referencedDeclaration": 741, + "src": "709:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8747,32 +10152,32 @@ ], "expression": { "argumentTypes": null, - "id": 632, + "id": 745, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 622, - "src": "680:5:6", + "referencedDeclaration": 735, + "src": "680:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } }, - "id": 633, + "id": 746, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", - "referencedDeclaration": 578, - "src": "680:18:6", + "referencedDeclaration": 691, + "src": "680:18:8", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)" } }, - "id": 637, + "id": 750, "isConstant": false, "isLValue": false, "isPure": false, @@ -8780,7 +10185,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "680:35:6", + "src": "680:35:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8794,21 +10199,21 @@ "typeString": "bool" } ], - "id": 631, + "id": 744, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "672:7:6", + "referencedDeclaration": 870, + "src": "672:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 638, + "id": 751, "isConstant": false, "isLValue": false, "isPure": false, @@ -8816,20 +10221,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "672:44:6", + "src": "672:44:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 639, + "id": 752, "nodeType": "ExpressionStatement", - "src": "672:44:6" + "src": "672:44:8" } ] }, "documentation": null, - "id": 641, + "id": 754, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8837,31 +10242,31 @@ "name": "safeTransferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 629, + "id": 742, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 622, + "id": 735, "name": "token", "nodeType": "VariableDeclaration", - "scope": 641, - "src": "581:12:6", + "scope": 754, + "src": "581:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 621, + "id": 734, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 595, - "src": "581:6:6", + "referencedDeclaration": 708, + "src": "581:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } }, @@ -8870,11 +10275,11 @@ }, { "constant": false, - "id": 624, + "id": 737, "name": "from", "nodeType": "VariableDeclaration", - "scope": 641, - "src": "599:12:6", + "scope": 754, + "src": "599:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8882,10 +10287,10 @@ "typeString": "address" }, "typeName": { - "id": 623, + "id": 736, "name": "address", "nodeType": "ElementaryTypeName", - "src": "599:7:6", + "src": "599:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8896,11 +10301,11 @@ }, { "constant": false, - "id": 626, + "id": 739, "name": "to", "nodeType": "VariableDeclaration", - "scope": 641, - "src": "617:10:6", + "scope": 754, + "src": "617:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8908,10 +10313,10 @@ "typeString": "address" }, "typeName": { - "id": 625, + "id": 738, "name": "address", "nodeType": "ElementaryTypeName", - "src": "617:7:6", + "src": "617:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8922,11 +10327,11 @@ }, { "constant": false, - "id": 628, + "id": 741, "name": "value", "nodeType": "VariableDeclaration", - "scope": 641, - "src": "633:13:6", + "scope": 754, + "src": "633:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8934,10 +10339,10 @@ "typeString": "uint256" }, "typeName": { - "id": 627, + "id": 740, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "633:7:6", + "src": "633:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8947,26 +10352,26 @@ "visibility": "internal" } ], - "src": "575:75:6" + "src": "575:75:8" }, "payable": false, "returnParameters": { - "id": 630, + "id": 743, "nodeType": "ParameterList", "parameters": [], - "src": "666:0:6" + "src": "666:0:8" }, - "scope": 739, - "src": "550:171:6", + "scope": 852, + "src": "550:171:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 675, + "id": 788, "nodeType": "Block", - "src": "823:330:6", + "src": "823:330:8", "statements": [ { "expression": { @@ -8978,7 +10383,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 664, + "id": 777, "isConstant": false, "isLValue": false, "isPure": false, @@ -8992,19 +10397,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 653, + "id": 766, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 651, + "id": 764, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "1045:5:6", + "referencedDeclaration": 760, + "src": "1045:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9015,14 +10420,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 652, + "id": 765, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1054:1:6", + "src": "1054:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9030,21 +10435,21 @@ }, "value": "0" }, - "src": "1045:10:6", + "src": "1045:10:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 654, + "id": 767, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "1044:12:6", + "src": "1044:12:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9061,7 +10466,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 662, + "id": 775, "isConstant": false, "isLValue": false, "isPure": false, @@ -9073,18 +10478,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 657, + "id": 770, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 754, - "src": "1077:3:6", + "referencedDeclaration": 867, + "src": "1077:3:8", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 658, + "id": 771, "isConstant": false, "isLValue": false, "isPure": false, @@ -9092,7 +10497,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1077:10:6", + "src": "1077:10:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9100,12 +10505,12 @@ }, { "argumentTypes": null, - "id": 659, + "id": 772, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 645, - "src": "1089:7:6", + "referencedDeclaration": 758, + "src": "1089:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9125,32 +10530,32 @@ ], "expression": { "argumentTypes": null, - "id": 655, + "id": 768, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "1061:5:6", + "referencedDeclaration": 756, + "src": "1061:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } }, - "id": 656, + "id": 769, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 549, - "src": "1061:15:6", + "referencedDeclaration": 662, + "src": "1061:15:8", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 660, + "id": 773, "isConstant": false, "isLValue": false, "isPure": false, @@ -9158,7 +10563,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1061:36:6", + "src": "1061:36:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9169,14 +10574,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 661, + "id": 774, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1101:1:6", + "src": "1101:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9184,27 +10589,27 @@ }, "value": "0" }, - "src": "1061:41:6", + "src": "1061:41:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 663, + "id": 776, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "1060:43:6", + "src": "1060:43:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1044:59:6", + "src": "1044:59:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9218,21 +10623,21 @@ "typeString": "bool" } ], - "id": 650, + "id": 763, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "1036:7:6", + "referencedDeclaration": 870, + "src": "1036:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 665, + "id": 778, "isConstant": false, "isLValue": false, "isPure": false, @@ -9240,15 +10645,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1036:68:6", + "src": "1036:68:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 666, + "id": 779, "nodeType": "ExpressionStatement", - "src": "1036:68:6" + "src": "1036:68:8" }, { "expression": { @@ -9259,12 +10664,12 @@ "arguments": [ { "argumentTypes": null, - "id": 670, + "id": 783, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 645, - "src": "1132:7:6", + "referencedDeclaration": 758, + "src": "1132:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9272,12 +10677,12 @@ }, { "argumentTypes": null, - "id": 671, + "id": 784, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "1141:5:6", + "referencedDeclaration": 760, + "src": "1141:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9297,32 +10702,32 @@ ], "expression": { "argumentTypes": null, - "id": 668, + "id": 781, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "1118:5:6", + "referencedDeclaration": 756, + "src": "1118:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } }, - "id": 669, + "id": 782, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 567, - "src": "1118:13:6", + "referencedDeclaration": 680, + "src": "1118:13:8", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 672, + "id": 785, "isConstant": false, "isLValue": false, "isPure": false, @@ -9330,7 +10735,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1118:29:6", + "src": "1118:29:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9344,21 +10749,21 @@ "typeString": "bool" } ], - "id": 667, + "id": 780, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "1110:7:6", + "referencedDeclaration": 870, + "src": "1110:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 673, + "id": 786, "isConstant": false, "isLValue": false, "isPure": false, @@ -9366,20 +10771,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1110:38:6", + "src": "1110:38:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 674, + "id": 787, "nodeType": "ExpressionStatement", - "src": "1110:38:6" + "src": "1110:38:8" } ] }, "documentation": null, - "id": 676, + "id": 789, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -9387,31 +10792,31 @@ "name": "safeApprove", "nodeType": "FunctionDefinition", "parameters": { - "id": 648, + "id": 761, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 643, + "id": 756, "name": "token", "nodeType": "VariableDeclaration", - "scope": 676, - "src": "751:12:6", + "scope": 789, + "src": "751:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 642, + "id": 755, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 595, - "src": "751:6:6", + "referencedDeclaration": 708, + "src": "751:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } }, @@ -9420,11 +10825,11 @@ }, { "constant": false, - "id": 645, + "id": 758, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 676, - "src": "769:15:6", + "scope": 789, + "src": "769:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9432,10 +10837,10 @@ "typeString": "address" }, "typeName": { - "id": 644, + "id": 757, "name": "address", "nodeType": "ElementaryTypeName", - "src": "769:7:6", + "src": "769:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9446,11 +10851,11 @@ }, { "constant": false, - "id": 647, + "id": 760, "name": "value", "nodeType": "VariableDeclaration", - "scope": 676, - "src": "790:13:6", + "scope": 789, + "src": "790:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9458,10 +10863,10 @@ "typeString": "uint256" }, "typeName": { - "id": 646, + "id": 759, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "790:7:6", + "src": "790:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9471,39 +10876,39 @@ "visibility": "internal" } ], - "src": "745:62:6" + "src": "745:62:8" }, "payable": false, "returnParameters": { - "id": 649, + "id": 762, "nodeType": "ParameterList", "parameters": [], - "src": "823:0:6" + "src": "823:0:8" }, - "scope": 739, - "src": "725:428:6", + "scope": 852, + "src": "725:428:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 706, + "id": 819, "nodeType": "Block", - "src": "1265:135:6", + "src": "1265:135:8", "statements": [ { "assignments": [ - 686 + 799 ], "declarations": [ { "constant": false, - "id": 686, + "id": 799, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 707, - "src": "1271:20:6", + "scope": 820, + "src": "1271:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9511,10 +10916,10 @@ "typeString": "uint256" }, "typeName": { - "id": 685, + "id": 798, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1271:7:6", + "src": "1271:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9524,18 +10929,18 @@ "visibility": "internal" } ], - "id": 697, + "id": 810, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 695, + "id": 808, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 682, - "src": "1338:5:6", + "referencedDeclaration": 795, + "src": "1338:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9557,14 +10962,14 @@ "arguments": [ { "argumentTypes": null, - "id": 690, + "id": 803, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 775, - "src": "1318:4:6", + "referencedDeclaration": 888, + "src": "1318:4:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$739", + "typeIdentifier": "t_contract$_SafeERC20_$852", "typeString": "library SafeERC20" } } @@ -9572,24 +10977,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$739", + "typeIdentifier": "t_contract$_SafeERC20_$852", "typeString": "library SafeERC20" } ], - "id": 689, + "id": 802, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1310:7:6", + "src": "1310:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 691, + "id": 804, "isConstant": false, "isLValue": false, "isPure": false, @@ -9597,7 +11002,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1310:13:6", + "src": "1310:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9605,12 +11010,12 @@ }, { "argumentTypes": null, - "id": 692, + "id": 805, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 680, - "src": "1325:7:6", + "referencedDeclaration": 793, + "src": "1325:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9630,32 +11035,32 @@ ], "expression": { "argumentTypes": null, - "id": 687, + "id": 800, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 678, - "src": "1294:5:6", + "referencedDeclaration": 791, + "src": "1294:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } }, - "id": 688, + "id": 801, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 549, - "src": "1294:15:6", + "referencedDeclaration": 662, + "src": "1294:15:8", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 693, + "id": 806, "isConstant": false, "isLValue": false, "isPure": false, @@ -9663,27 +11068,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1294:39:6", + "src": "1294:39:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 694, + "id": 807, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 505, - "src": "1294:43:6", + "referencedDeclaration": 618, + "src": "1294:43:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 696, + "id": 809, "isConstant": false, "isLValue": false, "isPure": false, @@ -9691,14 +11096,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1294:50:6", + "src": "1294:50:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1271:73:6" + "src": "1271:73:8" }, { "expression": { @@ -9709,12 +11114,12 @@ "arguments": [ { "argumentTypes": null, - "id": 701, + "id": 814, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 680, - "src": "1372:7:6", + "referencedDeclaration": 793, + "src": "1372:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9722,12 +11127,12 @@ }, { "argumentTypes": null, - "id": 702, + "id": 815, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 686, - "src": "1381:12:6", + "referencedDeclaration": 799, + "src": "1381:12:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9747,32 +11152,32 @@ ], "expression": { "argumentTypes": null, - "id": 699, + "id": 812, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 678, - "src": "1358:5:6", + "referencedDeclaration": 791, + "src": "1358:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } }, - "id": 700, + "id": 813, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 567, - "src": "1358:13:6", + "referencedDeclaration": 680, + "src": "1358:13:8", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 703, + "id": 816, "isConstant": false, "isLValue": false, "isPure": false, @@ -9780,7 +11185,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1358:36:6", + "src": "1358:36:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9794,21 +11199,21 @@ "typeString": "bool" } ], - "id": 698, + "id": 811, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "1350:7:6", + "referencedDeclaration": 870, + "src": "1350:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 704, + "id": 817, "isConstant": false, "isLValue": false, "isPure": false, @@ -9816,20 +11221,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1350:45:6", + "src": "1350:45:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 705, + "id": 818, "nodeType": "ExpressionStatement", - "src": "1350:45:6" + "src": "1350:45:8" } ] }, "documentation": null, - "id": 707, + "id": 820, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -9837,31 +11242,31 @@ "name": "safeIncreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 683, + "id": 796, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 678, + "id": 791, "name": "token", "nodeType": "VariableDeclaration", - "scope": 707, - "src": "1193:12:6", + "scope": 820, + "src": "1193:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 677, + "id": 790, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 595, - "src": "1193:6:6", + "referencedDeclaration": 708, + "src": "1193:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } }, @@ -9870,11 +11275,11 @@ }, { "constant": false, - "id": 680, + "id": 793, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 707, - "src": "1211:15:6", + "scope": 820, + "src": "1211:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9882,10 +11287,10 @@ "typeString": "address" }, "typeName": { - "id": 679, + "id": 792, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1211:7:6", + "src": "1211:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9896,11 +11301,11 @@ }, { "constant": false, - "id": 682, + "id": 795, "name": "value", "nodeType": "VariableDeclaration", - "scope": 707, - "src": "1232:13:6", + "scope": 820, + "src": "1232:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9908,10 +11313,10 @@ "typeString": "uint256" }, "typeName": { - "id": 681, + "id": 794, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1232:7:6", + "src": "1232:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9921,39 +11326,39 @@ "visibility": "internal" } ], - "src": "1187:62:6" + "src": "1187:62:8" }, "payable": false, "returnParameters": { - "id": 684, + "id": 797, "nodeType": "ParameterList", "parameters": [], - "src": "1265:0:6" + "src": "1265:0:8" }, - "scope": 739, - "src": "1157:243:6", + "scope": 852, + "src": "1157:243:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 737, + "id": 850, "nodeType": "Block", - "src": "1512:135:6", + "src": "1512:135:8", "statements": [ { "assignments": [ - 717 + 830 ], "declarations": [ { "constant": false, - "id": 717, + "id": 830, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 738, - "src": "1518:20:6", + "scope": 851, + "src": "1518:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9961,10 +11366,10 @@ "typeString": "uint256" }, "typeName": { - "id": 716, + "id": 829, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1518:7:6", + "src": "1518:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9974,18 +11379,18 @@ "visibility": "internal" } ], - "id": 728, + "id": 841, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 726, + "id": 839, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 713, - "src": "1585:5:6", + "referencedDeclaration": 826, + "src": "1585:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10007,14 +11412,14 @@ "arguments": [ { "argumentTypes": null, - "id": 721, + "id": 834, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 775, - "src": "1565:4:6", + "referencedDeclaration": 888, + "src": "1565:4:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$739", + "typeIdentifier": "t_contract$_SafeERC20_$852", "typeString": "library SafeERC20" } } @@ -10022,24 +11427,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$739", + "typeIdentifier": "t_contract$_SafeERC20_$852", "typeString": "library SafeERC20" } ], - "id": 720, + "id": 833, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1557:7:6", + "src": "1557:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 722, + "id": 835, "isConstant": false, "isLValue": false, "isPure": false, @@ -10047,7 +11452,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1557:13:6", + "src": "1557:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10055,12 +11460,12 @@ }, { "argumentTypes": null, - "id": 723, + "id": 836, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 711, - "src": "1572:7:6", + "referencedDeclaration": 824, + "src": "1572:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10080,32 +11485,32 @@ ], "expression": { "argumentTypes": null, - "id": 718, + "id": 831, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 709, - "src": "1541:5:6", + "referencedDeclaration": 822, + "src": "1541:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } }, - "id": 719, + "id": 832, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 549, - "src": "1541:15:6", + "referencedDeclaration": 662, + "src": "1541:15:8", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 724, + "id": 837, "isConstant": false, "isLValue": false, "isPure": false, @@ -10113,27 +11518,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1541:39:6", + "src": "1541:39:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 725, + "id": 838, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 481, - "src": "1541:43:6", + "referencedDeclaration": 594, + "src": "1541:43:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 727, + "id": 840, "isConstant": false, "isLValue": false, "isPure": false, @@ -10141,14 +11546,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1541:50:6", + "src": "1541:50:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1518:73:6" + "src": "1518:73:8" }, { "expression": { @@ -10159,12 +11564,12 @@ "arguments": [ { "argumentTypes": null, - "id": 732, + "id": 845, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 711, - "src": "1619:7:6", + "referencedDeclaration": 824, + "src": "1619:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10172,12 +11577,12 @@ }, { "argumentTypes": null, - "id": 733, + "id": 846, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "1628:12:6", + "referencedDeclaration": 830, + "src": "1628:12:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10197,32 +11602,32 @@ ], "expression": { "argumentTypes": null, - "id": 730, + "id": 843, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 709, - "src": "1605:5:6", + "referencedDeclaration": 822, + "src": "1605:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } }, - "id": 731, + "id": 844, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 567, - "src": "1605:13:6", + "referencedDeclaration": 680, + "src": "1605:13:8", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 734, + "id": 847, "isConstant": false, "isLValue": false, "isPure": false, @@ -10230,7 +11635,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1605:36:6", + "src": "1605:36:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10244,21 +11649,21 @@ "typeString": "bool" } ], - "id": 729, + "id": 842, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "1597:7:6", + "referencedDeclaration": 870, + "src": "1597:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 735, + "id": 848, "isConstant": false, "isLValue": false, "isPure": false, @@ -10266,20 +11671,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1597:45:6", + "src": "1597:45:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 736, + "id": 849, "nodeType": "ExpressionStatement", - "src": "1597:45:6" + "src": "1597:45:8" } ] }, "documentation": null, - "id": 738, + "id": 851, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -10287,31 +11692,31 @@ "name": "safeDecreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 714, + "id": 827, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 709, + "id": 822, "name": "token", "nodeType": "VariableDeclaration", - "scope": 738, - "src": "1440:12:6", + "scope": 851, + "src": "1440:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 708, + "id": 821, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 595, - "src": "1440:6:6", + "referencedDeclaration": 708, + "src": "1440:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } }, @@ -10320,11 +11725,11 @@ }, { "constant": false, - "id": 711, + "id": 824, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 738, - "src": "1458:15:6", + "scope": 851, + "src": "1458:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10332,10 +11737,10 @@ "typeString": "address" }, "typeName": { - "id": 710, + "id": 823, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1458:7:6", + "src": "1458:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10346,11 +11751,11 @@ }, { "constant": false, - "id": 713, + "id": 826, "name": "value", "nodeType": "VariableDeclaration", - "scope": 738, - "src": "1479:13:6", + "scope": 851, + "src": "1479:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10358,10 +11763,10 @@ "typeString": "uint256" }, "typeName": { - "id": 712, + "id": 825, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1479:7:6", + "src": "1479:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10371,29 +11776,29 @@ "visibility": "internal" } ], - "src": "1434:62:6" + "src": "1434:62:8" }, "payable": false, "returnParameters": { - "id": 715, + "id": 828, "nodeType": "ParameterList", "parameters": [], - "src": "1512:0:6" + "src": "1512:0:8" }, - "scope": 739, - "src": "1404:243:6", + "scope": 852, + "src": "1404:243:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 740, - "src": "353:1296:6" + "scope": 853, + "src": "353:1296:8" } ], - "src": "0:1650:6" + "src": "0:1650:8" }, - "id": 6 + "id": 8 } } } \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.abi b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.abi index 38dd233d4..cd7eb1f10 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.abi +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.abi @@ -1 +1 @@ -[{"constant":false,"inputs":[{"name":"minerAddress","type":"address"}],"name":"trasferToMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_FACTOR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"CAT_4_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_1_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_3_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_0_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_5_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_2_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"poolType","type":"uint16"},{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file +[{"constant":false,"inputs":[],"name":"terminate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"minerAddress","type":"address"}],"name":"trasferToMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_FACTOR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"CAT_4_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_1_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_3_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_0_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_5_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_2_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"poolType","type":"uint16"},{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin index 3e0d92f3c..987528f83 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b506040516040806107aa83398101604052805160209091015161003b33640100000000610077810204565b60018054600160a060020a0390921662010000026201000060b060020a031961ffff90941661ffff199093169290921792909216179055610120565b61008f6000826401000000006105b561009282021704565b50565b600160a060020a03811615156100a757600080fd5b6100ba82826401000000006100e9810204565b156100c457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561010057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61067b8061012f6000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632296f4c7811461009a57806325109e8b146100bd5780632e6b6849146100e4578063455acbcd14610105578063492fba841461011a57806349dc9ed01461012f578063608d3d3d146101445780639fc3c98314610179578063a89febb21461018e578063aed6183f146101a3578063d43acc79146101b8575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a03600435166101cd565b005b3480156100c957600080fd5b506100d2610416565b60408051918252519081900360200190f35b3480156100f057600080fd5b506100bb600160a060020a0360043516610422565b34801561011157600080fd5b506100d2610442565b34801561012657600080fd5b506100d2610451565b34801561013b57600080fd5b506100d261045f565b34801561015057600080fd5b50610165600160a060020a036004351661046e565b604080519115158252519081900360200190f35b34801561018557600080fd5b506100d2610486565b34801561019a57600080fd5b506100d2610494565b3480156101af57600080fd5b506100d26104a3565b3480156101c457600080fd5b506100bb6104b2565b60008060006101db3361046e565b15156101e657600080fd5b600160a060020a03841660009081526002602052604090205460ff161561020c57600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561024d57600080fd5b505af1158015610261573d6000803e3d6000fd5b505050506040513d602081101561027757600080fd5b5051151561028457600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102c257600080fd5b505af11580156102d6573d6000803e3d6000fd5b505050506040513d60208110156102ec57600080fd5b50519150600060ff831610801590610308575060058260ff1611155b151561031357600080fd5b50600060ff82161515610331575069152d02c7e14af68000006103c2565b8160ff166001141561034e575069d3c21bcecceda10000006103c2565b8160ff166002141561036c57506a01a784379d99db420000006103c2565b8160ff166003141561038a57506a027b46536c66c8e30000006103c2565b8160ff16600414156103a857506a034f086f3b33b6840000006103c2565b8160ff16600514156103c257506a0422ca8b0a00a4250000005b600081116103cf57600080fd5b600160a060020a038085166000908152600260205260409020805460ff1916600190811790915554610410916201000090910416858363ffffffff6104bd16565b50505050565b670de0b6b3a764000081565b61042b3361046e565b151561043657600080fd5b61043f8161055c565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b6000610480818363ffffffff61056d16565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b6104bb336105a4565b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561052057600080fd5b505af1158015610534573d6000803e3d6000fd5b505050506040513d602081101561054a57600080fd5b5051151561055757600080fd5b505050565b61043f60008263ffffffff6105b516565b6000600160a060020a038216151561058457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61043f60008263ffffffff61060316565b600160a060020a03811615156105ca57600080fd5b6105d4828261056d565b156105de57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561061857600080fd5b610622828261056d565b151561062d57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058200648204d7a0ac13aa2e9ab7514200c49dd33ae54f0178fd146385ad3444f20ee0029 \ No newline at end of file +608060405234801561001057600080fd5b5060405160408061091a8339810160405280516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561006f9064010000000061008b810204565b506003805461ffff191661ffff92909216919091179055610134565b6100a36002826401000000006107116100a682021704565b50565b600160a060020a03811615156100bb57600080fd5b6100ce82826401000000006100fd810204565b156100d857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561011457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6107d7806101436000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632296f4c7146100bc57806325109e8b146100dd5780632e6b684914610104578063455acbcd14610125578063492fba841461013a57806349dc9ed01461014f578063608d3d3d146101645780639fc3c98314610199578063a89febb2146101ae578063aed6183f146101c3578063d43acc79146101d8575b600080fd5b3480156100b157600080fd5b506100ba6101ed565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661020b565b3480156100e957600080fd5b506100f2610475565b60408051918252519081900360200190f35b34801561011057600080fd5b506100ba600160a060020a0360043516610481565b34801561013157600080fd5b506100f26104a1565b34801561014657600080fd5b506100f26104b0565b34801561015b57600080fd5b506100f26104be565b34801561017057600080fd5b50610185600160a060020a03600435166104cd565b604080519115158252519081900360200190f35b3480156101a557600080fd5b506100f26104e6565b3480156101ba57600080fd5b506100f26104f4565b3480156101cf57600080fd5b506100f2610503565b3480156101e457600080fd5b506100ba610512565b6101f6336104cd565b151561020157600080fd5b61020961051b565b565b600080548190819074010000000000000000000000000000000000000000900460ff161561023857600080fd5b610241336104cd565b151561024c57600080fd5b600160a060020a03841660009081526004602052604090205460ff161561027257600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102b357600080fd5b505af11580156102c7573d6000803e3d6000fd5b505050506040513d60208110156102dd57600080fd5b505115156102ea57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032857600080fd5b505af115801561033c573d6000803e3d6000fd5b505050506040513d602081101561035257600080fd5b50519150600060ff83161080159061036e575060058260ff1611155b151561037957600080fd5b50600060ff82161515610397575069152d02c7e14af6800000610428565b8160ff16600114156103b4575069d3c21bcecceda1000000610428565b8160ff16600214156103d257506a01a784379d99db42000000610428565b8160ff16600314156103f057506a027b46536c66c8e3000000610428565b8160ff166004141561040e57506a034f086f3b33b684000000610428565b8160ff166005141561042857506a0422ca8b0a00a4250000005b6000811161043557600080fd5b600160a060020a038085166000908152600460205260409020805460ff191660019081179091555461046f9116858363ffffffff6105e216565b50505050565b670de0b6b3a764000081565b61048a336104cd565b151561049557600080fd5b61049e81610681565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b60006104e060028363ffffffff61069216565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b610209336106c9565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561058057600080fd5b505af1158015610594573d6000803e3d6000fd5b505050506040513d60208110156105aa57600080fd5b5051905060008111156105da576000546001546105da91600160a060020a0391821691168363ffffffff6105e216565b61049e6106da565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561064557600080fd5b505af1158015610659573d6000803e3d6000fd5b505050506040513d602081101561066f57600080fd5b5051151561067c57600080fd5b505050565b61049e60028263ffffffff61071116565b6000600160a060020a03821615156106a957600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61049e60028263ffffffff61075f16565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a038116151561072657600080fd5b6107308282610692565b1561073a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561077457600080fd5b61077e8282610692565b151561078957600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a7230582003c6fe797e016b5da34d582d5503b392dfdb98114c82abcb7165886533dc93b80029 \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json index f0c9e5f58..3a44ddf38 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json @@ -1,5 +1,14 @@ { "abi": [ + { + "constant": false, + "inputs": [], + "name": "terminate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "constant": false, "inputs": [ @@ -170,7 +179,7 @@ "type": "constructor" } ], - "bytecode": "608060405234801561001057600080fd5b506040516040806107aa83398101604052805160209091015161003b33640100000000610077810204565b60018054600160a060020a0390921662010000026201000060b060020a031961ffff90941661ffff199093169290921792909216179055610120565b61008f6000826401000000006105b561009282021704565b50565b600160a060020a03811615156100a757600080fd5b6100ba82826401000000006100e9810204565b156100c457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561010057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61067b8061012f6000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632296f4c7811461009a57806325109e8b146100bd5780632e6b6849146100e4578063455acbcd14610105578063492fba841461011a57806349dc9ed01461012f578063608d3d3d146101445780639fc3c98314610179578063a89febb21461018e578063aed6183f146101a3578063d43acc79146101b8575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a03600435166101cd565b005b3480156100c957600080fd5b506100d2610416565b60408051918252519081900360200190f35b3480156100f057600080fd5b506100bb600160a060020a0360043516610422565b34801561011157600080fd5b506100d2610442565b34801561012657600080fd5b506100d2610451565b34801561013b57600080fd5b506100d261045f565b34801561015057600080fd5b50610165600160a060020a036004351661046e565b604080519115158252519081900360200190f35b34801561018557600080fd5b506100d2610486565b34801561019a57600080fd5b506100d2610494565b3480156101af57600080fd5b506100d26104a3565b3480156101c457600080fd5b506100bb6104b2565b60008060006101db3361046e565b15156101e657600080fd5b600160a060020a03841660009081526002602052604090205460ff161561020c57600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561024d57600080fd5b505af1158015610261573d6000803e3d6000fd5b505050506040513d602081101561027757600080fd5b5051151561028457600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102c257600080fd5b505af11580156102d6573d6000803e3d6000fd5b505050506040513d60208110156102ec57600080fd5b50519150600060ff831610801590610308575060058260ff1611155b151561031357600080fd5b50600060ff82161515610331575069152d02c7e14af68000006103c2565b8160ff166001141561034e575069d3c21bcecceda10000006103c2565b8160ff166002141561036c57506a01a784379d99db420000006103c2565b8160ff166003141561038a57506a027b46536c66c8e30000006103c2565b8160ff16600414156103a857506a034f086f3b33b6840000006103c2565b8160ff16600514156103c257506a0422ca8b0a00a4250000005b600081116103cf57600080fd5b600160a060020a038085166000908152600260205260409020805460ff1916600190811790915554610410916201000090910416858363ffffffff6104bd16565b50505050565b670de0b6b3a764000081565b61042b3361046e565b151561043657600080fd5b61043f8161055c565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b6000610480818363ffffffff61056d16565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b6104bb336105a4565b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561052057600080fd5b505af1158015610534573d6000803e3d6000fd5b505050506040513d602081101561054a57600080fd5b5051151561055757600080fd5b505050565b61043f60008263ffffffff6105b516565b6000600160a060020a038216151561058457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61043f60008263ffffffff61060316565b600160a060020a03811615156105ca57600080fd5b6105d4828261056d565b156105de57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561061857600080fd5b610622828261056d565b151561062d57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058200648204d7a0ac13aa2e9ab7514200c49dd33ae54f0178fd146385ad3444f20ee0029", + "bytecode": "608060405234801561001057600080fd5b5060405160408061091a8339810160405280516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561006f9064010000000061008b810204565b506003805461ffff191661ffff92909216919091179055610134565b6100a36002826401000000006107116100a682021704565b50565b600160a060020a03811615156100bb57600080fd5b6100ce82826401000000006100fd810204565b156100d857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561011457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6107d7806101436000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632296f4c7146100bc57806325109e8b146100dd5780632e6b684914610104578063455acbcd14610125578063492fba841461013a57806349dc9ed01461014f578063608d3d3d146101645780639fc3c98314610199578063a89febb2146101ae578063aed6183f146101c3578063d43acc79146101d8575b600080fd5b3480156100b157600080fd5b506100ba6101ed565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661020b565b3480156100e957600080fd5b506100f2610475565b60408051918252519081900360200190f35b34801561011057600080fd5b506100ba600160a060020a0360043516610481565b34801561013157600080fd5b506100f26104a1565b34801561014657600080fd5b506100f26104b0565b34801561015b57600080fd5b506100f26104be565b34801561017057600080fd5b50610185600160a060020a03600435166104cd565b604080519115158252519081900360200190f35b3480156101a557600080fd5b506100f26104e6565b3480156101ba57600080fd5b506100f26104f4565b3480156101cf57600080fd5b506100f2610503565b3480156101e457600080fd5b506100ba610512565b6101f6336104cd565b151561020157600080fd5b61020961051b565b565b600080548190819074010000000000000000000000000000000000000000900460ff161561023857600080fd5b610241336104cd565b151561024c57600080fd5b600160a060020a03841660009081526004602052604090205460ff161561027257600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102b357600080fd5b505af11580156102c7573d6000803e3d6000fd5b505050506040513d60208110156102dd57600080fd5b505115156102ea57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032857600080fd5b505af115801561033c573d6000803e3d6000fd5b505050506040513d602081101561035257600080fd5b50519150600060ff83161080159061036e575060058260ff1611155b151561037957600080fd5b50600060ff82161515610397575069152d02c7e14af6800000610428565b8160ff16600114156103b4575069d3c21bcecceda1000000610428565b8160ff16600214156103d257506a01a784379d99db42000000610428565b8160ff16600314156103f057506a027b46536c66c8e3000000610428565b8160ff166004141561040e57506a034f086f3b33b684000000610428565b8160ff166005141561042857506a0422ca8b0a00a4250000005b6000811161043557600080fd5b600160a060020a038085166000908152600460205260409020805460ff191660019081179091555461046f9116858363ffffffff6105e216565b50505050565b670de0b6b3a764000081565b61048a336104cd565b151561049557600080fd5b61049e81610681565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b60006104e060028363ffffffff61069216565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b610209336106c9565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561058057600080fd5b505af1158015610594573d6000803e3d6000fd5b505050506040513d60208110156105aa57600080fd5b5051905060008111156105da576000546001546105da91600160a060020a0391821691168363ffffffff6105e216565b61049e6106da565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561064557600080fd5b505af1158015610659573d6000803e3d6000fd5b505050506040513d602081101561066f57600080fd5b5051151561067c57600080fd5b505050565b61049e60028263ffffffff61071116565b6000600160a060020a03821615156106a957600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61049e60028263ffffffff61075f16565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a038116151561072657600080fd5b6107308282610692565b1561073a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561077457600080fd5b61077e8282610692565b151561078957600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a7230582003c6fe797e016b5da34d582d5503b392dfdb98114c82abcb7165886533dc93b80029", "functionHashes": { "CAT_0_VALUE()": "9fc3c983", "CAT_1_VALUE()": "492fba84", @@ -182,25 +191,27 @@ "addCoreTeam(address)": "2e6b6849", "isCoreTeam(address)": "608d3d3d", "renounceCoreTeam()": "d43acc79", + "terminate()": "0c08bf88", "trasferToMiner(address)": "2296f4c7" }, "gasEstimates": { "creation": { - "codeDepositCost": "331800", + "codeDepositCost": "401400", "executionCost": "infinite", "totalCost": "infinite" }, "external": { - "CAT_0_VALUE()": "401", - "CAT_1_VALUE()": "335", - "CAT_2_VALUE()": "445", - "CAT_3_VALUE()": "357", - "CAT_4_VALUE()": "313", - "CAT_5_VALUE()": "423", - "TOKEN_FACTOR()": "269", + "CAT_0_VALUE()": "423", + "CAT_1_VALUE()": "357", + "CAT_2_VALUE()": "467", + "CAT_3_VALUE()": "379", + "CAT_4_VALUE()": "335", + "CAT_5_VALUE()": "445", + "TOKEN_FACTOR()": "291", "addCoreTeam(address)": "infinite", "isCoreTeam(address)": "infinite", "renounceCoreTeam()": "infinite", + "terminate()": "infinite", "trasferToMiner(address)": "infinite" } } diff --git a/labs/algo-token-playground/README.md b/labs/algo-token-playground/README.md index 6fbe74eb1..bf9aa722a 100644 --- a/labs/algo-token-playground/README.md +++ b/labs/algo-token-playground/README.md @@ -220,12 +220,12 @@ The following commands are supported for the `AlgoMiner` contract: #### deploy-algominer -`deploy-algominer [-n ]` +`deploy-algominer [-n ]` Creates a new instance of the `AlgoPool` contract. * `minerType`: the type of miner (uint16) * `category`: the category of miner (uint8: valid from 0 to 5) -* `ownerAddress`: the address of the miner's owner +* `minerAccountAddress`: the address of the miner's owner * `tokenAddress`: the address of the AlgoToken contract >Example: `deploy-algominer 1 2 miner_1_account token -n miner_1` diff --git a/labs/algo-token-playground/build/build-osx-x64.cmd b/labs/algo-token-playground/build/build-osx-x64.cmd index cefa1d982..61a0aadc3 100644 --- a/labs/algo-token-playground/build/build-osx-x64.cmd +++ b/labs/algo-token-playground/build/build-osx-x64.cmd @@ -1 +1 @@ -dotnet publish ../src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj -c Release -o ../../build/release/osx-x64 --self-contained -r osx-x64 --no-restore +dotnet publish ../src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj -c Release -o ../../build/release/osx-x64 --self-contained -r osx-x64 diff --git a/labs/algo-token-playground/build/build-osx-x64.sh b/labs/algo-token-playground/build/build-osx-x64.sh index 026a7234f..6740e82b0 100644 --- a/labs/algo-token-playground/build/build-osx-x64.sh +++ b/labs/algo-token-playground/build/build-osx-x64.sh @@ -1,2 +1,2 @@ #!/bin/bash -dotnet publish ../src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj -c Release -o ../../build/release/osx-x64 --self-contained -r osx-x64 --no-restore +dotnet publish ../src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj -c Release -o ../../build/release/osx-x64 --self-contained -r osx-x64 diff --git a/labs/algo-token-playground/build/build-win-x64.cmd b/labs/algo-token-playground/build/build-win-x64.cmd index 145d0900f..ea75e2ad0 100644 --- a/labs/algo-token-playground/build/build-win-x64.cmd +++ b/labs/algo-token-playground/build/build-win-x64.cmd @@ -1 +1 @@ -dotnet publish ../src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj -c Release -o ../../build/release/win-x64 --self-contained -r win-x64 --no-restore +dotnet publish ../src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj -c Release -o ../../build/release/win-x64 --self-contained -r win-x64 diff --git a/labs/algo-token-playground/build/build-win-x64.sh b/labs/algo-token-playground/build/build-win-x64.sh index 360c2d46b..1df886e0d 100644 --- a/labs/algo-token-playground/build/build-win-x64.sh +++ b/labs/algo-token-playground/build/build-win-x64.sh @@ -1,2 +1,2 @@ #!/bin/bash -dotnet publish ../src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj -c Release -o ../../build/release/win-x64 --self-contained -r win-x64 --no-restore +dotnet publish ../src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj -c Release -o ../../build/release/win-x64 --self-contained -r win-x64 diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerDeployCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerDeployCommand.cs index e4b29288b..e335c7432 100644 --- a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerDeployCommand.cs +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerDeployCommand.cs @@ -16,7 +16,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoMinerContract public ushort MinerType { get; set; } public byte Category { get; set; } - public string OwnerAddress { get; set; } + public string MinerAccountAddress { get; set; } public string TokenAddress { get; set; } protected override async Task DeployContractAsync(RuntimeContext context, Web3 web3) @@ -25,7 +25,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoMinerContract return await algoMiner.DeployAsync( MinerType, Category, - context.ResolveAccountReference(OwnerAddress), + context.ResolveAccountReference(MinerAccountAddress), context.ResolveContractReference(TokenAddress)); } } diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoMinerParsers.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoMinerParsers.cs index b0988f086..3e10cfd1a 100644 --- a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoMinerParsers.cs +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoMinerParsers.cs @@ -13,7 +13,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Parsers (from command in CommonParsers.Token("deploy-algominer") from minerType in CommonParsers.IntegerValue from category in CommonParsers.IntegerValue - from ownerAddress in CommonParsers.StringValue + from minerAccountAddress in CommonParsers.StringValue from tokenAddress in CommonParsers.StringValue from name in CommonParsers.Switch('n', "name", CommonParsers.Identifier).Optional() select new AlgoMinerDeployCommand @@ -21,7 +21,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Parsers Name = name.GetOrDefault(), MinerType = (ushort)minerType, Category = (byte)category, - OwnerAddress = ownerAddress, + MinerAccountAddress = minerAccountAddress, TokenAddress = tokenAddress }).Register(); From 58a5a356ea754935147dedceede15a2c81420dc1 Mon Sep 17 00:00:00 2001 From: pmmax Date: Sun, 16 Dec 2018 23:11:58 -0300 Subject: [PATCH 10/17] Added "non-pool-based" miner type and updated business rules. Added referral for miners. Added "referral" pool type and updated business rules. Updated tests and playground. --- .../AlgoMiner.cs | 10 +- .../AlgoPool.cs | 2 +- .../SmartContracts/src/AlgoCommon.sol | 28 + .../SmartContracts/src/AlgoMiner.sol | 68 +- .../SmartContracts/src/AlgoPool.sol | 37 +- .../SmartContracts/src/IAlgoMiner.sol | 1 + .../src/bin/AlgoFees-sol-output.json | 1993 +- .../SmartContracts/src/bin/AlgoFees.bin | 2 +- .../SmartContracts/src/bin/AlgoFees.json | 2 +- .../src/bin/AlgoMiner-sol-output.json | 20098 +++++++++------- .../SmartContracts/src/bin/AlgoMiner.abi | 2 +- .../SmartContracts/src/bin/AlgoMiner.bin | 2 +- .../SmartContracts/src/bin/AlgoMiner.json | 132 +- .../src/bin/AlgoPool-sol-output.json | 11683 ++++----- .../SmartContracts/src/bin/AlgoPool.abi | 2 +- .../SmartContracts/src/bin/AlgoPool.bin | 2 +- .../SmartContracts/src/bin/AlgoPool.json | 118 +- .../SmartContracts/src/package-lock.json | 8 +- .../SmartContracts/src/package.json | 4 +- .../AlgoFeesTests.cs | 25 +- .../AlgoMinerTests.cs | 25 +- .../AlgoPoolTests.cs | 67 +- labs/algo-token-playground/README.md | 16 +- ...algofees-script.md => algofees-script.txt} | 40 +- ...ipt.md => pool-based-algominer-script.txt} | 11 +- .../AlgoMinerDeployCommand.cs | 4 +- .../AlgoMinerResetMinerCommand.cs | 5 +- .../AlgoPoolContract/AlgoPoolDeployCommand.cs | 2 +- .../Parsers/AlgoMinerParsers.cs | 14 +- .../Parsers/AlgoPoolParsers.cs | 4 +- .../Parsers/CommonParsers.cs | 3 + .../Runtime/RuntimeContext.cs | 2 + 32 files changed, 18945 insertions(+), 15467 deletions(-) create mode 100644 labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol rename labs/algo-token-playground/{algofees-script.md => algofees-script.txt} (57%) rename labs/algo-token-playground/{algotoken-script.md => pool-based-algominer-script.txt} (62%) diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoMiner.cs b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoMiner.cs index 78b531e85..f411a72ac 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoMiner.cs +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoMiner.cs @@ -32,10 +32,10 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution protected override string AbiResourceName => $"SmartContracts.src.bin.{nameof(AlgoMiner)}.abi"; protected override string BinResourceName => $"SmartContracts.src.bin.{nameof(AlgoMiner)}.bin"; - protected override BigInteger DeploymentGasUnits => 1400000; + protected override BigInteger DeploymentGasUnits => 1600000; - public Task DeployAsync(ushort minerType, byte category, string minerAccountAddress, string tokenAddress) - => base.DeployAsync(minerType, category, minerAccountAddress, tokenAddress); + public Task DeployAsync(byte minerType, byte category, string minerAccountAddress, string referralAccountAddress, string tokenAddress) + => base.DeployAsync(minerType, category, minerAccountAddress, referralAccountAddress, tokenAddress); protected override void Initialize(Contract contractDescriptor) { @@ -73,8 +73,8 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution public Task StopAndRemoveOwnershipAsync() => InvokeAsync(_stopAndRemoveOwnership, 900000); - public Task ResetMinerAsync(string newOwnerAddress) => - InvokeAsync(_resetMiner, 900000, newOwnerAddress); + public Task ResetMinerAsync(string newOwnerAddress, string newReferralAddress) => + InvokeAsync(_resetMiner, 900000, newOwnerAddress, newReferralAddress); public Task StartMiningAsync() => InvokeAsync(_startMining, 900000); diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoPool.cs b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoPool.cs index 2e6d95c61..7fbf9a3ca 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoPool.cs +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoPool.cs @@ -21,7 +21,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution protected override string BinResourceName => $"SmartContracts.src.bin.{nameof(AlgoPool)}.bin"; protected override BigInteger DeploymentGasUnits => 1200000; - public Task DeployAsync(ushort poolType, string tokenAddress) + public Task DeployAsync(byte poolType, string tokenAddress) => base.DeployAsync(poolType, tokenAddress); protected override void Initialize(Contract contractDescriptor) diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol new file mode 100644 index 000000000..72a9392ea --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol @@ -0,0 +1,28 @@ +pragma solidity 0.4.24; + +contract AlgoCommon { + + uint256 internal constant TOKEN_FACTOR = 10 ** uint256(18); + uint256 internal constant CAT_0_VALUE = 100000 * TOKEN_FACTOR; + uint256 internal constant CAT_1_VALUE = 1000000 * TOKEN_FACTOR; + uint256 internal constant CAT_2_VALUE = 2 * 1000000 * TOKEN_FACTOR; + uint256 internal constant CAT_3_VALUE = 3 * 1000000 * TOKEN_FACTOR; + uint256 internal constant CAT_4_VALUE = 4 * 1000000 * TOKEN_FACTOR; + uint256 internal constant CAT_5_VALUE = 5 * 1000000 * TOKEN_FACTOR; + + function getCapacityByCategory(uint8 category) internal pure returns (uint256) { + if(category == 0) { + return CAT_0_VALUE; + } else if(category == 1) { + return CAT_1_VALUE; + } else if(category == 2) { + return CAT_2_VALUE; + } else if(category == 3) { + return CAT_3_VALUE; + } else if(category == 4) { + return CAT_4_VALUE; + } else if(category == 5) { + return CAT_5_VALUE; + } + } +} \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol index 555aa271a..80ea7a1f4 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol @@ -4,16 +4,22 @@ import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol"; import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol"; import "./IAlgoMiner.sol"; +import "./AlgoCommon.sol"; import "./ERC20TokenHolder.sol"; import "./AlgoSystemRole.sol"; import "./AlgoCoreTeamRole.sol"; import "./AlgoSupervisorRole.sol"; -contract AlgoMiner is ERC20TokenHolder, AlgoSystemRole, AlgoCoreTeamRole, AlgoSupervisorRole, IAlgoMiner { +contract AlgoMiner is AlgoCommon, ERC20TokenHolder, AlgoSystemRole, AlgoCoreTeamRole, AlgoSupervisorRole, IAlgoMiner { using SafeERC20 for IERC20; uint256 public constant DAYS_PER_YEAR = 365; + enum MinerType { + PoolBased, + NonPoolBased + } + enum MinerState { Deactivated, Activated, @@ -21,9 +27,10 @@ contract AlgoMiner is ERC20TokenHolder, AlgoSystemRole, AlgoCoreTeamRole, AlgoSu Stopped } - uint16 private _minerType; + MinerType private _minerType; uint8 private _category; address private _miner; + address private _referral; MinerState private _state; bool private _mining; @@ -31,7 +38,7 @@ contract AlgoMiner is ERC20TokenHolder, AlgoSystemRole, AlgoCoreTeamRole, AlgoSu uint16 private _currentDay; uint256 private _currentYearSupply; - constructor(uint16 minerType, uint8 category, address minerAccountAddress, address tokenAddress) + constructor(MinerType minerType, uint8 category, address minerAccountAddress, address referralAccountAddress, address tokenAddress) ERC20TokenHolder(tokenAddress) AlgoSystemRole() AlgoCoreTeamRole() @@ -43,6 +50,7 @@ contract AlgoMiner is ERC20TokenHolder, AlgoSystemRole, AlgoCoreTeamRole, AlgoSu _minerType = minerType; _category = category; _miner = minerAccountAddress; + _referral = referralAccountAddress; } modifier onlyMiner() { @@ -53,12 +61,16 @@ contract AlgoMiner is ERC20TokenHolder, AlgoSystemRole, AlgoCoreTeamRole, AlgoSu function activateMiner() public notTerminated onlyCoreTeam { require(_state == MinerState.Deactivated); - if(_currentYearSupply == 0) { + if(_minerType == MinerType.PoolBased && _currentYearSupply == 0) { + + uint256 capacity = getCapacityByCategory(_category); + uint256 expectedBalance = capacity + capacity * 10 / 100; + uint256 currentBalance = _token.balanceOf(address(this)); - require(currentBalance != 0); + require(currentBalance == expectedBalance); - _currentYearSupply = currentBalance / 2; + _currentYearSupply = capacity / 2; } _state = MinerState.Activated; @@ -71,7 +83,6 @@ contract AlgoMiner is ERC20TokenHolder, AlgoSystemRole, AlgoCoreTeamRole, AlgoSu _mining = false; } - // TODO: Transfer the entire state to the new miner. function migrateMiner(address newMinerAddress) public onlyCoreTeam { require(_state == MinerState.Deactivated); @@ -96,13 +107,15 @@ contract AlgoMiner is ERC20TokenHolder, AlgoSystemRole, AlgoCoreTeamRole, AlgoSu _state = MinerState.Stopped; _mining = false; _miner = address(0); + _referral = address(0); } - function resetMiner(address newOwnerAddress) public notTerminated onlySupervisor { + function resetMiner(address newOwnerAddress, address newReferralAddress) public notTerminated onlySupervisor { require(_state == MinerState.Stopped); _state = MinerState.Activated; _miner = newOwnerAddress; + _referral = newReferralAddress; } function startMining() public notTerminated onlyMiner { @@ -120,6 +133,7 @@ contract AlgoMiner is ERC20TokenHolder, AlgoSystemRole, AlgoCoreTeamRole, AlgoSu } function mine() public notTerminated onlySystem { + require(_minerType == MinerType.PoolBased); require(_state == MinerState.Activated); require(_mining); @@ -135,11 +149,19 @@ contract AlgoMiner is ERC20TokenHolder, AlgoSystemRole, AlgoCoreTeamRole, AlgoSu } } - uint256 tokens = _currentYearSupply / DAYS_PER_YEAR; + uint256 minerTokens = _currentYearSupply / DAYS_PER_YEAR; - require(tokens > 0); + require(minerTokens > 0); - _token.safeTransfer(_miner, tokens); + _token.safeTransfer(_miner, minerTokens); + + if(_referral != address(0)) { + uint256 referralTokens = minerTokens * 10 / 100; + + require(referralTokens > 0); + + _token.safeTransfer(_referral, referralTokens); + } } function terminate() public onlyCoreTeam { @@ -150,15 +172,35 @@ contract AlgoMiner is ERC20TokenHolder, AlgoSystemRole, AlgoCoreTeamRole, AlgoSu return true; } + function getMinerType() public view returns (uint8) { + return uint8(_minerType); + } + function getCategory() public view returns (uint8) { return _category; } + function getMiner() public view returns (address) { + return _miner; + } + + function getReferral() public view returns (address) { + return _referral; + } + function isMining() public view returns (bool) { return _state == MinerState.Activated && _mining; } - function getMiner() public view returns (address) { - return _miner; + function getCurrentYear() public view returns (uint8) { + return _currentYear; + } + + function getCurrentDay() public view returns (uint16) { + return _currentDay; + } + + function getCurrentYearSupply() public view returns (uint256) { + return _currentYearSupply; } } diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol index 1edcb38c2..4e56cb1f7 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol @@ -4,24 +4,22 @@ import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol"; import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol"; import "./IAlgoMiner.sol"; +import "./AlgoCommon.sol"; import "./ERC20TokenHolder.sol"; import "./AlgoCoreTeamRole.sol"; -contract AlgoPool is ERC20TokenHolder, AlgoCoreTeamRole { +contract AlgoPool is AlgoCommon, ERC20TokenHolder, AlgoCoreTeamRole { using SafeERC20 for IERC20; - uint256 public constant TOKEN_FACTOR = 10 ** uint256(18); - uint256 public constant CAT_0_VALUE = 100000 * TOKEN_FACTOR; - uint256 public constant CAT_1_VALUE = 1000000 * TOKEN_FACTOR; - uint256 public constant CAT_2_VALUE = 2 * 1000000 * TOKEN_FACTOR; - uint256 public constant CAT_3_VALUE = 3 * 1000000 * TOKEN_FACTOR; - uint256 public constant CAT_4_VALUE = 4 * 1000000 * TOKEN_FACTOR; - uint256 public constant CAT_5_VALUE = 5 * 1000000 * TOKEN_FACTOR; + enum PoolType { + MinerPool, + ReferralPool + } - uint16 private _poolType; + PoolType private _poolType; mapping(address => bool) _fundedMiners; - constructor(uint16 poolType, address tokenAddress) + constructor(PoolType poolType, address tokenAddress) ERC20TokenHolder(tokenAddress) AlgoCoreTeamRole() public { @@ -39,24 +37,13 @@ contract AlgoPool is ERC20TokenHolder, AlgoCoreTeamRole { require(minerCategory >= 0 && minerCategory <= 5); - uint256 value = 0; + uint256 value = getCapacityByCategory(minerCategory); - if(minerCategory == 0) { - value = CAT_0_VALUE; - } else if(minerCategory == 1) { - value = CAT_1_VALUE; - } else if(minerCategory == 2) { - value = CAT_2_VALUE; - } else if(minerCategory == 3) { - value = CAT_3_VALUE; - } else if(minerCategory == 4) { - value = CAT_4_VALUE; - } else if(minerCategory == 5) { - value = CAT_5_VALUE; + // For referral pools only transfer the 10% of the category capacity. + if(_poolType == PoolType.ReferralPool) { + value = value * 10 / 100; } - require(value > 0); - _fundedMiners[minerAddress] = true; _token.safeTransfer(minerAddress, value); } diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol index 109671f2b..6e28d508e 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol @@ -2,6 +2,7 @@ pragma solidity 0.4.24; contract IAlgoMiner { function isAlgoMiner() public pure returns (bool); + function getMinerType() public view returns (uint8); function getCategory() public view returns (uint8); function isMining() public view returns (bool); function getMiner() public view returns (address); diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json index 05aa66a62..c3bf41b72 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json @@ -259,8 +259,8 @@ "evm": { "bytecode": { "linkReferences": {}, - "object": "60806040523480156200001157600080fd5b50604051602080620010d083398101604052516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790556200006c90640100000000620000c7810204565b6200008033640100000000620000e5810204565b50600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054600160a060020a031916905562000193565b620000e260028264010000000062000e066200010082021704565b50565b620000e260038264010000000062000e066200010082021704565b600160a060020a03811615156200011657600080fd5b6200012b82826401000000006200015b810204565b156200013657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200017357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610f2d80620001a36000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632e6b6849146100bc578063341ccfcb146100dd57806334cdcf26146100fe5780633d19ab1314610133578063608d3d3d1461016757806374be75921461018857806381f909f3146101a957806399f4b251146101ca578063bb52c137146101df578063d43acc7914610206578063e9d618591461021b575b600080fd5b3480156100b157600080fd5b506100ba610230565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661024e565b3480156100e957600080fd5b506100ba600160a060020a036004351661026e565b34801561010a57600080fd5b5061011f600160a060020a0360043516610457565b604080519115158252519081900360200190f35b34801561013f57600080fd5b5061014b600435610470565b60408051600160a060020a039092168252519081900360200190f35b34801561017357600080fd5b5061011f600160a060020a036004351661049f565b34801561019457600080fd5b506100ba600160a060020a03600435166104b2565b3480156101b557600080fd5b506100ba600160a060020a03600435166104cf565b3480156101d657600080fd5b506100ba610686565b3480156101eb57600080fd5b506101f4610bd1565b60408051918252519081900360200190f35b34801561021257600080fd5b506100ba610bdc565b34801561022757600080fd5b506100ba610be5565b6102393361049f565b151561024457600080fd5b61024c610bee565b565b6102573361049f565b151561026257600080fd5b61026b81610cb5565b50565b60008054819074010000000000000000000000000000000000000000900460ff161561029957600080fd5b6102a23361049f565b15156102ad57600080fd5b6004546103e8116102bd57600080fd5b600160a060020a038316600090815260056020526040902054156102e057600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032157600080fd5b505af1158015610335573d6000803e3d6000fd5b505050506040513d602081101561034b57600080fd5b5051151561035857600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b505050506040513d60208110156103c057600080fd5b50519050600060ff8216108015906103dc575060058160ff1611155b15156103e757600080fd5b505060048054600160a060020a039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b600061046a60028363ffffffff610cc616565b92915050565b600060048260010181548110151561048457fe5b600091825260209091200154600160a060020a031692915050565b600061046a60038363ffffffff610cc616565b6104bb33610457565b15156104c657600080fd5b61026b81610cfd565b60005474010000000000000000000000000000000000000000900460ff16156104f757600080fd5b6105003361049f565b151561050b57600080fd5b60045460011061051a57600080fd5b600454600214156105865760048054600190811061053457fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff191690556001610567600482610ea0565b50600160a060020a03811660009081526005602052604081205561026b565b600454600160a060020a03821660009081526005602052604090205414610620576004805460001981019081106105b957fe5b6000918252602080832090910154600160a060020a03848116845260059092526040909220546004805492909316929181106105f157fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60048054600019810190811061063257fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff19169055600480549061066b906000198301610ea0565b50600160a060020a0316600090815260056020526040812055565b6000610690610ec4565b60008060008061069e610ec4565b60005474010000000000000000000000000000000000000000900460ff16156106c657600080fd5b6106cf33610457565b15156106da57600080fd5b6004546001106106e957600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b505050506040513d602081101561077957600080fd5b505196506000871161078a57600080fd5b600194505b6004548510156109395760048054869081106107a757fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561080557600080fd5b505af1158015610819573d6000803e3d6000fd5b505050506040513d602081101561082f57600080fd5b5051151561083c5761092e565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561087a57600080fd5b505af115801561088e573d6000803e3d6000fd5b505050506040513d60208110156108a457600080fd5b5051925060ff831615156108c6578560005b602002018051600101905261092e565b8260ff16600114156108da578560016108b6565b8260ff16600214156108ee578560026108b6565b8260ff1660031415610902578560036108b6565b8260ff1660041415610916578560046108b6565b8260ff166005141561092e5760a08601805160010190525b60019094019361078f565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e909102016028909102016032909102019150818781151561097f57fe5b04815281600a880281151561099057fe5b04602082015281601488028115156109a457fe5b04604082015281601e88028115156109b857fe5b04606082015281602888028115156109cc57fe5b04608082015281603288028115156109e057fe5b0460a0820152600194505b600454851015610bc8576004805486908110610a0357fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a6157600080fd5b505af1158015610a75573d6000803e3d6000fd5b505050506040513d6020811015610a8b57600080fd5b50511515610a9857610bbd565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b505050506040513d6020811015610b0057600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610bbd91600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610b6457600080fd5b505af1158015610b78573d6000803e3d6000fd5b505050506040513d6020811015610b8e57600080fd5b50518260ff861660068110610b9f57fe5b6020020151600154600160a060020a0316919063ffffffff610d0e16565b6001909401936109eb565b50505050505050565b600454600019015b90565b61024c33610dad565b61024c33610dbe565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b505050506040513d6020811015610c7d57600080fd5b505190506000811115610cad57600054600154610cad91600160a060020a0391821691168363ffffffff610d0e16565b61026b610dcf565b61026b60038263ffffffff610e0616565b6000600160a060020a0382161515610cdd57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61026b60028263ffffffff610e0616565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610d7157600080fd5b505af1158015610d85573d6000803e3d6000fd5b505050506040513d6020811015610d9b57600080fd5b50511515610da857600080fd5b505050565b61026b60038263ffffffff610e5416565b61026b60028263ffffffff610e5416565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a0381161515610e1b57600080fd5b610e258282610cc6565b15610e2f57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610e6957600080fd5b610e738282610cc6565b1515610e7e57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610da857600083815260209020610da8918101908301610ee3565b60c0604051908101604052806006906020820280388339509192915050565b610bd991905b80821115610efd5760008155600101610ee9565b50905600a165627a7a723058201033067a6ceafcfdd5906365e4a9ea37491edaca7ecea2eae390d605b7aa71c30029", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP1 PUSH3 0x10D0 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE MLOAD PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP2 DUP3 AND DUP2 OR PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND OR SWAP1 SSTORE PUSH3 0x6C SWAP1 PUSH5 0x100000000 PUSH3 0xC7 DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x80 CALLER PUSH5 0x100000000 PUSH3 0xE5 DUP2 MUL DIV JUMP JUMPDEST POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT AND SWAP1 SSTORE PUSH3 0x193 JUMP JUMPDEST PUSH3 0xE2 PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH3 0xE06 PUSH3 0x100 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0xE2 PUSH1 0x3 DUP3 PUSH5 0x100000000 PUSH3 0xE06 PUSH3 0x100 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH3 0x116 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x12B DUP3 DUP3 PUSH5 0x100000000 PUSH3 0x15B DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH3 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xF2D DUP1 PUSH3 0x1A3 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA0 JUMPI PUSH4 0xFFFFFFFF PUSH1 0xE0 PUSH1 0x2 EXP PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0xC08BF88 DUP2 EQ PUSH2 0xA5 JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0xBC JUMPI DUP1 PUSH4 0x341CCFCB EQ PUSH2 0xDD JUMPI DUP1 PUSH4 0x34CDCF26 EQ PUSH2 0xFE JUMPI DUP1 PUSH4 0x3D19AB13 EQ PUSH2 0x133 JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0x74BE7592 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0x81F909F3 EQ PUSH2 0x1A9 JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x1CA JUMPI DUP1 PUSH4 0xBB52C137 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x206 JUMPI DUP1 PUSH4 0xE9D61859 EQ PUSH2 0x21B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0x230 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x24E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x26E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11F PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x457 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14B PUSH1 0x4 CALLDATALOAD PUSH2 0x470 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11F PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x49F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x194 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x4B2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x4CF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0x686 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F4 PUSH2 0xBD1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x212 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0xBDC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x227 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0xBE5 JUMP JUMPDEST PUSH2 0x239 CALLER PUSH2 0x49F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24C PUSH2 0xBEE JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x257 CALLER PUSH2 0x49F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x26B DUP2 PUSH2 0xCB5 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A2 CALLER PUSH2 0x49F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x2AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x3E8 GT PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x2E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x321 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x335 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x358 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0xFF DUP3 AND LT DUP1 ISZERO SWAP1 PUSH2 0x3DC JUMPI POP PUSH1 0x5 DUP2 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0x3E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP5 SWAP1 SSTORE PUSH1 0x1 DUP5 ADD DUP4 SSTORE SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B SWAP1 SWAP2 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46A PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xCC6 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 DUP3 PUSH1 0x1 ADD DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x484 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46A PUSH1 0x3 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xCC6 AND JUMP JUMPDEST PUSH2 0x4BB CALLER PUSH2 0x457 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x26B DUP2 PUSH2 0xCFD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x4F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x500 CALLER PUSH2 0x49F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x50B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 LT PUSH2 0x51A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x2 EQ ISZERO PUSH2 0x586 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 SWAP1 DUP2 LT PUSH2 0x534 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE PUSH1 0x1 PUSH2 0x567 PUSH1 0x4 DUP3 PUSH2 0xEA0 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH2 0x26B JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ PUSH2 0x620 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x5B9 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 DUP2 AND DUP5 MSTORE PUSH1 0x5 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 SWAP3 KECCAK256 SLOAD PUSH1 0x4 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP3 SWAP2 DUP2 LT PUSH2 0x5F1 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x632 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD SWAP1 PUSH2 0x66B SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0xEA0 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x690 PUSH2 0xEC4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x69E PUSH2 0xEC4 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x6C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6CF CALLER PUSH2 0x457 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x6DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 LT PUSH2 0x6E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x74F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x763 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x779 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP7 POP PUSH1 0x0 DUP8 GT PUSH2 0x78A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SWAP5 POP JUMPDEST PUSH1 0x4 SLOAD DUP6 LT ISZERO PUSH2 0x939 JUMPI PUSH1 0x4 DUP1 SLOAD DUP7 SWAP1 DUP2 LT PUSH2 0x7A7 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP4 POP DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x19A74AB3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x805 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x819 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x82F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x83C JUMPI PUSH2 0x92E JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x87A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x88E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP PUSH1 0xFF DUP4 AND ISZERO ISZERO PUSH2 0x8C6 JUMPI DUP6 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE PUSH2 0x92E JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x8DA JUMPI DUP6 PUSH1 0x1 PUSH2 0x8B6 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x8EE JUMPI DUP6 PUSH1 0x2 PUSH2 0x8B6 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x902 JUMPI DUP6 PUSH1 0x3 PUSH2 0x8B6 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x916 JUMPI DUP6 PUSH1 0x4 PUSH2 0x8B6 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x92E JUMPI PUSH1 0xA0 DUP7 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE JUMPDEST PUSH1 0x1 SWAP1 SWAP5 ADD SWAP4 PUSH2 0x78F JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x40 DUP10 ADD MLOAD PUSH1 0x20 DUP11 ADD MLOAD DUP11 MLOAD PUSH1 0xA SWAP1 SWAP2 MUL ADD PUSH1 0x14 SWAP1 SWAP2 MUL ADD PUSH1 0x1E SWAP1 SWAP2 MUL ADD PUSH1 0x28 SWAP1 SWAP2 MUL ADD PUSH1 0x32 SWAP1 SWAP2 MUL ADD SWAP2 POP DUP2 DUP8 DUP2 ISZERO ISZERO PUSH2 0x97F JUMPI INVALID JUMPDEST DIV DUP2 MSTORE DUP2 PUSH1 0xA DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x990 JUMPI INVALID JUMPDEST DIV PUSH1 0x20 DUP3 ADD MSTORE DUP2 PUSH1 0x14 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x9A4 JUMPI INVALID JUMPDEST DIV PUSH1 0x40 DUP3 ADD MSTORE DUP2 PUSH1 0x1E DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x9B8 JUMPI INVALID JUMPDEST DIV PUSH1 0x60 DUP3 ADD MSTORE DUP2 PUSH1 0x28 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x9CC JUMPI INVALID JUMPDEST DIV PUSH1 0x80 DUP3 ADD MSTORE DUP2 PUSH1 0x32 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x9E0 JUMPI INVALID JUMPDEST DIV PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x1 SWAP5 POP JUMPDEST PUSH1 0x4 SLOAD DUP6 LT ISZERO PUSH2 0xBC8 JUMPI PUSH1 0x4 DUP1 SLOAD DUP7 SWAP1 DUP2 LT PUSH2 0xA03 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP4 POP DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x19A74AB3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA75 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xA98 JUMPI PUSH2 0xBBD JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAEA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x302C11CA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP5 POP PUSH2 0xBBD SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND SWAP2 PUSH4 0x302C11CA SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB78 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 PUSH1 0xFF DUP7 AND PUSH1 0x6 DUP2 LT PUSH2 0xB9F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xD0E AND JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP5 ADD SWAP4 PUSH2 0x9EB JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 NOT ADD JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24C CALLER PUSH2 0xDAD JUMP JUMPDEST PUSH2 0x24C CALLER PUSH2 0xDBE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC67 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0xCAD JUMPI PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0xCAD SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xD0E AND JUMP JUMPDEST PUSH2 0x26B PUSH2 0xDCF JUMP JUMPDEST PUSH2 0x26B PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE06 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xCDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x26B PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE06 AND JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD85 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xDA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x26B PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE54 AND JUMP JUMPDEST PUSH2 0x26B PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE54 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xE1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE25 DUP3 DUP3 PUSH2 0xCC6 JUMP JUMPDEST ISZERO PUSH2 0xE2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xE69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE73 DUP3 DUP3 PUSH2 0xCC6 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xE7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0xDA8 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH2 0xDA8 SWAP2 DUP2 ADD SWAP1 DUP4 ADD PUSH2 0xEE3 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xBD9 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xEFD JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xEE9 JUMP JUMPDEST POP SWAP1 JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 LT CALLER MOD PUSH27 0x6CEAFCFDD5906365E4A9EA37491EDACA7ECEA2EAE390D605B7AA71 0xc3 STOP 0x29 ", + "object": "60806040523480156200001157600080fd5b50604051602080620010d083398101604052516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790556200006c90640100000000620000c7810204565b6200008033640100000000620000e5810204565b50600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054600160a060020a031916905562000193565b620000e260028264010000000062000e066200010082021704565b50565b620000e260038264010000000062000e066200010082021704565b600160a060020a03811615156200011657600080fd5b6200012b82826401000000006200015b810204565b156200013657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200017357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610f2d80620001a36000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632e6b6849146100bc578063341ccfcb146100dd57806334cdcf26146100fe5780633d19ab1314610133578063608d3d3d1461016757806374be75921461018857806381f909f3146101a957806399f4b251146101ca578063bb52c137146101df578063d43acc7914610206578063e9d618591461021b575b600080fd5b3480156100b157600080fd5b506100ba610230565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661024e565b3480156100e957600080fd5b506100ba600160a060020a036004351661026e565b34801561010a57600080fd5b5061011f600160a060020a0360043516610457565b604080519115158252519081900360200190f35b34801561013f57600080fd5b5061014b600435610470565b60408051600160a060020a039092168252519081900360200190f35b34801561017357600080fd5b5061011f600160a060020a036004351661049f565b34801561019457600080fd5b506100ba600160a060020a03600435166104b2565b3480156101b557600080fd5b506100ba600160a060020a03600435166104cf565b3480156101d657600080fd5b506100ba610686565b3480156101eb57600080fd5b506101f4610bd1565b60408051918252519081900360200190f35b34801561021257600080fd5b506100ba610bdc565b34801561022757600080fd5b506100ba610be5565b6102393361049f565b151561024457600080fd5b61024c610bee565b565b6102573361049f565b151561026257600080fd5b61026b81610cb5565b50565b60008054819074010000000000000000000000000000000000000000900460ff161561029957600080fd5b6102a23361049f565b15156102ad57600080fd5b6004546103e8116102bd57600080fd5b600160a060020a038316600090815260056020526040902054156102e057600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032157600080fd5b505af1158015610335573d6000803e3d6000fd5b505050506040513d602081101561034b57600080fd5b5051151561035857600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b505050506040513d60208110156103c057600080fd5b50519050600060ff8216108015906103dc575060058160ff1611155b15156103e757600080fd5b505060048054600160a060020a039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b600061046a60028363ffffffff610cc616565b92915050565b600060048260010181548110151561048457fe5b600091825260209091200154600160a060020a031692915050565b600061046a60038363ffffffff610cc616565b6104bb33610457565b15156104c657600080fd5b61026b81610cfd565b60005474010000000000000000000000000000000000000000900460ff16156104f757600080fd5b6105003361049f565b151561050b57600080fd5b60045460011061051a57600080fd5b600454600214156105865760048054600190811061053457fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff191690556001610567600482610ea0565b50600160a060020a03811660009081526005602052604081205561026b565b600454600160a060020a03821660009081526005602052604090205414610620576004805460001981019081106105b957fe5b6000918252602080832090910154600160a060020a03848116845260059092526040909220546004805492909316929181106105f157fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60048054600019810190811061063257fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff19169055600480549061066b906000198301610ea0565b50600160a060020a0316600090815260056020526040812055565b6000610690610ec4565b60008060008061069e610ec4565b60005474010000000000000000000000000000000000000000900460ff16156106c657600080fd5b6106cf33610457565b15156106da57600080fd5b6004546001106106e957600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b505050506040513d602081101561077957600080fd5b505196506000871161078a57600080fd5b600194505b6004548510156109395760048054869081106107a757fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561080557600080fd5b505af1158015610819573d6000803e3d6000fd5b505050506040513d602081101561082f57600080fd5b5051151561083c5761092e565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561087a57600080fd5b505af115801561088e573d6000803e3d6000fd5b505050506040513d60208110156108a457600080fd5b5051925060ff831615156108c6578560005b602002018051600101905261092e565b8260ff16600114156108da578560016108b6565b8260ff16600214156108ee578560026108b6565b8260ff1660031415610902578560036108b6565b8260ff1660041415610916578560046108b6565b8260ff166005141561092e5760a08601805160010190525b60019094019361078f565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e909102016028909102016032909102019150818781151561097f57fe5b04815281600a880281151561099057fe5b04602082015281601488028115156109a457fe5b04604082015281601e88028115156109b857fe5b04606082015281602888028115156109cc57fe5b04608082015281603288028115156109e057fe5b0460a0820152600194505b600454851015610bc8576004805486908110610a0357fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a6157600080fd5b505af1158015610a75573d6000803e3d6000fd5b505050506040513d6020811015610a8b57600080fd5b50511515610a9857610bbd565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b505050506040513d6020811015610b0057600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610bbd91600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610b6457600080fd5b505af1158015610b78573d6000803e3d6000fd5b505050506040513d6020811015610b8e57600080fd5b50518260ff861660068110610b9f57fe5b6020020151600154600160a060020a0316919063ffffffff610d0e16565b6001909401936109eb565b50505050505050565b600454600019015b90565b61024c33610dad565b61024c33610dbe565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b505050506040513d6020811015610c7d57600080fd5b505190506000811115610cad57600054600154610cad91600160a060020a0391821691168363ffffffff610d0e16565b61026b610dcf565b61026b60038263ffffffff610e0616565b6000600160a060020a0382161515610cdd57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61026b60028263ffffffff610e0616565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610d7157600080fd5b505af1158015610d85573d6000803e3d6000fd5b505050506040513d6020811015610d9b57600080fd5b50511515610da857600080fd5b505050565b61026b60038263ffffffff610e5416565b61026b60028263ffffffff610e5416565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a0381161515610e1b57600080fd5b610e258282610cc6565b15610e2f57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610e6957600080fd5b610e738282610cc6565b1515610e7e57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610da857600083815260209020610da8918101908301610ee3565b60c0604051908101604052806006906020820280388339509192915050565b610bd991905b80821115610efd5760008155600101610ee9565b50905600a165627a7a72305820c97e98efb9f61c8f769238044b274ddcf265ed47d4444eab2134a813ff57783b0029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP1 PUSH3 0x10D0 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE MLOAD PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP2 DUP3 AND DUP2 OR PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND OR SWAP1 SSTORE PUSH3 0x6C SWAP1 PUSH5 0x100000000 PUSH3 0xC7 DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x80 CALLER PUSH5 0x100000000 PUSH3 0xE5 DUP2 MUL DIV JUMP JUMPDEST POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT AND SWAP1 SSTORE PUSH3 0x193 JUMP JUMPDEST PUSH3 0xE2 PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH3 0xE06 PUSH3 0x100 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0xE2 PUSH1 0x3 DUP3 PUSH5 0x100000000 PUSH3 0xE06 PUSH3 0x100 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH3 0x116 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x12B DUP3 DUP3 PUSH5 0x100000000 PUSH3 0x15B DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH3 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xF2D DUP1 PUSH3 0x1A3 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA0 JUMPI PUSH4 0xFFFFFFFF PUSH1 0xE0 PUSH1 0x2 EXP PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0xC08BF88 DUP2 EQ PUSH2 0xA5 JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0xBC JUMPI DUP1 PUSH4 0x341CCFCB EQ PUSH2 0xDD JUMPI DUP1 PUSH4 0x34CDCF26 EQ PUSH2 0xFE JUMPI DUP1 PUSH4 0x3D19AB13 EQ PUSH2 0x133 JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0x74BE7592 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0x81F909F3 EQ PUSH2 0x1A9 JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x1CA JUMPI DUP1 PUSH4 0xBB52C137 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x206 JUMPI DUP1 PUSH4 0xE9D61859 EQ PUSH2 0x21B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0x230 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x24E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x26E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11F PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x457 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14B PUSH1 0x4 CALLDATALOAD PUSH2 0x470 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11F PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x49F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x194 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x4B2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x4CF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0x686 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F4 PUSH2 0xBD1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x212 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0xBDC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x227 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0xBE5 JUMP JUMPDEST PUSH2 0x239 CALLER PUSH2 0x49F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24C PUSH2 0xBEE JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x257 CALLER PUSH2 0x49F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x26B DUP2 PUSH2 0xCB5 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A2 CALLER PUSH2 0x49F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x2AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x3E8 GT PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x2E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x321 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x335 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x358 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0xFF DUP3 AND LT DUP1 ISZERO SWAP1 PUSH2 0x3DC JUMPI POP PUSH1 0x5 DUP2 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0x3E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP5 SWAP1 SSTORE PUSH1 0x1 DUP5 ADD DUP4 SSTORE SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B SWAP1 SWAP2 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46A PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xCC6 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 DUP3 PUSH1 0x1 ADD DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x484 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46A PUSH1 0x3 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xCC6 AND JUMP JUMPDEST PUSH2 0x4BB CALLER PUSH2 0x457 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x26B DUP2 PUSH2 0xCFD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x4F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x500 CALLER PUSH2 0x49F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x50B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 LT PUSH2 0x51A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x2 EQ ISZERO PUSH2 0x586 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 SWAP1 DUP2 LT PUSH2 0x534 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE PUSH1 0x1 PUSH2 0x567 PUSH1 0x4 DUP3 PUSH2 0xEA0 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH2 0x26B JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ PUSH2 0x620 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x5B9 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 DUP2 AND DUP5 MSTORE PUSH1 0x5 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 SWAP3 KECCAK256 SLOAD PUSH1 0x4 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP3 SWAP2 DUP2 LT PUSH2 0x5F1 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x632 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD SWAP1 PUSH2 0x66B SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0xEA0 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x690 PUSH2 0xEC4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x69E PUSH2 0xEC4 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x6C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6CF CALLER PUSH2 0x457 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x6DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 LT PUSH2 0x6E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x74F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x763 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x779 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP7 POP PUSH1 0x0 DUP8 GT PUSH2 0x78A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SWAP5 POP JUMPDEST PUSH1 0x4 SLOAD DUP6 LT ISZERO PUSH2 0x939 JUMPI PUSH1 0x4 DUP1 SLOAD DUP7 SWAP1 DUP2 LT PUSH2 0x7A7 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP4 POP DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x19A74AB3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x805 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x819 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x82F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x83C JUMPI PUSH2 0x92E JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x87A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x88E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP PUSH1 0xFF DUP4 AND ISZERO ISZERO PUSH2 0x8C6 JUMPI DUP6 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE PUSH2 0x92E JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x8DA JUMPI DUP6 PUSH1 0x1 PUSH2 0x8B6 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x8EE JUMPI DUP6 PUSH1 0x2 PUSH2 0x8B6 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x902 JUMPI DUP6 PUSH1 0x3 PUSH2 0x8B6 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x916 JUMPI DUP6 PUSH1 0x4 PUSH2 0x8B6 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x92E JUMPI PUSH1 0xA0 DUP7 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE JUMPDEST PUSH1 0x1 SWAP1 SWAP5 ADD SWAP4 PUSH2 0x78F JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x40 DUP10 ADD MLOAD PUSH1 0x20 DUP11 ADD MLOAD DUP11 MLOAD PUSH1 0xA SWAP1 SWAP2 MUL ADD PUSH1 0x14 SWAP1 SWAP2 MUL ADD PUSH1 0x1E SWAP1 SWAP2 MUL ADD PUSH1 0x28 SWAP1 SWAP2 MUL ADD PUSH1 0x32 SWAP1 SWAP2 MUL ADD SWAP2 POP DUP2 DUP8 DUP2 ISZERO ISZERO PUSH2 0x97F JUMPI INVALID JUMPDEST DIV DUP2 MSTORE DUP2 PUSH1 0xA DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x990 JUMPI INVALID JUMPDEST DIV PUSH1 0x20 DUP3 ADD MSTORE DUP2 PUSH1 0x14 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x9A4 JUMPI INVALID JUMPDEST DIV PUSH1 0x40 DUP3 ADD MSTORE DUP2 PUSH1 0x1E DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x9B8 JUMPI INVALID JUMPDEST DIV PUSH1 0x60 DUP3 ADD MSTORE DUP2 PUSH1 0x28 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x9CC JUMPI INVALID JUMPDEST DIV PUSH1 0x80 DUP3 ADD MSTORE DUP2 PUSH1 0x32 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x9E0 JUMPI INVALID JUMPDEST DIV PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x1 SWAP5 POP JUMPDEST PUSH1 0x4 SLOAD DUP6 LT ISZERO PUSH2 0xBC8 JUMPI PUSH1 0x4 DUP1 SLOAD DUP7 SWAP1 DUP2 LT PUSH2 0xA03 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP4 POP DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x19A74AB3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA75 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xA98 JUMPI PUSH2 0xBBD JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAEA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x302C11CA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP5 POP PUSH2 0xBBD SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND SWAP2 PUSH4 0x302C11CA SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB78 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 PUSH1 0xFF DUP7 AND PUSH1 0x6 DUP2 LT PUSH2 0xB9F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xD0E AND JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP5 ADD SWAP4 PUSH2 0x9EB JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 NOT ADD JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24C CALLER PUSH2 0xDAD JUMP JUMPDEST PUSH2 0x24C CALLER PUSH2 0xDBE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC67 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0xCAD JUMPI PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0xCAD SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xD0E AND JUMP JUMPDEST PUSH2 0x26B PUSH2 0xDCF JUMP JUMPDEST PUSH2 0x26B PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE06 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xCDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x26B PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE06 AND JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD85 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xDA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x26B PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE54 AND JUMP JUMPDEST PUSH2 0x26B PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE54 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xE1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE25 DUP3 DUP3 PUSH2 0xCC6 JUMP JUMPDEST ISZERO PUSH2 0xE2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xE69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE73 DUP3 DUP3 PUSH2 0xCC6 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xE7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0xDA8 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH2 0xDA8 SWAP2 DUP2 ADD SWAP1 DUP4 ADD PUSH2 0xEE3 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xBD9 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xEFD JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xEE9 JUMP JUMPDEST POP SWAP1 JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xc9 PUSH31 0x98EFB9F61C8F769238044B274DDCF265ED47D4444EAB2134A813FF57783B00 0x29 ", "sourceMap": "556:4724:1:-;;;1070:235;8:9:-1;5:2;;;30:1;27;20:12;5:2;1070:235:1;;;;;;;;;;;;;156:8:5;:21;;167:10;-1:-1:-1;;;;;;156:21:5;;;;;-1:-1:-1;;;;;;188:19:5;;;;-1:-1:-1;636:29:3;;;;;-1:-1:-1;;;;;636:29:3;;;;;364:22:2;;:10;;;;:22;:::i;:::-;368:24:0;381:10;368:12;;;;:24;:::i;:::-;-1:-1:-1;1225:7:1;27:10:-1;;39:1;23:18;;45:23;;1246:1:1;1225:24;;;;;;;;-1:-1:-1;;;;;;1225:24:1;;;556:4724;;800:92:2;857:27;:14;876:7;857:18;;;;;;:27;:::i;:::-;800:92;:::o;824:96:0:-;883:29;:16;904:7;883:20;;;;;;:29;:::i;244:167:6:-;-1:-1:-1;;;;;316:21:6;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:6;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:6;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:6;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:6;:11;:20;;;;;;;;;;;;;;;725:166::o;556:4724:1:-;;;;;;;" }, "gasEstimates": { @@ -299,7 +299,7 @@ "unregisterMiner(address)": "81f909f3" } }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"terminate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"registerMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSystem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getMinerByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"unregisterMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMinerCount\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol\":\"AlgoFees\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol\":{\"keccak256\":\"0x143e742903e9fb652810dd60b96a084f550c5308784c4797270c651a3f407447\",\"urls\":[\"bzzr://a56b09e9fc46585c07a4fd9cd33c6624e86c745582536921fc16a9eda742f988\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol\":{\"keccak256\":\"0x6fffe504e6805d95ca42269cc995a3de9401a12bc037068b056c186ce8569d8d\",\"urls\":[\"bzzr://a0923a2d2b1e4992f552ce49638b19d6d8328950c1d5dc1395f0d625daf21c68\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol\":{\"keccak256\":\"0x71adbf7f060599239b7a981594e43dc8fbe8597fd2853b6fe9e70ff39883d73a\",\"urls\":[\"bzzr://70691c1638cdc0f744f8c5b5a94e4f857ba40ad053816cfbd15e13ed41a3bc66\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0x94c226040dfda257ee61c1455bbb920db28b6ad0f5cba33ecc76319c003630b7\",\"urls\":[\"bzzr://bdd0568ed74054f0f91933dab7fbba6789cceb60ab2f5200d719347161e8feed\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol\":{\"keccak256\":\"0x29a8fa3204dbd204355714601ce21d7d717a586a4de21009d8f2a3ca7981963f\",\"urls\":[\"bzzr://55d9b762620cef1e6f7b11a26d6cc123f5b608a59e0d36f9bc0a1e8ff0ff5c42\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"terminate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"registerMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSystem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getMinerByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"unregisterMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMinerCount\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol\":\"AlgoFees\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol\":{\"keccak256\":\"0x143e742903e9fb652810dd60b96a084f550c5308784c4797270c651a3f407447\",\"urls\":[\"bzzr://a56b09e9fc46585c07a4fd9cd33c6624e86c745582536921fc16a9eda742f988\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol\":{\"keccak256\":\"0x6fffe504e6805d95ca42269cc995a3de9401a12bc037068b056c186ce8569d8d\",\"urls\":[\"bzzr://a0923a2d2b1e4992f552ce49638b19d6d8328950c1d5dc1395f0d625daf21c68\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol\":{\"keccak256\":\"0x71adbf7f060599239b7a981594e43dc8fbe8597fd2853b6fe9e70ff39883d73a\",\"urls\":[\"bzzr://70691c1638cdc0f744f8c5b5a94e4f857ba40ad053816cfbd15e13ed41a3bc66\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0xdc21d3ce2e847a83e62a95fc4e8a31305771c1c6549fba2102ae9a7caa09a1e5\",\"urls\":[\"bzzr://291aa93e18c12398d6d8031308b1a0231d253ec061a5449d0335bd476554383e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol\":{\"keccak256\":\"0x29a8fa3204dbd204355714601ce21d7d717a586a4de21009d8f2a3ca7981963f\",\"urls\":[\"bzzr://55d9b762620cef1e6f7b11a26d6cc123f5b608a59e0d36f9bc0a1e8ff0ff5c42\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -459,6 +459,20 @@ "stateMutability": "view", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "getMinerType", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [], @@ -488,6 +502,7 @@ "methodIdentifiers": { "getCategory()": "80258e47", "getMiner()": "302c11ca", + "getMinerType()": "4969ae70", "isAlgoMiner()": "1777fb4b", "isMining()": "19a74ab3" } @@ -867,7 +882,7 @@ "id": 2, "nodeType": "ImportDirective", "scope": 87, - "sourceUnit": 905, + "sourceUnit": 910, "src": "28:189:0", "symbolAliases": [], "unitAlias": "" @@ -892,10 +907,10 @@ "id": 3, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 904, + "referencedDeclaration": 909, "src": "260:5:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$904", + "typeIdentifier": "t_contract$_Roles_$909", "typeString": "library Roles" } }, @@ -906,10 +921,10 @@ "id": 4, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 817, + "referencedDeclaration": 822, "src": "270:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeIdentifier": "t_struct$_Role_$822_storage_ptr", "typeString": "struct Roles.Role" } } @@ -924,7 +939,7 @@ "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$817_storage", + "typeIdentifier": "t_struct$_Role_$822_storage", "typeString": "struct Roles.Role" }, "typeName": { @@ -932,10 +947,10 @@ "id": 6, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 817, + "referencedDeclaration": 822, "src": "289:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeIdentifier": "t_struct$_Role_$822_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -960,7 +975,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1260, + "referencedDeclaration": 1265, "src": "381:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1068,7 +1083,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1260, + "referencedDeclaration": 1265, "src": "462:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1134,10 +1149,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1263, - 1264 + 1268, + 1269 ], - "referencedDeclaration": 1263, + "referencedDeclaration": 1268, "src": "443:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -1222,7 +1237,7 @@ "referencedDeclaration": 7, "src": "584:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$817_storage", + "typeIdentifier": "t_struct$_Role_$822_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1233,10 +1248,10 @@ "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 903, + "referencedDeclaration": 908, "src": "584:20:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$817_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$817_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$822_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$822_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, @@ -1496,7 +1511,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1260, + "referencedDeclaration": 1265, "src": "797:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1623,7 +1638,7 @@ "referencedDeclaration": 7, "src": "883:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$817_storage", + "typeIdentifier": "t_struct$_Role_$822_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1634,10 +1649,10 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 849, + "referencedDeclaration": 854, "src": "883:20:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$817_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$817_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$822_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$822_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -1755,7 +1770,7 @@ "referencedDeclaration": 7, "src": "990:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$817_storage", + "typeIdentifier": "t_struct$_Role_$822_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1766,10 +1781,10 @@ "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 880, + "referencedDeclaration": 885, "src": "990:23:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$817_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$817_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$822_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$822_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -1883,7 +1898,7 @@ "id": 89, "nodeType": "ImportDirective", "scope": 607, - "sourceUnit": 1102, + "sourceUnit": 1107, "src": "27:195:1", "symbolAliases": [], "unitAlias": "" @@ -1894,7 +1909,7 @@ "id": 90, "nodeType": "ImportDirective", "scope": 607, - "sourceUnit": 1246, + "sourceUnit": 1251, "src": "224:198:1", "symbolAliases": [], "unitAlias": "" @@ -1905,7 +1920,7 @@ "id": 91, "nodeType": "ImportDirective", "scope": 607, - "sourceUnit": 774, + "sourceUnit": 779, "src": "426:26:1", "symbolAliases": [], "unitAlias": "" @@ -2004,7 +2019,7 @@ 750, 86, 693, - 810 + 815 ], "contractKind": "contract", "documentation": null, @@ -2015,7 +2030,7 @@ 86, 693, 750, - 810 + 815 ], "name": "AlgoFees", "nodeType": "ContractDefinition", @@ -2027,10 +2042,10 @@ "id": 101, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1245, + "referencedDeclaration": 1250, "src": "641:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1245", + "typeIdentifier": "t_contract$_SafeERC20_$1250", "typeString": "library SafeERC20" } }, @@ -2041,10 +2056,10 @@ "id": 102, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1101, + "referencedDeclaration": 1106, "src": "655:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1101", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" } } @@ -2723,10 +2738,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1263, - 1264 + 1268, + 1269 ], - "referencedDeclaration": 1263, + "referencedDeclaration": 1268, "src": "1403:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -2844,10 +2859,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1263, - 1264 + 1268, + 1269 ], - "referencedDeclaration": 1263, + "referencedDeclaration": 1268, "src": "1444:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -2887,7 +2902,7 @@ "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$773", + "typeIdentifier": "t_contract$_IAlgoMiner_$778", "typeString": "contract IAlgoMiner" }, "typeName": { @@ -2895,10 +2910,10 @@ "id": 173, "name": "IAlgoMiner", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 773, + "referencedDeclaration": 778, "src": "1501:10:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$773", + "typeIdentifier": "t_contract$_IAlgoMiner_$778", "typeString": "contract IAlgoMiner" } }, @@ -2935,10 +2950,10 @@ "name": "IAlgoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 773, + "referencedDeclaration": 778, "src": "1524:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$773_$", + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$778_$", "typeString": "type(contract IAlgoMiner)" } }, @@ -2952,7 +2967,7 @@ "nodeType": "FunctionCall", "src": "1524:24:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$773", + "typeIdentifier": "t_contract$_IAlgoMiner_$778", "typeString": "contract IAlgoMiner" } }, @@ -2977,7 +2992,7 @@ "referencedDeclaration": 174, "src": "1577:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$773", + "typeIdentifier": "t_contract$_IAlgoMiner_$778", "typeString": "contract IAlgoMiner" } }, @@ -3021,10 +3036,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1263, - 1264 + 1268, + 1269 ], - "referencedDeclaration": 1263, + "referencedDeclaration": 1268, "src": "1569:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -3096,7 +3111,7 @@ "referencedDeclaration": 174, "src": "1644:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$773", + "typeIdentifier": "t_contract$_IAlgoMiner_$778", "typeString": "contract IAlgoMiner" } }, @@ -3107,7 +3122,7 @@ "lValueRequested": false, "memberName": "getCategory", "nodeType": "MemberAccess", - "referencedDeclaration": 762, + "referencedDeclaration": 767, "src": "1644:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", @@ -3266,10 +3281,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1263, - 1264 + 1268, + 1269 ], - "referencedDeclaration": 1263, + "referencedDeclaration": 1268, "src": "1680:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -3470,7 +3485,7 @@ "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 801, + "referencedDeclaration": 806, "src": "1365:13:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -3636,10 +3651,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1263, - 1264 + 1268, + 1269 ], - "referencedDeclaration": 1263, + "referencedDeclaration": 1268, "src": "1934:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -4466,7 +4481,7 @@ "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 801, + "referencedDeclaration": 806, "src": "1896:13:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -4632,10 +4647,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1263, - 1264 + 1268, + 1269 ], - "referencedDeclaration": 1263, + "referencedDeclaration": 1268, "src": "2672:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -4705,7 +4720,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1291, + "referencedDeclaration": 1296, "src": "2766:4:1", "typeDescriptions": { "typeIdentifier": "t_contract$_AlgoFees_$606", @@ -4764,7 +4779,7 @@ "referencedDeclaration": 705, "src": "2741:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1101", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" } }, @@ -4775,7 +4790,7 @@ "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 1046, + "referencedDeclaration": 1051, "src": "2741:16:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", @@ -4865,10 +4880,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1263, - 1264 + 1268, + 1269 ], - "referencedDeclaration": 1263, + "referencedDeclaration": 1268, "src": "2779:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -4976,7 +4991,7 @@ "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$773", + "typeIdentifier": "t_contract$_IAlgoMiner_$778", "typeString": "contract IAlgoMiner" }, "typeName": { @@ -4984,10 +4999,10 @@ "id": 340, "name": "IAlgoMiner", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 773, + "referencedDeclaration": 778, "src": "2990:10:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$773", + "typeIdentifier": "t_contract$_IAlgoMiner_$778", "typeString": "contract IAlgoMiner" } }, @@ -5051,10 +5066,10 @@ "name": "IAlgoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 773, + "referencedDeclaration": 778, "src": "3013:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$773_$", + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$778_$", "typeString": "type(contract IAlgoMiner)" } }, @@ -5068,7 +5083,7 @@ "nodeType": "FunctionCall", "src": "3013:22:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$773", + "typeIdentifier": "t_contract$_IAlgoMiner_$778", "typeString": "contract IAlgoMiner" } }, @@ -5101,7 +5116,7 @@ "referencedDeclaration": 341, "src": "3056:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$773", + "typeIdentifier": "t_contract$_IAlgoMiner_$778", "typeString": "contract IAlgoMiner" } }, @@ -5112,7 +5127,7 @@ "lValueRequested": false, "memberName": "isMining", "nodeType": "MemberAccess", - "referencedDeclaration": 767, + "referencedDeclaration": 772, "src": "3056:18:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$", @@ -5195,7 +5210,7 @@ "referencedDeclaration": 341, "src": "3125:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$773", + "typeIdentifier": "t_contract$_IAlgoMiner_$778", "typeString": "contract IAlgoMiner" } }, @@ -5206,7 +5221,7 @@ "lValueRequested": false, "memberName": "getCategory", "nodeType": "MemberAccess", - "referencedDeclaration": 762, + "referencedDeclaration": 767, "src": "3125:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", @@ -7684,7 +7699,7 @@ "referencedDeclaration": 341, "src": "4731:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$773", + "typeIdentifier": "t_contract$_IAlgoMiner_$778", "typeString": "contract IAlgoMiner" } }, @@ -7745,10 +7760,10 @@ "name": "IAlgoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 773, + "referencedDeclaration": 778, "src": "4743:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$773_$", + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$778_$", "typeString": "type(contract IAlgoMiner)" } }, @@ -7762,13 +7777,13 @@ "nodeType": "FunctionCall", "src": "4743:22:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$773", + "typeIdentifier": "t_contract$_IAlgoMiner_$778", "typeString": "contract IAlgoMiner" } }, "src": "4731:34:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$773", + "typeIdentifier": "t_contract$_IAlgoMiner_$778", "typeString": "contract IAlgoMiner" } }, @@ -7802,7 +7817,7 @@ "referencedDeclaration": 341, "src": "4786:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$773", + "typeIdentifier": "t_contract$_IAlgoMiner_$778", "typeString": "contract IAlgoMiner" } }, @@ -7813,7 +7828,7 @@ "lValueRequested": false, "memberName": "isMining", "nodeType": "MemberAccess", - "referencedDeclaration": 767, + "referencedDeclaration": 772, "src": "4786:18:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$", @@ -7886,7 +7901,7 @@ "referencedDeclaration": 341, "src": "4849:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$773", + "typeIdentifier": "t_contract$_IAlgoMiner_$778", "typeString": "contract IAlgoMiner" } }, @@ -7897,7 +7912,7 @@ "lValueRequested": false, "memberName": "getCategory", "nodeType": "MemberAccess", - "referencedDeclaration": 762, + "referencedDeclaration": 767, "src": "4849:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", @@ -7946,7 +7961,7 @@ "referencedDeclaration": 341, "src": "4900:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$773", + "typeIdentifier": "t_contract$_IAlgoMiner_$778", "typeString": "contract IAlgoMiner" } }, @@ -7957,7 +7972,7 @@ "lValueRequested": false, "memberName": "getMiner", "nodeType": "MemberAccess", - "referencedDeclaration": 772, + "referencedDeclaration": 777, "src": "4900:18:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", @@ -8039,7 +8054,7 @@ "referencedDeclaration": 705, "src": "4880:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1101", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" } }, @@ -8050,10 +8065,10 @@ "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1126, + "referencedDeclaration": 1131, "src": "4880:19:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1101_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1101_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1106_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1106_$", "typeString": "function (contract IERC20,address,uint256)" } }, @@ -8244,7 +8259,7 @@ "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 801, + "referencedDeclaration": 806, "src": "2636:13:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -8730,7 +8745,7 @@ "id": 609, "nodeType": "ImportDirective", "scope": 694, - "sourceUnit": 905, + "sourceUnit": 910, "src": "28:189:2", "symbolAliases": [], "unitAlias": "" @@ -8755,10 +8770,10 @@ "id": 610, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 904, + "referencedDeclaration": 909, "src": "258:5:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$904", + "typeIdentifier": "t_contract$_Roles_$909", "typeString": "library Roles" } }, @@ -8769,10 +8784,10 @@ "id": 611, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 817, + "referencedDeclaration": 822, "src": "268:10:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeIdentifier": "t_struct$_Role_$822_storage_ptr", "typeString": "struct Roles.Role" } } @@ -8787,7 +8802,7 @@ "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$817_storage", + "typeIdentifier": "t_struct$_Role_$822_storage", "typeString": "struct Roles.Role" }, "typeName": { @@ -8795,10 +8810,10 @@ "id": 613, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 817, + "referencedDeclaration": 822, "src": "287:10:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeIdentifier": "t_struct$_Role_$822_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -8823,7 +8838,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1260, + "referencedDeclaration": 1265, "src": "375:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -8931,7 +8946,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1260, + "referencedDeclaration": 1265, "src": "452:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -8997,10 +9012,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1263, - 1264 + 1268, + 1269 ], - "referencedDeclaration": 1263, + "referencedDeclaration": 1268, "src": "435:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -9085,7 +9100,7 @@ "referencedDeclaration": 614, "src": "572:14:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$817_storage", + "typeIdentifier": "t_struct$_Role_$822_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -9096,10 +9111,10 @@ "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 903, + "referencedDeclaration": 908, "src": "572:18:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$817_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$817_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$822_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$822_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, @@ -9359,7 +9374,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1260, + "referencedDeclaration": 1265, "src": "773:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -9486,7 +9501,7 @@ "referencedDeclaration": 614, "src": "857:14:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$817_storage", + "typeIdentifier": "t_struct$_Role_$822_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -9497,10 +9512,10 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 849, + "referencedDeclaration": 854, "src": "857:18:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$817_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$817_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$822_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$822_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -9618,7 +9633,7 @@ "referencedDeclaration": 614, "src": "960:14:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$817_storage", + "typeIdentifier": "t_struct$_Role_$822_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -9629,10 +9644,10 @@ "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 880, + "referencedDeclaration": 885, "src": "960:21:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$817_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$817_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$822_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$822_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -9746,7 +9761,7 @@ "id": 696, "nodeType": "ImportDirective", "scope": 751, - "sourceUnit": 1102, + "sourceUnit": 1107, "src": "27:195:3", "symbolAliases": [], "unitAlias": "" @@ -9757,7 +9772,7 @@ "id": 697, "nodeType": "ImportDirective", "scope": 751, - "sourceUnit": 1246, + "sourceUnit": 1251, "src": "224:198:3", "symbolAliases": [], "unitAlias": "" @@ -9768,7 +9783,7 @@ "id": 698, "nodeType": "ImportDirective", "scope": 751, - "sourceUnit": 811, + "sourceUnit": 816, "src": "426:26:3", "symbolAliases": [], "unitAlias": "" @@ -9782,10 +9797,10 @@ "id": 699, "name": "Terminable", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 810, + "referencedDeclaration": 815, "src": "485:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_Terminable_$810", + "typeIdentifier": "t_contract$_Terminable_$815", "typeString": "contract Terminable" } }, @@ -9795,7 +9810,7 @@ } ], "contractDependencies": [ - 810 + 815 ], "contractKind": "contract", "documentation": null, @@ -9803,7 +9818,7 @@ "id": 750, "linearizedBaseContracts": [ 750, - 810 + 815 ], "name": "ERC20TokenHolder", "nodeType": "ContractDefinition", @@ -9815,10 +9830,10 @@ "id": 701, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1245, + "referencedDeclaration": 1250, "src": "509:9:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1245", + "typeIdentifier": "t_contract$_SafeERC20_$1250", "typeString": "library SafeERC20" } }, @@ -9829,10 +9844,10 @@ "id": 702, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1101, + "referencedDeclaration": 1106, "src": "523:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1101", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" } } @@ -9847,7 +9862,7 @@ "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1101", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" }, "typeName": { @@ -9855,10 +9870,10 @@ "id": 704, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1101, + "referencedDeclaration": 1106, "src": "538:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1101", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" } }, @@ -9888,7 +9903,7 @@ "referencedDeclaration": 705, "src": "636:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1101", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" } }, @@ -9922,10 +9937,10 @@ "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1101, + "referencedDeclaration": 1106, "src": "645:6:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$1101_$", + "typeIdentifier": "t_type$_t_contract$_IERC20_$1106_$", "typeString": "type(contract IERC20)" } }, @@ -9939,13 +9954,13 @@ "nodeType": "FunctionCall", "src": "645:20:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1101", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" } }, "src": "636:29:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1101", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" } }, @@ -9970,10 +9985,10 @@ "name": "Terminable", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 810, + "referencedDeclaration": 815, "src": "603:10:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Terminable_$810_$", + "typeIdentifier": "t_type$_t_contract$_Terminable_$815_$", "typeString": "type(contract Terminable)" } }, @@ -10080,7 +10095,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1287, + "referencedDeclaration": 1292, "src": "773:4:3", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20TokenHolder_$750", @@ -10139,7 +10154,7 @@ "referencedDeclaration": 705, "src": "748:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1101", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" } }, @@ -10150,7 +10165,7 @@ "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 1046, + "referencedDeclaration": 1051, "src": "748:16:3", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", @@ -10244,7 +10259,7 @@ "name": "_creator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 777, + "referencedDeclaration": 782, "src": "848:8:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -10285,7 +10300,7 @@ "referencedDeclaration": 705, "src": "828:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1101", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" } }, @@ -10296,10 +10311,10 @@ "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1126, + "referencedDeclaration": 1131, "src": "828:19:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1101_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1101_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1106_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1106_$", "typeString": "function (contract IERC20,address,uint256)" } }, @@ -10336,10 +10351,10 @@ "name": "Terminable", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 810, + "referencedDeclaration": 815, "src": "895:10:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Terminable_$810_$", + "typeIdentifier": "t_type$_t_contract$_Terminable_$815_$", "typeString": "type(contract Terminable)" } }, @@ -10350,7 +10365,7 @@ "lValueRequested": false, "memberName": "_terminate", "nodeType": "MemberAccess", - "referencedDeclaration": 809, + "referencedDeclaration": 814, "src": "895:21:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", @@ -10401,7 +10416,7 @@ "scope": 750, "src": "681:245:3", "stateMutability": "nonpayable", - "superFunction": 809, + "superFunction": 814, "visibility": "internal" } ], @@ -10418,10 +10433,10 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", "exportedSymbols": { "IAlgoMiner": [ - 773 + 778 ] }, - "id": 774, + "id": 779, "nodeType": "SourceUnit", "nodes": [ { @@ -10440,9 +10455,9 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 773, + "id": 778, "linearizedBaseContracts": [ - 773 + 778 ], "name": "IAlgoMiner", "nodeType": "ContractDefinition", @@ -10497,7 +10512,7 @@ ], "src": "97:6:4" }, - "scope": 773, + "scope": 778, "src": "54:50:4", "stateMutability": "pure", "superFunction": null, @@ -10511,13 +10526,13 @@ "isConstructor": false, "isDeclaredConst": true, "modifiers": [], - "name": "getCategory", + "name": "getMinerType", "nodeType": "FunctionDefinition", "parameters": { "id": 758, "nodeType": "ParameterList", "parameters": [], - "src": "130:2:4" + "src": "131:2:4" }, "payable": false, "returnParameters": { @@ -10530,7 +10545,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 762, - "src": "154:5:4", + "src": "155:5:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10541,7 +10556,7 @@ "id": 759, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "154:5:4", + "src": "155:5:4", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -10551,10 +10566,10 @@ "visibility": "internal" } ], - "src": "153:7:4" + "src": "154:7:4" }, - "scope": 773, - "src": "110:51:4", + "scope": 778, + "src": "110:52:4", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -10567,13 +10582,13 @@ "isConstructor": false, "isDeclaredConst": true, "modifiers": [], - "name": "isMining", + "name": "getCategory", "nodeType": "FunctionDefinition", "parameters": { "id": 763, "nodeType": "ParameterList", "parameters": [], - "src": "184:2:4" + "src": "188:2:4" }, "payable": false, "returnParameters": { @@ -10586,31 +10601,31 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 767, - "src": "208:4:4", + "src": "212:5:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint8", + "typeString": "uint8" }, "typeName": { "id": 764, - "name": "bool", + "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "208:4:4", + "src": "212:5:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], - "src": "207:6:4" + "src": "211:7:4" }, - "scope": 773, - "src": "167:47:4", + "scope": 778, + "src": "168:51:4", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -10623,13 +10638,13 @@ "isConstructor": false, "isDeclaredConst": true, "modifiers": [], - "name": "getMiner", + "name": "isMining", "nodeType": "FunctionDefinition", "parameters": { "id": 768, "nodeType": "ParameterList", "parameters": [], - "src": "237:2:4" + "src": "242:2:4" }, "payable": false, "returnParameters": { @@ -10642,7 +10657,63 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 772, - "src": "261:7:4", + "src": "266:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 769, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "266:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "265:6:4" + }, + "scope": 778, + "src": "225:47:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 777, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 773, + "nodeType": "ParameterList", + "parameters": [], + "src": "295:2:4" + }, + "payable": false, + "returnParameters": { + "id": 776, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 775, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 777, + "src": "319:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10650,10 +10721,10 @@ "typeString": "address" }, "typeName": { - "id": 769, + "id": 774, "name": "address", "nodeType": "ElementaryTypeName", - "src": "261:7:4", + "src": "319:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10663,20 +10734,20 @@ "visibility": "internal" } ], - "src": "260:9:4" + "src": "318:9:4" }, - "scope": 773, - "src": "220:50:4", + "scope": 778, + "src": "278:50:4", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 774, - "src": "27:246:4" + "scope": 779, + "src": "27:304:4" } ], - "src": "0:273:4" + "src": "0:331:4" }, "id": 4 }, @@ -10685,14 +10756,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", "exportedSymbols": { "Terminable": [ - 810 + 815 ] }, - "id": 811, + "id": 816, "nodeType": "SourceUnit", "nodes": [ { - "id": 775, + "id": 780, "literals": [ "solidity", "0.4", @@ -10707,19 +10778,19 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 810, + "id": 815, "linearizedBaseContracts": [ - 810 + 815 ], "name": "Terminable", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 777, + "id": 782, "name": "_creator", "nodeType": "VariableDeclaration", - "scope": 810, + "scope": 815, "src": "56:25:5", "stateVariable": true, "storageLocation": "default", @@ -10728,7 +10799,7 @@ "typeString": "address" }, "typeName": { - "id": 776, + "id": 781, "name": "address", "nodeType": "ElementaryTypeName", "src": "56:7:5", @@ -10742,10 +10813,10 @@ }, { "constant": false, - "id": 779, + "id": 784, "name": "_terminated", "nodeType": "VariableDeclaration", - "scope": 810, + "scope": 815, "src": "88:25:5", "stateVariable": true, "storageLocation": "default", @@ -10754,7 +10825,7 @@ "typeString": "bool" }, "typeName": { - "id": 778, + "id": 783, "name": "bool", "nodeType": "ElementaryTypeName", "src": "88:4:5", @@ -10768,25 +10839,25 @@ }, { "body": { - "id": 791, + "id": 796, "nodeType": "Block", "src": "145:70:5", "statements": [ { "expression": { "argumentTypes": null, - "id": 785, + "id": 790, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 782, + "id": 787, "name": "_creator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 777, + "referencedDeclaration": 782, "src": "156:8:5", "typeDescriptions": { "typeIdentifier": "t_address", @@ -10799,18 +10870,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 783, + "id": 788, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1260, + "referencedDeclaration": 1265, "src": "167:3:5", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 784, + "id": 789, "isConstant": false, "isLValue": false, "isPure": false, @@ -10830,25 +10901,25 @@ "typeString": "address" } }, - "id": 786, + "id": 791, "nodeType": "ExpressionStatement", "src": "156:21:5" }, { "expression": { "argumentTypes": null, - "id": 789, + "id": 794, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 787, + "id": 792, "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 779, + "referencedDeclaration": 784, "src": "188:11:5", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -10860,7 +10931,7 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 788, + "id": 793, "isConstant": false, "isLValue": false, "isPure": true, @@ -10881,14 +10952,14 @@ "typeString": "bool" } }, - "id": 790, + "id": 795, "nodeType": "ExpressionStatement", "src": "188:19:5" } ] }, "documentation": null, - "id": 792, + "id": 797, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -10896,19 +10967,19 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 780, + "id": 785, "nodeType": "ParameterList", "parameters": [], "src": "133:2:5" }, "payable": false, "returnParameters": { - "id": 781, + "id": 786, "nodeType": "ParameterList", "parameters": [], "src": "145:0:5" }, - "scope": 810, + "scope": 815, "src": "122:93:5", "stateMutability": "nonpayable", "superFunction": null, @@ -10916,7 +10987,7 @@ }, { "body": { - "id": 800, + "id": 805, "nodeType": "Block", "src": "248:52:5", "statements": [ @@ -10926,7 +10997,7 @@ "arguments": [ { "argumentTypes": null, - "id": 796, + "id": 801, "isConstant": false, "isLValue": false, "isPure": false, @@ -10937,11 +11008,11 @@ "src": "267:12:5", "subExpression": { "argumentTypes": null, - "id": 795, + "id": 800, "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 779, + "referencedDeclaration": 784, "src": "268:11:5", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -10961,21 +11032,21 @@ "typeString": "bool" } ], - "id": 794, + "id": 799, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1263, - 1264 + 1268, + 1269 ], - "referencedDeclaration": 1263, + "referencedDeclaration": 1268, "src": "259:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 797, + "id": 802, "isConstant": false, "isLValue": false, "isPure": false, @@ -10989,23 +11060,23 @@ "typeString": "tuple()" } }, - "id": 798, + "id": 803, "nodeType": "ExpressionStatement", "src": "259:21:5" }, { - "id": 799, + "id": 804, "nodeType": "PlaceholderStatement", "src": "291:1:5" } ] }, "documentation": null, - "id": 801, + "id": 806, "name": "notTerminated", "nodeType": "ModifierDefinition", "parameters": { - "id": 793, + "id": 798, "nodeType": "ParameterList", "parameters": [], "src": "245:2:5" @@ -11015,25 +11086,25 @@ }, { "body": { - "id": 808, + "id": 813, "nodeType": "Block", "src": "339:37:5", "statements": [ { "expression": { "argumentTypes": null, - "id": 806, + "id": 811, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 804, + "id": 809, "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 779, + "referencedDeclaration": 784, "src": "350:11:5", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -11045,7 +11116,7 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 805, + "id": 810, "isConstant": false, "isLValue": false, "isPure": true, @@ -11066,14 +11137,14 @@ "typeString": "bool" } }, - "id": 807, + "id": 812, "nodeType": "ExpressionStatement", "src": "350:18:5" } ] }, "documentation": null, - "id": 809, + "id": 814, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -11081,26 +11152,26 @@ "name": "_terminate", "nodeType": "FunctionDefinition", "parameters": { - "id": 802, + "id": 807, "nodeType": "ParameterList", "parameters": [], "src": "327:2:5" }, "payable": false, "returnParameters": { - "id": 803, + "id": 808, "nodeType": "ParameterList", "parameters": [], "src": "339:0:5" }, - "scope": 810, + "scope": 815, "src": "308:68:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 811, + "scope": 816, "src": "27:352:5" } ], @@ -11113,14 +11184,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "exportedSymbols": { "Roles": [ - 904 + 909 ] }, - "id": 905, + "id": 910, "nodeType": "SourceUnit", "nodes": [ { - "id": 812, + "id": 817, "literals": [ "solidity", "^", @@ -11136,23 +11207,23 @@ "contractKind": "library", "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", "fullyImplemented": true, - "id": 904, + "id": 909, "linearizedBaseContracts": [ - 904 + 909 ], "name": "Roles", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "Roles.Role", - "id": 817, + "id": 822, "members": [ { "constant": false, - "id": 816, + "id": 821, "name": "bearer", "nodeType": "VariableDeclaration", - "scope": 817, + "scope": 822, "src": "145:32:6", "stateVariable": false, "storageLocation": "default", @@ -11161,9 +11232,9 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 815, + "id": 820, "keyType": { - "id": 813, + "id": 818, "name": "address", "nodeType": "ElementaryTypeName", "src": "154:7:6", @@ -11179,7 +11250,7 @@ "typeString": "mapping(address => bool)" }, "valueType": { - "id": 814, + "id": 819, "name": "bool", "nodeType": "ElementaryTypeName", "src": "165:4:6", @@ -11195,13 +11266,13 @@ ], "name": "Role", "nodeType": "StructDefinition", - "scope": 904, + "scope": 909, "src": "127:55:6", "visibility": "public" }, { "body": { - "id": 848, + "id": 853, "nodeType": "Block", "src": "302:109:6", "statements": [ @@ -11215,18 +11286,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 829, + "id": 834, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 825, + "id": 830, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 821, + "referencedDeclaration": 826, "src": "316:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11241,7 +11312,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 827, + "id": 832, "isConstant": false, "isLValue": false, "isPure": true, @@ -11264,7 +11335,7 @@ "typeString": "int_const 0" } ], - "id": 826, + "id": 831, "isConstant": false, "isLValue": false, "isPure": true, @@ -11277,7 +11348,7 @@ }, "typeName": "address" }, - "id": 828, + "id": 833, "isConstant": false, "isLValue": false, "isPure": true, @@ -11305,21 +11376,21 @@ "typeString": "bool" } ], - "id": 824, + "id": 829, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1263, - 1264 + 1268, + 1269 ], - "referencedDeclaration": 1263, + "referencedDeclaration": 1268, "src": "308:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 830, + "id": 835, "isConstant": false, "isLValue": false, "isPure": false, @@ -11333,7 +11404,7 @@ "typeString": "tuple()" } }, - "id": 831, + "id": 836, "nodeType": "ExpressionStatement", "src": "308:30:6" }, @@ -11343,7 +11414,7 @@ "arguments": [ { "argumentTypes": null, - "id": 837, + "id": 842, "isConstant": false, "isLValue": false, "isPure": false, @@ -11357,24 +11428,24 @@ "arguments": [ { "argumentTypes": null, - "id": 834, + "id": 839, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 819, + "referencedDeclaration": 824, "src": "357:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeIdentifier": "t_struct$_Role_$822_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, { "argumentTypes": null, - "id": 835, + "id": 840, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 821, + "referencedDeclaration": 826, "src": "363:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11385,7 +11456,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeIdentifier": "t_struct$_Role_$822_storage_ptr", "typeString": "struct Roles.Role storage pointer" }, { @@ -11393,18 +11464,18 @@ "typeString": "address" } ], - "id": 833, + "id": 838, "name": "has", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 903, + "referencedDeclaration": 908, "src": "353:3:6", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$817_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$822_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 836, + "id": 841, "isConstant": false, "isLValue": false, "isPure": false, @@ -11431,21 +11502,21 @@ "typeString": "bool" } ], - "id": 832, + "id": 837, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1263, - 1264 + 1268, + 1269 ], - "referencedDeclaration": 1263, + "referencedDeclaration": 1268, "src": "344:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 838, + "id": 843, "isConstant": false, "isLValue": false, "isPure": false, @@ -11459,14 +11530,14 @@ "typeString": "tuple()" } }, - "id": 839, + "id": 844, "nodeType": "ExpressionStatement", "src": "344:28:6" }, { "expression": { "argumentTypes": null, - "id": 846, + "id": 851, "isConstant": false, "isLValue": false, "isPure": false, @@ -11477,39 +11548,39 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 840, + "id": 845, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 819, + "referencedDeclaration": 824, "src": "379:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeIdentifier": "t_struct$_Role_$822_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 843, + "id": 848, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 816, + "referencedDeclaration": 821, "src": "379:11:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 844, + "id": 849, "indexExpression": { "argumentTypes": null, - "id": 842, + "id": 847, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 821, + "referencedDeclaration": 826, "src": "391:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11532,7 +11603,7 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 845, + "id": 850, "isConstant": false, "isLValue": false, "isPure": true, @@ -11553,14 +11624,14 @@ "typeString": "bool" } }, - "id": 847, + "id": 852, "nodeType": "ExpressionStatement", "src": "379:27:6" } ] }, "documentation": "@dev give an account access to this role", - "id": 849, + "id": 854, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -11568,31 +11639,31 @@ "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 822, + "id": 827, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 819, + "id": 824, "name": "role", "nodeType": "VariableDeclaration", - "scope": 849, + "scope": 854, "src": "257:17:6", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeIdentifier": "t_struct$_Role_$822_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 818, + "id": 823, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 817, + "referencedDeclaration": 822, "src": "257:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeIdentifier": "t_struct$_Role_$822_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -11601,10 +11672,10 @@ }, { "constant": false, - "id": 821, + "id": 826, "name": "account", "nodeType": "VariableDeclaration", - "scope": 849, + "scope": 854, "src": "276:15:6", "stateVariable": false, "storageLocation": "default", @@ -11613,7 +11684,7 @@ "typeString": "address" }, "typeName": { - "id": 820, + "id": 825, "name": "address", "nodeType": "ElementaryTypeName", "src": "276:7:6", @@ -11630,12 +11701,12 @@ }, "payable": false, "returnParameters": { - "id": 823, + "id": 828, "nodeType": "ParameterList", "parameters": [], "src": "302:0:6" }, - "scope": 904, + "scope": 909, "src": "244:167:6", "stateMutability": "nonpayable", "superFunction": null, @@ -11643,7 +11714,7 @@ }, { "body": { - "id": 879, + "id": 884, "nodeType": "Block", "src": "538:109:6", "statements": [ @@ -11657,18 +11728,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 861, + "id": 866, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 857, + "id": 862, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 853, + "referencedDeclaration": 858, "src": "552:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11683,7 +11754,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 859, + "id": 864, "isConstant": false, "isLValue": false, "isPure": true, @@ -11706,7 +11777,7 @@ "typeString": "int_const 0" } ], - "id": 858, + "id": 863, "isConstant": false, "isLValue": false, "isPure": true, @@ -11719,7 +11790,7 @@ }, "typeName": "address" }, - "id": 860, + "id": 865, "isConstant": false, "isLValue": false, "isPure": true, @@ -11747,21 +11818,21 @@ "typeString": "bool" } ], - "id": 856, + "id": 861, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1263, - 1264 + 1268, + 1269 ], - "referencedDeclaration": 1263, + "referencedDeclaration": 1268, "src": "544:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 862, + "id": 867, "isConstant": false, "isLValue": false, "isPure": false, @@ -11775,7 +11846,7 @@ "typeString": "tuple()" } }, - "id": 863, + "id": 868, "nodeType": "ExpressionStatement", "src": "544:30:6" }, @@ -11788,24 +11859,24 @@ "arguments": [ { "argumentTypes": null, - "id": 866, + "id": 871, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 851, + "referencedDeclaration": 856, "src": "592:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeIdentifier": "t_struct$_Role_$822_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, { "argumentTypes": null, - "id": 867, + "id": 872, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 853, + "referencedDeclaration": 858, "src": "598:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11816,7 +11887,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeIdentifier": "t_struct$_Role_$822_storage_ptr", "typeString": "struct Roles.Role storage pointer" }, { @@ -11824,18 +11895,18 @@ "typeString": "address" } ], - "id": 865, + "id": 870, "name": "has", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 903, + "referencedDeclaration": 908, "src": "588:3:6", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$817_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$822_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 868, + "id": 873, "isConstant": false, "isLValue": false, "isPure": false, @@ -11857,21 +11928,21 @@ "typeString": "bool" } ], - "id": 864, + "id": 869, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1263, - 1264 + 1268, + 1269 ], - "referencedDeclaration": 1263, + "referencedDeclaration": 1268, "src": "580:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 869, + "id": 874, "isConstant": false, "isLValue": false, "isPure": false, @@ -11885,14 +11956,14 @@ "typeString": "tuple()" } }, - "id": 870, + "id": 875, "nodeType": "ExpressionStatement", "src": "580:27:6" }, { "expression": { "argumentTypes": null, - "id": 877, + "id": 882, "isConstant": false, "isLValue": false, "isPure": false, @@ -11903,39 +11974,39 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 871, + "id": 876, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 851, + "referencedDeclaration": 856, "src": "614:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeIdentifier": "t_struct$_Role_$822_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 874, + "id": 879, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 816, + "referencedDeclaration": 821, "src": "614:11:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 875, + "id": 880, "indexExpression": { "argumentTypes": null, - "id": 873, + "id": 878, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 853, + "referencedDeclaration": 858, "src": "626:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11958,7 +12029,7 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 876, + "id": 881, "isConstant": false, "isLValue": false, "isPure": true, @@ -11979,14 +12050,14 @@ "typeString": "bool" } }, - "id": 878, + "id": 883, "nodeType": "ExpressionStatement", "src": "614:28:6" } ] }, "documentation": "@dev remove an account's access to this role", - "id": 880, + "id": 885, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -11994,31 +12065,31 @@ "name": "remove", "nodeType": "FunctionDefinition", "parameters": { - "id": 854, + "id": 859, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 851, + "id": 856, "name": "role", "nodeType": "VariableDeclaration", - "scope": 880, + "scope": 885, "src": "493:17:6", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeIdentifier": "t_struct$_Role_$822_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 850, + "id": 855, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 817, + "referencedDeclaration": 822, "src": "493:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeIdentifier": "t_struct$_Role_$822_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -12027,10 +12098,10 @@ }, { "constant": false, - "id": 853, + "id": 858, "name": "account", "nodeType": "VariableDeclaration", - "scope": 880, + "scope": 885, "src": "512:15:6", "stateVariable": false, "storageLocation": "default", @@ -12039,7 +12110,7 @@ "typeString": "address" }, "typeName": { - "id": 852, + "id": 857, "name": "address", "nodeType": "ElementaryTypeName", "src": "512:7:6", @@ -12056,12 +12127,12 @@ }, "payable": false, "returnParameters": { - "id": 855, + "id": 860, "nodeType": "ParameterList", "parameters": [], "src": "538:0:6" }, - "scope": 904, + "scope": 909, "src": "477:170:6", "stateMutability": "nonpayable", "superFunction": null, @@ -12069,7 +12140,7 @@ }, { "body": { - "id": 902, + "id": 907, "nodeType": "Block", "src": "817:74:6", "statements": [ @@ -12083,18 +12154,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 894, + "id": 899, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 890, + "id": 895, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 884, + "referencedDeclaration": 889, "src": "831:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -12109,7 +12180,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 892, + "id": 897, "isConstant": false, "isLValue": false, "isPure": true, @@ -12132,7 +12203,7 @@ "typeString": "int_const 0" } ], - "id": 891, + "id": 896, "isConstant": false, "isLValue": false, "isPure": true, @@ -12145,7 +12216,7 @@ }, "typeName": "address" }, - "id": 893, + "id": 898, "isConstant": false, "isLValue": false, "isPure": true, @@ -12173,21 +12244,21 @@ "typeString": "bool" } ], - "id": 889, + "id": 894, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1263, - 1264 + 1268, + 1269 ], - "referencedDeclaration": 1263, + "referencedDeclaration": 1268, "src": "823:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 895, + "id": 900, "isConstant": false, "isLValue": false, "isPure": false, @@ -12201,7 +12272,7 @@ "typeString": "tuple()" } }, - "id": 896, + "id": 901, "nodeType": "ExpressionStatement", "src": "823:30:6" }, @@ -12212,39 +12283,39 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 897, + "id": 902, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 882, + "referencedDeclaration": 887, "src": "866:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeIdentifier": "t_struct$_Role_$822_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 898, + "id": 903, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 816, + "referencedDeclaration": 821, "src": "866:11:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 900, + "id": 905, "indexExpression": { "argumentTypes": null, - "id": 899, + "id": 904, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 884, + "referencedDeclaration": 889, "src": "878:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -12262,15 +12333,15 @@ "typeString": "bool" } }, - "functionReturnParameters": 888, - "id": 901, + "functionReturnParameters": 893, + "id": 906, "nodeType": "Return", "src": "859:27:6" } ] }, "documentation": "@dev check if an account has this role\n@return bool", - "id": 903, + "id": 908, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -12278,31 +12349,31 @@ "name": "has", "nodeType": "FunctionDefinition", "parameters": { - "id": 885, + "id": 890, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 882, + "id": 887, "name": "role", "nodeType": "VariableDeclaration", - "scope": 903, + "scope": 908, "src": "738:17:6", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeIdentifier": "t_struct$_Role_$822_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 881, + "id": 886, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 817, + "referencedDeclaration": 822, "src": "738:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeIdentifier": "t_struct$_Role_$822_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -12311,10 +12382,10 @@ }, { "constant": false, - "id": 884, + "id": 889, "name": "account", "nodeType": "VariableDeclaration", - "scope": 903, + "scope": 908, "src": "757:15:6", "stateVariable": false, "storageLocation": "default", @@ -12323,7 +12394,7 @@ "typeString": "address" }, "typeName": { - "id": 883, + "id": 888, "name": "address", "nodeType": "ElementaryTypeName", "src": "757:7:6", @@ -12340,15 +12411,15 @@ }, "payable": false, "returnParameters": { - "id": 888, + "id": 893, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 887, + "id": 892, "name": "", "nodeType": "VariableDeclaration", - "scope": 903, + "scope": 908, "src": "809:4:6", "stateVariable": false, "storageLocation": "default", @@ -12357,7 +12428,7 @@ "typeString": "bool" }, "typeName": { - "id": 886, + "id": 891, "name": "bool", "nodeType": "ElementaryTypeName", "src": "809:4:6", @@ -12372,14 +12443,14 @@ ], "src": "808:6:6" }, - "scope": 904, + "scope": 909, "src": "725:166:6", "stateMutability": "view", "superFunction": null, "visibility": "internal" } ], - "scope": 905, + "scope": 910, "src": "109:784:6" } ], @@ -12392,14 +12463,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "exportedSymbols": { "SafeMath": [ - 1032 + 1037 ] }, - "id": 1033, + "id": 1038, "nodeType": "SourceUnit", "nodes": [ { - "id": 906, + "id": 911, "literals": [ "solidity", "^", @@ -12415,16 +12486,16 @@ "contractKind": "library", "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", "fullyImplemented": true, - "id": 1032, + "id": 1037, "linearizedBaseContracts": [ - 1032 + 1037 ], "name": "SafeMath", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 938, + "id": 943, "nodeType": "Block", "src": "271:314:7", "statements": [ @@ -12435,18 +12506,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 917, + "id": 922, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 915, + "id": 920, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, + "referencedDeclaration": 913, "src": "486:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12458,7 +12529,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 916, + "id": 921, "isConstant": false, "isLValue": false, "isPure": true, @@ -12480,11 +12551,11 @@ } }, "falseBody": null, - "id": 921, + "id": 926, "nodeType": "IfStatement", "src": "482:35:7", "trueBody": { - "id": 920, + "id": 925, "nodeType": "Block", "src": "494:23:7", "statements": [ @@ -12492,7 +12563,7 @@ "expression": { "argumentTypes": null, "hexValue": "30", - "id": 918, + "id": 923, "isConstant": false, "isLValue": false, "isPure": true, @@ -12507,8 +12578,8 @@ }, "value": "0" }, - "functionReturnParameters": 914, - "id": 919, + "functionReturnParameters": 919, + "id": 924, "nodeType": "Return", "src": "502:8:7" } @@ -12517,15 +12588,15 @@ }, { "assignments": [ - 923 + 928 ], "declarations": [ { "constant": false, - "id": 923, + "id": 928, "name": "c", "nodeType": "VariableDeclaration", - "scope": 939, + "scope": 944, "src": "523:9:7", "stateVariable": false, "storageLocation": "default", @@ -12534,7 +12605,7 @@ "typeString": "uint256" }, "typeName": { - "id": 922, + "id": 927, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "523:7:7", @@ -12547,25 +12618,25 @@ "visibility": "internal" } ], - "id": 927, + "id": 932, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 926, + "id": 931, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 924, + "id": 929, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, + "referencedDeclaration": 913, "src": "535:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12576,11 +12647,11 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 925, + "id": 930, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 910, + "referencedDeclaration": 915, "src": "539:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12606,7 +12677,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 933, + "id": 938, "isConstant": false, "isLValue": false, "isPure": false, @@ -12617,18 +12688,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 931, + "id": 936, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 929, + "id": 934, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 923, + "referencedDeclaration": 928, "src": "554:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12639,11 +12710,11 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 930, + "id": 935, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, + "referencedDeclaration": 913, "src": "558:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12660,11 +12731,11 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 932, + "id": 937, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 910, + "referencedDeclaration": 915, "src": "563:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12685,21 +12756,21 @@ "typeString": "bool" } ], - "id": 928, + "id": 933, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1263, - 1264 + 1268, + 1269 ], - "referencedDeclaration": 1263, + "referencedDeclaration": 1268, "src": "546:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 934, + "id": 939, "isConstant": false, "isLValue": false, "isPure": false, @@ -12713,33 +12784,33 @@ "typeString": "tuple()" } }, - "id": 935, + "id": 940, "nodeType": "ExpressionStatement", "src": "546:19:7" }, { "expression": { "argumentTypes": null, - "id": 936, + "id": 941, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 923, + "referencedDeclaration": 928, "src": "579:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 914, - "id": 937, + "functionReturnParameters": 919, + "id": 942, "nodeType": "Return", "src": "572:8:7" } ] }, "documentation": "@dev Multiplies two numbers, reverts on overflow.", - "id": 939, + "id": 944, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -12747,15 +12818,15 @@ "name": "mul", "nodeType": "FunctionDefinition", "parameters": { - "id": 911, + "id": 916, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 908, + "id": 913, "name": "a", "nodeType": "VariableDeclaration", - "scope": 939, + "scope": 944, "src": "217:9:7", "stateVariable": false, "storageLocation": "default", @@ -12764,7 +12835,7 @@ "typeString": "uint256" }, "typeName": { - "id": 907, + "id": 912, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "217:7:7", @@ -12778,10 +12849,10 @@ }, { "constant": false, - "id": 910, + "id": 915, "name": "b", "nodeType": "VariableDeclaration", - "scope": 939, + "scope": 944, "src": "228:9:7", "stateVariable": false, "storageLocation": "default", @@ -12790,7 +12861,7 @@ "typeString": "uint256" }, "typeName": { - "id": 909, + "id": 914, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "228:7:7", @@ -12807,15 +12878,15 @@ }, "payable": false, "returnParameters": { - "id": 914, + "id": 919, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 913, + "id": 918, "name": "", "nodeType": "VariableDeclaration", - "scope": 939, + "scope": 944, "src": "262:7:7", "stateVariable": false, "storageLocation": "default", @@ -12824,7 +12895,7 @@ "typeString": "uint256" }, "typeName": { - "id": 912, + "id": 917, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "262:7:7", @@ -12839,7 +12910,7 @@ ], "src": "261:9:7" }, - "scope": 1032, + "scope": 1037, "src": "204:381:7", "stateMutability": "pure", "superFunction": null, @@ -12847,7 +12918,7 @@ }, { "body": { - "id": 962, + "id": 967, "nodeType": "Block", "src": "762:203:7", "statements": [ @@ -12861,18 +12932,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 951, + "id": 956, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 949, + "id": 954, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 943, + "referencedDeclaration": 948, "src": "776:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12884,7 +12955,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 950, + "id": 955, "isConstant": false, "isLValue": false, "isPure": true, @@ -12913,21 +12984,21 @@ "typeString": "bool" } ], - "id": 948, + "id": 953, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1263, - 1264 + 1268, + 1269 ], - "referencedDeclaration": 1263, + "referencedDeclaration": 1268, "src": "768:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 952, + "id": 957, "isConstant": false, "isLValue": false, "isPure": false, @@ -12941,21 +13012,21 @@ "typeString": "tuple()" } }, - "id": 953, + "id": 958, "nodeType": "ExpressionStatement", "src": "768:14:7" }, { "assignments": [ - 955 + 960 ], "declarations": [ { "constant": false, - "id": 955, + "id": 960, "name": "c", "nodeType": "VariableDeclaration", - "scope": 963, + "scope": 968, "src": "846:9:7", "stateVariable": false, "storageLocation": "default", @@ -12964,7 +13035,7 @@ "typeString": "uint256" }, "typeName": { - "id": 954, + "id": 959, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "846:7:7", @@ -12977,25 +13048,25 @@ "visibility": "internal" } ], - "id": 959, + "id": 964, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 958, + "id": 963, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 956, + "id": 961, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 941, + "referencedDeclaration": 946, "src": "858:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13006,11 +13077,11 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 957, + "id": 962, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 943, + "referencedDeclaration": 948, "src": "862:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13029,26 +13100,26 @@ { "expression": { "argumentTypes": null, - "id": 960, + "id": 965, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 955, + "referencedDeclaration": 960, "src": "959:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 947, - "id": 961, + "functionReturnParameters": 952, + "id": 966, "nodeType": "Return", "src": "952:8:7" } ] }, "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", - "id": 963, + "id": 968, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -13056,15 +13127,15 @@ "name": "div", "nodeType": "FunctionDefinition", "parameters": { - "id": 944, + "id": 949, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 941, + "id": 946, "name": "a", "nodeType": "VariableDeclaration", - "scope": 963, + "scope": 968, "src": "708:9:7", "stateVariable": false, "storageLocation": "default", @@ -13073,7 +13144,7 @@ "typeString": "uint256" }, "typeName": { - "id": 940, + "id": 945, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "708:7:7", @@ -13087,10 +13158,10 @@ }, { "constant": false, - "id": 943, + "id": 948, "name": "b", "nodeType": "VariableDeclaration", - "scope": 963, + "scope": 968, "src": "719:9:7", "stateVariable": false, "storageLocation": "default", @@ -13099,7 +13170,7 @@ "typeString": "uint256" }, "typeName": { - "id": 942, + "id": 947, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "719:7:7", @@ -13116,15 +13187,15 @@ }, "payable": false, "returnParameters": { - "id": 947, + "id": 952, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 946, + "id": 951, "name": "", "nodeType": "VariableDeclaration", - "scope": 963, + "scope": 968, "src": "753:7:7", "stateVariable": false, "storageLocation": "default", @@ -13133,7 +13204,7 @@ "typeString": "uint256" }, "typeName": { - "id": 945, + "id": 950, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "753:7:7", @@ -13148,7 +13219,7 @@ ], "src": "752:9:7" }, - "scope": 1032, + "scope": 1037, "src": "695:270:7", "stateMutability": "pure", "superFunction": null, @@ -13156,7 +13227,7 @@ }, { "body": { - "id": 986, + "id": 991, "nodeType": "Block", "src": "1145:64:7", "statements": [ @@ -13170,18 +13241,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 975, + "id": 980, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 973, + "id": 978, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 967, + "referencedDeclaration": 972, "src": "1159:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13192,11 +13263,11 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 974, + "id": 979, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 965, + "referencedDeclaration": 970, "src": "1164:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13217,21 +13288,21 @@ "typeString": "bool" } ], - "id": 972, + "id": 977, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1263, - 1264 + 1268, + 1269 ], - "referencedDeclaration": 1263, + "referencedDeclaration": 1268, "src": "1151:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 976, + "id": 981, "isConstant": false, "isLValue": false, "isPure": false, @@ -13245,21 +13316,21 @@ "typeString": "tuple()" } }, - "id": 977, + "id": 982, "nodeType": "ExpressionStatement", "src": "1151:15:7" }, { "assignments": [ - 979 + 984 ], "declarations": [ { "constant": false, - "id": 979, + "id": 984, "name": "c", "nodeType": "VariableDeclaration", - "scope": 987, + "scope": 992, "src": "1172:9:7", "stateVariable": false, "storageLocation": "default", @@ -13268,7 +13339,7 @@ "typeString": "uint256" }, "typeName": { - "id": 978, + "id": 983, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1172:7:7", @@ -13281,25 +13352,25 @@ "visibility": "internal" } ], - "id": 983, + "id": 988, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 982, + "id": 987, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 980, + "id": 985, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 965, + "referencedDeclaration": 970, "src": "1184:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13310,11 +13381,11 @@ "operator": "-", "rightExpression": { "argumentTypes": null, - "id": 981, + "id": 986, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 967, + "referencedDeclaration": 972, "src": "1188:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13333,26 +13404,26 @@ { "expression": { "argumentTypes": null, - "id": 984, + "id": 989, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 979, + "referencedDeclaration": 984, "src": "1203:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 971, - "id": 985, + "functionReturnParameters": 976, + "id": 990, "nodeType": "Return", "src": "1196:8:7" } ] }, "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", - "id": 987, + "id": 992, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -13360,15 +13431,15 @@ "name": "sub", "nodeType": "FunctionDefinition", "parameters": { - "id": 968, + "id": 973, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 965, + "id": 970, "name": "a", "nodeType": "VariableDeclaration", - "scope": 987, + "scope": 992, "src": "1091:9:7", "stateVariable": false, "storageLocation": "default", @@ -13377,7 +13448,7 @@ "typeString": "uint256" }, "typeName": { - "id": 964, + "id": 969, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1091:7:7", @@ -13391,10 +13462,10 @@ }, { "constant": false, - "id": 967, + "id": 972, "name": "b", "nodeType": "VariableDeclaration", - "scope": 987, + "scope": 992, "src": "1102:9:7", "stateVariable": false, "storageLocation": "default", @@ -13403,7 +13474,7 @@ "typeString": "uint256" }, "typeName": { - "id": 966, + "id": 971, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1102:7:7", @@ -13420,15 +13491,15 @@ }, "payable": false, "returnParameters": { - "id": 971, + "id": 976, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 970, + "id": 975, "name": "", "nodeType": "VariableDeclaration", - "scope": 987, + "scope": 992, "src": "1136:7:7", "stateVariable": false, "storageLocation": "default", @@ -13437,7 +13508,7 @@ "typeString": "uint256" }, "typeName": { - "id": 969, + "id": 974, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1136:7:7", @@ -13452,7 +13523,7 @@ ], "src": "1135:9:7" }, - "scope": 1032, + "scope": 1037, "src": "1078:131:7", "stateMutability": "pure", "superFunction": null, @@ -13460,21 +13531,21 @@ }, { "body": { - "id": 1010, + "id": 1015, "nodeType": "Block", "src": "1339:64:7", "statements": [ { "assignments": [ - 997 + 1002 ], "declarations": [ { "constant": false, - "id": 997, + "id": 1002, "name": "c", "nodeType": "VariableDeclaration", - "scope": 1011, + "scope": 1016, "src": "1345:9:7", "stateVariable": false, "storageLocation": "default", @@ -13483,7 +13554,7 @@ "typeString": "uint256" }, "typeName": { - "id": 996, + "id": 1001, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1345:7:7", @@ -13496,25 +13567,25 @@ "visibility": "internal" } ], - "id": 1001, + "id": 1006, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1000, + "id": 1005, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 998, + "id": 1003, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, + "referencedDeclaration": 994, "src": "1357:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13525,11 +13596,11 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 999, + "id": 1004, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 991, + "referencedDeclaration": 996, "src": "1361:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13555,18 +13626,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1005, + "id": 1010, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1003, + "id": 1008, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 997, + "referencedDeclaration": 1002, "src": "1376:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13577,11 +13648,11 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 1004, + "id": 1009, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, + "referencedDeclaration": 994, "src": "1381:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13602,21 +13673,21 @@ "typeString": "bool" } ], - "id": 1002, + "id": 1007, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1263, - 1264 + 1268, + 1269 ], - "referencedDeclaration": 1263, + "referencedDeclaration": 1268, "src": "1368:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1006, + "id": 1011, "isConstant": false, "isLValue": false, "isPure": false, @@ -13630,33 +13701,33 @@ "typeString": "tuple()" } }, - "id": 1007, + "id": 1012, "nodeType": "ExpressionStatement", "src": "1368:15:7" }, { "expression": { "argumentTypes": null, - "id": 1008, + "id": 1013, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 997, + "referencedDeclaration": 1002, "src": "1397:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 995, - "id": 1009, + "functionReturnParameters": 1000, + "id": 1014, "nodeType": "Return", "src": "1390:8:7" } ] }, "documentation": "@dev Adds two numbers, reverts on overflow.", - "id": 1011, + "id": 1016, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -13664,15 +13735,15 @@ "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 992, + "id": 997, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 989, + "id": 994, "name": "a", "nodeType": "VariableDeclaration", - "scope": 1011, + "scope": 1016, "src": "1285:9:7", "stateVariable": false, "storageLocation": "default", @@ -13681,7 +13752,7 @@ "typeString": "uint256" }, "typeName": { - "id": 988, + "id": 993, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1285:7:7", @@ -13695,10 +13766,10 @@ }, { "constant": false, - "id": 991, + "id": 996, "name": "b", "nodeType": "VariableDeclaration", - "scope": 1011, + "scope": 1016, "src": "1296:9:7", "stateVariable": false, "storageLocation": "default", @@ -13707,7 +13778,7 @@ "typeString": "uint256" }, "typeName": { - "id": 990, + "id": 995, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1296:7:7", @@ -13724,15 +13795,15 @@ }, "payable": false, "returnParameters": { - "id": 995, + "id": 1000, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 994, + "id": 999, "name": "", "nodeType": "VariableDeclaration", - "scope": 1011, + "scope": 1016, "src": "1330:7:7", "stateVariable": false, "storageLocation": "default", @@ -13741,7 +13812,7 @@ "typeString": "uint256" }, "typeName": { - "id": 993, + "id": 998, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1330:7:7", @@ -13756,7 +13827,7 @@ ], "src": "1329:9:7" }, - "scope": 1032, + "scope": 1037, "src": "1272:131:7", "stateMutability": "pure", "superFunction": null, @@ -13764,7 +13835,7 @@ }, { "body": { - "id": 1030, + "id": 1035, "nodeType": "Block", "src": "1602:44:7", "statements": [ @@ -13778,18 +13849,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1023, + "id": 1028, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1021, + "id": 1026, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1015, + "referencedDeclaration": 1020, "src": "1616:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13801,7 +13872,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1022, + "id": 1027, "isConstant": false, "isLValue": false, "isPure": true, @@ -13830,21 +13901,21 @@ "typeString": "bool" } ], - "id": 1020, + "id": 1025, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1263, - 1264 + 1268, + 1269 ], - "referencedDeclaration": 1263, + "referencedDeclaration": 1268, "src": "1608:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1024, + "id": 1029, "isConstant": false, "isLValue": false, "isPure": false, @@ -13858,7 +13929,7 @@ "typeString": "tuple()" } }, - "id": 1025, + "id": 1030, "nodeType": "ExpressionStatement", "src": "1608:15:7" }, @@ -13869,18 +13940,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1028, + "id": 1033, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1026, + "id": 1031, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1013, + "referencedDeclaration": 1018, "src": "1636:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13891,11 +13962,11 @@ "operator": "%", "rightExpression": { "argumentTypes": null, - "id": 1027, + "id": 1032, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1015, + "referencedDeclaration": 1020, "src": "1640:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13908,15 +13979,15 @@ "typeString": "uint256" } }, - "functionReturnParameters": 1019, - "id": 1029, + "functionReturnParameters": 1024, + "id": 1034, "nodeType": "Return", "src": "1629:12:7" } ] }, "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", - "id": 1031, + "id": 1036, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -13924,15 +13995,15 @@ "name": "mod", "nodeType": "FunctionDefinition", "parameters": { - "id": 1016, + "id": 1021, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1013, + "id": 1018, "name": "a", "nodeType": "VariableDeclaration", - "scope": 1031, + "scope": 1036, "src": "1548:9:7", "stateVariable": false, "storageLocation": "default", @@ -13941,7 +14012,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1012, + "id": 1017, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1548:7:7", @@ -13955,10 +14026,10 @@ }, { "constant": false, - "id": 1015, + "id": 1020, "name": "b", "nodeType": "VariableDeclaration", - "scope": 1031, + "scope": 1036, "src": "1559:9:7", "stateVariable": false, "storageLocation": "default", @@ -13967,7 +14038,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1014, + "id": 1019, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1559:7:7", @@ -13984,15 +14055,15 @@ }, "payable": false, "returnParameters": { - "id": 1019, + "id": 1024, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1018, + "id": 1023, "name": "", "nodeType": "VariableDeclaration", - "scope": 1031, + "scope": 1036, "src": "1593:7:7", "stateVariable": false, "storageLocation": "default", @@ -14001,7 +14072,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1017, + "id": 1022, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1593:7:7", @@ -14016,14 +14087,14 @@ ], "src": "1592:9:7" }, - "scope": 1032, + "scope": 1037, "src": "1535:111:7", "stateMutability": "pure", "superFunction": null, "visibility": "internal" } ], - "scope": 1033, + "scope": 1038, "src": "117:1531:7" } ], @@ -14036,14 +14107,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "exportedSymbols": { "IERC20": [ - 1101 + 1106 ] }, - "id": 1102, + "id": 1107, "nodeType": "SourceUnit", "nodes": [ { - "id": 1034, + "id": 1039, "literals": [ "solidity", "^", @@ -14059,9 +14130,9 @@ "contractKind": "interface", "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", "fullyImplemented": false, - "id": 1101, + "id": 1106, "linearizedBaseContracts": [ - 1101 + 1106 ], "name": "IERC20", "nodeType": "ContractDefinition", @@ -14069,7 +14140,7 @@ { "body": null, "documentation": null, - "id": 1039, + "id": 1044, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -14077,22 +14148,22 @@ "name": "totalSupply", "nodeType": "FunctionDefinition", "parameters": { - "id": 1035, + "id": 1040, "nodeType": "ParameterList", "parameters": [], "src": "156:2:8" }, "payable": false, "returnParameters": { - "id": 1038, + "id": 1043, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1037, + "id": 1042, "name": "", "nodeType": "VariableDeclaration", - "scope": 1039, + "scope": 1044, "src": "182:7:8", "stateVariable": false, "storageLocation": "default", @@ -14101,7 +14172,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1036, + "id": 1041, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "182:7:8", @@ -14116,7 +14187,7 @@ ], "src": "181:9:8" }, - "scope": 1101, + "scope": 1106, "src": "136:55:8", "stateMutability": "view", "superFunction": null, @@ -14125,7 +14196,7 @@ { "body": null, "documentation": null, - "id": 1046, + "id": 1051, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -14133,15 +14204,15 @@ "name": "balanceOf", "nodeType": "FunctionDefinition", "parameters": { - "id": 1042, + "id": 1047, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1041, + "id": 1046, "name": "who", "nodeType": "VariableDeclaration", - "scope": 1046, + "scope": 1051, "src": "214:11:8", "stateVariable": false, "storageLocation": "default", @@ -14150,7 +14221,7 @@ "typeString": "address" }, "typeName": { - "id": 1040, + "id": 1045, "name": "address", "nodeType": "ElementaryTypeName", "src": "214:7:8", @@ -14167,15 +14238,15 @@ }, "payable": false, "returnParameters": { - "id": 1045, + "id": 1050, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1044, + "id": 1049, "name": "", "nodeType": "VariableDeclaration", - "scope": 1046, + "scope": 1051, "src": "250:7:8", "stateVariable": false, "storageLocation": "default", @@ -14184,7 +14255,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1043, + "id": 1048, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "250:7:8", @@ -14199,7 +14270,7 @@ ], "src": "249:9:8" }, - "scope": 1101, + "scope": 1106, "src": "195:64:8", "stateMutability": "view", "superFunction": null, @@ -14208,7 +14279,7 @@ { "body": null, "documentation": null, - "id": 1055, + "id": 1060, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -14216,15 +14287,15 @@ "name": "allowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1051, + "id": 1056, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1048, + "id": 1053, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1055, + "scope": 1060, "src": "282:13:8", "stateVariable": false, "storageLocation": "default", @@ -14233,7 +14304,7 @@ "typeString": "address" }, "typeName": { - "id": 1047, + "id": 1052, "name": "address", "nodeType": "ElementaryTypeName", "src": "282:7:8", @@ -14247,10 +14318,10 @@ }, { "constant": false, - "id": 1050, + "id": 1055, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1055, + "scope": 1060, "src": "297:15:8", "stateVariable": false, "storageLocation": "default", @@ -14259,7 +14330,7 @@ "typeString": "address" }, "typeName": { - "id": 1049, + "id": 1054, "name": "address", "nodeType": "ElementaryTypeName", "src": "297:7:8", @@ -14276,15 +14347,15 @@ }, "payable": false, "returnParameters": { - "id": 1054, + "id": 1059, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1053, + "id": 1058, "name": "", "nodeType": "VariableDeclaration", - "scope": 1055, + "scope": 1060, "src": "341:7:8", "stateVariable": false, "storageLocation": "default", @@ -14293,7 +14364,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1052, + "id": 1057, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "341:7:8", @@ -14308,7 +14379,7 @@ ], "src": "340:9:8" }, - "scope": 1101, + "scope": 1106, "src": "263:87:8", "stateMutability": "view", "superFunction": null, @@ -14317,7 +14388,7 @@ { "body": null, "documentation": null, - "id": 1064, + "id": 1069, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -14325,15 +14396,15 @@ "name": "transfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 1060, + "id": 1065, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1057, + "id": 1062, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1064, + "scope": 1069, "src": "372:10:8", "stateVariable": false, "storageLocation": "default", @@ -14342,7 +14413,7 @@ "typeString": "address" }, "typeName": { - "id": 1056, + "id": 1061, "name": "address", "nodeType": "ElementaryTypeName", "src": "372:7:8", @@ -14356,10 +14427,10 @@ }, { "constant": false, - "id": 1059, + "id": 1064, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1064, + "scope": 1069, "src": "384:13:8", "stateVariable": false, "storageLocation": "default", @@ -14368,7 +14439,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1058, + "id": 1063, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "384:7:8", @@ -14385,15 +14456,15 @@ }, "payable": false, "returnParameters": { - "id": 1063, + "id": 1068, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1062, + "id": 1067, "name": "", "nodeType": "VariableDeclaration", - "scope": 1064, + "scope": 1069, "src": "417:4:8", "stateVariable": false, "storageLocation": "default", @@ -14402,7 +14473,7 @@ "typeString": "bool" }, "typeName": { - "id": 1061, + "id": 1066, "name": "bool", "nodeType": "ElementaryTypeName", "src": "417:4:8", @@ -14417,7 +14488,7 @@ ], "src": "416:6:8" }, - "scope": 1101, + "scope": 1106, "src": "354:69:8", "stateMutability": "nonpayable", "superFunction": null, @@ -14426,7 +14497,7 @@ { "body": null, "documentation": null, - "id": 1073, + "id": 1078, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -14434,15 +14505,15 @@ "name": "approve", "nodeType": "FunctionDefinition", "parameters": { - "id": 1069, + "id": 1074, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1066, + "id": 1071, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1073, + "scope": 1078, "src": "444:15:8", "stateVariable": false, "storageLocation": "default", @@ -14451,7 +14522,7 @@ "typeString": "address" }, "typeName": { - "id": 1065, + "id": 1070, "name": "address", "nodeType": "ElementaryTypeName", "src": "444:7:8", @@ -14465,10 +14536,10 @@ }, { "constant": false, - "id": 1068, + "id": 1073, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1073, + "scope": 1078, "src": "461:13:8", "stateVariable": false, "storageLocation": "default", @@ -14477,7 +14548,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1067, + "id": 1072, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "461:7:8", @@ -14494,15 +14565,15 @@ }, "payable": false, "returnParameters": { - "id": 1072, + "id": 1077, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1071, + "id": 1076, "name": "", "nodeType": "VariableDeclaration", - "scope": 1073, + "scope": 1078, "src": "498:4:8", "stateVariable": false, "storageLocation": "default", @@ -14511,7 +14582,7 @@ "typeString": "bool" }, "typeName": { - "id": 1070, + "id": 1075, "name": "bool", "nodeType": "ElementaryTypeName", "src": "498:4:8", @@ -14526,7 +14597,7 @@ ], "src": "497:6:8" }, - "scope": 1101, + "scope": 1106, "src": "427:77:8", "stateMutability": "nonpayable", "superFunction": null, @@ -14535,7 +14606,7 @@ { "body": null, "documentation": null, - "id": 1084, + "id": 1089, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -14543,15 +14614,15 @@ "name": "transferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 1080, + "id": 1085, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1075, + "id": 1080, "name": "from", "nodeType": "VariableDeclaration", - "scope": 1084, + "scope": 1089, "src": "530:12:8", "stateVariable": false, "storageLocation": "default", @@ -14560,7 +14631,7 @@ "typeString": "address" }, "typeName": { - "id": 1074, + "id": 1079, "name": "address", "nodeType": "ElementaryTypeName", "src": "530:7:8", @@ -14574,10 +14645,10 @@ }, { "constant": false, - "id": 1077, + "id": 1082, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1084, + "scope": 1089, "src": "544:10:8", "stateVariable": false, "storageLocation": "default", @@ -14586,7 +14657,7 @@ "typeString": "address" }, "typeName": { - "id": 1076, + "id": 1081, "name": "address", "nodeType": "ElementaryTypeName", "src": "544:7:8", @@ -14600,10 +14671,10 @@ }, { "constant": false, - "id": 1079, + "id": 1084, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1084, + "scope": 1089, "src": "556:13:8", "stateVariable": false, "storageLocation": "default", @@ -14612,7 +14683,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1078, + "id": 1083, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "556:7:8", @@ -14629,15 +14700,15 @@ }, "payable": false, "returnParameters": { - "id": 1083, + "id": 1088, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1082, + "id": 1087, "name": "", "nodeType": "VariableDeclaration", - "scope": 1084, + "scope": 1089, "src": "593:4:8", "stateVariable": false, "storageLocation": "default", @@ -14646,7 +14717,7 @@ "typeString": "bool" }, "typeName": { - "id": 1081, + "id": 1086, "name": "bool", "nodeType": "ElementaryTypeName", "src": "593:4:8", @@ -14661,7 +14732,7 @@ ], "src": "592:6:8" }, - "scope": 1101, + "scope": 1106, "src": "508:91:8", "stateMutability": "nonpayable", "superFunction": null, @@ -14670,20 +14741,20 @@ { "anonymous": false, "documentation": null, - "id": 1092, + "id": 1097, "name": "Transfer", "nodeType": "EventDefinition", "parameters": { - "id": 1091, + "id": 1096, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1086, + "id": 1091, "indexed": true, "name": "from", "nodeType": "VariableDeclaration", - "scope": 1092, + "scope": 1097, "src": "623:20:8", "stateVariable": false, "storageLocation": "default", @@ -14692,7 +14763,7 @@ "typeString": "address" }, "typeName": { - "id": 1085, + "id": 1090, "name": "address", "nodeType": "ElementaryTypeName", "src": "623:7:8", @@ -14706,11 +14777,11 @@ }, { "constant": false, - "id": 1088, + "id": 1093, "indexed": true, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1092, + "scope": 1097, "src": "649:18:8", "stateVariable": false, "storageLocation": "default", @@ -14719,7 +14790,7 @@ "typeString": "address" }, "typeName": { - "id": 1087, + "id": 1092, "name": "address", "nodeType": "ElementaryTypeName", "src": "649:7:8", @@ -14733,11 +14804,11 @@ }, { "constant": false, - "id": 1090, + "id": 1095, "indexed": false, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1092, + "scope": 1097, "src": "673:13:8", "stateVariable": false, "storageLocation": "default", @@ -14746,7 +14817,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1089, + "id": 1094, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "673:7:8", @@ -14766,20 +14837,20 @@ { "anonymous": false, "documentation": null, - "id": 1100, + "id": 1105, "name": "Approval", "nodeType": "EventDefinition", "parameters": { - "id": 1099, + "id": 1104, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1094, + "id": 1099, "indexed": true, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1100, + "scope": 1105, "src": "715:21:8", "stateVariable": false, "storageLocation": "default", @@ -14788,7 +14859,7 @@ "typeString": "address" }, "typeName": { - "id": 1093, + "id": 1098, "name": "address", "nodeType": "ElementaryTypeName", "src": "715:7:8", @@ -14802,11 +14873,11 @@ }, { "constant": false, - "id": 1096, + "id": 1101, "indexed": true, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1100, + "scope": 1105, "src": "742:23:8", "stateVariable": false, "storageLocation": "default", @@ -14815,7 +14886,7 @@ "typeString": "address" }, "typeName": { - "id": 1095, + "id": 1100, "name": "address", "nodeType": "ElementaryTypeName", "src": "742:7:8", @@ -14829,11 +14900,11 @@ }, { "constant": false, - "id": 1098, + "id": 1103, "indexed": false, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1100, + "scope": 1105, "src": "771:13:8", "stateVariable": false, "storageLocation": "default", @@ -14842,7 +14913,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1097, + "id": 1102, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "771:7:8", @@ -14860,7 +14931,7 @@ "src": "695:94:8" } ], - "scope": 1102, + "scope": 1107, "src": "115:676:8" } ], @@ -14873,14 +14944,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "exportedSymbols": { "SafeERC20": [ - 1245 + 1250 ] }, - "id": 1246, + "id": 1251, "nodeType": "SourceUnit", "nodes": [ { - "id": 1103, + "id": 1108, "literals": [ "solidity", "^", @@ -14893,10 +14964,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "./IERC20.sol", - "id": 1104, + "id": 1109, "nodeType": "ImportDirective", - "scope": 1246, - "sourceUnit": 1102, + "scope": 1251, + "sourceUnit": 1107, "src": "26:22:9", "symbolAliases": [], "unitAlias": "" @@ -14904,10 +14975,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "file": "../../math/SafeMath.sol", - "id": 1105, + "id": 1110, "nodeType": "ImportDirective", - "scope": 1246, - "sourceUnit": 1033, + "scope": 1251, + "sourceUnit": 1038, "src": "49:33:9", "symbolAliases": [], "unitAlias": "" @@ -14918,31 +14989,31 @@ "contractKind": "library", "documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.", "fullyImplemented": true, - "id": 1245, + "id": 1250, "linearizedBaseContracts": [ - 1245 + 1250 ], "name": "SafeERC20", "nodeType": "ContractDefinition", "nodes": [ { - "id": 1108, + "id": 1113, "libraryName": { "contractScope": null, - "id": 1106, + "id": 1111, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1032, + "referencedDeclaration": 1037, "src": "382:8:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$1032", + "typeIdentifier": "t_contract$_SafeMath_$1037", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", "src": "376:27:9", "typeName": { - "id": 1107, + "id": 1112, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "395:7:9", @@ -14954,7 +15025,7 @@ }, { "body": { - "id": 1125, + "id": 1130, "nodeType": "Block", "src": "501:45:9", "statements": [ @@ -14967,11 +15038,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1120, + "id": 1125, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1112, + "referencedDeclaration": 1117, "src": "530:2:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14980,11 +15051,11 @@ }, { "argumentTypes": null, - "id": 1121, + "id": 1126, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, + "referencedDeclaration": 1119, "src": "534:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15005,32 +15076,32 @@ ], "expression": { "argumentTypes": null, - "id": 1118, + "id": 1123, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, + "referencedDeclaration": 1115, "src": "515:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1101", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" } }, - "id": 1119, + "id": 1124, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1064, + "referencedDeclaration": 1069, "src": "515:14:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1122, + "id": 1127, "isConstant": false, "isLValue": false, "isPure": false, @@ -15052,21 +15123,21 @@ "typeString": "bool" } ], - "id": 1117, + "id": 1122, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1263, - 1264 + 1268, + 1269 ], - "referencedDeclaration": 1263, + "referencedDeclaration": 1268, "src": "507:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1123, + "id": 1128, "isConstant": false, "isLValue": false, "isPure": false, @@ -15080,14 +15151,14 @@ "typeString": "tuple()" } }, - "id": 1124, + "id": 1129, "nodeType": "ExpressionStatement", "src": "507:34:9" } ] }, "documentation": null, - "id": 1126, + "id": 1131, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -15095,31 +15166,31 @@ "name": "safeTransfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 1115, + "id": 1120, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1110, + "id": 1115, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1126, + "scope": 1131, "src": "434:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1101", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1109, + "id": 1114, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1101, + "referencedDeclaration": 1106, "src": "434:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1101", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" } }, @@ -15128,10 +15199,10 @@ }, { "constant": false, - "id": 1112, + "id": 1117, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1126, + "scope": 1131, "src": "452:10:9", "stateVariable": false, "storageLocation": "default", @@ -15140,7 +15211,7 @@ "typeString": "address" }, "typeName": { - "id": 1111, + "id": 1116, "name": "address", "nodeType": "ElementaryTypeName", "src": "452:7:9", @@ -15154,10 +15225,10 @@ }, { "constant": false, - "id": 1114, + "id": 1119, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1126, + "scope": 1131, "src": "468:13:9", "stateVariable": false, "storageLocation": "default", @@ -15166,7 +15237,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1113, + "id": 1118, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "468:7:9", @@ -15183,12 +15254,12 @@ }, "payable": false, "returnParameters": { - "id": 1116, + "id": 1121, "nodeType": "ParameterList", "parameters": [], "src": "501:0:9" }, - "scope": 1245, + "scope": 1250, "src": "407:139:9", "stateMutability": "nonpayable", "superFunction": null, @@ -15196,7 +15267,7 @@ }, { "body": { - "id": 1146, + "id": 1151, "nodeType": "Block", "src": "666:55:9", "statements": [ @@ -15209,11 +15280,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1140, + "id": 1145, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1130, + "referencedDeclaration": 1135, "src": "699:4:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -15222,11 +15293,11 @@ }, { "argumentTypes": null, - "id": 1141, + "id": 1146, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1132, + "referencedDeclaration": 1137, "src": "705:2:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -15235,11 +15306,11 @@ }, { "argumentTypes": null, - "id": 1142, + "id": 1147, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1134, + "referencedDeclaration": 1139, "src": "709:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15264,32 +15335,32 @@ ], "expression": { "argumentTypes": null, - "id": 1138, + "id": 1143, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1128, + "referencedDeclaration": 1133, "src": "680:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1101", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" } }, - "id": 1139, + "id": 1144, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", - "referencedDeclaration": 1084, + "referencedDeclaration": 1089, "src": "680:18:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)" } }, - "id": 1143, + "id": 1148, "isConstant": false, "isLValue": false, "isPure": false, @@ -15311,21 +15382,21 @@ "typeString": "bool" } ], - "id": 1137, + "id": 1142, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1263, - 1264 + 1268, + 1269 ], - "referencedDeclaration": 1263, + "referencedDeclaration": 1268, "src": "672:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1144, + "id": 1149, "isConstant": false, "isLValue": false, "isPure": false, @@ -15339,14 +15410,14 @@ "typeString": "tuple()" } }, - "id": 1145, + "id": 1150, "nodeType": "ExpressionStatement", "src": "672:44:9" } ] }, "documentation": null, - "id": 1147, + "id": 1152, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -15354,31 +15425,31 @@ "name": "safeTransferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 1135, + "id": 1140, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1128, + "id": 1133, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1147, + "scope": 1152, "src": "581:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1101", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1127, + "id": 1132, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1101, + "referencedDeclaration": 1106, "src": "581:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1101", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" } }, @@ -15387,10 +15458,10 @@ }, { "constant": false, - "id": 1130, + "id": 1135, "name": "from", "nodeType": "VariableDeclaration", - "scope": 1147, + "scope": 1152, "src": "599:12:9", "stateVariable": false, "storageLocation": "default", @@ -15399,7 +15470,7 @@ "typeString": "address" }, "typeName": { - "id": 1129, + "id": 1134, "name": "address", "nodeType": "ElementaryTypeName", "src": "599:7:9", @@ -15413,10 +15484,10 @@ }, { "constant": false, - "id": 1132, + "id": 1137, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1147, + "scope": 1152, "src": "617:10:9", "stateVariable": false, "storageLocation": "default", @@ -15425,7 +15496,7 @@ "typeString": "address" }, "typeName": { - "id": 1131, + "id": 1136, "name": "address", "nodeType": "ElementaryTypeName", "src": "617:7:9", @@ -15439,10 +15510,10 @@ }, { "constant": false, - "id": 1134, + "id": 1139, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1147, + "scope": 1152, "src": "633:13:9", "stateVariable": false, "storageLocation": "default", @@ -15451,7 +15522,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1133, + "id": 1138, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "633:7:9", @@ -15468,12 +15539,12 @@ }, "payable": false, "returnParameters": { - "id": 1136, + "id": 1141, "nodeType": "ParameterList", "parameters": [], "src": "666:0:9" }, - "scope": 1245, + "scope": 1250, "src": "550:171:9", "stateMutability": "nonpayable", "superFunction": null, @@ -15481,7 +15552,7 @@ }, { "body": { - "id": 1181, + "id": 1186, "nodeType": "Block", "src": "823:330:9", "statements": [ @@ -15495,7 +15566,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1170, + "id": 1175, "isConstant": false, "isLValue": false, "isPure": false, @@ -15509,18 +15580,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1159, + "id": 1164, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1157, + "id": 1162, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1153, + "referencedDeclaration": 1158, "src": "1045:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15532,7 +15603,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1158, + "id": 1163, "isConstant": false, "isLValue": false, "isPure": true, @@ -15554,7 +15625,7 @@ } } ], - "id": 1160, + "id": 1165, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -15578,7 +15649,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1168, + "id": 1173, "isConstant": false, "isLValue": false, "isPure": false, @@ -15590,18 +15661,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1163, + "id": 1168, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1260, + "referencedDeclaration": 1265, "src": "1077:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1164, + "id": 1169, "isConstant": false, "isLValue": false, "isPure": false, @@ -15617,11 +15688,11 @@ }, { "argumentTypes": null, - "id": 1165, + "id": 1170, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1151, + "referencedDeclaration": 1156, "src": "1089:7:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -15642,32 +15713,32 @@ ], "expression": { "argumentTypes": null, - "id": 1161, + "id": 1166, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1149, + "referencedDeclaration": 1154, "src": "1061:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1101", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" } }, - "id": 1162, + "id": 1167, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 1055, + "referencedDeclaration": 1060, "src": "1061:15:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1166, + "id": 1171, "isConstant": false, "isLValue": false, "isPure": false, @@ -15686,7 +15757,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1167, + "id": 1172, "isConstant": false, "isLValue": false, "isPure": true, @@ -15708,7 +15779,7 @@ } } ], - "id": 1169, + "id": 1174, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -15735,21 +15806,21 @@ "typeString": "bool" } ], - "id": 1156, + "id": 1161, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1263, - 1264 + 1268, + 1269 ], - "referencedDeclaration": 1263, + "referencedDeclaration": 1268, "src": "1036:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1171, + "id": 1176, "isConstant": false, "isLValue": false, "isPure": false, @@ -15763,7 +15834,7 @@ "typeString": "tuple()" } }, - "id": 1172, + "id": 1177, "nodeType": "ExpressionStatement", "src": "1036:68:9" }, @@ -15776,11 +15847,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1176, + "id": 1181, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1151, + "referencedDeclaration": 1156, "src": "1132:7:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -15789,11 +15860,11 @@ }, { "argumentTypes": null, - "id": 1177, + "id": 1182, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1153, + "referencedDeclaration": 1158, "src": "1141:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15814,32 +15885,32 @@ ], "expression": { "argumentTypes": null, - "id": 1174, + "id": 1179, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1149, + "referencedDeclaration": 1154, "src": "1118:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1101", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" } }, - "id": 1175, + "id": 1180, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 1073, + "referencedDeclaration": 1078, "src": "1118:13:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1178, + "id": 1183, "isConstant": false, "isLValue": false, "isPure": false, @@ -15861,21 +15932,21 @@ "typeString": "bool" } ], - "id": 1173, + "id": 1178, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1263, - 1264 + 1268, + 1269 ], - "referencedDeclaration": 1263, + "referencedDeclaration": 1268, "src": "1110:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1179, + "id": 1184, "isConstant": false, "isLValue": false, "isPure": false, @@ -15889,14 +15960,14 @@ "typeString": "tuple()" } }, - "id": 1180, + "id": 1185, "nodeType": "ExpressionStatement", "src": "1110:38:9" } ] }, "documentation": null, - "id": 1182, + "id": 1187, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -15904,31 +15975,31 @@ "name": "safeApprove", "nodeType": "FunctionDefinition", "parameters": { - "id": 1154, + "id": 1159, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1149, + "id": 1154, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1182, + "scope": 1187, "src": "751:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1101", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1148, + "id": 1153, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1101, + "referencedDeclaration": 1106, "src": "751:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1101", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" } }, @@ -15937,10 +16008,10 @@ }, { "constant": false, - "id": 1151, + "id": 1156, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1182, + "scope": 1187, "src": "769:15:9", "stateVariable": false, "storageLocation": "default", @@ -15949,7 +16020,7 @@ "typeString": "address" }, "typeName": { - "id": 1150, + "id": 1155, "name": "address", "nodeType": "ElementaryTypeName", "src": "769:7:9", @@ -15963,10 +16034,10 @@ }, { "constant": false, - "id": 1153, + "id": 1158, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1182, + "scope": 1187, "src": "790:13:9", "stateVariable": false, "storageLocation": "default", @@ -15975,7 +16046,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1152, + "id": 1157, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "790:7:9", @@ -15992,12 +16063,12 @@ }, "payable": false, "returnParameters": { - "id": 1155, + "id": 1160, "nodeType": "ParameterList", "parameters": [], "src": "823:0:9" }, - "scope": 1245, + "scope": 1250, "src": "725:428:9", "stateMutability": "nonpayable", "superFunction": null, @@ -16005,21 +16076,21 @@ }, { "body": { - "id": 1212, + "id": 1217, "nodeType": "Block", "src": "1265:135:9", "statements": [ { "assignments": [ - 1192 + 1197 ], "declarations": [ { "constant": false, - "id": 1192, + "id": 1197, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 1213, + "scope": 1218, "src": "1271:20:9", "stateVariable": false, "storageLocation": "default", @@ -16028,7 +16099,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1191, + "id": 1196, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1271:7:9", @@ -16041,17 +16112,17 @@ "visibility": "internal" } ], - "id": 1203, + "id": 1208, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1201, + "id": 1206, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1188, + "referencedDeclaration": 1193, "src": "1338:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16074,14 +16145,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1196, + "id": 1201, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1281, + "referencedDeclaration": 1286, "src": "1318:4:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1245", + "typeIdentifier": "t_contract$_SafeERC20_$1250", "typeString": "library SafeERC20" } } @@ -16089,11 +16160,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$1245", + "typeIdentifier": "t_contract$_SafeERC20_$1250", "typeString": "library SafeERC20" } ], - "id": 1195, + "id": 1200, "isConstant": false, "isLValue": false, "isPure": true, @@ -16106,7 +16177,7 @@ }, "typeName": "address" }, - "id": 1197, + "id": 1202, "isConstant": false, "isLValue": false, "isPure": false, @@ -16122,11 +16193,11 @@ }, { "argumentTypes": null, - "id": 1198, + "id": 1203, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1186, + "referencedDeclaration": 1191, "src": "1325:7:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -16147,32 +16218,32 @@ ], "expression": { "argumentTypes": null, - "id": 1193, + "id": 1198, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1184, + "referencedDeclaration": 1189, "src": "1294:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1101", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" } }, - "id": 1194, + "id": 1199, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 1055, + "referencedDeclaration": 1060, "src": "1294:15:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1199, + "id": 1204, "isConstant": false, "isLValue": false, "isPure": false, @@ -16186,21 +16257,21 @@ "typeString": "uint256" } }, - "id": 1200, + "id": 1205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1011, + "referencedDeclaration": 1016, "src": "1294:43:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1202, + "id": 1207, "isConstant": false, "isLValue": false, "isPure": false, @@ -16226,11 +16297,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1207, + "id": 1212, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1186, + "referencedDeclaration": 1191, "src": "1372:7:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -16239,11 +16310,11 @@ }, { "argumentTypes": null, - "id": 1208, + "id": 1213, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1192, + "referencedDeclaration": 1197, "src": "1381:12:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16264,32 +16335,32 @@ ], "expression": { "argumentTypes": null, - "id": 1205, + "id": 1210, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1184, + "referencedDeclaration": 1189, "src": "1358:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1101", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" } }, - "id": 1206, + "id": 1211, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 1073, + "referencedDeclaration": 1078, "src": "1358:13:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1209, + "id": 1214, "isConstant": false, "isLValue": false, "isPure": false, @@ -16311,21 +16382,21 @@ "typeString": "bool" } ], - "id": 1204, + "id": 1209, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1263, - 1264 + 1268, + 1269 ], - "referencedDeclaration": 1263, + "referencedDeclaration": 1268, "src": "1350:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1210, + "id": 1215, "isConstant": false, "isLValue": false, "isPure": false, @@ -16339,14 +16410,14 @@ "typeString": "tuple()" } }, - "id": 1211, + "id": 1216, "nodeType": "ExpressionStatement", "src": "1350:45:9" } ] }, "documentation": null, - "id": 1213, + "id": 1218, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -16354,31 +16425,31 @@ "name": "safeIncreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1189, + "id": 1194, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1184, + "id": 1189, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1213, + "scope": 1218, "src": "1193:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1101", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1183, + "id": 1188, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1101, + "referencedDeclaration": 1106, "src": "1193:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1101", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" } }, @@ -16387,10 +16458,10 @@ }, { "constant": false, - "id": 1186, + "id": 1191, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1213, + "scope": 1218, "src": "1211:15:9", "stateVariable": false, "storageLocation": "default", @@ -16399,7 +16470,7 @@ "typeString": "address" }, "typeName": { - "id": 1185, + "id": 1190, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:9", @@ -16413,10 +16484,10 @@ }, { "constant": false, - "id": 1188, + "id": 1193, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1213, + "scope": 1218, "src": "1232:13:9", "stateVariable": false, "storageLocation": "default", @@ -16425,7 +16496,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1187, + "id": 1192, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1232:7:9", @@ -16442,12 +16513,12 @@ }, "payable": false, "returnParameters": { - "id": 1190, + "id": 1195, "nodeType": "ParameterList", "parameters": [], "src": "1265:0:9" }, - "scope": 1245, + "scope": 1250, "src": "1157:243:9", "stateMutability": "nonpayable", "superFunction": null, @@ -16455,21 +16526,21 @@ }, { "body": { - "id": 1243, + "id": 1248, "nodeType": "Block", "src": "1512:135:9", "statements": [ { "assignments": [ - 1223 + 1228 ], "declarations": [ { "constant": false, - "id": 1223, + "id": 1228, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 1244, + "scope": 1249, "src": "1518:20:9", "stateVariable": false, "storageLocation": "default", @@ -16478,7 +16549,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1222, + "id": 1227, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1518:7:9", @@ -16491,17 +16562,17 @@ "visibility": "internal" } ], - "id": 1234, + "id": 1239, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1232, + "id": 1237, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1219, + "referencedDeclaration": 1224, "src": "1585:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16524,14 +16595,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1227, + "id": 1232, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1281, + "referencedDeclaration": 1286, "src": "1565:4:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1245", + "typeIdentifier": "t_contract$_SafeERC20_$1250", "typeString": "library SafeERC20" } } @@ -16539,11 +16610,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$1245", + "typeIdentifier": "t_contract$_SafeERC20_$1250", "typeString": "library SafeERC20" } ], - "id": 1226, + "id": 1231, "isConstant": false, "isLValue": false, "isPure": true, @@ -16556,7 +16627,7 @@ }, "typeName": "address" }, - "id": 1228, + "id": 1233, "isConstant": false, "isLValue": false, "isPure": false, @@ -16572,11 +16643,11 @@ }, { "argumentTypes": null, - "id": 1229, + "id": 1234, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1217, + "referencedDeclaration": 1222, "src": "1572:7:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -16597,32 +16668,32 @@ ], "expression": { "argumentTypes": null, - "id": 1224, + "id": 1229, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1215, + "referencedDeclaration": 1220, "src": "1541:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1101", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" } }, - "id": 1225, + "id": 1230, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 1055, + "referencedDeclaration": 1060, "src": "1541:15:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1230, + "id": 1235, "isConstant": false, "isLValue": false, "isPure": false, @@ -16636,21 +16707,21 @@ "typeString": "uint256" } }, - "id": 1231, + "id": 1236, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 987, + "referencedDeclaration": 992, "src": "1541:43:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1233, + "id": 1238, "isConstant": false, "isLValue": false, "isPure": false, @@ -16676,11 +16747,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1238, + "id": 1243, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1217, + "referencedDeclaration": 1222, "src": "1619:7:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -16689,11 +16760,11 @@ }, { "argumentTypes": null, - "id": 1239, + "id": 1244, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1223, + "referencedDeclaration": 1228, "src": "1628:12:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16714,32 +16785,32 @@ ], "expression": { "argumentTypes": null, - "id": 1236, + "id": 1241, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1215, + "referencedDeclaration": 1220, "src": "1605:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1101", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" } }, - "id": 1237, + "id": 1242, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 1073, + "referencedDeclaration": 1078, "src": "1605:13:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1240, + "id": 1245, "isConstant": false, "isLValue": false, "isPure": false, @@ -16761,21 +16832,21 @@ "typeString": "bool" } ], - "id": 1235, + "id": 1240, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1263, - 1264 + 1268, + 1269 ], - "referencedDeclaration": 1263, + "referencedDeclaration": 1268, "src": "1597:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1241, + "id": 1246, "isConstant": false, "isLValue": false, "isPure": false, @@ -16789,14 +16860,14 @@ "typeString": "tuple()" } }, - "id": 1242, + "id": 1247, "nodeType": "ExpressionStatement", "src": "1597:45:9" } ] }, "documentation": null, - "id": 1244, + "id": 1249, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -16804,31 +16875,31 @@ "name": "safeDecreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1220, + "id": 1225, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1215, + "id": 1220, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1244, + "scope": 1249, "src": "1440:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1101", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1214, + "id": 1219, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1101, + "referencedDeclaration": 1106, "src": "1440:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1101", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" } }, @@ -16837,10 +16908,10 @@ }, { "constant": false, - "id": 1217, + "id": 1222, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1244, + "scope": 1249, "src": "1458:15:9", "stateVariable": false, "storageLocation": "default", @@ -16849,7 +16920,7 @@ "typeString": "address" }, "typeName": { - "id": 1216, + "id": 1221, "name": "address", "nodeType": "ElementaryTypeName", "src": "1458:7:9", @@ -16863,10 +16934,10 @@ }, { "constant": false, - "id": 1219, + "id": 1224, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1244, + "scope": 1249, "src": "1479:13:9", "stateVariable": false, "storageLocation": "default", @@ -16875,7 +16946,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1218, + "id": 1223, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1479:7:9", @@ -16892,19 +16963,19 @@ }, "payable": false, "returnParameters": { - "id": 1221, + "id": 1226, "nodeType": "ParameterList", "parameters": [], "src": "1512:0:9" }, - "scope": 1245, + "scope": 1250, "src": "1404:243:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 1246, + "scope": 1251, "src": "353:1296:9" } ], diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.bin b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.bin index 944a078a6..f56408f66 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.bin +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b50604051602080620010d083398101604052516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790556200006c90640100000000620000c7810204565b6200008033640100000000620000e5810204565b50600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054600160a060020a031916905562000193565b620000e260028264010000000062000e066200010082021704565b50565b620000e260038264010000000062000e066200010082021704565b600160a060020a03811615156200011657600080fd5b6200012b82826401000000006200015b810204565b156200013657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200017357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610f2d80620001a36000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632e6b6849146100bc578063341ccfcb146100dd57806334cdcf26146100fe5780633d19ab1314610133578063608d3d3d1461016757806374be75921461018857806381f909f3146101a957806399f4b251146101ca578063bb52c137146101df578063d43acc7914610206578063e9d618591461021b575b600080fd5b3480156100b157600080fd5b506100ba610230565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661024e565b3480156100e957600080fd5b506100ba600160a060020a036004351661026e565b34801561010a57600080fd5b5061011f600160a060020a0360043516610457565b604080519115158252519081900360200190f35b34801561013f57600080fd5b5061014b600435610470565b60408051600160a060020a039092168252519081900360200190f35b34801561017357600080fd5b5061011f600160a060020a036004351661049f565b34801561019457600080fd5b506100ba600160a060020a03600435166104b2565b3480156101b557600080fd5b506100ba600160a060020a03600435166104cf565b3480156101d657600080fd5b506100ba610686565b3480156101eb57600080fd5b506101f4610bd1565b60408051918252519081900360200190f35b34801561021257600080fd5b506100ba610bdc565b34801561022757600080fd5b506100ba610be5565b6102393361049f565b151561024457600080fd5b61024c610bee565b565b6102573361049f565b151561026257600080fd5b61026b81610cb5565b50565b60008054819074010000000000000000000000000000000000000000900460ff161561029957600080fd5b6102a23361049f565b15156102ad57600080fd5b6004546103e8116102bd57600080fd5b600160a060020a038316600090815260056020526040902054156102e057600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032157600080fd5b505af1158015610335573d6000803e3d6000fd5b505050506040513d602081101561034b57600080fd5b5051151561035857600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b505050506040513d60208110156103c057600080fd5b50519050600060ff8216108015906103dc575060058160ff1611155b15156103e757600080fd5b505060048054600160a060020a039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b600061046a60028363ffffffff610cc616565b92915050565b600060048260010181548110151561048457fe5b600091825260209091200154600160a060020a031692915050565b600061046a60038363ffffffff610cc616565b6104bb33610457565b15156104c657600080fd5b61026b81610cfd565b60005474010000000000000000000000000000000000000000900460ff16156104f757600080fd5b6105003361049f565b151561050b57600080fd5b60045460011061051a57600080fd5b600454600214156105865760048054600190811061053457fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff191690556001610567600482610ea0565b50600160a060020a03811660009081526005602052604081205561026b565b600454600160a060020a03821660009081526005602052604090205414610620576004805460001981019081106105b957fe5b6000918252602080832090910154600160a060020a03848116845260059092526040909220546004805492909316929181106105f157fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60048054600019810190811061063257fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff19169055600480549061066b906000198301610ea0565b50600160a060020a0316600090815260056020526040812055565b6000610690610ec4565b60008060008061069e610ec4565b60005474010000000000000000000000000000000000000000900460ff16156106c657600080fd5b6106cf33610457565b15156106da57600080fd5b6004546001106106e957600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b505050506040513d602081101561077957600080fd5b505196506000871161078a57600080fd5b600194505b6004548510156109395760048054869081106107a757fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561080557600080fd5b505af1158015610819573d6000803e3d6000fd5b505050506040513d602081101561082f57600080fd5b5051151561083c5761092e565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561087a57600080fd5b505af115801561088e573d6000803e3d6000fd5b505050506040513d60208110156108a457600080fd5b5051925060ff831615156108c6578560005b602002018051600101905261092e565b8260ff16600114156108da578560016108b6565b8260ff16600214156108ee578560026108b6565b8260ff1660031415610902578560036108b6565b8260ff1660041415610916578560046108b6565b8260ff166005141561092e5760a08601805160010190525b60019094019361078f565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e909102016028909102016032909102019150818781151561097f57fe5b04815281600a880281151561099057fe5b04602082015281601488028115156109a457fe5b04604082015281601e88028115156109b857fe5b04606082015281602888028115156109cc57fe5b04608082015281603288028115156109e057fe5b0460a0820152600194505b600454851015610bc8576004805486908110610a0357fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a6157600080fd5b505af1158015610a75573d6000803e3d6000fd5b505050506040513d6020811015610a8b57600080fd5b50511515610a9857610bbd565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b505050506040513d6020811015610b0057600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610bbd91600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610b6457600080fd5b505af1158015610b78573d6000803e3d6000fd5b505050506040513d6020811015610b8e57600080fd5b50518260ff861660068110610b9f57fe5b6020020151600154600160a060020a0316919063ffffffff610d0e16565b6001909401936109eb565b50505050505050565b600454600019015b90565b61024c33610dad565b61024c33610dbe565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b505050506040513d6020811015610c7d57600080fd5b505190506000811115610cad57600054600154610cad91600160a060020a0391821691168363ffffffff610d0e16565b61026b610dcf565b61026b60038263ffffffff610e0616565b6000600160a060020a0382161515610cdd57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61026b60028263ffffffff610e0616565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610d7157600080fd5b505af1158015610d85573d6000803e3d6000fd5b505050506040513d6020811015610d9b57600080fd5b50511515610da857600080fd5b505050565b61026b60038263ffffffff610e5416565b61026b60028263ffffffff610e5416565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a0381161515610e1b57600080fd5b610e258282610cc6565b15610e2f57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610e6957600080fd5b610e738282610cc6565b1515610e7e57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610da857600083815260209020610da8918101908301610ee3565b60c0604051908101604052806006906020820280388339509192915050565b610bd991905b80821115610efd5760008155600101610ee9565b50905600a165627a7a723058201033067a6ceafcfdd5906365e4a9ea37491edaca7ecea2eae390d605b7aa71c30029 \ No newline at end of file +60806040523480156200001157600080fd5b50604051602080620010d083398101604052516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790556200006c90640100000000620000c7810204565b6200008033640100000000620000e5810204565b50600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054600160a060020a031916905562000193565b620000e260028264010000000062000e066200010082021704565b50565b620000e260038264010000000062000e066200010082021704565b600160a060020a03811615156200011657600080fd5b6200012b82826401000000006200015b810204565b156200013657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200017357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610f2d80620001a36000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632e6b6849146100bc578063341ccfcb146100dd57806334cdcf26146100fe5780633d19ab1314610133578063608d3d3d1461016757806374be75921461018857806381f909f3146101a957806399f4b251146101ca578063bb52c137146101df578063d43acc7914610206578063e9d618591461021b575b600080fd5b3480156100b157600080fd5b506100ba610230565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661024e565b3480156100e957600080fd5b506100ba600160a060020a036004351661026e565b34801561010a57600080fd5b5061011f600160a060020a0360043516610457565b604080519115158252519081900360200190f35b34801561013f57600080fd5b5061014b600435610470565b60408051600160a060020a039092168252519081900360200190f35b34801561017357600080fd5b5061011f600160a060020a036004351661049f565b34801561019457600080fd5b506100ba600160a060020a03600435166104b2565b3480156101b557600080fd5b506100ba600160a060020a03600435166104cf565b3480156101d657600080fd5b506100ba610686565b3480156101eb57600080fd5b506101f4610bd1565b60408051918252519081900360200190f35b34801561021257600080fd5b506100ba610bdc565b34801561022757600080fd5b506100ba610be5565b6102393361049f565b151561024457600080fd5b61024c610bee565b565b6102573361049f565b151561026257600080fd5b61026b81610cb5565b50565b60008054819074010000000000000000000000000000000000000000900460ff161561029957600080fd5b6102a23361049f565b15156102ad57600080fd5b6004546103e8116102bd57600080fd5b600160a060020a038316600090815260056020526040902054156102e057600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032157600080fd5b505af1158015610335573d6000803e3d6000fd5b505050506040513d602081101561034b57600080fd5b5051151561035857600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b505050506040513d60208110156103c057600080fd5b50519050600060ff8216108015906103dc575060058160ff1611155b15156103e757600080fd5b505060048054600160a060020a039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b600061046a60028363ffffffff610cc616565b92915050565b600060048260010181548110151561048457fe5b600091825260209091200154600160a060020a031692915050565b600061046a60038363ffffffff610cc616565b6104bb33610457565b15156104c657600080fd5b61026b81610cfd565b60005474010000000000000000000000000000000000000000900460ff16156104f757600080fd5b6105003361049f565b151561050b57600080fd5b60045460011061051a57600080fd5b600454600214156105865760048054600190811061053457fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff191690556001610567600482610ea0565b50600160a060020a03811660009081526005602052604081205561026b565b600454600160a060020a03821660009081526005602052604090205414610620576004805460001981019081106105b957fe5b6000918252602080832090910154600160a060020a03848116845260059092526040909220546004805492909316929181106105f157fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60048054600019810190811061063257fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff19169055600480549061066b906000198301610ea0565b50600160a060020a0316600090815260056020526040812055565b6000610690610ec4565b60008060008061069e610ec4565b60005474010000000000000000000000000000000000000000900460ff16156106c657600080fd5b6106cf33610457565b15156106da57600080fd5b6004546001106106e957600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b505050506040513d602081101561077957600080fd5b505196506000871161078a57600080fd5b600194505b6004548510156109395760048054869081106107a757fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561080557600080fd5b505af1158015610819573d6000803e3d6000fd5b505050506040513d602081101561082f57600080fd5b5051151561083c5761092e565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561087a57600080fd5b505af115801561088e573d6000803e3d6000fd5b505050506040513d60208110156108a457600080fd5b5051925060ff831615156108c6578560005b602002018051600101905261092e565b8260ff16600114156108da578560016108b6565b8260ff16600214156108ee578560026108b6565b8260ff1660031415610902578560036108b6565b8260ff1660041415610916578560046108b6565b8260ff166005141561092e5760a08601805160010190525b60019094019361078f565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e909102016028909102016032909102019150818781151561097f57fe5b04815281600a880281151561099057fe5b04602082015281601488028115156109a457fe5b04604082015281601e88028115156109b857fe5b04606082015281602888028115156109cc57fe5b04608082015281603288028115156109e057fe5b0460a0820152600194505b600454851015610bc8576004805486908110610a0357fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a6157600080fd5b505af1158015610a75573d6000803e3d6000fd5b505050506040513d6020811015610a8b57600080fd5b50511515610a9857610bbd565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b505050506040513d6020811015610b0057600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610bbd91600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610b6457600080fd5b505af1158015610b78573d6000803e3d6000fd5b505050506040513d6020811015610b8e57600080fd5b50518260ff861660068110610b9f57fe5b6020020151600154600160a060020a0316919063ffffffff610d0e16565b6001909401936109eb565b50505050505050565b600454600019015b90565b61024c33610dad565b61024c33610dbe565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b505050506040513d6020811015610c7d57600080fd5b505190506000811115610cad57600054600154610cad91600160a060020a0391821691168363ffffffff610d0e16565b61026b610dcf565b61026b60038263ffffffff610e0616565b6000600160a060020a0382161515610cdd57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61026b60028263ffffffff610e0616565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610d7157600080fd5b505af1158015610d85573d6000803e3d6000fd5b505050506040513d6020811015610d9b57600080fd5b50511515610da857600080fd5b505050565b61026b60038263ffffffff610e5416565b61026b60028263ffffffff610e5416565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a0381161515610e1b57600080fd5b610e258282610cc6565b15610e2f57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610e6957600080fd5b610e738282610cc6565b1515610e7e57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610da857600083815260209020610da8918101908301610ee3565b60c0604051908101604052806006906020820280388339509192915050565b610bd991905b80821115610efd5760008155600101610ee9565b50905600a165627a7a72305820c97e98efb9f61c8f769238044b274ddcf265ed47d4444eab2134a813ff57783b0029 \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.json index ca512a461..2124d0262 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.json @@ -175,7 +175,7 @@ "type": "constructor" } ], - "bytecode": "60806040523480156200001157600080fd5b50604051602080620010d083398101604052516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790556200006c90640100000000620000c7810204565b6200008033640100000000620000e5810204565b50600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054600160a060020a031916905562000193565b620000e260028264010000000062000e066200010082021704565b50565b620000e260038264010000000062000e066200010082021704565b600160a060020a03811615156200011657600080fd5b6200012b82826401000000006200015b810204565b156200013657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200017357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610f2d80620001a36000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632e6b6849146100bc578063341ccfcb146100dd57806334cdcf26146100fe5780633d19ab1314610133578063608d3d3d1461016757806374be75921461018857806381f909f3146101a957806399f4b251146101ca578063bb52c137146101df578063d43acc7914610206578063e9d618591461021b575b600080fd5b3480156100b157600080fd5b506100ba610230565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661024e565b3480156100e957600080fd5b506100ba600160a060020a036004351661026e565b34801561010a57600080fd5b5061011f600160a060020a0360043516610457565b604080519115158252519081900360200190f35b34801561013f57600080fd5b5061014b600435610470565b60408051600160a060020a039092168252519081900360200190f35b34801561017357600080fd5b5061011f600160a060020a036004351661049f565b34801561019457600080fd5b506100ba600160a060020a03600435166104b2565b3480156101b557600080fd5b506100ba600160a060020a03600435166104cf565b3480156101d657600080fd5b506100ba610686565b3480156101eb57600080fd5b506101f4610bd1565b60408051918252519081900360200190f35b34801561021257600080fd5b506100ba610bdc565b34801561022757600080fd5b506100ba610be5565b6102393361049f565b151561024457600080fd5b61024c610bee565b565b6102573361049f565b151561026257600080fd5b61026b81610cb5565b50565b60008054819074010000000000000000000000000000000000000000900460ff161561029957600080fd5b6102a23361049f565b15156102ad57600080fd5b6004546103e8116102bd57600080fd5b600160a060020a038316600090815260056020526040902054156102e057600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032157600080fd5b505af1158015610335573d6000803e3d6000fd5b505050506040513d602081101561034b57600080fd5b5051151561035857600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b505050506040513d60208110156103c057600080fd5b50519050600060ff8216108015906103dc575060058160ff1611155b15156103e757600080fd5b505060048054600160a060020a039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b600061046a60028363ffffffff610cc616565b92915050565b600060048260010181548110151561048457fe5b600091825260209091200154600160a060020a031692915050565b600061046a60038363ffffffff610cc616565b6104bb33610457565b15156104c657600080fd5b61026b81610cfd565b60005474010000000000000000000000000000000000000000900460ff16156104f757600080fd5b6105003361049f565b151561050b57600080fd5b60045460011061051a57600080fd5b600454600214156105865760048054600190811061053457fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff191690556001610567600482610ea0565b50600160a060020a03811660009081526005602052604081205561026b565b600454600160a060020a03821660009081526005602052604090205414610620576004805460001981019081106105b957fe5b6000918252602080832090910154600160a060020a03848116845260059092526040909220546004805492909316929181106105f157fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60048054600019810190811061063257fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff19169055600480549061066b906000198301610ea0565b50600160a060020a0316600090815260056020526040812055565b6000610690610ec4565b60008060008061069e610ec4565b60005474010000000000000000000000000000000000000000900460ff16156106c657600080fd5b6106cf33610457565b15156106da57600080fd5b6004546001106106e957600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b505050506040513d602081101561077957600080fd5b505196506000871161078a57600080fd5b600194505b6004548510156109395760048054869081106107a757fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561080557600080fd5b505af1158015610819573d6000803e3d6000fd5b505050506040513d602081101561082f57600080fd5b5051151561083c5761092e565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561087a57600080fd5b505af115801561088e573d6000803e3d6000fd5b505050506040513d60208110156108a457600080fd5b5051925060ff831615156108c6578560005b602002018051600101905261092e565b8260ff16600114156108da578560016108b6565b8260ff16600214156108ee578560026108b6565b8260ff1660031415610902578560036108b6565b8260ff1660041415610916578560046108b6565b8260ff166005141561092e5760a08601805160010190525b60019094019361078f565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e909102016028909102016032909102019150818781151561097f57fe5b04815281600a880281151561099057fe5b04602082015281601488028115156109a457fe5b04604082015281601e88028115156109b857fe5b04606082015281602888028115156109cc57fe5b04608082015281603288028115156109e057fe5b0460a0820152600194505b600454851015610bc8576004805486908110610a0357fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a6157600080fd5b505af1158015610a75573d6000803e3d6000fd5b505050506040513d6020811015610a8b57600080fd5b50511515610a9857610bbd565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b505050506040513d6020811015610b0057600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610bbd91600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610b6457600080fd5b505af1158015610b78573d6000803e3d6000fd5b505050506040513d6020811015610b8e57600080fd5b50518260ff861660068110610b9f57fe5b6020020151600154600160a060020a0316919063ffffffff610d0e16565b6001909401936109eb565b50505050505050565b600454600019015b90565b61024c33610dad565b61024c33610dbe565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b505050506040513d6020811015610c7d57600080fd5b505190506000811115610cad57600054600154610cad91600160a060020a0391821691168363ffffffff610d0e16565b61026b610dcf565b61026b60038263ffffffff610e0616565b6000600160a060020a0382161515610cdd57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61026b60028263ffffffff610e0616565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610d7157600080fd5b505af1158015610d85573d6000803e3d6000fd5b505050506040513d6020811015610d9b57600080fd5b50511515610da857600080fd5b505050565b61026b60038263ffffffff610e5416565b61026b60028263ffffffff610e5416565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a0381161515610e1b57600080fd5b610e258282610cc6565b15610e2f57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610e6957600080fd5b610e738282610cc6565b1515610e7e57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610da857600083815260209020610da8918101908301610ee3565b60c0604051908101604052806006906020820280388339509192915050565b610bd991905b80821115610efd5760008155600101610ee9565b50905600a165627a7a723058201033067a6ceafcfdd5906365e4a9ea37491edaca7ecea2eae390d605b7aa71c30029", + "bytecode": "60806040523480156200001157600080fd5b50604051602080620010d083398101604052516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790556200006c90640100000000620000c7810204565b6200008033640100000000620000e5810204565b50600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054600160a060020a031916905562000193565b620000e260028264010000000062000e066200010082021704565b50565b620000e260038264010000000062000e066200010082021704565b600160a060020a03811615156200011657600080fd5b6200012b82826401000000006200015b810204565b156200013657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200017357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610f2d80620001a36000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632e6b6849146100bc578063341ccfcb146100dd57806334cdcf26146100fe5780633d19ab1314610133578063608d3d3d1461016757806374be75921461018857806381f909f3146101a957806399f4b251146101ca578063bb52c137146101df578063d43acc7914610206578063e9d618591461021b575b600080fd5b3480156100b157600080fd5b506100ba610230565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661024e565b3480156100e957600080fd5b506100ba600160a060020a036004351661026e565b34801561010a57600080fd5b5061011f600160a060020a0360043516610457565b604080519115158252519081900360200190f35b34801561013f57600080fd5b5061014b600435610470565b60408051600160a060020a039092168252519081900360200190f35b34801561017357600080fd5b5061011f600160a060020a036004351661049f565b34801561019457600080fd5b506100ba600160a060020a03600435166104b2565b3480156101b557600080fd5b506100ba600160a060020a03600435166104cf565b3480156101d657600080fd5b506100ba610686565b3480156101eb57600080fd5b506101f4610bd1565b60408051918252519081900360200190f35b34801561021257600080fd5b506100ba610bdc565b34801561022757600080fd5b506100ba610be5565b6102393361049f565b151561024457600080fd5b61024c610bee565b565b6102573361049f565b151561026257600080fd5b61026b81610cb5565b50565b60008054819074010000000000000000000000000000000000000000900460ff161561029957600080fd5b6102a23361049f565b15156102ad57600080fd5b6004546103e8116102bd57600080fd5b600160a060020a038316600090815260056020526040902054156102e057600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032157600080fd5b505af1158015610335573d6000803e3d6000fd5b505050506040513d602081101561034b57600080fd5b5051151561035857600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b505050506040513d60208110156103c057600080fd5b50519050600060ff8216108015906103dc575060058160ff1611155b15156103e757600080fd5b505060048054600160a060020a039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b600061046a60028363ffffffff610cc616565b92915050565b600060048260010181548110151561048457fe5b600091825260209091200154600160a060020a031692915050565b600061046a60038363ffffffff610cc616565b6104bb33610457565b15156104c657600080fd5b61026b81610cfd565b60005474010000000000000000000000000000000000000000900460ff16156104f757600080fd5b6105003361049f565b151561050b57600080fd5b60045460011061051a57600080fd5b600454600214156105865760048054600190811061053457fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff191690556001610567600482610ea0565b50600160a060020a03811660009081526005602052604081205561026b565b600454600160a060020a03821660009081526005602052604090205414610620576004805460001981019081106105b957fe5b6000918252602080832090910154600160a060020a03848116845260059092526040909220546004805492909316929181106105f157fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60048054600019810190811061063257fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff19169055600480549061066b906000198301610ea0565b50600160a060020a0316600090815260056020526040812055565b6000610690610ec4565b60008060008061069e610ec4565b60005474010000000000000000000000000000000000000000900460ff16156106c657600080fd5b6106cf33610457565b15156106da57600080fd5b6004546001106106e957600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b505050506040513d602081101561077957600080fd5b505196506000871161078a57600080fd5b600194505b6004548510156109395760048054869081106107a757fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561080557600080fd5b505af1158015610819573d6000803e3d6000fd5b505050506040513d602081101561082f57600080fd5b5051151561083c5761092e565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561087a57600080fd5b505af115801561088e573d6000803e3d6000fd5b505050506040513d60208110156108a457600080fd5b5051925060ff831615156108c6578560005b602002018051600101905261092e565b8260ff16600114156108da578560016108b6565b8260ff16600214156108ee578560026108b6565b8260ff1660031415610902578560036108b6565b8260ff1660041415610916578560046108b6565b8260ff166005141561092e5760a08601805160010190525b60019094019361078f565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e909102016028909102016032909102019150818781151561097f57fe5b04815281600a880281151561099057fe5b04602082015281601488028115156109a457fe5b04604082015281601e88028115156109b857fe5b04606082015281602888028115156109cc57fe5b04608082015281603288028115156109e057fe5b0460a0820152600194505b600454851015610bc8576004805486908110610a0357fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a6157600080fd5b505af1158015610a75573d6000803e3d6000fd5b505050506040513d6020811015610a8b57600080fd5b50511515610a9857610bbd565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b505050506040513d6020811015610b0057600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610bbd91600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610b6457600080fd5b505af1158015610b78573d6000803e3d6000fd5b505050506040513d6020811015610b8e57600080fd5b50518260ff861660068110610b9f57fe5b6020020151600154600160a060020a0316919063ffffffff610d0e16565b6001909401936109eb565b50505050505050565b600454600019015b90565b61024c33610dad565b61024c33610dbe565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b505050506040513d6020811015610c7d57600080fd5b505190506000811115610cad57600054600154610cad91600160a060020a0391821691168363ffffffff610d0e16565b61026b610dcf565b61026b60038263ffffffff610e0616565b6000600160a060020a0382161515610cdd57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61026b60028263ffffffff610e0616565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610d7157600080fd5b505af1158015610d85573d6000803e3d6000fd5b505050506040513d6020811015610d9b57600080fd5b50511515610da857600080fd5b505050565b61026b60038263ffffffff610e5416565b61026b60028263ffffffff610e5416565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a0381161515610e1b57600080fd5b610e258282610cc6565b15610e2f57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610e6957600080fd5b610e738282610cc6565b1515610e7e57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610da857600083815260209020610da8918101908301610ee3565b60c0604051908101604052806006906020820280388339509192915050565b610bd991905b80821115610efd5760008155600101610ee9565b50905600a165627a7a72305820c97e98efb9f61c8f769238044b274ddcf265ed47d4444eab2134a813ff57783b0029", "functionHashes": { "addCoreTeam(address)": "2e6b6849", "addSystem(address)": "74be7592", diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json index 27cf6e665..65fe094ae 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json @@ -1,5 +1,36 @@ { "contracts": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol": { + "AlgoCommon": { + "abi": [], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a72305820a82cc7d287f8450e22843025dd73eaa06172ebd434e1e3cf86a642a33d96584e0029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x35 DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xa8 0x2c 0xc7 0xd2 DUP8 0xf8 GASLIMIT 0xe 0x22 DUP5 ADDRESS 0x25 0xdd PUSH20 0xEAA06172EBD434E1E3CF86A642A33D96584E0029 ", + "sourceMap": "27:1033:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27:1033:0;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "10600", + "executionCost": "66", + "totalCost": "10666" + }, + "internal": { + "getCapacityByCategory(uint8)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol\":\"AlgoCommon\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol\":{\"keccak256\":\"0x2314139702cc63c8daa379e521abea3be32730ba896f68f3f865749907e64539\",\"urls\":[\"bzzr://b945e0ec5a4ca8a52b5e816c5bb00807d0ca43c5363102821b36c8c4ee98a2d5\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + }, "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol": { "AlgoCoreTeamRole": { "abi": [ @@ -189,6 +220,20 @@ "stateMutability": "view", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "getReferral", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [ @@ -217,6 +262,20 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "getCurrentDay", + "outputs": [ + { + "name": "", + "type": "uint16" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": false, "inputs": [], @@ -226,6 +285,20 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "getMinerType", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [ @@ -292,6 +365,24 @@ "stateMutability": "view", "type": "function" }, + { + "constant": false, + "inputs": [ + { + "name": "newOwnerAddress", + "type": "address" + }, + { + "name": "newReferralAddress", + "type": "address" + } + ], + "name": "resetMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "constant": false, "inputs": [], @@ -310,20 +401,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "constant": false, - "inputs": [ - { - "name": "newOwnerAddress", - "type": "address" - } - ], - "name": "resetMiner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { "constant": false, "inputs": [], @@ -356,6 +433,34 @@ "stateMutability": "view", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "getCurrentYearSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getCurrentYear", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": false, "inputs": [], @@ -387,7 +492,7 @@ "inputs": [ { "name": "minerType", - "type": "uint16" + "type": "uint8" }, { "name": "category", @@ -397,6 +502,10 @@ "name": "minerAccountAddress", "type": "address" }, + { + "name": "referralAccountAddress", + "type": "address" + }, { "name": "tokenAddress", "type": "address" @@ -413,25 +522,30 @@ "evm": { "bytecode": { "linkReferences": {}, - "object": "60806040523480156200001157600080fd5b506040516080806200122083398101604090815281516020830151918301516060909301516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a038416179055919391620000819064010000000062000126810204565b620000953364010000000062000144810204565b620000a9336401000000006200015f810204565b60008360ff1610158015620000c2575060058360ff1611155b1515620000ce57600080fd5b506005805461ffff191661ffff949094169390931762ff000019166201000060ff939093169290920291909117630100000060b860020a0319166301000000600160a060020a0392909216919091021790556200020d565b6200014160028264010000000062000f3d6200017a82021704565b50565b6200014160038264010000000062000f3d6200017a82021704565b6200014160048264010000000062000f3d6200017a82021704565b600160a060020a03811615156200019057600080fd5b620001a58282640100000000620001d5810204565b15620001b057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001ed57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b611003806200021d6000396000f3006080604052600436106101485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630c08bf88811461014d578063162f986d146101645780631777fb4b1461017957806319a74ab3146101a257806321b79d98146101b7578063231d4e2a146101cc57806329d10b6e146101ed5780632e6b68491461020e578063302c11ca1461022f57806334cdcf2614610260578063363aa6c714610281578063427534a414610296578063608d3d3d146102ab57806374be7592146102cc57806380258e47146102ed57806381a244591461031857806399f4b251146103395780639e614ca01461034e578063ada436e914610363578063b2a32cd514610384578063be95249414610399578063c6846ef8146103ae578063d43acc79146103d5578063da408679146103ea578063e9d61859146103ff575b600080fd5b34801561015957600080fd5b50610162610414565b005b34801561017057600080fd5b50610162610432565b34801561018557600080fd5b5061018e6104a1565b604080519115158252519081900360200190f35b3480156101ae57600080fd5b5061018e6104a6565b3480156101c357600080fd5b506101626104dd565b3480156101d857600080fd5b50610162600160a060020a0360043516610577565b3480156101f957600080fd5b50610162600160a060020a0360043516610663565b34801561021a57600080fd5b50610162600160a060020a0360043516610680565b34801561023b57600080fd5b5061024461069d565b60408051600160a060020a039092168252519081900360200190f35b34801561026c57600080fd5b5061018e600160a060020a03600435166106b3565b34801561028d57600080fd5b506101626106cc565b3480156102a257600080fd5b50610162610764565b3480156102b757600080fd5b5061018e600160a060020a03600435166107d0565b3480156102d857600080fd5b50610162600160a060020a03600435166107e3565b3480156102f957600080fd5b50610302610800565b6040805160ff9092168252519081900360200190f35b34801561032457600080fd5b5061018e600160a060020a036004351661080f565b34801561034557600080fd5b50610162610822565b34801561035a57600080fd5b50610162610a1e565b34801561036f57600080fd5b50610162600160a060020a0360043516610a92565b34801561039057600080fd5b50610162610b2b565b3480156103a557600080fd5b50610162610c45565b3480156103ba57600080fd5b506103c3610c4e565b60408051918252519081900360200190f35b3480156103e157600080fd5b50610162610c54565b3480156103f657600080fd5b50610162610c5d565b34801561040b57600080fd5b50610162610cf2565b61041d336107d0565b151561042857600080fd5b610430610cfb565b565b60005460a060020a900460ff161561044957600080fd5b6104523361080f565b151561045d57600080fd5b600160055460b860020a900460ff16600381111561047757fe5b1461048157600080fd5b600580546002919060b860020a60ff02191660b860020a835b0217905550565b600190565b6000600160055460b860020a900460ff1660038111156104c257fe5b1480156104d8575060055460c060020a900460ff165b905090565b60005460a060020a900460ff16156104f457600080fd5b60055463010000009004600160a060020a0316331461051257600080fd5b600160055460b860020a900460ff16600381111561052c57fe5b1461053657600080fd5b60055460c060020a900460ff161561054d57600080fd5b6005805478ff000000000000000000000000000000000000000000000000191660c060020a179055565b610580336107d0565b151561058b57600080fd5b600060055460b860020a900460ff1660038111156105a557fe5b146105af57600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051610660928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b15801561061b57600080fd5b505af115801561062f573d6000803e3d6000fd5b505050506040513d602081101561064557600080fd5b5051600154600160a060020a0316919063ffffffff610dc216565b50565b61066c3361080f565b151561067757600080fd5b61066081610e7a565b610689336107d0565b151561069457600080fd5b61066081610e8b565b60055463010000009004600160a060020a031690565b60006106c660028363ffffffff610e9c16565b92915050565b60005460a060020a900460ff16156106e357600080fd5b6106ec3361080f565b15156106f757600080fd5b600360055460b860020a900460ff16600381111561071157fe5b141561071c57600080fd5b6005805460b860020a60ff021916770300000000000000000000000000000000000000000000001778ff00ffffffffffffffffffffffffffffffffffffffff00000019169055565b60005460a060020a900460ff161561077b57600080fd5b6107843361080f565b151561078f57600080fd5b600260055460b860020a900460ff1660038111156107a957fe5b146107b357600080fd5b600580546001919060b860020a60ff02191660b860020a8361049a565b60006106c660038363ffffffff610e9c16565b6107ec336106b3565b15156107f757600080fd5b61066081610ed3565b60055462010000900460ff1690565b60006106c660048363ffffffff610e9c16565b6000805460a060020a900460ff161561083a57600080fd5b610843336106b3565b151561084e57600080fd5b600160055460b860020a900460ff16600381111561086857fe5b1461087257600080fd5b60055460c060020a900460ff16151561088a57600080fd5b60055460d060020a900461ffff16151561090957600580547bffff00000000000000000000000000000000000000000000000000001979ff0000000000000000000000000000000000000000000000000019909116790100000000000000000000000000000000000000000000000000171660d060020a1790556109dd565b60058054600161ffff60d060020a808404821692909201811682027bffff00000000000000000000000000000000000000000000000000001990931692909217928390559091041661016e14156109dd57600580547bffff000000000000000000000000000000000000000000000000000019600160ff790100000000000000000000000000000000000000000000000000808504821692909201160279ff0000000000000000000000000000000000000000000000000019909216919091171660d060020a179055600654600290046006555b5060065461016d9004600081116109f357600080fd5b60055460015461066091600160a060020a03918216916301000000909104168363ffffffff610dc216565b60005460a060020a900460ff1615610a3557600080fd5b610a3e336107d0565b1515610a4957600080fd5b600060055460b860020a900460ff166003811115610a6357fe5b1415610a6e57600080fd5b6005805478ffff000000000000000000000000000000000000000000000019169055565b60005460a060020a900460ff1615610aa957600080fd5b610ab23361080f565b1515610abd57600080fd5b600360055460b860020a900460ff166003811115610ad757fe5b14610ae157600080fd5b60058054600160a060020a039290921663010000000260b860020a60ff021990921660b860020a1776ffffffffffffffffffffffffffffffffffffffff0000001916919091179055565b6000805460a060020a900460ff1615610b4357600080fd5b610b4c336107d0565b1515610b5757600080fd5b600060055460b860020a900460ff166003811115610b7157fe5b14610b7b57600080fd5b6006541515610c2c57600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b158015610bea57600080fd5b505af1158015610bfe573d6000803e3d6000fd5b505050506040513d6020811015610c1457600080fd5b50519050801515610c2457600080fd5b600281046006555b506005805460b860020a60ff02191660b860020a179055565b61043033610ee4565b61016d81565b61043033610ef5565b60005460a060020a900460ff1615610c7457600080fd5b60055463010000009004600160a060020a03163314610c9257600080fd5b600160055460b860020a900460ff166003811115610cac57fe5b14610cb657600080fd5b60055460c060020a900460ff161515610cce57600080fd5b6005805478ff00000000000000000000000000000000000000000000000019169055565b61043033610f06565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610d6057600080fd5b505af1158015610d74573d6000803e3d6000fd5b505050506040513d6020811015610d8a57600080fd5b505190506000811115610dba57600054600154610dba91600160a060020a0391821691168363ffffffff610dc216565b610660610f17565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610e3e57600080fd5b505af1158015610e52573d6000803e3d6000fd5b505050506040513d6020811015610e6857600080fd5b50511515610e7557600080fd5b505050565b61066060048263ffffffff610f3d16565b61066060038263ffffffff610f3d16565b6000600160a060020a0382161515610eb357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61066060028263ffffffff610f3d16565b61066060048263ffffffff610f8b16565b61066060038263ffffffff610f8b16565b61066060028263ffffffff610f8b16565b6000805474ff0000000000000000000000000000000000000000191660a060020a179055565b600160a060020a0381161515610f5257600080fd5b610f5c8282610e9c565b15610f6657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610fa057600080fd5b610faa8282610e9c565b1515610fb557600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058200a38ca8f69ea6e0732674e2a58d5b93661b5c2aa8a6c6b89ced63a3d5f3186730029", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x80 DUP1 PUSH3 0x1220 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 SWAP1 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD SWAP2 DUP4 ADD MLOAD PUSH1 0x60 SWAP1 SWAP4 ADD MLOAD PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP2 DUP3 AND DUP2 OR PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND OR SWAP1 SSTORE SWAP2 SWAP4 SWAP2 PUSH3 0x81 SWAP1 PUSH5 0x100000000 PUSH3 0x126 DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x95 CALLER PUSH5 0x100000000 PUSH3 0x144 DUP2 MUL DIV JUMP JUMPDEST PUSH3 0xA9 CALLER PUSH5 0x100000000 PUSH3 0x15F DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0xFF AND LT ISZERO DUP1 ISZERO PUSH3 0xC2 JUMPI POP PUSH1 0x5 DUP4 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH3 0xCE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x5 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH2 0xFFFF SWAP5 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR PUSH3 0xFF0000 NOT AND PUSH3 0x10000 PUSH1 0xFF SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR PUSH4 0x1000000 PUSH1 0xB8 PUSH1 0x2 EXP SUB NOT AND PUSH4 0x1000000 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 MUL OR SWAP1 SSTORE PUSH3 0x20D JUMP JUMPDEST PUSH3 0x141 PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH3 0xF3D PUSH3 0x17A DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x141 PUSH1 0x3 DUP3 PUSH5 0x100000000 PUSH3 0xF3D PUSH3 0x17A DUP3 MUL OR DIV JUMP JUMPDEST PUSH3 0x141 PUSH1 0x4 DUP3 PUSH5 0x100000000 PUSH3 0xF3D PUSH3 0x17A DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH3 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1A5 DUP3 DUP3 PUSH5 0x100000000 PUSH3 0x1D5 DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH3 0x1B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x1ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1003 DUP1 PUSH3 0x21D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x148 JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0xC08BF88 DUP2 EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x162F986D EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x1777FB4B EQ PUSH2 0x179 JUMPI DUP1 PUSH4 0x19A74AB3 EQ PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x21B79D98 EQ PUSH2 0x1B7 JUMPI DUP1 PUSH4 0x231D4E2A EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0x29D10B6E EQ PUSH2 0x1ED JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0x302C11CA EQ PUSH2 0x22F JUMPI DUP1 PUSH4 0x34CDCF26 EQ PUSH2 0x260 JUMPI DUP1 PUSH4 0x363AA6C7 EQ PUSH2 0x281 JUMPI DUP1 PUSH4 0x427534A4 EQ PUSH2 0x296 JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x2AB JUMPI DUP1 PUSH4 0x74BE7592 EQ PUSH2 0x2CC JUMPI DUP1 PUSH4 0x80258E47 EQ PUSH2 0x2ED JUMPI DUP1 PUSH4 0x81A24459 EQ PUSH2 0x318 JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x339 JUMPI DUP1 PUSH4 0x9E614CA0 EQ PUSH2 0x34E JUMPI DUP1 PUSH4 0xADA436E9 EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0xB2A32CD5 EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0xBE952494 EQ PUSH2 0x399 JUMPI DUP1 PUSH4 0xC6846EF8 EQ PUSH2 0x3AE JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x3D5 JUMPI DUP1 PUSH4 0xDA408679 EQ PUSH2 0x3EA JUMPI DUP1 PUSH4 0xE9D61859 EQ PUSH2 0x3FF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x159 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x414 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x432 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0x4A1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0x4A6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x4DD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x577 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x663 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x680 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x244 PUSH2 0x69D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x6B3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x6CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x764 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x7D0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x7E3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH2 0x800 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x80F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x345 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x822 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0xA1E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x36F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0xA92 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0xB2B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0xC45 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C3 PUSH2 0xC4E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0xC54 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0xC5D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0xCF2 JUMP JUMPDEST PUSH2 0x41D CALLER PUSH2 0x7D0 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x430 PUSH2 0xCFB JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x452 CALLER PUSH2 0x80F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x477 JUMPI INVALID JUMPDEST EQ PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x2 SWAP2 SWAP1 PUSH1 0xB8 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xB8 PUSH1 0x2 EXP DUP4 JUMPDEST MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4C2 JUMPI INVALID JUMPDEST EQ DUP1 ISZERO PUSH2 0x4D8 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xC0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x4F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0x512 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x52C JUMPI INVALID JUMPDEST EQ PUSH2 0x536 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xC0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x54D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH25 0xFF000000000000000000000000000000000000000000000000 NOT AND PUSH1 0xC0 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x580 CALLER PUSH2 0x7D0 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x58B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5A5 JUMPI INVALID JUMPDEST EQ PUSH2 0x5AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x660 SWAP3 DUP5 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x61B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x62F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x645 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xDC2 AND JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x66C CALLER PUSH2 0x80F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x660 DUP2 PUSH2 0xE7A JUMP JUMPDEST PUSH2 0x689 CALLER PUSH2 0x7D0 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x694 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x660 DUP2 PUSH2 0xE8B JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C6 PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xE9C AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x6E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6EC CALLER PUSH2 0x80F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x6F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x711 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x71C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH24 0x30000000000000000000000000000000000000000000000 OR PUSH25 0xFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x77B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x784 CALLER PUSH2 0x80F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x78F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x7A9 JUMPI INVALID JUMPDEST EQ PUSH2 0x7B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 SWAP2 SWAP1 PUSH1 0xB8 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xB8 PUSH1 0x2 EXP DUP4 PUSH2 0x49A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C6 PUSH1 0x3 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xE9C AND JUMP JUMPDEST PUSH2 0x7EC CALLER PUSH2 0x6B3 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x7F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x660 DUP2 PUSH2 0xED3 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C6 PUSH1 0x4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xE9C AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x83A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x843 CALLER PUSH2 0x6B3 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x84E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x868 JUMPI INVALID JUMPDEST EQ PUSH2 0x872 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xC0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0x88A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xD0 PUSH1 0x2 EXP SWAP1 DIV PUSH2 0xFFFF AND ISZERO ISZERO PUSH2 0x909 JUMPI PUSH1 0x5 DUP1 SLOAD PUSH28 0xFFFF0000000000000000000000000000000000000000000000000000 NOT PUSH26 0xFF00000000000000000000000000000000000000000000000000 NOT SWAP1 SWAP2 AND PUSH26 0x100000000000000000000000000000000000000000000000000 OR AND PUSH1 0xD0 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH2 0x9DD JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH2 0xFFFF PUSH1 0xD0 PUSH1 0x2 EXP DUP1 DUP5 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD DUP2 AND DUP3 MUL PUSH28 0xFFFF0000000000000000000000000000000000000000000000000000 NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE SWAP1 SWAP2 DIV AND PUSH2 0x16E EQ ISZERO PUSH2 0x9DD JUMPI PUSH1 0x5 DUP1 SLOAD PUSH28 0xFFFF0000000000000000000000000000000000000000000000000000 NOT PUSH1 0x1 PUSH1 0xFF PUSH26 0x100000000000000000000000000000000000000000000000000 DUP1 DUP6 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD AND MUL PUSH26 0xFF00000000000000000000000000000000000000000000000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR AND PUSH1 0xD0 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH1 0x6 SLOAD PUSH1 0x2 SWAP1 DIV PUSH1 0x6 SSTORE JUMPDEST POP PUSH1 0x6 SLOAD PUSH2 0x16D SWAP1 DIV PUSH1 0x0 DUP2 GT PUSH2 0x9F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 SLOAD PUSH2 0x660 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 PUSH4 0x1000000 SWAP1 SWAP2 DIV AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xDC2 AND JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xA35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA3E CALLER PUSH2 0x7D0 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xA49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA63 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xA6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xAA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAB2 CALLER PUSH2 0x80F JUMP JUMPDEST ISZERO ISZERO PUSH2 0xABD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xAD7 JUMPI INVALID JUMPDEST EQ PUSH2 0xAE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP3 SWAP1 SWAP3 AND PUSH4 0x1000000 MUL PUSH1 0xB8 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT SWAP1 SWAP3 AND PUSH1 0xB8 PUSH1 0x2 EXP OR PUSH23 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 NOT AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xB43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB4C CALLER PUSH2 0x7D0 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xB57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xB71 JUMPI INVALID JUMPDEST EQ PUSH2 0xB7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD ISZERO ISZERO PUSH2 0xC2C JUMPI PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO ISZERO PUSH2 0xC24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 DUP2 DIV PUSH1 0x6 SSTORE JUMPDEST POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x430 CALLER PUSH2 0xEE4 JUMP JUMPDEST PUSH2 0x16D DUP2 JUMP JUMPDEST PUSH2 0x430 CALLER PUSH2 0xEF5 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xC74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0xC92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xCAC JUMPI INVALID JUMPDEST EQ PUSH2 0xCB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xC0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0xCCE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH25 0xFF000000000000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x430 CALLER PUSH2 0xF06 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD74 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0xDBA JUMPI PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0xDBA SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xDC2 AND JUMP JUMPDEST PUSH2 0x660 PUSH2 0xF17 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE52 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xE75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x660 PUSH1 0x4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xF3D AND JUMP JUMPDEST PUSH2 0x660 PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xF3D AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xEB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x660 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xF3D AND JUMP JUMPDEST PUSH2 0x660 PUSH1 0x4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xF8B AND JUMP JUMPDEST PUSH2 0x660 PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xF8B AND JUMP JUMPDEST PUSH2 0x660 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xF8B AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xF52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF5C DUP3 DUP3 PUSH2 0xE9C JUMP JUMPDEST ISZERO PUSH2 0xF66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xFA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFAA DUP3 DUP3 PUSH2 0xE9C JUMP JUMPDEST ISZERO ISZERO PUSH2 0xFB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 EXP CODESIZE 0xca DUP16 PUSH10 0xEA6E0732674E2A58D5B9 CALLDATASIZE PUSH2 0xB5C2 0xaa DUP11 PUSH13 0x6B89CED63A3D5F318673002900 ", - "sourceMap": "592:4229:1:-;;;1163:410;8:9:-1;5:2;;;30:1;27;20:12;5:2;1163:410:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;156:8:6;:21;;167:10;-1:-1:-1;;;;;;156:21:6;;;;;-1:-1:-1;;;;;;188:19:6;;;;-1:-1:-1;636:29:4;;;;;-1:-1:-1;;;;;636:29:4;;;;;1163:410:1;;;364:22:3;;:10;;;;:22;:::i;:::-;368:24:0;381:10;368:12;;;;:24;:::i;:::-;366:26:2;381:10;366:14;;;;:26;:::i;:::-;1441:1:1;1429:8;:13;;;;:30;;;;;1458:1;1446:8;:13;;;;1429:30;1421:39;;;;;;;;-1:-1:-1;1473:10:1;:22;;-1:-1:-1;;1473:22:1;;;;;;;;;;-1:-1:-1;;1506:20:1;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1537:28:1;;-1:-1:-1;;;;;1537:28:1;;;;;;;;;;;592:4229;;800:92:3;857:27;:14;876:7;857:18;;;;;;:27;:::i;:::-;800:92;:::o;824:96:0:-;883:29;:16;904:7;883:20;;;;;;:29;:::i;836:94:2:-;897:25;:12;914:7;897:16;;;;;;:25;:::i;244:167:7:-;-1:-1:-1;;;;;316:21:7;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:7;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:7;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:7;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:7;:11;:20;;;;;;;;;;;;;;;725:166::o;592:4229:1:-;;;;;;;" + "object": "60806040523480156200001157600080fd5b5060405160a080620014c7833981016040908152815160208301519183015160608401516080909401516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790559294919262000087906401000000006200014c810204565b6200009b336401000000006200016a810204565b620000af3364010000000062000185810204565b60008460ff1610158015620000c8575060058460ff1611155b1515620000d457600080fd5b6005805486919060ff191660018381811115620000ed57fe5b0217905550506005805461ff00191661010060ff9590951694909402939093176201000060b060020a03191662010000600160a060020a03938416021790925560068054600160a060020a031916929091169190911790555062000233565b62000167600282640100000000620011be620001a082021704565b50565b62000167600382640100000000620011be620001a082021704565b62000167600482640100000000620011be620001a082021704565b600160a060020a0381161515620001b657600080fd5b620001cb8282640100000000620001fb810204565b15620001d657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200021357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61128480620002436000396000f30060806040526004361061017f5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630c08bf888114610184578063162f986d1461019b5780631777fb4b146101b057806319a74ab3146101d957806321b79d98146101ee578063231d4e2a1461020357806329d10b6e146102245780632e6b684914610245578063302c11ca14610266578063329b1c921461029757806334cdcf26146102ac578063363aa6c7146102cd5780633e6968b6146102e2578063427534a41461030e5780634969ae7014610323578063608d3d3d1461034e57806374be75921461036f57806380258e471461039057806381a24459146103a55780638329138f146103c657806399f4b251146103ed5780639e614ca014610402578063b2a32cd514610417578063be9524941461042c578063c6846ef814610441578063cdfd0f6414610468578063ce41607a1461047d578063d43acc7914610492578063da408679146104a7578063e9d61859146104bc575b600080fd5b34801561019057600080fd5b506101996104d1565b005b3480156101a757600080fd5b506101996104ef565b3480156101bc57600080fd5b506101c561055e565b604080519115158252519081900360200190f35b3480156101e557600080fd5b506101c5610563565b3480156101fa57600080fd5b5061019961059a565b34801561020f57600080fd5b50610199600160a060020a0360043516610630565b34801561023057600080fd5b50610199600160a060020a036004351661071c565b34801561025157600080fd5b50610199600160a060020a0360043516610739565b34801561027257600080fd5b5061027b610756565b60408051600160a060020a039092168252519081900360200190f35b3480156102a357600080fd5b5061027b61076b565b3480156102b857600080fd5b506101c5600160a060020a036004351661077a565b3480156102d957600080fd5b50610199610795565b3480156102ee57600080fd5b506102f7610846565b6040805161ffff9092168252519081900360200190f35b34801561031a57600080fd5b50610199610857565b34801561032f57600080fd5b506103386108c3565b6040805160ff9092168252519081900360200190f35b34801561035a57600080fd5b506101c5600160a060020a03600435166108d7565b34801561037b57600080fd5b50610199600160a060020a03600435166108ea565b34801561039c57600080fd5b50610338610907565b3480156103b157600080fd5b506101c5600160a060020a0360043516610915565b3480156103d257600080fd5b50610199600160a060020a0360043581169060243516610928565b3480156103f957600080fd5b506101996109db565b34801561040e57600080fd5b50610199610c2e565b34801561042357600080fd5b50610199610c9f565b34801561043857600080fd5b50610199610dfd565b34801561044d57600080fd5b50610456610e06565b60408051918252519081900360200190f35b34801561047457600080fd5b50610456610e0c565b34801561048957600080fd5b50610338610e12565b34801561049e57600080fd5b50610199610e35565b3480156104b357600080fd5b50610199610e3e565b3480156104c857600080fd5b50610199610ecf565b6104da336108d7565b15156104e557600080fd5b6104ed610ed8565b565b60005460a060020a900460ff161561050657600080fd5b61050f33610915565b151561051a57600080fd5b600160065460a060020a900460ff16600381111561053457fe5b1461053e57600080fd5b600680546002919060a060020a60ff02191660a060020a835b0217905550565b600190565b6000600160065460a060020a900460ff16600381111561057f57fe5b148015610595575060065460a860020a900460ff165b905090565b60005460a060020a900460ff16156105b157600080fd5b600554620100009004600160a060020a031633146105ce57600080fd5b600160065460a060020a900460ff1660038111156105e857fe5b146105f257600080fd5b60065460a860020a900460ff161561060957600080fd5b6006805475ff000000000000000000000000000000000000000000191660a860020a179055565b610639336108d7565b151561064457600080fd5b600060065460a060020a900460ff16600381111561065e57fe5b1461066857600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051610719928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b1580156106d457600080fd5b505af11580156106e8573d6000803e3d6000fd5b505050506040513d60208110156106fe57600080fd5b5051600154600160a060020a0316919063ffffffff610f9f16565b50565b61072533610915565b151561073057600080fd5b61071981611057565b610742336108d7565b151561074d57600080fd5b61071981611068565b600554620100009004600160a060020a031690565b600654600160a060020a031690565b600061078d60028363ffffffff61107916565b90505b919050565b60005460a060020a900460ff16156107ac57600080fd5b6107b533610915565b15156107c057600080fd5b600360065460a060020a900460ff1660038111156107da57fe5b14156107e557600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff00001916905560a060020a60ff021916740300000000000000000000000000000000000000001775ff00ffffffffffffffffffffffffffffffffffffffff19169055565b60065460b860020a900461ffff1690565b60005460a060020a900460ff161561086e57600080fd5b61087733610915565b151561088257600080fd5b600260065460a060020a900460ff16600381111561089c57fe5b146108a657600080fd5b600680546001919060a060020a60ff02191660a060020a83610557565b60055460009060ff16600181111561059557fe5b600061078d60038363ffffffff61107916565b6108f33361077a565b15156108fe57600080fd5b610719816110b0565b600554610100900460ff1690565b600061078d60048363ffffffff61107916565b60005460a060020a900460ff161561093f57600080fd5b61094833610915565b151561095357600080fd5b600360065460a060020a900460ff16600381111561096d57fe5b1461097757600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a039687160217905560a060020a60ff02191660a060020a1773ffffffffffffffffffffffffffffffffffffffff191691909216179055565b60008054819060a060020a900460ff16156109f557600080fd5b6109fe3361077a565b1515610a0957600080fd5b600060055460ff166001811115610a1c57fe5b14610a2657600080fd5b600160065460a060020a900460ff166003811115610a4057fe5b14610a4a57600080fd5b60065460a860020a900460ff161515610a6257600080fd5b60065460b860020a900461ffff161515610ad8576006805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610ba0565b60068054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610ba0576006805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600754600290046007555b60075461016d9004915060008211610bb757600080fd5b600554600154610be191600160a060020a039182169162010000909104168463ffffffff610f9f16565b600654600160a060020a031615610c2a57506064600a82020460008111610c0757600080fd5b600654600154610c2a91600160a060020a0391821691168363ffffffff610f9f16565b5050565b60005460a060020a900460ff1615610c4557600080fd5b610c4e336108d7565b1515610c5957600080fd5b600060065460a060020a900460ff166003811115610c7357fe5b1415610c7e57600080fd5b6006805475ffff000000000000000000000000000000000000000019169055565b600080548190819060a060020a900460ff1615610cbb57600080fd5b610cc4336108d7565b1515610ccf57600080fd5b600060065460a060020a900460ff166003811115610ce957fe5b14610cf357600080fd5b600060055460ff166001811115610d0657fe5b148015610d135750600754155b15610de257600554610d2c90610100900460ff166110c1565b92506064600a8402600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519390920486019450600160a060020a0316916370a08231916024808201926020929091908290030181600087803b158015610da057600080fd5b505af1158015610db4573d6000803e3d6000fd5b505050506040513d6020811015610dca57600080fd5b50519050818114610dda57600080fd5b600283046007555b50506006805460a060020a60ff02191660a060020a17905550565b6104ed33611173565b61016d81565b60075490565b600654760100000000000000000000000000000000000000000000900460ff1690565b6104ed33611184565b60005460a060020a900460ff1615610e5557600080fd5b600554620100009004600160a060020a03163314610e7257600080fd5b600160065460a060020a900460ff166003811115610e8c57fe5b14610e9657600080fd5b60065460a860020a900460ff161515610eae57600080fd5b6006805475ff00000000000000000000000000000000000000000019169055565b6104ed33611195565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610f3d57600080fd5b505af1158015610f51573d6000803e3d6000fd5b505050506040513d6020811015610f6757600080fd5b505190506000811115610f9757600054600154610f9791600160a060020a0391821691168363ffffffff610f9f16565b6107196111a6565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561101b57600080fd5b505af115801561102f573d6000803e3d6000fd5b505050506040513d602081101561104557600080fd5b5051151561105257600080fd5b505050565b61071960048263ffffffff6111be16565b61071960038263ffffffff6111be16565b6000600160a060020a038216151561109057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61071960028263ffffffff6111be16565b600060ff821615156110de575069152d02c7e14af6800000610790565b8160ff16600114156110fb575069d3c21bcecceda1000000610790565b8160ff166002141561111957506a01a784379d99db42000000610790565b8160ff166003141561113757506a027b46536c66c8e3000000610790565b8160ff166004141561115557506a034f086f3b33b684000000610790565b8160ff166005141561079057506a0422ca8b0a00a425000000610790565b61071960048263ffffffff61120c16565b61071960038263ffffffff61120c16565b61071960028263ffffffff61120c16565b6000805460a060020a60ff02191660a060020a179055565b600160a060020a03811615156111d357600080fd5b6111dd8282611079565b156111e757600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561122157600080fd5b61122b8282611079565b151561123657600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820d37bea8cf990d36f43cc5b4af261b636128105f981b5fa7014ca1bf22a0030880029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0xA0 DUP1 PUSH3 0x14C7 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 SWAP1 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD SWAP2 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 SWAP1 SWAP5 ADD MLOAD PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP2 DUP3 AND DUP2 OR PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND OR SWAP1 SSTORE SWAP3 SWAP5 SWAP2 SWAP3 PUSH3 0x87 SWAP1 PUSH5 0x100000000 PUSH3 0x14C DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x9B CALLER PUSH5 0x100000000 PUSH3 0x16A DUP2 MUL DIV JUMP JUMPDEST PUSH3 0xAF CALLER PUSH5 0x100000000 PUSH3 0x185 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0xFF AND LT ISZERO DUP1 ISZERO PUSH3 0xC8 JUMPI POP PUSH1 0x5 DUP5 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH3 0xD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD DUP7 SWAP2 SWAP1 PUSH1 0xFF NOT AND PUSH1 0x1 DUP4 DUP2 DUP2 GT ISZERO PUSH3 0xED JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP POP PUSH1 0x5 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 PUSH1 0xFF SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 MUL SWAP4 SWAP1 SWAP4 OR PUSH3 0x10000 PUSH1 0xB0 PUSH1 0x2 EXP SUB NOT AND PUSH3 0x10000 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP4 DUP5 AND MUL OR SWAP1 SWAP3 SSTORE PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0x233 JUMP JUMPDEST PUSH3 0x167 PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH3 0x11BE PUSH3 0x1A0 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x167 PUSH1 0x3 DUP3 PUSH5 0x100000000 PUSH3 0x11BE PUSH3 0x1A0 DUP3 MUL OR DIV JUMP JUMPDEST PUSH3 0x167 PUSH1 0x4 DUP3 PUSH5 0x100000000 PUSH3 0x11BE PUSH3 0x1A0 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH3 0x1B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1CB DUP3 DUP3 PUSH5 0x100000000 PUSH3 0x1FB DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH3 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1284 DUP1 PUSH3 0x243 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x17F JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0xC08BF88 DUP2 EQ PUSH2 0x184 JUMPI DUP1 PUSH4 0x162F986D EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0x1777FB4B EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x19A74AB3 EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0x21B79D98 EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0x231D4E2A EQ PUSH2 0x203 JUMPI DUP1 PUSH4 0x29D10B6E EQ PUSH2 0x224 JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0x245 JUMPI DUP1 PUSH4 0x302C11CA EQ PUSH2 0x266 JUMPI DUP1 PUSH4 0x329B1C92 EQ PUSH2 0x297 JUMPI DUP1 PUSH4 0x34CDCF26 EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0x363AA6C7 EQ PUSH2 0x2CD JUMPI DUP1 PUSH4 0x3E6968B6 EQ PUSH2 0x2E2 JUMPI DUP1 PUSH4 0x427534A4 EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0x4969AE70 EQ PUSH2 0x323 JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x34E JUMPI DUP1 PUSH4 0x74BE7592 EQ PUSH2 0x36F JUMPI DUP1 PUSH4 0x80258E47 EQ PUSH2 0x390 JUMPI DUP1 PUSH4 0x81A24459 EQ PUSH2 0x3A5 JUMPI DUP1 PUSH4 0x8329138F EQ PUSH2 0x3C6 JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x3ED JUMPI DUP1 PUSH4 0x9E614CA0 EQ PUSH2 0x402 JUMPI DUP1 PUSH4 0xB2A32CD5 EQ PUSH2 0x417 JUMPI DUP1 PUSH4 0xBE952494 EQ PUSH2 0x42C JUMPI DUP1 PUSH4 0xC6846EF8 EQ PUSH2 0x441 JUMPI DUP1 PUSH4 0xCDFD0F64 EQ PUSH2 0x468 JUMPI DUP1 PUSH4 0xCE41607A EQ PUSH2 0x47D JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x492 JUMPI DUP1 PUSH4 0xDA408679 EQ PUSH2 0x4A7 JUMPI DUP1 PUSH4 0xE9D61859 EQ PUSH2 0x4BC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0x4D1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0x4EF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH2 0x55E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH2 0x563 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0x59A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x630 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x230 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x71C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x251 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x739 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27B PUSH2 0x756 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27B PUSH2 0x76B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x77A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0x795 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F7 PUSH2 0x846 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0xFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0x857 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x338 PUSH2 0x8C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x8D7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x8EA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x338 PUSH2 0x907 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x915 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH2 0x928 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0x9DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0xC2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x423 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0xC9F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0xDFD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x456 PUSH2 0xE06 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x474 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x456 PUSH2 0xE0C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x489 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x338 PUSH2 0xE12 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x49E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0xE35 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0xE3E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0xECF JUMP JUMPDEST PUSH2 0x4DA CALLER PUSH2 0x8D7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x4E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4ED PUSH2 0xED8 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x506 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x50F CALLER PUSH2 0x915 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x51A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x534 JUMPI INVALID JUMPDEST EQ PUSH2 0x53E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x2 SWAP2 SWAP1 PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 JUMPDEST MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x57F JUMPI INVALID JUMPDEST EQ DUP1 ISZERO PUSH2 0x595 JUMPI POP PUSH1 0x6 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x5B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0x5CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5E8 JUMPI INVALID JUMPDEST EQ PUSH2 0x5F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND PUSH1 0xA8 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x639 CALLER PUSH2 0x8D7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x644 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x65E JUMPI INVALID JUMPDEST EQ PUSH2 0x668 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x719 SWAP3 DUP5 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xF9F AND JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x725 CALLER PUSH2 0x915 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x730 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x719 DUP2 PUSH2 0x1057 JUMP JUMPDEST PUSH2 0x742 CALLER PUSH2 0x8D7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x74D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x719 DUP2 PUSH2 0x1068 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78D PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1079 AND JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x7AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7B5 CALLER PUSH2 0x915 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x7C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x7DA JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x7E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x5 DUP1 SLOAD PUSH22 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 NOT AND SWAP1 SSTORE PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH21 0x30000000000000000000000000000000000000000 OR PUSH22 0xFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x86E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x877 CALLER PUSH2 0x915 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x882 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x89C JUMPI INVALID JUMPDEST EQ PUSH2 0x8A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 SWAP2 SWAP1 PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 PUSH2 0x557 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x595 JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH2 0x78D PUSH1 0x3 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1079 AND JUMP JUMPDEST PUSH2 0x8F3 CALLER PUSH2 0x77A JUMP JUMPDEST ISZERO ISZERO PUSH2 0x8FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x719 DUP2 PUSH2 0x10B0 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78D PUSH1 0x4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1079 AND JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x93F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x948 CALLER PUSH2 0x915 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x953 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x96D JUMPI INVALID JUMPDEST EQ PUSH2 0x977 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x5 DUP1 SLOAD PUSH22 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 NOT AND PUSH3 0x10000 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP7 DUP8 AND MUL OR SWAP1 SSTORE PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x9F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9FE CALLER PUSH2 0x77A JUMP JUMPDEST ISZERO ISZERO PUSH2 0xA09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xA1C JUMPI INVALID JUMPDEST EQ PUSH2 0xA26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA40 JUMPI INVALID JUMPDEST EQ PUSH2 0xA4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0xA62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH2 0xFFFF AND ISZERO ISZERO PUSH2 0xAD8 JUMPI PUSH1 0x6 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP2 AND PUSH23 0x100000000000000000000000000000000000000000000 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH2 0xBA0 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH2 0xFFFF PUSH1 0xB8 PUSH1 0x2 EXP DUP1 DUP5 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD DUP2 AND DUP3 MUL PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE SWAP1 SWAP2 DIV AND PUSH2 0x16E EQ ISZERO PUSH2 0xBA0 JUMPI PUSH1 0x6 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH1 0x1 PUSH1 0xFF PUSH23 0x100000000000000000000000000000000000000000000 DUP1 DUP6 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD AND MUL PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH1 0x7 SLOAD PUSH1 0x2 SWAP1 DIV PUSH1 0x7 SSTORE JUMPDEST PUSH1 0x7 SLOAD PUSH2 0x16D SWAP1 DIV SWAP2 POP PUSH1 0x0 DUP3 GT PUSH2 0xBB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 SLOAD PUSH2 0xBE1 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 PUSH3 0x10000 SWAP1 SWAP2 DIV AND DUP5 PUSH4 0xFFFFFFFF PUSH2 0xF9F AND JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND ISZERO PUSH2 0xC2A JUMPI POP PUSH1 0x64 PUSH1 0xA DUP3 MUL DIV PUSH1 0x0 DUP2 GT PUSH2 0xC07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 SLOAD PUSH2 0xC2A SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xF9F AND JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xC45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC4E CALLER PUSH2 0x8D7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xC59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xC73 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xC7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH22 0xFFFF0000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 DUP2 SWAP1 PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xCBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCC4 CALLER PUSH2 0x8D7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xCCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xCE9 JUMPI INVALID JUMPDEST EQ PUSH2 0xCF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xD06 JUMPI INVALID JUMPDEST EQ DUP1 ISZERO PUSH2 0xD13 JUMPI POP PUSH1 0x7 SLOAD ISZERO JUMPDEST ISZERO PUSH2 0xDE2 JUMPI PUSH1 0x5 SLOAD PUSH2 0xD2C SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x10C1 JUMP JUMPDEST SWAP3 POP PUSH1 0x64 PUSH1 0xA DUP5 MUL PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP4 SWAP1 SWAP3 DIV DUP7 ADD SWAP5 POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDB4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP2 DUP2 EQ PUSH2 0xDDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 DUP4 DIV PUSH1 0x7 SSTORE JUMPDEST POP POP PUSH1 0x6 DUP1 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x4ED CALLER PUSH2 0x1173 JUMP JUMPDEST PUSH2 0x16D DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH23 0x100000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x4ED CALLER PUSH2 0x1184 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xE55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0xE72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xE8C JUMPI INVALID JUMPDEST EQ PUSH2 0xE96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0xEAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x4ED CALLER PUSH2 0x1195 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF51 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0xF97 JUMPI PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0xF97 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xF9F AND JUMP JUMPDEST PUSH2 0x719 PUSH2 0x11A6 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x101B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x102F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1045 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x1052 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x719 PUSH1 0x4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x11BE AND JUMP JUMPDEST PUSH2 0x719 PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x11BE AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x1090 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x719 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x11BE AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND ISZERO ISZERO PUSH2 0x10DE JUMPI POP PUSH10 0x152D02C7E14AF6800000 PUSH2 0x790 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x10FB JUMPI POP PUSH10 0xD3C21BCECCEDA1000000 PUSH2 0x790 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x1119 JUMPI POP PUSH11 0x1A784379D99DB42000000 PUSH2 0x790 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x1137 JUMPI POP PUSH11 0x27B46536C66C8E3000000 PUSH2 0x790 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x1155 JUMPI POP PUSH11 0x34F086F3B33B684000000 PUSH2 0x790 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x790 JUMPI POP PUSH11 0x422CA8B0A00A425000000 PUSH2 0x790 JUMP JUMPDEST PUSH2 0x719 PUSH1 0x4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x120C AND JUMP JUMPDEST PUSH2 0x719 PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x120C AND JUMP JUMPDEST PUSH2 0x719 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x120C AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x11D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11DD DUP3 DUP3 PUSH2 0x1079 JUMP JUMPDEST ISZERO PUSH2 0x11E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x1221 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x122B DUP3 DUP3 PUSH2 0x1079 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x1236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xd3 PUSH28 0xEA8CF990D36F43CC5B4AF261B636128105F981B5FA7014CA1BF22A00 ADDRESS DUP9 STOP 0x29 ", + "sourceMap": "620:5468:2:-;;;1311:490;8:9:-1;5:2;;;30:1;27;20:12;5:2;1311:490:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;156:8:7;:21;;167:10;-1:-1:-1;;;;;;156:21:7;;;;;-1:-1:-1;;;;;;188:19:7;;;;-1:-1:-1;636:29:5;;;;;-1:-1:-1;;;;;636:29:5;;;;;1311:490:2;;;;364:22:4;;:10;;;;:22;:::i;:::-;368:24:1;381:10;368:12;;;;:24;:::i;:::-;366:26:3;381:10;366:14;;;;:26;:::i;:::-;1624:1:2;1612:8;:13;;;;:30;;;;;1641:1;1629:8;:13;;;;1612:30;1604:39;;;;;;;;1656:10;:22;;1669:9;;1656:10;-1:-1:-1;;1656:22:2;;1669:9;1656:22;;;;;;;;;;;;-1:-1:-1;;1689:9:2;:20;;-1:-1:-1;;1689:20:2;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1720:28:2;;-1:-1:-1;;;;;1720:28:2;;;;;;;;1759:9;:34;;-1:-1:-1;;;;;;1759:34:2;;;;;;;;;;;-1:-1:-1;620:5468:2;;800:92:4;857:27;:14;876:7;857:18;;;;;;:27;:::i;:::-;800:92;:::o;824:96:1:-;883:29;:16;904:7;883:20;;;;;;:29;:::i;836:94:3:-;897:25;:12;914:7;897:16;;;;;;:25;:::i;244:167:8:-;-1:-1:-1;;;;;316:21:8;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:8;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:8;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:8;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:8;:11;:20;;;;;;;;;;;;;;;725:166::o;620:5468:2:-;;;;;;;" }, "gasEstimates": { "creation": { - "codeDepositCost": "819800", + "codeDepositCost": "948000", "executionCost": "infinite", "totalCost": "infinite" }, "external": { - "DAYS_PER_YEAR()": "646", + "DAYS_PER_YEAR()": "712", "activateMiner()": "infinite", "addCoreTeam(address)": "infinite", "addSupervisor(address)": "infinite", "addSystem(address)": "infinite", "deactivateMiner()": "infinite", - "getCategory()": "718", + "getCategory()": "784", + "getCurrentDay()": "737", + "getCurrentYear()": "982", + "getCurrentYearSupply()": "934", "getMiner()": "724", + "getMinerType()": "744", + "getReferral()": "735", "isAlgoMiner()": "234", "isCoreTeam(address)": "infinite", "isMining()": "881", @@ -443,11 +557,11 @@ "renounceCoreTeam()": "infinite", "renounceSupervisor()": "infinite", "renounceSystem()": "infinite", - "resetMiner(address)": "infinite", + "resetMiner(address,address)": "infinite", "resumeMining()": "infinite", "startMining()": "21742", "stopAndRemoveOwnership()": "infinite", - "stopMining()": "22094", + "stopMining()": "22204", "terminate()": "infinite" } }, @@ -459,7 +573,12 @@ "addSystem(address)": "74be7592", "deactivateMiner()": "9e614ca0", "getCategory()": "80258e47", + "getCurrentDay()": "3e6968b6", + "getCurrentYear()": "ce41607a", + "getCurrentYearSupply()": "cdfd0f64", "getMiner()": "302c11ca", + "getMinerType()": "4969ae70", + "getReferral()": "329b1c92", "isAlgoMiner()": "1777fb4b", "isCoreTeam(address)": "608d3d3d", "isMining()": "19a74ab3", @@ -471,7 +590,7 @@ "renounceCoreTeam()": "d43acc79", "renounceSupervisor()": "be952494", "renounceSystem()": "e9d61859", - "resetMiner(address)": "ada436e9", + "resetMiner(address,address)": "8329138f", "resumeMining()": "427534a4", "startMining()": "21b79d98", "stopAndRemoveOwnership()": "363aa6c7", @@ -479,7 +598,7 @@ "terminate()": "0c08bf88" } }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"terminate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pauseMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isAlgoMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isMining\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"startMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newMinerAddress\",\"type\":\"address\"}],\"name\":\"migrateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSystem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopAndRemoveOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"resumeMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCategory\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSupervisor\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"deactivateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwnerAddress\",\"type\":\"address\"}],\"name\":\"resetMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"activateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DAYS_PER_YEAR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"minerType\",\"type\":\"uint16\"},{\"name\":\"category\",\"type\":\"uint8\"},{\"name\":\"minerAccountAddress\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":\"AlgoMiner\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":{\"keccak256\":\"0xb98f40d28a99d50fe3a6c5b8411495818db9a438b3f765f73280ae03c6c6063b\",\"urls\":[\"bzzr://dba29214974be1b8b9698babc431c5784cae1dc4785c928e3a050f1ff8ed0434\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol\":{\"keccak256\":\"0x20955eaf60f79f885c941d97e208320c9e0bc1f05b8121342f8187f9a39fd46b\",\"urls\":[\"bzzr://8e30e53aa0322307873f8c0a4fc3c58b7562a0fde92a0921a52bdef4e129ec4b\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol\":{\"keccak256\":\"0x6fffe504e6805d95ca42269cc995a3de9401a12bc037068b056c186ce8569d8d\",\"urls\":[\"bzzr://a0923a2d2b1e4992f552ce49638b19d6d8328950c1d5dc1395f0d625daf21c68\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol\":{\"keccak256\":\"0x71adbf7f060599239b7a981594e43dc8fbe8597fd2853b6fe9e70ff39883d73a\",\"urls\":[\"bzzr://70691c1638cdc0f744f8c5b5a94e4f857ba40ad053816cfbd15e13ed41a3bc66\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0x94c226040dfda257ee61c1455bbb920db28b6ad0f5cba33ecc76319c003630b7\",\"urls\":[\"bzzr://bdd0568ed74054f0f91933dab7fbba6789cceb60ab2f5200d719347161e8feed\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol\":{\"keccak256\":\"0x29a8fa3204dbd204355714601ce21d7d717a586a4de21009d8f2a3ca7981963f\",\"urls\":[\"bzzr://55d9b762620cef1e6f7b11a26d6cc123f5b608a59e0d36f9bc0a1e8ff0ff5c42\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"terminate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pauseMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isAlgoMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isMining\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"startMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newMinerAddress\",\"type\":\"address\"}],\"name\":\"migrateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getReferral\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSystem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopAndRemoveOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentDay\",\"outputs\":[{\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"resumeMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMinerType\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCategory\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSupervisor\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwnerAddress\",\"type\":\"address\"},{\"name\":\"newReferralAddress\",\"type\":\"address\"}],\"name\":\"resetMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"deactivateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"activateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DAYS_PER_YEAR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentYearSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentYear\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"minerType\",\"type\":\"uint8\"},{\"name\":\"category\",\"type\":\"uint8\"},{\"name\":\"minerAccountAddress\",\"type\":\"address\"},{\"name\":\"referralAccountAddress\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":\"AlgoMiner\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol\":{\"keccak256\":\"0x2314139702cc63c8daa379e521abea3be32730ba896f68f3f865749907e64539\",\"urls\":[\"bzzr://b945e0ec5a4ca8a52b5e816c5bb00807d0ca43c5363102821b36c8c4ee98a2d5\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":{\"keccak256\":\"0x33f0f5ea1227c09f23bb01dc90941de6aac68ccf624f8c8843b94f61b0042883\",\"urls\":[\"bzzr://bd3a3d0bbff65fc4367244d68a37a355179565074752d6ecd368a72ff9c5ac87\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol\":{\"keccak256\":\"0x20955eaf60f79f885c941d97e208320c9e0bc1f05b8121342f8187f9a39fd46b\",\"urls\":[\"bzzr://8e30e53aa0322307873f8c0a4fc3c58b7562a0fde92a0921a52bdef4e129ec4b\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol\":{\"keccak256\":\"0x6fffe504e6805d95ca42269cc995a3de9401a12bc037068b056c186ce8569d8d\",\"urls\":[\"bzzr://a0923a2d2b1e4992f552ce49638b19d6d8328950c1d5dc1395f0d625daf21c68\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol\":{\"keccak256\":\"0x71adbf7f060599239b7a981594e43dc8fbe8597fd2853b6fe9e70ff39883d73a\",\"urls\":[\"bzzr://70691c1638cdc0f744f8c5b5a94e4f857ba40ad053816cfbd15e13ed41a3bc66\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0xdc21d3ce2e847a83e62a95fc4e8a31305771c1c6549fba2102ae9a7caa09a1e5\",\"urls\":[\"bzzr://291aa93e18c12398d6d8031308b1a0231d253ec061a5449d0335bd476554383e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol\":{\"keccak256\":\"0x29a8fa3204dbd204355714601ce21d7d717a586a4de21009d8f2a3ca7981963f\",\"urls\":[\"bzzr://55d9b762620cef1e6f7b11a26d6cc123f5b608a59e0d36f9bc0a1e8ff0ff5c42\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -714,6 +833,20 @@ "stateMutability": "view", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "getMinerType", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [], @@ -743,6 +876,7 @@ "methodIdentifiers": { "getCategory()": "80258e47", "getMiner()": "302c11ca", + "getMinerType()": "4969ae70", "isAlgoMiner()": "1777fb4b", "isMining()": "19a74ab3" } @@ -794,7 +928,7 @@ "linkReferences": {}, "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820ba9d82b11504517181f938ed511f09c0a22046ef39e2e32460a2175b508e16a80029", "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xba SWAP14 DUP3 0xb1 ISZERO DIV MLOAD PUSH18 0x81F938ED511F09C0A22046EF39E2E32460A2 OR JUMPDEST POP DUP15 AND 0xa8 STOP 0x29 ", - "sourceMap": "109:784:7:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "sourceMap": "109:784:8:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -828,7 +962,7 @@ "linkReferences": {}, "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820da2bd0dd3588878574232c2d13f92e16f4b0e8ad94ede9adb0d087f862d4f8cf0029", "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xda 0x2b 0xd0 0xdd CALLDATALOAD DUP9 DUP8 DUP6 PUSH21 0x232C2D13F92E16F4B0E8AD94EDE9ADB0D087F862D4 0xf8 0xcf STOP 0x29 ", - "sourceMap": "117:1531:8:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "sourceMap": "117:1531:9:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -1068,7 +1202,7 @@ "linkReferences": {}, "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820c0f55d8db2bd761049fa5ba6b6c207a4d595b758946aba3715580373517606710029", "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xc0 0xf5 0x5d DUP14 0xb2 0xbd PUSH23 0x1049FA5BA6B6C207A4D595B758946ABA37155803735176 MOD PUSH18 0x2900000000000000000000000000000000 ", - "sourceMap": "353:1296:10:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "sourceMap": "353:1296:11:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -1094,19 +1228,1354 @@ } }, "sources": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol", + "exportedSymbols": { + "AlgoCommon": [ + 97 + ] + }, + "id": 98, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:23:0" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 97, + "linearizedBaseContracts": [ + 97 + ], + "name": "AlgoCommon", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 8, + "name": "TOKEN_FACTOR", + "nodeType": "VariableDeclaration", + "scope": 97, + "src": "56:58:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "56:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 3, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "97:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "3138", + "id": 5, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "111:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + } + ], + "id": 4, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "103:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint256" + }, + "id": 6, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "103:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "97:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 13, + "name": "CAT_0_VALUE", + "nodeType": "VariableDeclaration", + "scope": 97, + "src": "121:61:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "121:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "313030303030", + "id": 10, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "161:6:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_100000_by_1", + "typeString": "int_const 100000" + }, + "value": "100000" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 11, + "name": "TOKEN_FACTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "170:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "161:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 18, + "name": "CAT_1_VALUE", + "nodeType": "VariableDeclaration", + "scope": 97, + "src": "189:62:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "189:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 17, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "31303030303030", + "id": 15, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "229:7:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1000000" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 16, + "name": "TOKEN_FACTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "239:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "229:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 25, + "name": "CAT_2_VALUE", + "nodeType": "VariableDeclaration", + "scope": 97, + "src": "258:66:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 19, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "258:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 24, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_2000000_by_1", + "typeString": "int_const 2000000" + }, + "id": 22, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 20, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "298:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31303030303030", + "id": 21, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "302:7:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1000000" + }, + "src": "298:11:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2000000_by_1", + "typeString": "int_const 2000000" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 23, + "name": "TOKEN_FACTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "312:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "298:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 32, + "name": "CAT_3_VALUE", + "nodeType": "VariableDeclaration", + "scope": 97, + "src": "331:66:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 26, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "331:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 31, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_3000000_by_1", + "typeString": "int_const 3000000" + }, + "id": 29, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "33", + "id": 27, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "371:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31303030303030", + "id": 28, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "375:7:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1000000" + }, + "src": "371:11:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_3000000_by_1", + "typeString": "int_const 3000000" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 30, + "name": "TOKEN_FACTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "385:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "371:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 39, + "name": "CAT_4_VALUE", + "nodeType": "VariableDeclaration", + "scope": 97, + "src": "404:66:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 33, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "404:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 38, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_4000000_by_1", + "typeString": "int_const 4000000" + }, + "id": 36, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "34", + "id": 34, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "444:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31303030303030", + "id": 35, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "448:7:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1000000" + }, + "src": "444:11:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_4000000_by_1", + "typeString": "int_const 4000000" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 37, + "name": "TOKEN_FACTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "458:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "444:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 46, + "name": "CAT_5_VALUE", + "nodeType": "VariableDeclaration", + "scope": 97, + "src": "477:66:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 40, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "477:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 45, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_5000000_by_1", + "typeString": "int_const 5000000" + }, + "id": 43, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "35", + "id": 41, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "517:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31303030303030", + "id": 42, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "521:7:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1000000" + }, + "src": "517:11:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_5000000_by_1", + "typeString": "int_const 5000000" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 44, + "name": "TOKEN_FACTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "531:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "517:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "body": { + "id": 95, + "nodeType": "Block", + "src": "631:426:0", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 55, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 53, + "name": "category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "645:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 54, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "657:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "645:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 61, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 59, + "name": "category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "714:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 60, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "726:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "714:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 67, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 65, + "name": "category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "783:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 66, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "795:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "783:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 73, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 71, + "name": "category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "852:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "33", + "id": 72, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "864:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "src": "852:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 79, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 77, + "name": "category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "921:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "34", + "id": 78, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "933:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "921:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 85, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 83, + "name": "category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "990:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "35", + "id": 84, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1002:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "src": "990:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 89, + "nodeType": "IfStatement", + "src": "987:63:0", + "trueBody": { + "id": 88, + "nodeType": "Block", + "src": "1005:45:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 86, + "name": "CAT_5_VALUE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "1027:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 52, + "id": 87, + "nodeType": "Return", + "src": "1020:18:0" + } + ] + } + }, + "id": 90, + "nodeType": "IfStatement", + "src": "918:132:0", + "trueBody": { + "id": 82, + "nodeType": "Block", + "src": "936:45:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 80, + "name": "CAT_4_VALUE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 39, + "src": "958:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 52, + "id": 81, + "nodeType": "Return", + "src": "951:18:0" + } + ] + } + }, + "id": 91, + "nodeType": "IfStatement", + "src": "849:201:0", + "trueBody": { + "id": 76, + "nodeType": "Block", + "src": "867:45:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 74, + "name": "CAT_3_VALUE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32, + "src": "889:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 52, + "id": 75, + "nodeType": "Return", + "src": "882:18:0" + } + ] + } + }, + "id": 92, + "nodeType": "IfStatement", + "src": "780:270:0", + "trueBody": { + "id": 70, + "nodeType": "Block", + "src": "798:45:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 68, + "name": "CAT_2_VALUE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 25, + "src": "820:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 52, + "id": 69, + "nodeType": "Return", + "src": "813:18:0" + } + ] + } + }, + "id": 93, + "nodeType": "IfStatement", + "src": "711:339:0", + "trueBody": { + "id": 64, + "nodeType": "Block", + "src": "729:45:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 62, + "name": "CAT_1_VALUE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18, + "src": "751:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 52, + "id": 63, + "nodeType": "Return", + "src": "744:18:0" + } + ] + } + }, + "id": 94, + "nodeType": "IfStatement", + "src": "642:408:0", + "trueBody": { + "id": 58, + "nodeType": "Block", + "src": "660:45:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 56, + "name": "CAT_0_VALUE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13, + "src": "682:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 52, + "id": 57, + "nodeType": "Return", + "src": "675:18:0" + } + ] + } + } + ] + }, + "documentation": null, + "id": 96, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getCapacityByCategory", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 49, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 48, + "name": "category", + "nodeType": "VariableDeclaration", + "scope": 96, + "src": "583:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 47, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "583:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "582:16:0" + }, + "payable": false, + "returnParameters": { + "id": 52, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 51, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 96, + "src": "622:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 50, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "622:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "621:9:0" + }, + "scope": 97, + "src": "552:505:0", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 98, + "src": "27:1033:0" + } + ], + "src": "0:1060:0" + }, + "id": 0 + }, "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol": { "ast": { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol", "exportedSymbols": { "AlgoCoreTeamRole": [ - 86 + 184 ] }, - "id": 87, + "id": 185, "nodeType": "SourceUnit", "nodes": [ { - "id": 1, + "id": 99, "literals": [ "solidity", "^", @@ -1114,16 +2583,16 @@ ".24" ], "nodeType": "PragmaDirective", - "src": "0:24:0" + "src": "0:24:1" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", - "id": 2, + "id": 100, "nodeType": "ImportDirective", - "scope": 87, - "sourceUnit": 935, - "src": "28:189:0", + "scope": 185, + "sourceUnit": 1162, + "src": "28:189:1", "symbolAliases": [], "unitAlias": "" }, @@ -1133,64 +2602,64 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 86, + "id": 184, "linearizedBaseContracts": [ - 86 + 184 ], "name": "AlgoCoreTeamRole", "nodeType": "ContractDefinition", "nodes": [ { - "id": 5, + "id": 103, "libraryName": { "contractScope": null, - "id": 3, + "id": 101, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 934, - "src": "260:5:0", + "referencedDeclaration": 1161, + "src": "260:5:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$934", + "typeIdentifier": "t_contract$_Roles_$1161", "typeString": "library Roles" } }, "nodeType": "UsingForDirective", - "src": "254:27:0", + "src": "254:27:1", "typeName": { "contractScope": null, - "id": 4, + "id": 102, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 847, - "src": "270:10:0", + "referencedDeclaration": 1074, + "src": "270:10:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", "typeString": "struct Roles.Role" } } }, { "constant": false, - "id": 7, + "id": 105, "name": "_coreTeamMembers", "nodeType": "VariableDeclaration", - "scope": 86, - "src": "289:35:0", + "scope": 184, + "src": "289:35:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$847_storage", + "typeIdentifier": "t_struct$_Role_$1074_storage", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 6, + "id": 104, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 847, - "src": "289:10:0", + "referencedDeclaration": 1074, + "src": "289:10:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -1199,9 +2668,9 @@ }, { "body": { - "id": 15, + "id": 113, "nodeType": "Block", - "src": "357:43:0", + "src": "357:43:1", "statements": [ { "expression": { @@ -1211,18 +2680,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 11, + "id": 109, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1290, - "src": "381:3:0", + "referencedDeclaration": 1517, + "src": "381:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 12, + "id": 110, "isConstant": false, "isLValue": false, "isPure": false, @@ -1230,7 +2699,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "381:10:0", + "src": "381:10:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1244,18 +2713,18 @@ "typeString": "address" } ], - "id": 10, + "id": 108, "name": "_addCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73, - "src": "368:12:0", + "referencedDeclaration": 171, + "src": "368:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 13, + "id": 111, "isConstant": false, "isLValue": false, "isPure": false, @@ -1263,20 +2732,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "368:24:0", + "src": "368:24:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 14, + "id": 112, "nodeType": "ExpressionStatement", - "src": "368:24:0" + "src": "368:24:1" } ] }, "documentation": null, - "id": 16, + "id": 114, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -1284,29 +2753,29 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 8, + "id": 106, "nodeType": "ParameterList", "parameters": [], - "src": "345:2:0" + "src": "345:2:1" }, "payable": false, "returnParameters": { - "id": 9, + "id": 107, "nodeType": "ParameterList", "parameters": [], - "src": "357:0:0" + "src": "357:0:1" }, - "scope": 86, - "src": "333:67:0", + "scope": 184, + "src": "333:67:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 26, + "id": 124, "nodeType": "Block", - "src": "432:62:0", + "src": "432:62:1", "statements": [ { "expression": { @@ -1319,18 +2788,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 20, + "id": 118, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1290, - "src": "462:3:0", + "referencedDeclaration": 1517, + "src": "462:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 21, + "id": 119, "isConstant": false, "isLValue": false, "isPure": false, @@ -1338,7 +2807,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "462:10:0", + "src": "462:10:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1352,18 +2821,18 @@ "typeString": "address" } ], - "id": 19, + "id": 117, "name": "isCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "451:10:0", + "referencedDeclaration": 138, + "src": "451:10:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)" } }, - "id": 22, + "id": 120, "isConstant": false, "isLValue": false, "isPure": false, @@ -1371,7 +2840,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "451:22:0", + "src": "451:22:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1385,21 +2854,21 @@ "typeString": "bool" } ], - "id": 18, + "id": 116, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1293, - 1294 + 1520, + 1521 ], - "referencedDeclaration": 1293, - "src": "443:7:0", + "referencedDeclaration": 1520, + "src": "443:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 23, + "id": 121, "isConstant": false, "isLValue": false, "isPure": false, @@ -1407,41 +2876,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "443:31:0", + "src": "443:31:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 24, + "id": 122, "nodeType": "ExpressionStatement", - "src": "443:31:0" + "src": "443:31:1" }, { - "id": 25, + "id": 123, "nodeType": "PlaceholderStatement", - "src": "485:1:0" + "src": "485:1:1" } ] }, "documentation": null, - "id": 27, + "id": 125, "name": "onlyCoreTeam", "nodeType": "ModifierDefinition", "parameters": { - "id": 17, + "id": 115, "nodeType": "ParameterList", "parameters": [], - "src": "429:2:0" + "src": "429:2:1" }, - "src": "408:86:0", + "src": "408:86:1", "visibility": "internal" }, { "body": { - "id": 39, + "id": 137, "nodeType": "Block", - "src": "566:55:0", + "src": "566:55:1", "statements": [ { "expression": { @@ -1449,12 +2918,12 @@ "arguments": [ { "argumentTypes": null, - "id": 36, + "id": 134, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 29, - "src": "605:7:0", + "referencedDeclaration": 127, + "src": "605:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1470,32 +2939,32 @@ ], "expression": { "argumentTypes": null, - "id": 34, + "id": 132, "name": "_coreTeamMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7, - "src": "584:16:0", + "referencedDeclaration": 105, + "src": "584:16:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$847_storage", + "typeIdentifier": "t_struct$_Role_$1074_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 35, + "id": 133, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 933, - "src": "584:20:0", + "referencedDeclaration": 1160, + "src": "584:20:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$847_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1074_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1074_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 37, + "id": 135, "isConstant": false, "isLValue": false, "isPure": false, @@ -1503,21 +2972,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "584:29:0", + "src": "584:29:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 33, - "id": 38, + "functionReturnParameters": 131, + "id": 136, "nodeType": "Return", - "src": "577:36:0" + "src": "577:36:1" } ] }, "documentation": null, - "id": 40, + "id": 138, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -1525,16 +2994,16 @@ "name": "isCoreTeam", "nodeType": "FunctionDefinition", "parameters": { - "id": 30, + "id": 128, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 29, + "id": 127, "name": "account", "nodeType": "VariableDeclaration", - "scope": 40, - "src": "522:15:0", + "scope": 138, + "src": "522:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1542,10 +3011,10 @@ "typeString": "address" }, "typeName": { - "id": 28, + "id": 126, "name": "address", "nodeType": "ElementaryTypeName", - "src": "522:7:0", + "src": "522:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1555,20 +3024,20 @@ "visibility": "internal" } ], - "src": "521:17:0" + "src": "521:17:1" }, "payable": false, "returnParameters": { - "id": 33, + "id": 131, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 32, + "id": 130, "name": "", "nodeType": "VariableDeclaration", - "scope": 40, - "src": "560:4:0", + "scope": 138, + "src": "560:4:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1576,10 +3045,10 @@ "typeString": "bool" }, "typeName": { - "id": 31, + "id": 129, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "560:4:0", + "src": "560:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1589,19 +3058,19 @@ "visibility": "internal" } ], - "src": "559:6:0" + "src": "559:6:1" }, - "scope": 86, - "src": "502:119:0", + "scope": 184, + "src": "502:119:1", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 51, + "id": 149, "nodeType": "Block", - "src": "687:40:0", + "src": "687:40:1", "statements": [ { "expression": { @@ -1609,12 +3078,12 @@ "arguments": [ { "argumentTypes": null, - "id": 48, + "id": 146, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42, - "src": "711:7:0", + "referencedDeclaration": 140, + "src": "711:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1628,18 +3097,18 @@ "typeString": "address" } ], - "id": 47, + "id": 145, "name": "_addCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73, - "src": "698:12:0", + "referencedDeclaration": 171, + "src": "698:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 49, + "id": 147, "isConstant": false, "isLValue": false, "isPure": false, @@ -1647,57 +3116,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "698:21:0", + "src": "698:21:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 50, + "id": 148, "nodeType": "ExpressionStatement", - "src": "698:21:0" + "src": "698:21:1" } ] }, "documentation": null, - "id": 52, + "id": 150, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 45, + "id": 143, "modifierName": { "argumentTypes": null, - "id": 44, + "id": 142, "name": "onlyCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 27, - "src": "674:12:0", + "referencedDeclaration": 125, + "src": "674:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "674:12:0" + "src": "674:12:1" } ], "name": "addCoreTeam", "nodeType": "FunctionDefinition", "parameters": { - "id": 43, + "id": 141, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 42, + "id": 140, "name": "account", "nodeType": "VariableDeclaration", - "scope": 52, - "src": "650:15:0", + "scope": 150, + "src": "650:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1705,10 +3174,10 @@ "typeString": "address" }, "typeName": { - "id": 41, + "id": 139, "name": "address", "nodeType": "ElementaryTypeName", - "src": "650:7:0", + "src": "650:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1718,26 +3187,26 @@ "visibility": "internal" } ], - "src": "649:17:0" + "src": "649:17:1" }, "payable": false, "returnParameters": { - "id": 46, + "id": 144, "nodeType": "ParameterList", "parameters": [], - "src": "687:0:0" + "src": "687:0:1" }, - "scope": 86, - "src": "629:98:0", + "scope": 184, + "src": "629:98:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 60, + "id": 158, "nodeType": "Block", - "src": "770:46:0", + "src": "770:46:1", "statements": [ { "expression": { @@ -1747,18 +3216,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 56, + "id": 154, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1290, - "src": "797:3:0", + "referencedDeclaration": 1517, + "src": "797:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 57, + "id": 155, "isConstant": false, "isLValue": false, "isPure": false, @@ -1766,7 +3235,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "797:10:0", + "src": "797:10:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1780,18 +3249,18 @@ "typeString": "address" } ], - "id": 55, + "id": 153, "name": "_removeCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 85, - "src": "781:15:0", + "referencedDeclaration": 183, + "src": "781:15:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 58, + "id": 156, "isConstant": false, "isLValue": false, "isPure": false, @@ -1799,20 +3268,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "781:27:0", + "src": "781:27:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 59, + "id": 157, "nodeType": "ExpressionStatement", - "src": "781:27:0" + "src": "781:27:1" } ] }, "documentation": null, - "id": 61, + "id": 159, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1820,29 +3289,29 @@ "name": "renounceCoreTeam", "nodeType": "FunctionDefinition", "parameters": { - "id": 53, + "id": 151, "nodeType": "ParameterList", "parameters": [], - "src": "760:2:0" + "src": "760:2:1" }, "payable": false, "returnParameters": { - "id": 54, + "id": 152, "nodeType": "ParameterList", "parameters": [], - "src": "770:0:0" + "src": "770:0:1" }, - "scope": 86, - "src": "735:81:0", + "scope": 184, + "src": "735:81:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 72, + "id": 170, "nodeType": "Block", - "src": "872:48:0", + "src": "872:48:1", "statements": [ { "expression": { @@ -1850,12 +3319,12 @@ "arguments": [ { "argumentTypes": null, - "id": 69, + "id": 167, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 63, - "src": "904:7:0", + "referencedDeclaration": 161, + "src": "904:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1871,32 +3340,32 @@ ], "expression": { "argumentTypes": null, - "id": 66, + "id": 164, "name": "_coreTeamMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7, - "src": "883:16:0", + "referencedDeclaration": 105, + "src": "883:16:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$847_storage", + "typeIdentifier": "t_struct$_Role_$1074_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 68, + "id": 166, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 879, - "src": "883:20:0", + "referencedDeclaration": 1106, + "src": "883:20:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$847_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1074_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1074_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 70, + "id": 168, "isConstant": false, "isLValue": false, "isPure": false, @@ -1904,20 +3373,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "883:29:0", + "src": "883:29:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71, + "id": 169, "nodeType": "ExpressionStatement", - "src": "883:29:0" + "src": "883:29:1" } ] }, "documentation": null, - "id": 73, + "id": 171, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1925,16 +3394,16 @@ "name": "_addCoreTeam", "nodeType": "FunctionDefinition", "parameters": { - "id": 64, + "id": 162, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 63, + "id": 161, "name": "account", "nodeType": "VariableDeclaration", - "scope": 73, - "src": "846:15:0", + "scope": 171, + "src": "846:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1942,10 +3411,10 @@ "typeString": "address" }, "typeName": { - "id": 62, + "id": 160, "name": "address", "nodeType": "ElementaryTypeName", - "src": "846:7:0", + "src": "846:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1955,26 +3424,26 @@ "visibility": "internal" } ], - "src": "845:17:0" + "src": "845:17:1" }, "payable": false, "returnParameters": { - "id": 65, + "id": 163, "nodeType": "ParameterList", "parameters": [], - "src": "872:0:0" + "src": "872:0:1" }, - "scope": 86, - "src": "824:96:0", + "scope": 184, + "src": "824:96:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 84, + "id": 182, "nodeType": "Block", - "src": "979:51:0", + "src": "979:51:1", "statements": [ { "expression": { @@ -1982,12 +3451,12 @@ "arguments": [ { "argumentTypes": null, - "id": 81, + "id": 179, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 75, - "src": "1014:7:0", + "referencedDeclaration": 173, + "src": "1014:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2003,32 +3472,32 @@ ], "expression": { "argumentTypes": null, - "id": 78, + "id": 176, "name": "_coreTeamMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7, - "src": "990:16:0", + "referencedDeclaration": 105, + "src": "990:16:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$847_storage", + "typeIdentifier": "t_struct$_Role_$1074_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 80, + "id": 178, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 910, - "src": "990:23:0", + "referencedDeclaration": 1137, + "src": "990:23:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$847_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1074_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1074_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 82, + "id": 180, "isConstant": false, "isLValue": false, "isPure": false, @@ -2036,20 +3505,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "990:32:0", + "src": "990:32:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 83, + "id": 181, "nodeType": "ExpressionStatement", - "src": "990:32:0" + "src": "990:32:1" } ] }, "documentation": null, - "id": 85, + "id": 183, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2057,16 +3526,16 @@ "name": "_removeCoreTeam", "nodeType": "FunctionDefinition", "parameters": { - "id": 76, + "id": 174, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 75, + "id": 173, "name": "account", "nodeType": "VariableDeclaration", - "scope": 85, - "src": "953:15:0", + "scope": 183, + "src": "953:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2074,10 +3543,10 @@ "typeString": "address" }, "typeName": { - "id": 74, + "id": 172, "name": "address", "nodeType": "ElementaryTypeName", - "src": "953:7:0", + "src": "953:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2087,125 +3556,136 @@ "visibility": "internal" } ], - "src": "952:17:0" + "src": "952:17:1" }, "payable": false, "returnParameters": { - "id": 77, + "id": 175, "nodeType": "ParameterList", "parameters": [], - "src": "979:0:0" + "src": "979:0:1" }, - "scope": 86, - "src": "928:102:0", + "scope": 184, + "src": "928:102:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 87, - "src": "221:812:0" + "scope": 185, + "src": "221:812:1" } ], - "src": "0:1035:0" + "src": "0:1035:1" }, - "id": 0 + "id": 1 }, "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol": { "ast": { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol", "exportedSymbols": { "AlgoMiner": [ - 549 + 771 ] }, - "id": 550, + "id": 772, "nodeType": "SourceUnit", "nodes": [ { - "id": 88, + "id": 186, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:1" + "src": "0:23:2" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "id": 89, + "id": 187, "nodeType": "ImportDirective", - "scope": 550, - "sourceUnit": 1132, - "src": "27:195:1", + "scope": 772, + "sourceUnit": 1359, + "src": "27:195:2", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", - "id": 90, + "id": 188, "nodeType": "ImportDirective", - "scope": 550, - "sourceUnit": 1276, - "src": "224:198:1", + "scope": 772, + "sourceUnit": 1503, + "src": "224:198:2", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", "file": "./IAlgoMiner.sol", - "id": 91, + "id": 189, "nodeType": "ImportDirective", - "scope": 550, - "sourceUnit": 804, - "src": "426:26:1", + "scope": 772, + "sourceUnit": 1031, + "src": "426:26:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol", + "file": "./AlgoCommon.sol", + "id": 190, + "nodeType": "ImportDirective", + "scope": 772, + "sourceUnit": 98, + "src": "454:26:2", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol", "file": "./ERC20TokenHolder.sol", - "id": 92, + "id": 191, "nodeType": "ImportDirective", - "scope": 550, - "sourceUnit": 781, - "src": "454:32:1", + "scope": 772, + "sourceUnit": 1003, + "src": "482:32:2", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol", "file": "./AlgoSystemRole.sol", - "id": 93, + "id": 192, "nodeType": "ImportDirective", - "scope": 550, - "sourceUnit": 724, - "src": "488:30:1", + "scope": 772, + "sourceUnit": 946, + "src": "516:30:2", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol", "file": "./AlgoCoreTeamRole.sol", - "id": 94, + "id": 193, "nodeType": "ImportDirective", - "scope": 550, - "sourceUnit": 87, - "src": "520:32:1", + "scope": 772, + "sourceUnit": 185, + "src": "548:32:2", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol", "file": "./AlgoSupervisorRole.sol", - "id": 95, + "id": 194, "nodeType": "ImportDirective", - "scope": 550, - "sourceUnit": 637, - "src": "554:34:1", + "scope": 772, + "sourceUnit": 859, + "src": "582:34:2", "symbolAliases": [], "unitAlias": "" }, @@ -2215,153 +3695,173 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 96, + "id": 195, + "name": "AlgoCommon", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 97, + "src": "642:10:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AlgoCommon_$97", + "typeString": "contract AlgoCommon" + } + }, + "id": 196, + "nodeType": "InheritanceSpecifier", + "src": "642:10:2" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 197, "name": "ERC20TokenHolder", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 780, - "src": "614:16:1", + "referencedDeclaration": 1002, + "src": "654:16:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20TokenHolder_$780", + "typeIdentifier": "t_contract$_ERC20TokenHolder_$1002", "typeString": "contract ERC20TokenHolder" } }, - "id": 97, + "id": 198, "nodeType": "InheritanceSpecifier", - "src": "614:16:1" + "src": "654:16:2" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 98, + "id": 199, "name": "AlgoSystemRole", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 723, - "src": "632:14:1", + "referencedDeclaration": 945, + "src": "672:14:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoSystemRole_$723", + "typeIdentifier": "t_contract$_AlgoSystemRole_$945", "typeString": "contract AlgoSystemRole" } }, - "id": 99, + "id": 200, "nodeType": "InheritanceSpecifier", - "src": "632:14:1" + "src": "672:14:2" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 100, + "id": 201, "name": "AlgoCoreTeamRole", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 86, - "src": "648:16:1", + "referencedDeclaration": 184, + "src": "688:16:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoCoreTeamRole_$86", + "typeIdentifier": "t_contract$_AlgoCoreTeamRole_$184", "typeString": "contract AlgoCoreTeamRole" } }, - "id": 101, + "id": 202, "nodeType": "InheritanceSpecifier", - "src": "648:16:1" + "src": "688:16:2" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 102, + "id": 203, "name": "AlgoSupervisorRole", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 636, - "src": "666:18:1", + "referencedDeclaration": 858, + "src": "706:18:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoSupervisorRole_$636", + "typeIdentifier": "t_contract$_AlgoSupervisorRole_$858", "typeString": "contract AlgoSupervisorRole" } }, - "id": 103, + "id": 204, "nodeType": "InheritanceSpecifier", - "src": "666:18:1" + "src": "706:18:2" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 104, + "id": 205, "name": "IAlgoMiner", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 803, - "src": "686:10:1", + "referencedDeclaration": 1030, + "src": "726:10:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$803", + "typeIdentifier": "t_contract$_IAlgoMiner_$1030", "typeString": "contract IAlgoMiner" } }, - "id": 105, + "id": 206, "nodeType": "InheritanceSpecifier", - "src": "686:10:1" + "src": "726:10:2" } ], "contractDependencies": [ - 636, - 86, - 780, - 723, - 803, - 840 + 1002, + 97, + 1030, + 184, + 945, + 858, + 1067 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 549, + "id": 771, "linearizedBaseContracts": [ - 549, - 803, - 636, - 86, - 723, - 780, - 840 + 771, + 1030, + 858, + 184, + 945, + 1002, + 1067, + 97 ], "name": "AlgoMiner", "nodeType": "ContractDefinition", "nodes": [ { - "id": 108, + "id": 209, "libraryName": { "contractScope": null, - "id": 106, + "id": 207, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1275, - "src": "710:9:1", + "referencedDeclaration": 1502, + "src": "750:9:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1275", + "typeIdentifier": "t_contract$_SafeERC20_$1502", "typeString": "library SafeERC20" } }, "nodeType": "UsingForDirective", - "src": "704:27:1", + "src": "744:27:2", "typeName": { "contractScope": null, - "id": 107, + "id": 208, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1131, - "src": "724:6:1", + "referencedDeclaration": 1358, + "src": "764:6:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" } } }, { "constant": true, - "id": 111, + "id": 212, "name": "DAYS_PER_YEAR", "nodeType": "VariableDeclaration", - "scope": 549, - "src": "739:43:1", + "scope": 771, + "src": "779:43:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2369,10 +3869,10 @@ "typeString": "uint256" }, "typeName": { - "id": 109, + "id": 210, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "739:7:1", + "src": "779:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2381,14 +3881,14 @@ "value": { "argumentTypes": null, "hexValue": "333635", - "id": 110, + "id": 211, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "779:3:1", + "src": "819:3:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_365_by_1", @@ -2399,59 +3899,82 @@ "visibility": "public" }, { - "canonicalName": "AlgoMiner.MinerState", - "id": 116, + "canonicalName": "AlgoMiner.MinerType", + "id": 215, "members": [ { - "id": 112, + "id": 213, + "name": "PoolBased", + "nodeType": "EnumValue", + "src": "857:9:2" + }, + { + "id": 214, + "name": "NonPoolBased", + "nodeType": "EnumValue", + "src": "877:12:2" + } + ], + "name": "MinerType", + "nodeType": "EnumDefinition", + "src": "831:65:2" + }, + { + "canonicalName": "AlgoMiner.MinerState", + "id": 220, + "members": [ + { + "id": 216, "name": "Deactivated", "nodeType": "EnumValue", - "src": "818:11:1" + "src": "931:11:2" }, { - "id": 113, + "id": 217, "name": "Activated", "nodeType": "EnumValue", - "src": "840:9:1" + "src": "953:9:2" }, { - "id": 114, + "id": 218, "name": "Suspended", "nodeType": "EnumValue", - "src": "860:9:1" + "src": "973:9:2" }, { - "id": 115, + "id": 219, "name": "Stopped", "nodeType": "EnumValue", - "src": "880:7:1" + "src": "993:7:2" } ], "name": "MinerState", "nodeType": "EnumDefinition", - "src": "791:103:1" + "src": "904:103:2" }, { "constant": false, - "id": 118, + "id": 222, "name": "_minerType", "nodeType": "VariableDeclaration", - "scope": 549, - "src": "902:25:1", + "scope": 771, + "src": "1015:28:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" + "typeIdentifier": "t_enum$_MinerType_$215", + "typeString": "enum AlgoMiner.MinerType" }, "typeName": { - "id": 117, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "902:6:1", + "contractScope": null, + "id": 221, + "name": "MinerType", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 215, + "src": "1015:9:2", "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" + "typeIdentifier": "t_enum$_MinerType_$215", + "typeString": "enum AlgoMiner.MinerType" } }, "value": null, @@ -2459,11 +3982,11 @@ }, { "constant": false, - "id": 120, + "id": 224, "name": "_category", "nodeType": "VariableDeclaration", - "scope": 549, - "src": "934:23:1", + "scope": 771, + "src": "1050:23:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2471,10 +3994,10 @@ "typeString": "uint8" }, "typeName": { - "id": 119, + "id": 223, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "934:5:1", + "src": "1050:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2485,11 +4008,11 @@ }, { "constant": false, - "id": 122, + "id": 226, "name": "_miner", "nodeType": "VariableDeclaration", - "scope": 549, - "src": "964:22:1", + "scope": 771, + "src": "1080:22:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2497,10 +4020,10 @@ "typeString": "address" }, "typeName": { - "id": 121, + "id": 225, "name": "address", "nodeType": "ElementaryTypeName", - "src": "964:7:1", + "src": "1080:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2511,26 +4034,52 @@ }, { "constant": false, - "id": 124, - "name": "_state", + "id": 228, + "name": "_referral", "nodeType": "VariableDeclaration", - "scope": 549, - "src": "995:25:1", + "scope": 771, + "src": "1109:25:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 227, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1109:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 230, + "name": "_state", + "nodeType": "VariableDeclaration", + "scope": 771, + "src": "1143:25:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, "typeName": { "contractScope": null, - "id": 123, + "id": 229, "name": "MinerState", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 116, - "src": "995:10:1", + "referencedDeclaration": 220, + "src": "1143:10:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, @@ -2539,11 +4088,11 @@ }, { "constant": false, - "id": 126, + "id": 232, "name": "_mining", "nodeType": "VariableDeclaration", - "scope": 549, - "src": "1027:20:1", + "scope": 771, + "src": "1175:20:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2551,10 +4100,10 @@ "typeString": "bool" }, "typeName": { - "id": 125, + "id": 231, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1027:4:1", + "src": "1175:4:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2565,11 +4114,11 @@ }, { "constant": false, - "id": 128, + "id": 234, "name": "_currentYear", "nodeType": "VariableDeclaration", - "scope": 549, - "src": "1054:26:1", + "scope": 771, + "src": "1202:26:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2577,10 +4126,10 @@ "typeString": "uint8" }, "typeName": { - "id": 127, + "id": 233, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1054:5:1", + "src": "1202:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2591,11 +4140,11 @@ }, { "constant": false, - "id": 130, + "id": 236, "name": "_currentDay", "nodeType": "VariableDeclaration", - "scope": 549, - "src": "1087:26:1", + "scope": 771, + "src": "1235:26:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2603,10 +4152,10 @@ "typeString": "uint16" }, "typeName": { - "id": 129, + "id": 235, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "1087:6:1", + "src": "1235:6:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -2617,11 +4166,11 @@ }, { "constant": false, - "id": 132, + "id": 238, "name": "_currentYearSupply", "nodeType": "VariableDeclaration", - "scope": 549, - "src": "1120:34:1", + "scope": 771, + "src": "1268:34:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2629,10 +4178,10 @@ "typeString": "uint256" }, "typeName": { - "id": 131, + "id": 237, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1120:7:1", + "src": "1268:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2643,9 +4192,9 @@ }, { "body": { - "id": 174, + "id": 286, "nodeType": "Block", - "src": "1400:173:1", + "src": "1583:218:2", "statements": [ { "expression": { @@ -2657,7 +4206,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 159, + "id": 267, "isConstant": false, "isLValue": false, "isPure": false, @@ -2668,19 +4217,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 155, + "id": 263, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 153, + "id": 261, "name": "category", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 136, - "src": "1429:8:1", + "referencedDeclaration": 242, + "src": "1612:8:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2691,14 +4240,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 154, + "id": 262, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1441:1:1", + "src": "1624:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2706,7 +4255,7 @@ }, "value": "0" }, - "src": "1429:13:1", + "src": "1612:13:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2720,19 +4269,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 158, + "id": 266, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 156, + "id": 264, "name": "category", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 136, - "src": "1446:8:1", + "referencedDeclaration": 242, + "src": "1629:8:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2743,14 +4292,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "35", - "id": 157, + "id": 265, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1458:1:1", + "src": "1641:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -2758,13 +4307,13 @@ }, "value": "5" }, - "src": "1446:13:1", + "src": "1629:13:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1429:30:1", + "src": "1612:30:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2778,1532 +4327,15 @@ "typeString": "bool" } ], - "id": 152, + "id": 260, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1293, - 1294 + 1520, + 1521 ], - "referencedDeclaration": 1293, - "src": "1421:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 160, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1421:39:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 161, - "nodeType": "ExpressionStatement", - "src": "1421:39:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 164, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 162, - "name": "_minerType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118, - "src": "1473:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 163, - "name": "minerType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 134, - "src": "1486:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "src": "1473:22:1", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 165, - "nodeType": "ExpressionStatement", - "src": "1473:22:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 168, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 166, - "name": "_category", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 120, - "src": "1506:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 167, - "name": "category", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 136, - "src": "1518:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "1506:20:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 169, - "nodeType": "ExpressionStatement", - "src": "1506:20:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 172, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 170, - "name": "_miner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 122, - "src": "1537:6:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 171, - "name": "minerAccountAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 138, - "src": "1546:19:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1537:28:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 173, - "nodeType": "ExpressionStatement", - "src": "1537:28:1" - } - ] - }, - "documentation": null, - "id": 175, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [ - { - "argumentTypes": null, - "id": 143, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 140, - "src": "1286:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 144, - "modifierName": { - "argumentTypes": null, - "id": 142, - "name": "ERC20TokenHolder", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 780, - "src": "1269:16:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20TokenHolder_$780_$", - "typeString": "type(contract ERC20TokenHolder)" - } - }, - "nodeType": "ModifierInvocation", - "src": "1269:30:1" - }, - { - "arguments": [], - "id": 146, - "modifierName": { - "argumentTypes": null, - "id": 145, - "name": "AlgoSystemRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 723, - "src": "1309:14:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AlgoSystemRole_$723_$", - "typeString": "type(contract AlgoSystemRole)" - } - }, - "nodeType": "ModifierInvocation", - "src": "1309:16:1" - }, - { - "arguments": [], - "id": 148, - "modifierName": { - "argumentTypes": null, - "id": 147, - "name": "AlgoCoreTeamRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86, - "src": "1335:16:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AlgoCoreTeamRole_$86_$", - "typeString": "type(contract AlgoCoreTeamRole)" - } - }, - "nodeType": "ModifierInvocation", - "src": "1335:18:1" - }, - { - "arguments": [], - "id": 150, - "modifierName": { - "argumentTypes": null, - "id": 149, - "name": "AlgoSupervisorRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 636, - "src": "1363:18:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AlgoSupervisorRole_$636_$", - "typeString": "type(contract AlgoSupervisorRole)" - } - }, - "nodeType": "ModifierInvocation", - "src": "1363:20:1" - } - ], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 141, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 134, - "name": "minerType", - "nodeType": "VariableDeclaration", - "scope": 175, - "src": "1175:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 133, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "1175:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 136, - "name": "category", - "nodeType": "VariableDeclaration", - "scope": 175, - "src": "1193:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 135, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1193:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 138, - "name": "minerAccountAddress", - "nodeType": "VariableDeclaration", - "scope": 175, - "src": "1209:27:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 137, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1209:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 140, - "name": "tokenAddress", - "nodeType": "VariableDeclaration", - "scope": 175, - "src": "1238:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 139, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1238:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1174:85:1" - }, - "payable": false, - "returnParameters": { - "id": 151, - "nodeType": "ParameterList", - "parameters": [], - "src": "1400:0:1" - }, - "scope": 549, - "src": "1163:410:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 185, - "nodeType": "Block", - "src": "1602:60:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 181, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 178, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1290, - "src": "1621:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 179, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1621:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 180, - "name": "_miner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 122, - "src": "1635:6:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1621:20:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 177, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1293, - 1294 - ], - "referencedDeclaration": 1293, - "src": "1613:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 182, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1613:29:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 183, - "nodeType": "ExpressionStatement", - "src": "1613:29:1" - }, - { - "id": 184, - "nodeType": "PlaceholderStatement", - "src": "1653:1:1" - } - ] - }, - "documentation": null, - "id": 186, - "name": "onlyMiner", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 176, - "nodeType": "ParameterList", - "parameters": [], - "src": "1599:2:1" - }, - "src": "1581:81:1", - "visibility": "internal" - }, - { - "body": { - "id": 231, - "nodeType": "Block", - "src": "1733:326:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_MinerState_$116", - "typeString": "enum AlgoMiner.MinerState" - }, - "id": 197, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 194, - "name": "_state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 124, - "src": "1752:6:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", - "typeString": "enum AlgoMiner.MinerState" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 195, - "name": "MinerState", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 116, - "src": "1762:10:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", - "typeString": "type(enum AlgoMiner.MinerState)" - } - }, - "id": 196, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Deactivated", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1762:22:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", - "typeString": "enum AlgoMiner.MinerState" - } - }, - "src": "1752:32:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 193, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1293, - 1294 - ], - "referencedDeclaration": 1293, - "src": "1744:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 198, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1744:41:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 199, - "nodeType": "ExpressionStatement", - "src": "1744:41:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 202, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 200, - "name": "_currentYearSupply", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 132, - "src": "1801:18:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 201, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1823:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1801:23:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 225, - "nodeType": "IfStatement", - "src": "1798:212:1", - "trueBody": { - "id": 224, - "nodeType": "Block", - "src": "1826:184:1", - "statements": [ - { - "assignments": [ - 204 - ], - "declarations": [ - { - "constant": false, - "id": 204, - "name": "currentBalance", - "nodeType": "VariableDeclaration", - "scope": 232, - "src": "1841:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 203, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1841:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 211, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 208, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1323, - "src": "1891:4:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoMiner_$549", - "typeString": "contract AlgoMiner" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_AlgoMiner_$549", - "typeString": "contract AlgoMiner" - } - ], - "id": 207, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1883:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 209, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1883:13:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 205, - "name": "_token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 735, - "src": "1866:6:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", - "typeString": "contract IERC20" - } - }, - "id": 206, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "balanceOf", - "nodeType": "MemberAccess", - "referencedDeclaration": 1076, - "src": "1866:16:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) view external returns (uint256)" - } - }, - "id": 210, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1866:31:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1841:56:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 215, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 213, - "name": "currentBalance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 204, - "src": "1922:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 214, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1940:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1922:19:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 212, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1293, - 1294 - ], - "referencedDeclaration": 1293, - "src": "1914:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 216, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1914:28:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 217, - "nodeType": "ExpressionStatement", - "src": "1914:28:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 222, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 218, - "name": "_currentYearSupply", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 132, - "src": "1959:18:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 221, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 219, - "name": "currentBalance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 204, - "src": "1980:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 220, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1997:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "1980:18:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1959:39:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 223, - "nodeType": "ExpressionStatement", - "src": "1959:39:1" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "id": 229, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 226, - "name": "_state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 124, - "src": "2022:6:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", - "typeString": "enum AlgoMiner.MinerState" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 227, - "name": "MinerState", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 116, - "src": "2031:10:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", - "typeString": "type(enum AlgoMiner.MinerState)" - } - }, - "id": 228, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Activated", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2031:20:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", - "typeString": "enum AlgoMiner.MinerState" - } - }, - "src": "2022:29:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", - "typeString": "enum AlgoMiner.MinerState" - } - }, - "id": 230, - "nodeType": "ExpressionStatement", - "src": "2022:29:1" - } - ] - }, - "documentation": null, - "id": 232, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": null, - "id": 189, - "modifierName": { - "argumentTypes": null, - "id": 188, - "name": "notTerminated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 831, - "src": "1706:13:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "1706:13:1" - }, - { - "arguments": null, - "id": 191, - "modifierName": { - "argumentTypes": null, - "id": 190, - "name": "onlyCoreTeam", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 27, - "src": "1720:12:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "1720:12:1" - } - ], - "name": "activateMiner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 187, - "nodeType": "ParameterList", - "parameters": [], - "src": "1696:2:1" - }, - "payable": false, - "returnParameters": { - "id": 192, - "nodeType": "ParameterList", - "parameters": [], - "src": "1733:0:1" - }, - "scope": 549, - "src": "1674:385:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 255, - "nodeType": "Block", - "src": "2128:138:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_MinerState_$116", - "typeString": "enum AlgoMiner.MinerState" - }, - "id": 243, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 240, - "name": "_state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 124, - "src": "2147:6:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", - "typeString": "enum AlgoMiner.MinerState" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 241, - "name": "MinerState", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 116, - "src": "2157:10:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", - "typeString": "type(enum AlgoMiner.MinerState)" - } - }, - "id": 242, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Deactivated", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2157:22:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", - "typeString": "enum AlgoMiner.MinerState" - } - }, - "src": "2147:32:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 239, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1293, - 1294 - ], - "referencedDeclaration": 1293, - "src": "2139:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 244, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2139:41:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 245, - "nodeType": "ExpressionStatement", - "src": "2139:41:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 249, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 246, - "name": "_state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 124, - "src": "2201:6:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", - "typeString": "enum AlgoMiner.MinerState" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 247, - "name": "MinerState", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 116, - "src": "2210:10:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", - "typeString": "type(enum AlgoMiner.MinerState)" - } - }, - "id": 248, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Deactivated", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2210:22:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", - "typeString": "enum AlgoMiner.MinerState" - } - }, - "src": "2201:31:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", - "typeString": "enum AlgoMiner.MinerState" - } - }, - "id": 250, - "nodeType": "ExpressionStatement", - "src": "2201:31:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 253, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 251, - "name": "_mining", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 126, - "src": "2243:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 252, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2253:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "2243:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 254, - "nodeType": "ExpressionStatement", - "src": "2243:15:1" - } - ] - }, - "documentation": null, - "id": 256, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": null, - "id": 235, - "modifierName": { - "argumentTypes": null, - "id": 234, - "name": "notTerminated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 831, - "src": "2101:13:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "2101:13:1" - }, - { - "arguments": null, - "id": 237, - "modifierName": { - "argumentTypes": null, - "id": 236, - "name": "onlyCoreTeam", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 27, - "src": "2115:12:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "2115:12:1" - } - ], - "name": "deactivateMiner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 233, - "nodeType": "ParameterList", - "parameters": [], - "src": "2091:2:1" - }, - "payable": false, - "returnParameters": { - "id": 238, - "nodeType": "ParameterList", - "parameters": [], - "src": "2128:0:1" - }, - "scope": 549, - "src": "2067:199:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 282, - "nodeType": "Block", - "src": "2399:142:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_MinerState_$116", - "typeString": "enum AlgoMiner.MinerState" - }, - "id": 267, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 264, - "name": "_state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 124, - "src": "2418:6:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", - "typeString": "enum AlgoMiner.MinerState" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 265, - "name": "MinerState", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 116, - "src": "2428:10:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", - "typeString": "type(enum AlgoMiner.MinerState)" - } - }, - "id": 266, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Deactivated", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2428:22:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", - "typeString": "enum AlgoMiner.MinerState" - } - }, - "src": "2418:32:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 263, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1293, - 1294 - ], - "referencedDeclaration": 1293, - "src": "2410:7:1", + "referencedDeclaration": 1520, + "src": "1604:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -4317,7 +4349,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2410:41:1", + "src": "1604:39:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -4325,7 +4357,1913 @@ }, "id": 269, "nodeType": "ExpressionStatement", - "src": "2410:41:1" + "src": "1604:39:2" + }, + { + "expression": { + "argumentTypes": null, + "id": 272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 270, + "name": "_minerType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 222, + "src": "1656:10:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerType_$215", + "typeString": "enum AlgoMiner.MinerType" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 271, + "name": "minerType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 240, + "src": "1669:9:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerType_$215", + "typeString": "enum AlgoMiner.MinerType" + } + }, + "src": "1656:22:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerType_$215", + "typeString": "enum AlgoMiner.MinerType" + } + }, + "id": 273, + "nodeType": "ExpressionStatement", + "src": "1656:22:2" + }, + { + "expression": { + "argumentTypes": null, + "id": 276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 274, + "name": "_category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "1689:9:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 275, + "name": "category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 242, + "src": "1701:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "1689:20:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 277, + "nodeType": "ExpressionStatement", + "src": "1689:20:2" + }, + { + "expression": { + "argumentTypes": null, + "id": 280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 278, + "name": "_miner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 226, + "src": "1720:6:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 279, + "name": "minerAccountAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 244, + "src": "1729:19:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1720:28:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 281, + "nodeType": "ExpressionStatement", + "src": "1720:28:2" + }, + { + "expression": { + "argumentTypes": null, + "id": 284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 282, + "name": "_referral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 228, + "src": "1759:9:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 283, + "name": "referralAccountAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 246, + "src": "1771:22:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1759:34:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 285, + "nodeType": "ExpressionStatement", + "src": "1759:34:2" + } + ] + }, + "documentation": null, + "id": 287, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 251, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 248, + "src": "1469:12:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 252, + "modifierName": { + "argumentTypes": null, + "id": 250, + "name": "ERC20TokenHolder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1002, + "src": "1452:16:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20TokenHolder_$1002_$", + "typeString": "type(contract ERC20TokenHolder)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1452:30:2" + }, + { + "arguments": [], + "id": 254, + "modifierName": { + "argumentTypes": null, + "id": 253, + "name": "AlgoSystemRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 945, + "src": "1492:14:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_AlgoSystemRole_$945_$", + "typeString": "type(contract AlgoSystemRole)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1492:16:2" + }, + { + "arguments": [], + "id": 256, + "modifierName": { + "argumentTypes": null, + "id": 255, + "name": "AlgoCoreTeamRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 184, + "src": "1518:16:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_AlgoCoreTeamRole_$184_$", + "typeString": "type(contract AlgoCoreTeamRole)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1518:18:2" + }, + { + "arguments": [], + "id": 258, + "modifierName": { + "argumentTypes": null, + "id": 257, + "name": "AlgoSupervisorRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 858, + "src": "1546:18:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_AlgoSupervisorRole_$858_$", + "typeString": "type(contract AlgoSupervisorRole)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1546:20:2" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 249, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 240, + "name": "minerType", + "nodeType": "VariableDeclaration", + "scope": 287, + "src": "1323:19:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerType_$215", + "typeString": "enum AlgoMiner.MinerType" + }, + "typeName": { + "contractScope": null, + "id": 239, + "name": "MinerType", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 215, + "src": "1323:9:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerType_$215", + "typeString": "enum AlgoMiner.MinerType" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 242, + "name": "category", + "nodeType": "VariableDeclaration", + "scope": 287, + "src": "1344:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 241, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1344:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 244, + "name": "minerAccountAddress", + "nodeType": "VariableDeclaration", + "scope": 287, + "src": "1360:27:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 243, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1360:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 246, + "name": "referralAccountAddress", + "nodeType": "VariableDeclaration", + "scope": 287, + "src": "1389:30:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 245, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1389:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 248, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 287, + "src": "1421:20:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 247, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1421:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1322:120:2" + }, + "payable": false, + "returnParameters": { + "id": 259, + "nodeType": "ParameterList", + "parameters": [], + "src": "1583:0:2" + }, + "scope": 771, + "src": "1311:490:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 297, + "nodeType": "Block", + "src": "1830:60:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 290, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1517, + "src": "1849:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1849:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 292, + "name": "_miner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 226, + "src": "1863:6:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1849:20:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 289, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1520, + 1521 + ], + "referencedDeclaration": 1520, + "src": "1841:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1841:29:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 295, + "nodeType": "ExpressionStatement", + "src": "1841:29:2" + }, + { + "id": 296, + "nodeType": "PlaceholderStatement", + "src": "1881:1:2" + } + ] + }, + "documentation": null, + "id": 298, + "name": "onlyMiner", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 288, + "nodeType": "ParameterList", + "parameters": [], + "src": "1827:2:2" + }, + "src": "1809:81:2", + "visibility": "internal" + }, + { + "body": { + "id": 364, + "nodeType": "Block", + "src": "1961:512:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_MinerState_$220", + "typeString": "enum AlgoMiner.MinerState" + }, + "id": 309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 306, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 230, + "src": "1980:6:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$220", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 307, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "1990:10:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 308, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Deactivated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1990:22:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$220", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "1980:32:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 305, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1520, + 1521 + ], + "referencedDeclaration": 1520, + "src": "1972:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1972:41:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 311, + "nodeType": "ExpressionStatement", + "src": "1972:41:2" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 319, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_MinerType_$215", + "typeString": "enum AlgoMiner.MinerType" + }, + "id": 315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 312, + "name": "_minerType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 222, + "src": "2029:10:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerType_$215", + "typeString": "enum AlgoMiner.MinerType" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 313, + "name": "MinerType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 215, + "src": "2043:9:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerType_$215_$", + "typeString": "type(enum AlgoMiner.MinerType)" + } + }, + "id": 314, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "PoolBased", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2043:19:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerType_$215", + "typeString": "enum AlgoMiner.MinerType" + } + }, + "src": "2029:33:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 316, + "name": "_currentYearSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 238, + "src": "2066:18:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 317, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2088:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2066:23:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2029:60:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 358, + "nodeType": "IfStatement", + "src": "2026:398:2", + "trueBody": { + "id": 357, + "nodeType": "Block", + "src": "2091:333:2", + "statements": [ + { + "assignments": [ + 321 + ], + "declarations": [ + { + "constant": false, + "id": 321, + "name": "capacity", + "nodeType": "VariableDeclaration", + "scope": 365, + "src": "2108:16:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 320, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2108:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 325, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 323, + "name": "_category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "2149:9:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 322, + "name": "getCapacityByCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 96, + "src": "2127:21:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint8_$returns$_t_uint256_$", + "typeString": "function (uint8) pure returns (uint256)" + } + }, + "id": 324, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2127:32:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2108:51:2" + }, + { + "assignments": [ + 327 + ], + "declarations": [ + { + "constant": false, + "id": 327, + "name": "expectedBalance", + "nodeType": "VariableDeclaration", + "scope": 365, + "src": "2174:23:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 326, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2174:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 335, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 328, + "name": "capacity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 321, + "src": "2200:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 329, + "name": "capacity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 321, + "src": "2211:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 330, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2222:2:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "2211:13:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "313030", + "id": 332, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2227:3:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + }, + "value": "100" + }, + "src": "2211:19:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2200:30:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2174:56:2" + }, + { + "assignments": [ + 337 + ], + "declarations": [ + { + "constant": false, + "id": 337, + "name": "currentBalance", + "nodeType": "VariableDeclaration", + "scope": 365, + "src": "2247:22:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 336, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2247:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 344, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 341, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1552, + "src": "2297:4:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AlgoMiner_$771", + "typeString": "contract AlgoMiner" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_AlgoMiner_$771", + "typeString": "contract AlgoMiner" + } + ], + "id": 340, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2289:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2289:13:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 338, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 957, + "src": "2272:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1358", + "typeString": "contract IERC20" + } + }, + "id": 339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 1303, + "src": "2272:16:2", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2272:31:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2247:56:2" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 346, + "name": "currentBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 337, + "src": "2328:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 347, + "name": "expectedBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 327, + "src": "2346:15:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2328:33:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 345, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1520, + 1521 + ], + "referencedDeclaration": 1520, + "src": "2320:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2320:42:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 350, + "nodeType": "ExpressionStatement", + "src": "2320:42:2" + }, + { + "expression": { + "argumentTypes": null, + "id": 355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 351, + "name": "_currentYearSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 238, + "src": "2379:18:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 352, + "name": "capacity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 321, + "src": "2400:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2411:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "2400:12:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2379:33:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 356, + "nodeType": "ExpressionStatement", + "src": "2379:33:2" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 359, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 230, + "src": "2436:6:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$220", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 360, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "2445:10:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 361, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Activated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2445:20:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$220", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "2436:29:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$220", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "id": 363, + "nodeType": "ExpressionStatement", + "src": "2436:29:2" + } + ] + }, + "documentation": null, + "id": 365, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 301, + "modifierName": { + "argumentTypes": null, + "id": 300, + "name": "notTerminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1058, + "src": "1934:13:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1934:13:2" + }, + { + "arguments": null, + "id": 303, + "modifierName": { + "argumentTypes": null, + "id": 302, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125, + "src": "1948:12:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1948:12:2" + } + ], + "name": "activateMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 299, + "nodeType": "ParameterList", + "parameters": [], + "src": "1924:2:2" + }, + "payable": false, + "returnParameters": { + "id": 304, + "nodeType": "ParameterList", + "parameters": [], + "src": "1961:0:2" + }, + "scope": 771, + "src": "1902:571:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 388, + "nodeType": "Block", + "src": "2542:138:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_MinerState_$220", + "typeString": "enum AlgoMiner.MinerState" + }, + "id": 376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 373, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 230, + "src": "2561:6:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$220", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 374, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "2571:10:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 375, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Deactivated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2571:22:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$220", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "2561:32:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 372, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1520, + 1521 + ], + "referencedDeclaration": 1520, + "src": "2553:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2553:41:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 378, + "nodeType": "ExpressionStatement", + "src": "2553:41:2" + }, + { + "expression": { + "argumentTypes": null, + "id": 382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 379, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 230, + "src": "2615:6:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$220", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 380, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "2624:10:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 381, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Deactivated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2624:22:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$220", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "2615:31:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$220", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "id": 383, + "nodeType": "ExpressionStatement", + "src": "2615:31:2" + }, + { + "expression": { + "argumentTypes": null, + "id": 386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 384, + "name": "_mining", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 232, + "src": "2657:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 385, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2667:5:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "2657:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 387, + "nodeType": "ExpressionStatement", + "src": "2657:15:2" + } + ] + }, + "documentation": null, + "id": 389, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 368, + "modifierName": { + "argumentTypes": null, + "id": 367, + "name": "notTerminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1058, + "src": "2515:13:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2515:13:2" + }, + { + "arguments": null, + "id": 370, + "modifierName": { + "argumentTypes": null, + "id": 369, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125, + "src": "2529:12:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2529:12:2" + } + ], + "name": "deactivateMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 366, + "nodeType": "ParameterList", + "parameters": [], + "src": "2505:2:2" + }, + "payable": false, + "returnParameters": { + "id": 371, + "nodeType": "ParameterList", + "parameters": [], + "src": "2542:0:2" + }, + "scope": 771, + "src": "2481:199:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 415, + "nodeType": "Block", + "src": "2755:142:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_MinerState_$220", + "typeString": "enum AlgoMiner.MinerState" + }, + "id": 400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 397, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 230, + "src": "2774:6:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$220", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 398, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "2784:10:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 399, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Deactivated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2784:22:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$220", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "2774:32:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 396, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1520, + 1521 + ], + "referencedDeclaration": 1520, + "src": "2766:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2766:41:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 402, + "nodeType": "ExpressionStatement", + "src": "2766:41:2" }, { "expression": { @@ -4333,12 +6271,12 @@ "arguments": [ { "argumentTypes": null, - "id": 273, + "id": 406, "name": "newMinerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 258, - "src": "2484:15:1", + "referencedDeclaration": 391, + "src": "2840:15:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4352,14 +6290,14 @@ "arguments": [ { "argumentTypes": null, - "id": 277, + "id": 410, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1323, - "src": "2526:4:1", + "referencedDeclaration": 1552, + "src": "2882:4:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoMiner_$549", + "typeIdentifier": "t_contract$_AlgoMiner_$771", "typeString": "contract AlgoMiner" } } @@ -4367,24 +6305,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_AlgoMiner_$549", + "typeIdentifier": "t_contract$_AlgoMiner_$771", "typeString": "contract AlgoMiner" } ], - "id": 276, + "id": 409, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2518:7:1", + "src": "2874:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 278, + "id": 411, "isConstant": false, "isLValue": false, "isPure": false, @@ -4392,7 +6330,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2518:13:1", + "src": "2874:13:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4408,32 +6346,32 @@ ], "expression": { "argumentTypes": null, - "id": 274, + "id": 407, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 735, - "src": "2501:6:1", + "referencedDeclaration": 957, + "src": "2857:6:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" } }, - "id": 275, + "id": 408, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 1076, - "src": "2501:16:1", + "referencedDeclaration": 1303, + "src": "2857:16:2", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 279, + "id": 412, "isConstant": false, "isLValue": false, "isPure": false, @@ -4441,7 +6379,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2501:31:1", + "src": "2857:31:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4461,32 +6399,32 @@ ], "expression": { "argumentTypes": null, - "id": 270, + "id": 403, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 735, - "src": "2464:6:1", + "referencedDeclaration": 957, + "src": "2820:6:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" } }, - "id": 272, + "id": 405, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1156, - "src": "2464:19:1", + "referencedDeclaration": 1383, + "src": "2820:19:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1131_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1131_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1358_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1358_$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 280, + "id": 413, "isConstant": false, "isLValue": false, "isPure": false, @@ -4494,57 +6432,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2464:69:1", + "src": "2820:69:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 281, + "id": 414, "nodeType": "ExpressionStatement", - "src": "2464:69:1" + "src": "2820:69:2" } ] }, "documentation": null, - "id": 283, + "id": 416, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 261, + "id": 394, "modifierName": { "argumentTypes": null, - "id": 260, + "id": 393, "name": "onlyCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 27, - "src": "2386:12:1", + "referencedDeclaration": 125, + "src": "2742:12:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2386:12:1" + "src": "2742:12:2" } ], "name": "migrateMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 259, + "id": 392, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 258, + "id": 391, "name": "newMinerAddress", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "2354:23:1", + "scope": 416, + "src": "2710:23:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4552,10 +6490,10 @@ "typeString": "address" }, "typeName": { - "id": 257, + "id": 390, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2354:7:1", + "src": "2710:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4565,26 +6503,26 @@ "visibility": "internal" } ], - "src": "2353:25:1" + "src": "2709:25:2" }, "payable": false, "returnParameters": { - "id": 262, + "id": 395, "nodeType": "ParameterList", "parameters": [], - "src": "2399:0:1" + "src": "2755:0:2" }, - "scope": 549, - "src": "2332:209:1", + "scope": 771, + "src": "2688:209:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 302, + "id": 435, "nodeType": "Block", - "src": "2608:108:1", + "src": "2964:108:2", "statements": [ { "expression": { @@ -4593,24 +6531,24 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, - "id": 294, + "id": 427, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 291, + "id": 424, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 124, - "src": "2627:6:1", + "referencedDeclaration": 230, + "src": "2983:6:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, @@ -4620,18 +6558,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 292, + "id": 425, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 116, - "src": "2637:10:1", + "referencedDeclaration": 220, + "src": "2993:10:2", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 293, + "id": 426, "isConstant": false, "isLValue": false, "isPure": true, @@ -4639,13 +6577,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2637:20:1", + "src": "2993:20:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2627:30:1", + "src": "2983:30:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4659,21 +6597,21 @@ "typeString": "bool" } ], - "id": 290, + "id": 423, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1293, - 1294 + 1520, + 1521 ], - "referencedDeclaration": 1293, - "src": "2619:7:1", + "referencedDeclaration": 1520, + "src": "2975:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 295, + "id": 428, "isConstant": false, "isLValue": false, "isPure": false, @@ -4681,34 +6619,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2619:39:1", + "src": "2975:39:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 296, + "id": 429, "nodeType": "ExpressionStatement", - "src": "2619:39:1" + "src": "2975:39:2" }, { "expression": { "argumentTypes": null, - "id": 300, + "id": 433, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 297, + "id": 430, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 124, - "src": "2679:6:1", + "referencedDeclaration": 230, + "src": "3035:6:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, @@ -4718,18 +6656,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 298, + "id": 431, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 116, - "src": "2688:10:1", + "referencedDeclaration": 220, + "src": "3044:10:2", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 299, + "id": 432, "isConstant": false, "isLValue": false, "isPure": true, @@ -4737,95 +6675,95 @@ "memberName": "Suspended", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2688:20:1", + "src": "3044:20:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2679:29:1", + "src": "3035:29:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 301, + "id": 434, "nodeType": "ExpressionStatement", - "src": "2679:29:1" + "src": "3035:29:2" } ] }, "documentation": null, - "id": 303, + "id": 436, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 286, + "id": 419, "modifierName": { "argumentTypes": null, - "id": 285, + "id": 418, "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 831, - "src": "2579:13:1", + "referencedDeclaration": 1058, + "src": "2935:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2579:13:1" + "src": "2935:13:2" }, { "arguments": null, - "id": 288, + "id": 421, "modifierName": { "argumentTypes": null, - "id": 287, + "id": 420, "name": "onlySupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 577, - "src": "2593:14:1", + "referencedDeclaration": 799, + "src": "2949:14:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2593:14:1" + "src": "2949:14:2" } ], "name": "pauseMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 284, + "id": 417, "nodeType": "ParameterList", "parameters": [], - "src": "2569:2:1" + "src": "2925:2:2" }, "payable": false, "returnParameters": { - "id": 289, + "id": 422, "nodeType": "ParameterList", "parameters": [], - "src": "2608:0:1" + "src": "2964:0:2" }, - "scope": 549, - "src": "2549:167:1", + "scope": 771, + "src": "2905:167:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 322, + "id": 455, "nodeType": "Block", - "src": "2784:100:1", + "src": "3140:100:2", "statements": [ { "expression": { @@ -4834,24 +6772,24 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, - "id": 314, + "id": 447, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 311, + "id": 444, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 124, - "src": "2803:6:1", + "referencedDeclaration": 230, + "src": "3159:6:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, @@ -4861,18 +6799,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 312, + "id": 445, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 116, - "src": "2813:10:1", + "referencedDeclaration": 220, + "src": "3169:10:2", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 313, + "id": 446, "isConstant": false, "isLValue": false, "isPure": true, @@ -4880,13 +6818,13 @@ "memberName": "Suspended", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2813:20:1", + "src": "3169:20:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2803:30:1", + "src": "3159:30:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4900,21 +6838,21 @@ "typeString": "bool" } ], - "id": 310, + "id": 443, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1293, - 1294 + 1520, + 1521 ], - "referencedDeclaration": 1293, - "src": "2795:7:1", + "referencedDeclaration": 1520, + "src": "3151:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 315, + "id": 448, "isConstant": false, "isLValue": false, "isPure": false, @@ -4922,34 +6860,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2795:39:1", + "src": "3151:39:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 316, + "id": 449, "nodeType": "ExpressionStatement", - "src": "2795:39:1" + "src": "3151:39:2" }, { "expression": { "argumentTypes": null, - "id": 320, + "id": 453, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 317, + "id": 450, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 124, - "src": "2847:6:1", + "referencedDeclaration": 230, + "src": "3203:6:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, @@ -4959,18 +6897,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 318, + "id": 451, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 116, - "src": "2856:10:1", + "referencedDeclaration": 220, + "src": "3212:10:2", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 319, + "id": 452, "isConstant": false, "isLValue": false, "isPure": true, @@ -4978,95 +6916,95 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2856:20:1", + "src": "3212:20:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2847:29:1", + "src": "3203:29:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 321, + "id": 454, "nodeType": "ExpressionStatement", - "src": "2847:29:1" + "src": "3203:29:2" } ] }, "documentation": null, - "id": 323, + "id": 456, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 306, + "id": 439, "modifierName": { "argumentTypes": null, - "id": 305, + "id": 438, "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 831, - "src": "2755:13:1", + "referencedDeclaration": 1058, + "src": "3111:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2755:13:1" + "src": "3111:13:2" }, { "arguments": null, - "id": 308, + "id": 441, "modifierName": { "argumentTypes": null, - "id": 307, + "id": 440, "name": "onlySupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 577, - "src": "2769:14:1", + "referencedDeclaration": 799, + "src": "3125:14:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2769:14:1" + "src": "3125:14:2" } ], "name": "resumeMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 304, + "id": 437, "nodeType": "ParameterList", "parameters": [], - "src": "2745:2:1" + "src": "3101:2:2" }, "payable": false, "returnParameters": { - "id": 309, + "id": 442, "nodeType": "ParameterList", "parameters": [], - "src": "2784:0:1" + "src": "3140:0:2" }, - "scope": 549, - "src": "2724:160:1", + "scope": 771, + "src": "3080:160:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 352, + "id": 491, "nodeType": "Block", - "src": "2962:160:1", + "src": "3318:193:2", "statements": [ { "expression": { @@ -5075,24 +7013,24 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, - "id": 334, + "id": 467, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 331, + "id": 464, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 124, - "src": "2981:6:1", + "referencedDeclaration": 230, + "src": "3337:6:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, @@ -5102,18 +7040,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 332, + "id": 465, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 116, - "src": "2991:10:1", + "referencedDeclaration": 220, + "src": "3347:10:2", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 333, + "id": 466, "isConstant": false, "isLValue": false, "isPure": true, @@ -5121,13 +7059,13 @@ "memberName": "Stopped", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2991:18:1", + "src": "3347:18:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2981:28:1", + "src": "3337:28:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5141,21 +7079,21 @@ "typeString": "bool" } ], - "id": 330, + "id": 463, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1293, - 1294 + 1520, + 1521 ], - "referencedDeclaration": 1293, - "src": "2973:7:1", + "referencedDeclaration": 1520, + "src": "3329:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 335, + "id": 468, "isConstant": false, "isLValue": false, "isPure": false, @@ -5163,34 +7101,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2973:37:1", + "src": "3329:37:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 336, + "id": 469, "nodeType": "ExpressionStatement", - "src": "2973:37:1" + "src": "3329:37:2" }, { "expression": { "argumentTypes": null, - "id": 340, + "id": 473, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 337, + "id": 470, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 124, - "src": "3031:6:1", + "referencedDeclaration": 230, + "src": "3387:6:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, @@ -5200,18 +7138,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 338, + "id": 471, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 116, - "src": "3040:10:1", + "referencedDeclaration": 220, + "src": "3396:10:2", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 339, + "id": 472, "isConstant": false, "isLValue": false, "isPure": true, @@ -5219,38 +7157,38 @@ "memberName": "Stopped", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3040:18:1", + "src": "3396:18:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3031:27:1", + "src": "3387:27:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 341, + "id": 474, "nodeType": "ExpressionStatement", - "src": "3031:27:1" + "src": "3387:27:2" }, { "expression": { "argumentTypes": null, - "id": 344, + "id": 477, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 342, + "id": 475, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 126, - "src": "3069:7:1", + "referencedDeclaration": 232, + "src": "3425:7:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5261,14 +7199,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 343, + "id": 476, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3079:5:1", + "src": "3435:5:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5276,32 +7214,32 @@ }, "value": "false" }, - "src": "3069:15:1", + "src": "3425:15:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 345, + "id": 478, "nodeType": "ExpressionStatement", - "src": "3069:15:1" + "src": "3425:15:2" }, { "expression": { "argumentTypes": null, - "id": 350, + "id": 483, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 346, + "id": 479, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 122, - "src": "3095:6:1", + "referencedDeclaration": 226, + "src": "3451:6:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5315,14 +7253,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 348, + "id": 481, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3112:1:1", + "src": "3468:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5338,20 +7276,20 @@ "typeString": "int_const 0" } ], - "id": 347, + "id": 480, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3104:7:1", + "src": "3460:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 349, + "id": 482, "isConstant": false, "isLValue": false, "isPure": true, @@ -5359,95 +7297,184 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3104:10:1", + "src": "3460:10:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3095:19:1", + "src": "3451:19:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 351, + "id": 484, "nodeType": "ExpressionStatement", - "src": "3095:19:1" + "src": "3451:19:2" + }, + { + "expression": { + "argumentTypes": null, + "id": 489, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 485, + "name": "_referral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 228, + "src": "3481:9:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 487, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3501:1:2", + "subdenomination": null, + "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": 486, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3493:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 488, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3493:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3481:22:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 490, + "nodeType": "ExpressionStatement", + "src": "3481:22:2" } ] }, "documentation": null, - "id": 353, + "id": 492, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 326, + "id": 459, "modifierName": { "argumentTypes": null, - "id": 325, + "id": 458, "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 831, - "src": "2933:13:1", + "referencedDeclaration": 1058, + "src": "3289:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2933:13:1" + "src": "3289:13:2" }, { "arguments": null, - "id": 328, + "id": 461, "modifierName": { "argumentTypes": null, - "id": 327, + "id": 460, "name": "onlySupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 577, - "src": "2947:14:1", + "referencedDeclaration": 799, + "src": "3303:14:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2947:14:1" + "src": "3303:14:2" } ], "name": "stopAndRemoveOwnership", "nodeType": "FunctionDefinition", "parameters": { - "id": 324, + "id": 457, "nodeType": "ParameterList", "parameters": [], - "src": "2923:2:1" + "src": "3279:2:2" }, "payable": false, "returnParameters": { - "id": 329, + "id": 462, "nodeType": "ParameterList", "parameters": [], - "src": "2962:0:1" + "src": "3318:0:2" }, - "scope": 549, - "src": "2892:230:1", + "scope": 771, + "src": "3248:263:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 378, + "id": 523, "nodeType": "Block", - "src": "3211:133:1", + "src": "3628:174:2", "statements": [ { "expression": { @@ -5456,24 +7483,24 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, - "id": 366, + "id": 507, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 363, + "id": 504, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 124, - "src": "3230:6:1", + "referencedDeclaration": 230, + "src": "3647:6:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, @@ -5483,18 +7510,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 364, + "id": 505, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 116, - "src": "3240:10:1", + "referencedDeclaration": 220, + "src": "3657:10:2", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 365, + "id": 506, "isConstant": false, "isLValue": false, "isPure": true, @@ -5502,13 +7529,13 @@ "memberName": "Stopped", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3240:18:1", + "src": "3657:18:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3230:28:1", + "src": "3647:28:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5522,21 +7549,21 @@ "typeString": "bool" } ], - "id": 362, + "id": 503, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1293, - 1294 + 1520, + 1521 ], - "referencedDeclaration": 1293, - "src": "3222:7:1", + "referencedDeclaration": 1520, + "src": "3639:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 367, + "id": 508, "isConstant": false, "isLValue": false, "isPure": false, @@ -5544,34 +7571,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3222:37:1", + "src": "3639:37:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 368, + "id": 509, "nodeType": "ExpressionStatement", - "src": "3222:37:1" + "src": "3639:37:2" }, { "expression": { "argumentTypes": null, - "id": 372, + "id": 513, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 369, + "id": 510, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 124, - "src": "3272:6:1", + "referencedDeclaration": 230, + "src": "3689:6:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, @@ -5581,18 +7608,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 370, + "id": 511, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 116, - "src": "3281:10:1", + "referencedDeclaration": 220, + "src": "3698:10:2", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 371, + "id": 512, "isConstant": false, "isLValue": false, "isPure": true, @@ -5600,38 +7627,38 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3281:20:1", + "src": "3698:20:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3272:29:1", + "src": "3689:29:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 373, + "id": 514, "nodeType": "ExpressionStatement", - "src": "3272:29:1" + "src": "3689:29:2" }, { "expression": { "argumentTypes": null, - "id": 376, + "id": 517, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 374, + "id": 515, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 122, - "src": "3312:6:1", + "referencedDeclaration": 226, + "src": "3729:6:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5641,87 +7668,133 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 375, + "id": 516, "name": "newOwnerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 355, - "src": "3321:15:1", + "referencedDeclaration": 494, + "src": "3738:15:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3312:24:1", + "src": "3729:24:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 377, + "id": 518, "nodeType": "ExpressionStatement", - "src": "3312:24:1" + "src": "3729:24:2" + }, + { + "expression": { + "argumentTypes": null, + "id": 521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 519, + "name": "_referral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 228, + "src": "3764:9:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 520, + "name": "newReferralAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 496, + "src": "3776:18:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3764:30:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 522, + "nodeType": "ExpressionStatement", + "src": "3764:30:2" } ] }, "documentation": null, - "id": 379, + "id": 524, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 358, + "id": 499, "modifierName": { "argumentTypes": null, - "id": 357, + "id": 498, "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 831, - "src": "3182:13:1", + "referencedDeclaration": 1058, + "src": "3599:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3182:13:1" + "src": "3599:13:2" }, { "arguments": null, - "id": 360, + "id": 501, "modifierName": { "argumentTypes": null, - "id": 359, + "id": 500, "name": "onlySupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 577, - "src": "3196:14:1", + "referencedDeclaration": 799, + "src": "3613:14:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3196:14:1" + "src": "3613:14:2" } ], "name": "resetMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 356, + "id": 497, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 355, + "id": 494, "name": "newOwnerAddress", "nodeType": "VariableDeclaration", - "scope": 379, - "src": "3150:23:1", + "scope": 524, + "src": "3539:23:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5729,10 +7802,36 @@ "typeString": "address" }, "typeName": { - "id": 354, + "id": 493, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3150:7:1", + "src": "3539:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 496, + "name": "newReferralAddress", + "nodeType": "VariableDeclaration", + "scope": 524, + "src": "3564:26:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 495, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3564:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5742,26 +7841,26 @@ "visibility": "internal" } ], - "src": "3149:25:1" + "src": "3538:53:2" }, "payable": false, "returnParameters": { - "id": 361, + "id": 502, "nodeType": "ParameterList", "parameters": [], - "src": "3211:0:1" + "src": "3628:0:2" }, - "scope": 549, - "src": "3130:214:1", + "scope": 771, + "src": "3519:283:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 402, + "id": 547, "nodeType": "Block", - "src": "3406:121:1", + "src": "3864:121:2", "statements": [ { "expression": { @@ -5770,24 +7869,24 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, - "id": 390, + "id": 535, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 387, + "id": 532, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 124, - "src": "3425:6:1", + "referencedDeclaration": 230, + "src": "3883:6:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, @@ -5797,18 +7896,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 388, + "id": 533, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 116, - "src": "3435:10:1", + "referencedDeclaration": 220, + "src": "3893:10:2", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 389, + "id": 534, "isConstant": false, "isLValue": false, "isPure": true, @@ -5816,13 +7915,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3435:20:1", + "src": "3893:20:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3425:30:1", + "src": "3883:30:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5836,21 +7935,21 @@ "typeString": "bool" } ], - "id": 386, + "id": 531, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1293, - 1294 + 1520, + 1521 ], - "referencedDeclaration": 1293, - "src": "3417:7:1", + "referencedDeclaration": 1520, + "src": "3875:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 391, + "id": 536, "isConstant": false, "isLValue": false, "isPure": false, @@ -5858,15 +7957,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3417:39:1", + "src": "3875:39:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 392, + "id": 537, "nodeType": "ExpressionStatement", - "src": "3417:39:1" + "src": "3875:39:2" }, { "expression": { @@ -5874,7 +7973,7 @@ "arguments": [ { "argumentTypes": null, - "id": 395, + "id": 540, "isConstant": false, "isLValue": false, "isPure": false, @@ -5882,15 +7981,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "3475:8:1", + "src": "3933:8:2", "subExpression": { "argumentTypes": null, - "id": 394, + "id": 539, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 126, - "src": "3476:7:1", + "referencedDeclaration": 232, + "src": "3934:7:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5909,21 +8008,21 @@ "typeString": "bool" } ], - "id": 393, + "id": 538, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1293, - 1294 + 1520, + 1521 ], - "referencedDeclaration": 1293, - "src": "3467:7:1", + "referencedDeclaration": 1520, + "src": "3925:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 396, + "id": 541, "isConstant": false, "isLValue": false, "isPure": false, @@ -5931,32 +8030,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3467:17:1", + "src": "3925:17:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 397, + "id": 542, "nodeType": "ExpressionStatement", - "src": "3467:17:1" + "src": "3925:17:2" }, { "expression": { "argumentTypes": null, - "id": 400, + "id": 545, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 398, + "id": 543, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 126, - "src": "3505:7:1", + "referencedDeclaration": 232, + "src": "3963:7:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5967,14 +8066,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 399, + "id": 544, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3515:4:1", + "src": "3973:4:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5982,89 +8081,89 @@ }, "value": "true" }, - "src": "3505:14:1", + "src": "3963:14:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 401, + "id": 546, "nodeType": "ExpressionStatement", - "src": "3505:14:1" + "src": "3963:14:2" } ] }, "documentation": null, - "id": 403, + "id": 548, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 382, + "id": 527, "modifierName": { "argumentTypes": null, - "id": 381, + "id": 526, "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 831, - "src": "3382:13:1", + "referencedDeclaration": 1058, + "src": "3840:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3382:13:1" + "src": "3840:13:2" }, { "arguments": null, - "id": 384, + "id": 529, "modifierName": { "argumentTypes": null, - "id": 383, + "id": 528, "name": "onlyMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 186, - "src": "3396:9:1", + "referencedDeclaration": 298, + "src": "3854:9:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3396:9:1" + "src": "3854:9:2" } ], "name": "startMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 380, + "id": 525, "nodeType": "ParameterList", "parameters": [], - "src": "3372:2:1" + "src": "3830:2:2" }, "payable": false, "returnParameters": { - "id": 385, + "id": 530, "nodeType": "ParameterList", "parameters": [], - "src": "3406:0:1" + "src": "3864:0:2" }, - "scope": 549, - "src": "3352:175:1", + "scope": 771, + "src": "3810:175:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 425, + "id": 570, "nodeType": "Block", - "src": "3588:121:1", + "src": "4046:121:2", "statements": [ { "expression": { @@ -6073,24 +8172,24 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, - "id": 414, + "id": 559, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 411, + "id": 556, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 124, - "src": "3607:6:1", + "referencedDeclaration": 230, + "src": "4065:6:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, @@ -6100,18 +8199,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 412, + "id": 557, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 116, - "src": "3617:10:1", + "referencedDeclaration": 220, + "src": "4075:10:2", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 413, + "id": 558, "isConstant": false, "isLValue": false, "isPure": true, @@ -6119,13 +8218,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3617:20:1", + "src": "4075:20:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3607:30:1", + "src": "4065:30:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6139,21 +8238,21 @@ "typeString": "bool" } ], - "id": 410, + "id": 555, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1293, - 1294 + 1520, + 1521 ], - "referencedDeclaration": 1293, - "src": "3599:7:1", + "referencedDeclaration": 1520, + "src": "4057:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 415, + "id": 560, "isConstant": false, "isLValue": false, "isPure": false, @@ -6161,15 +8260,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3599:39:1", + "src": "4057:39:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 416, + "id": 561, "nodeType": "ExpressionStatement", - "src": "3599:39:1" + "src": "4057:39:2" }, { "expression": { @@ -6177,12 +8276,12 @@ "arguments": [ { "argumentTypes": null, - "id": 418, + "id": 563, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 126, - "src": "3657:7:1", + "referencedDeclaration": 232, + "src": "4115:7:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6196,21 +8295,21 @@ "typeString": "bool" } ], - "id": 417, + "id": 562, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1293, - 1294 + 1520, + 1521 ], - "referencedDeclaration": 1293, - "src": "3649:7:1", + "referencedDeclaration": 1520, + "src": "4107:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 419, + "id": 564, "isConstant": false, "isLValue": false, "isPure": false, @@ -6218,32 +8317,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3649:16:1", + "src": "4107:16:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 420, + "id": 565, "nodeType": "ExpressionStatement", - "src": "3649:16:1" + "src": "4107:16:2" }, { "expression": { "argumentTypes": null, - "id": 423, + "id": 568, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 421, + "id": 566, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 126, - "src": "3686:7:1", + "referencedDeclaration": 232, + "src": "4144:7:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6254,14 +8353,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 422, + "id": 567, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3696:5:1", + "src": "4154:5:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6269,89 +8368,89 @@ }, "value": "false" }, - "src": "3686:15:1", + "src": "4144:15:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 424, + "id": 569, "nodeType": "ExpressionStatement", - "src": "3686:15:1" + "src": "4144:15:2" } ] }, "documentation": null, - "id": 426, + "id": 571, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 406, + "id": 551, "modifierName": { "argumentTypes": null, - "id": 405, + "id": 550, "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 831, - "src": "3564:13:1", + "referencedDeclaration": 1058, + "src": "4022:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3564:13:1" + "src": "4022:13:2" }, { "arguments": null, - "id": 408, + "id": 553, "modifierName": { "argumentTypes": null, - "id": 407, + "id": 552, "name": "onlyMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 186, - "src": "3578:9:1", + "referencedDeclaration": 298, + "src": "4036:9:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3578:9:1" + "src": "4036:9:2" } ], "name": "stopMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 404, + "id": 549, "nodeType": "ParameterList", "parameters": [], - "src": "3554:2:1" + "src": "4012:2:2" }, "payable": false, "returnParameters": { - "id": 409, + "id": 554, "nodeType": "ParameterList", "parameters": [], - "src": "3588:0:1" + "src": "4046:0:2" }, - "scope": 549, - "src": "3535:174:1", + "scope": 771, + "src": "3993:174:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 501, + "id": 681, "nodeType": "Block", - "src": "3765:579:1", + "src": "4223:876:2", "statements": [ { "expression": { @@ -6360,24 +8459,129 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_MinerState_$116", - "typeString": "enum AlgoMiner.MinerState" + "typeIdentifier": "t_enum$_MinerType_$215", + "typeString": "enum AlgoMiner.MinerType" }, - "id": 437, + "id": 582, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 434, + "id": 579, + "name": "_minerType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 222, + "src": "4242:10:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerType_$215", + "typeString": "enum AlgoMiner.MinerType" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 580, + "name": "MinerType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 215, + "src": "4256:9:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerType_$215_$", + "typeString": "type(enum AlgoMiner.MinerType)" + } + }, + "id": 581, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "PoolBased", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4256:19:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerType_$215", + "typeString": "enum AlgoMiner.MinerType" + } + }, + "src": "4242:33:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 578, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1520, + 1521 + ], + "referencedDeclaration": 1520, + "src": "4234:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4234:42:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 584, + "nodeType": "ExpressionStatement", + "src": "4234:42:2" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_MinerState_$220", + "typeString": "enum AlgoMiner.MinerState" + }, + "id": 589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 586, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 124, - "src": "3784:6:1", + "referencedDeclaration": 230, + "src": "4295:6:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, @@ -6387,18 +8591,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 435, + "id": 587, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 116, - "src": "3794:10:1", + "referencedDeclaration": 220, + "src": "4305:10:2", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 436, + "id": 588, "isConstant": false, "isLValue": false, "isPure": true, @@ -6406,13 +8610,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3794:20:1", + "src": "4305:20:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3784:30:1", + "src": "4295:30:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6426,21 +8630,21 @@ "typeString": "bool" } ], - "id": 433, + "id": 585, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1293, - 1294 + 1520, + 1521 ], - "referencedDeclaration": 1293, - "src": "3776:7:1", + "referencedDeclaration": 1520, + "src": "4287:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 438, + "id": 590, "isConstant": false, "isLValue": false, "isPure": false, @@ -6448,15 +8652,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3776:39:1", + "src": "4287:39:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 439, + "id": 591, "nodeType": "ExpressionStatement", - "src": "3776:39:1" + "src": "4287:39:2" }, { "expression": { @@ -6464,12 +8668,12 @@ "arguments": [ { "argumentTypes": null, - "id": 441, + "id": 593, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 126, - "src": "3834:7:1", + "referencedDeclaration": 232, + "src": "4345:7:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6483,21 +8687,21 @@ "typeString": "bool" } ], - "id": 440, + "id": 592, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1293, - 1294 + 1520, + 1521 ], - "referencedDeclaration": 1293, - "src": "3826:7:1", + "referencedDeclaration": 1520, + "src": "4337:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 442, + "id": 594, "isConstant": false, "isLValue": false, "isPure": false, @@ -6505,15 +8709,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3826:16:1", + "src": "4337:16:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 443, + "id": 595, "nodeType": "ExpressionStatement", - "src": "3826:16:1" + "src": "4337:16:2" }, { "condition": { @@ -6522,19 +8726,19 @@ "typeIdentifier": "t_uint16", "typeString": "uint16" }, - "id": 446, + "id": 598, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 444, + "id": 596, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "3858:11:1", + "referencedDeclaration": 236, + "src": "4369:11:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -6545,14 +8749,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 445, + "id": 597, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3873:1:1", + "src": "4384:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6560,21 +8764,21 @@ }, "value": "0" }, - "src": "3858:16:1", + "src": "4369:16:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 480, + "id": 632, "nodeType": "Block", - "src": "3955:238:1", + "src": "4466:238:2", "statements": [ { "expression": { "argumentTypes": null, - "id": 457, + "id": 609, "isConstant": false, "isLValue": false, "isPure": false, @@ -6582,15 +8786,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3970:13:1", + "src": "4481:13:2", "subExpression": { "argumentTypes": null, - "id": 456, + "id": 608, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "3970:11:1", + "referencedDeclaration": 236, + "src": "4481:11:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -6601,9 +8805,9 @@ "typeString": "uint16" } }, - "id": 458, + "id": 610, "nodeType": "ExpressionStatement", - "src": "3970:13:1" + "src": "4481:13:2" }, { "condition": { @@ -6612,19 +8816,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 464, + "id": 616, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 459, + "id": 611, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "4001:11:1", + "referencedDeclaration": 236, + "src": "4512:11:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -6641,19 +8845,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 462, + "id": 614, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 460, + "id": 612, "name": "DAYS_PER_YEAR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 111, - "src": "4017:13:1", + "referencedDeclaration": 212, + "src": "4528:13:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6664,14 +8868,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 461, + "id": 613, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4033:1:1", + "src": "4544:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6679,45 +8883,45 @@ }, "value": "1" }, - "src": "4017:17:1", + "src": "4528:17:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 463, + "id": 615, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "4016:19:1", + "src": "4527:19:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4001:34:1", + "src": "4512:34:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 479, + "id": 631, "nodeType": "IfStatement", - "src": "3998:184:1", + "src": "4509:184:2", "trueBody": { - "id": 478, + "id": 630, "nodeType": "Block", - "src": "4037:145:1", + "src": "4548:145:2", "statements": [ { "expression": { "argumentTypes": null, - "id": 466, + "id": 618, "isConstant": false, "isLValue": false, "isPure": false, @@ -6725,15 +8929,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4056:14:1", + "src": "4567:14:2", "subExpression": { "argumentTypes": null, - "id": 465, + "id": 617, "name": "_currentYear", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 128, - "src": "4056:12:1", + "referencedDeclaration": 234, + "src": "4567:12:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6744,26 +8948,26 @@ "typeString": "uint8" } }, - "id": 467, + "id": 619, "nodeType": "ExpressionStatement", - "src": "4056:14:1" + "src": "4567:14:2" }, { "expression": { "argumentTypes": null, - "id": 470, + "id": 622, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 468, + "id": 620, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "4089:11:1", + "referencedDeclaration": 236, + "src": "4600:11:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -6774,14 +8978,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 469, + "id": 621, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4103:1:1", + "src": "4614:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6789,32 +8993,32 @@ }, "value": "1" }, - "src": "4089:15:1", + "src": "4600:15:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 471, + "id": 623, "nodeType": "ExpressionStatement", - "src": "4089:15:1" + "src": "4600:15:2" }, { "expression": { "argumentTypes": null, - "id": 476, + "id": 628, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 472, + "id": 624, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 132, - "src": "4123:18:1", + "referencedDeclaration": 238, + "src": "4634:18:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6828,19 +9032,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 475, + "id": 627, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 473, + "id": 625, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 132, - "src": "4144:18:1", + "referencedDeclaration": 238, + "src": "4655:18:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6851,14 +9055,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 474, + "id": 626, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4165:1:1", + "src": "4676:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -6866,51 +9070,51 @@ }, "value": "2" }, - "src": "4144:22:1", + "src": "4655:22:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4123:43:1", + "src": "4634:43:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 477, + "id": 629, "nodeType": "ExpressionStatement", - "src": "4123:43:1" + "src": "4634:43:2" } ] } } ] }, - "id": 481, + "id": 633, "nodeType": "IfStatement", - "src": "3855:338:1", + "src": "4366:338:2", "trueBody": { - "id": 455, + "id": 607, "nodeType": "Block", - "src": "3876:73:1", + "src": "4387:73:2", "statements": [ { "expression": { "argumentTypes": null, - "id": 449, + "id": 601, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 447, + "id": 599, "name": "_currentYear", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 128, - "src": "3891:12:1", + "referencedDeclaration": 234, + "src": "4402:12:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6921,14 +9125,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 448, + "id": 600, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3906:1:1", + "src": "4417:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6936,32 +9140,32 @@ }, "value": "1" }, - "src": "3891:16:1", + "src": "4402:16:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 450, + "id": 602, "nodeType": "ExpressionStatement", - "src": "3891:16:1" + "src": "4402:16:2" }, { "expression": { "argumentTypes": null, - "id": 453, + "id": 605, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 451, + "id": 603, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "3922:11:1", + "referencedDeclaration": 236, + "src": "4433:11:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -6972,14 +9176,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 452, + "id": 604, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3936:1:1", + "src": "4447:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6987,31 +9191,31 @@ }, "value": "1" }, - "src": "3922:15:1", + "src": "4433:15:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 454, + "id": 606, "nodeType": "ExpressionStatement", - "src": "3922:15:1" + "src": "4433:15:2" } ] } }, { "assignments": [ - 483 + 635 ], "declarations": [ { "constant": false, - "id": 483, - "name": "tokens", + "id": 635, + "name": "minerTokens", "nodeType": "VariableDeclaration", - "scope": 502, - "src": "4205:14:1", + "scope": 682, + "src": "4716:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7019,10 +9223,10 @@ "typeString": "uint256" }, "typeName": { - "id": 482, + "id": 634, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4205:7:1", + "src": "4716:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7032,26 +9236,26 @@ "visibility": "internal" } ], - "id": 487, + "id": 639, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 486, + "id": 638, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 484, + "id": 636, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 132, - "src": "4222:18:1", + "referencedDeclaration": 238, + "src": "4738:18:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7061,25 +9265,25 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 485, + "id": 637, "name": "DAYS_PER_YEAR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 111, - "src": "4243:13:1", + "referencedDeclaration": 212, + "src": "4759:13:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4222:34:1", + "src": "4738:34:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "4205:51:1" + "src": "4716:56:2" }, { "expression": { @@ -7091,19 +9295,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 491, + "id": 643, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 489, - "name": "tokens", + "id": 641, + "name": "minerTokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 483, - "src": "4277:6:1", + "referencedDeclaration": 635, + "src": "4793:11:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7114,14 +9318,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 490, + "id": 642, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4286:1:1", + "src": "4807:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7129,7 +9333,7 @@ }, "value": "0" }, - "src": "4277:10:1", + "src": "4793:15:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7143,21 +9347,21 @@ "typeString": "bool" } ], - "id": 488, + "id": 640, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1293, - 1294 + 1520, + 1521 ], - "referencedDeclaration": 1293, - "src": "4269:7:1", + "referencedDeclaration": 1520, + "src": "4785:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 492, + "id": 644, "isConstant": false, "isLValue": false, "isPure": false, @@ -7165,15 +9369,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4269:19:1", + "src": "4785:24:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 493, + "id": 645, "nodeType": "ExpressionStatement", - "src": "4269:19:1" + "src": "4785:24:2" }, { "expression": { @@ -7181,12 +9385,12 @@ "arguments": [ { "argumentTypes": null, - "id": 497, + "id": 649, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 122, - "src": "4321:6:1", + "referencedDeclaration": 226, + "src": "4842:6:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7194,12 +9398,12 @@ }, { "argumentTypes": null, - "id": 498, - "name": "tokens", + "id": 650, + "name": "minerTokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 483, - "src": "4329:6:1", + "referencedDeclaration": 635, + "src": "4850:11:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7219,32 +9423,32 @@ ], "expression": { "argumentTypes": null, - "id": 494, + "id": 646, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 735, - "src": "4301:6:1", + "referencedDeclaration": 957, + "src": "4822:6:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" } }, - "id": 496, + "id": 648, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1156, - "src": "4301:19:1", + "referencedDeclaration": 1383, + "src": "4822:19:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1131_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1131_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1358_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1358_$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 499, + "id": 651, "isConstant": false, "isLValue": false, "isPure": false, @@ -7252,89 +9456,494 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4301:35:1", + "src": "4822:40:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 500, + "id": 652, "nodeType": "ExpressionStatement", - "src": "4301:35:1" + "src": "4822:40:2" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 653, + "name": "_referral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 228, + "src": "4878:9:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 655, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4899:1:2", + "subdenomination": null, + "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": 654, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4891:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 656, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4891:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4878:23:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 680, + "nodeType": "IfStatement", + "src": "4875:217:2", + "trueBody": { + "id": 679, + "nodeType": "Block", + "src": "4903:189:2", + "statements": [ + { + "assignments": [ + 659 + ], + "declarations": [ + { + "constant": false, + "id": 659, + "name": "referralTokens", + "nodeType": "VariableDeclaration", + "scope": 682, + "src": "4918:22:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 658, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4918:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 665, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 660, + "name": "minerTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 635, + "src": "4943:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 661, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4957:2:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "4943:16:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "313030", + "id": 663, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4962:3:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + }, + "value": "100" + }, + "src": "4943:22:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4918:47:2" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 667, + "name": "referralTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 659, + "src": "4994:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 668, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5011:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4994:18:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 666, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1520, + 1521 + ], + "referencedDeclaration": 1520, + "src": "4986:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4986:27:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 671, + "nodeType": "ExpressionStatement", + "src": "4986:27:2" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 675, + "name": "_referral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 228, + "src": "5054:9:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 676, + "name": "referralTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 659, + "src": "5065:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 672, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 957, + "src": "5034:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1358", + "typeString": "contract IERC20" + } + }, + "id": 674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1383, + "src": "5034:19:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1358_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1358_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5034:46:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 678, + "nodeType": "ExpressionStatement", + "src": "5034:46:2" + } + ] + } } ] }, "documentation": null, - "id": 502, + "id": 682, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 429, + "id": 574, "modifierName": { "argumentTypes": null, - "id": 428, + "id": 573, "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 831, - "src": "3740:13:1", + "referencedDeclaration": 1058, + "src": "4198:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3740:13:1" + "src": "4198:13:2" }, { "arguments": null, - "id": 431, + "id": 576, "modifierName": { "argumentTypes": null, - "id": 430, + "id": 575, "name": "onlySystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 664, - "src": "3754:10:1", + "referencedDeclaration": 886, + "src": "4212:10:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3754:10:1" + "src": "4212:10:2" } ], "name": "mine", "nodeType": "FunctionDefinition", "parameters": { - "id": 427, + "id": 572, "nodeType": "ParameterList", "parameters": [], - "src": "3730:2:1" + "src": "4188:2:2" }, "payable": false, "returnParameters": { - "id": 432, + "id": 577, "nodeType": "ParameterList", "parameters": [], - "src": "3765:0:1" + "src": "4223:0:2" }, - "scope": 549, - "src": "3717:627:1", + "scope": 771, + "src": "4175:924:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 510, + "id": 690, "nodeType": "Block", - "src": "4393:31:1", + "src": "5148:31:2", "statements": [ { "expression": { @@ -7342,20 +9951,20 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 507, + "id": 687, "name": "_terminate", "nodeType": "Identifier", "overloadedDeclarations": [ - 779 + 1001 ], - "referencedDeclaration": 779, - "src": "4404:10:1", + "referencedDeclaration": 1001, + "src": "5159:10:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 508, + "id": 688, "isConstant": false, "isLValue": false, "isPure": false, @@ -7363,83 +9972,83 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4404:12:1", + "src": "5159:12:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 509, + "id": 689, "nodeType": "ExpressionStatement", - "src": "4404:12:1" + "src": "5159:12:2" } ] }, "documentation": null, - "id": 511, + "id": 691, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 505, + "id": 685, "modifierName": { "argumentTypes": null, - "id": 504, + "id": 684, "name": "onlyCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 27, - "src": "4380:12:1", + "referencedDeclaration": 125, + "src": "5135:12:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4380:12:1" + "src": "5135:12:2" } ], "name": "terminate", "nodeType": "FunctionDefinition", "parameters": { - "id": 503, + "id": 683, "nodeType": "ParameterList", "parameters": [], - "src": "4370:2:1" + "src": "5125:2:2" }, "payable": false, "returnParameters": { - "id": 506, + "id": 686, "nodeType": "ParameterList", "parameters": [], - "src": "4393:0:1" + "src": "5148:0:2" }, - "scope": 549, - "src": "4352:72:1", + "scope": 771, + "src": "5107:72:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 518, + "id": 698, "nodeType": "Block", - "src": "4482:30:1", + "src": "5237:30:2", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 516, + "id": 696, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "4500:4:1", + "src": "5255:4:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -7447,15 +10056,15 @@ }, "value": "true" }, - "functionReturnParameters": 515, - "id": 517, + "functionReturnParameters": 695, + "id": 697, "nodeType": "Return", - "src": "4493:11:1" + "src": "5248:11:2" } ] }, "documentation": null, - "id": 519, + "id": 699, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7463,23 +10072,23 @@ "name": "isAlgoMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 512, + "id": 692, "nodeType": "ParameterList", "parameters": [], - "src": "4452:2:1" + "src": "5207:2:2" }, "payable": false, "returnParameters": { - "id": 515, + "id": 695, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 514, + "id": 694, "name": "", "nodeType": "VariableDeclaration", - "scope": 519, - "src": "4476:4:1", + "scope": 699, + "src": "5231:4:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7487,10 +10096,10 @@ "typeString": "bool" }, "typeName": { - "id": 513, + "id": 693, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4476:4:1", + "src": "5231:4:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7500,67 +10109,105 @@ "visibility": "internal" } ], - "src": "4475:6:1" + "src": "5230:6:2" }, - "scope": 549, - "src": "4432:80:1", + "scope": 771, + "src": "5187:80:2", "stateMutability": "pure", - "superFunction": 787, + "superFunction": 1009, "visibility": "public" }, { "body": { - "id": 526, + "id": 708, "nodeType": "Block", - "src": "4571:35:1", + "src": "5327:43:2", "statements": [ { "expression": { "argumentTypes": null, - "id": 524, - "name": "_category", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 120, - "src": "4589:9:1", + "arguments": [ + { + "argumentTypes": null, + "id": 705, + "name": "_minerType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 222, + "src": "5351:10:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerType_$215", + "typeString": "enum AlgoMiner.MinerType" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_MinerType_$215", + "typeString": "enum AlgoMiner.MinerType" + } + ], + "id": 704, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5345:5:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": "uint8" + }, + "id": 706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5345:17:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "functionReturnParameters": 523, - "id": 525, + "functionReturnParameters": 703, + "id": 707, "nodeType": "Return", - "src": "4582:16:1" + "src": "5338:24:2" } ] }, "documentation": null, - "id": 527, + "id": 709, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], - "name": "getCategory", + "name": "getMinerType", "nodeType": "FunctionDefinition", "parameters": { - "id": 520, + "id": 700, "nodeType": "ParameterList", "parameters": [], - "src": "4540:2:1" + "src": "5296:2:2" }, "payable": false, "returnParameters": { - "id": 523, + "id": 703, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 522, + "id": 702, "name": "", "nodeType": "VariableDeclaration", - "scope": 527, - "src": "4564:5:1", + "scope": 709, + "src": "5320:5:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7568,10 +10215,10 @@ "typeString": "uint8" }, "typeName": { - "id": 521, + "id": 701, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4564:5:1", + "src": "5320:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7581,19 +10228,262 @@ "visibility": "internal" } ], - "src": "4563:7:1" + "src": "5319:7:2" }, - "scope": 549, - "src": "4520:86:1", + "scope": 771, + "src": "5275:95:2", "stateMutability": "view", - "superFunction": 792, + "superFunction": 1014, "visibility": "public" }, { "body": { - "id": 539, + "id": 716, "nodeType": "Block", - "src": "4661:67:1", + "src": "5429:35:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 714, + "name": "_category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "5447:9:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 713, + "id": 715, + "nodeType": "Return", + "src": "5440:16:2" + } + ] + }, + "documentation": null, + "id": 717, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getCategory", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 710, + "nodeType": "ParameterList", + "parameters": [], + "src": "5398:2:2" + }, + "payable": false, + "returnParameters": { + "id": 713, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 712, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 717, + "src": "5422:5:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 711, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "5422:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5421:7:2" + }, + "scope": 771, + "src": "5378:86:2", + "stateMutability": "view", + "superFunction": 1019, + "visibility": "public" + }, + { + "body": { + "id": 724, + "nodeType": "Block", + "src": "5522:32:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 722, + "name": "_miner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 226, + "src": "5540:6:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 721, + "id": 723, + "nodeType": "Return", + "src": "5533:13:2" + } + ] + }, + "documentation": null, + "id": 725, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 718, + "nodeType": "ParameterList", + "parameters": [], + "src": "5489:2:2" + }, + "payable": false, + "returnParameters": { + "id": 721, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 720, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 725, + "src": "5513:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 719, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5513:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5512:9:2" + }, + "scope": 771, + "src": "5472:82:2", + "stateMutability": "view", + "superFunction": 1029, + "visibility": "public" + }, + { + "body": { + "id": 732, + "nodeType": "Block", + "src": "5615:35:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 730, + "name": "_referral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 228, + "src": "5633:9:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 729, + "id": 731, + "nodeType": "Return", + "src": "5626:16:2" + } + ] + }, + "documentation": null, + "id": 733, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getReferral", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 726, + "nodeType": "ParameterList", + "parameters": [], + "src": "5582:2:2" + }, + "payable": false, + "returnParameters": { + "id": 729, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 728, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 733, + "src": "5606:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 727, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5606:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5605:9:2" + }, + "scope": 771, + "src": "5562:88:2", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 745, + "nodeType": "Block", + "src": "5705:67:2", "statements": [ { "expression": { @@ -7602,7 +10492,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 537, + "id": 743, "isConstant": false, "isLValue": false, "isPure": false, @@ -7610,24 +10500,24 @@ "leftExpression": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, - "id": 535, + "id": 741, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 532, + "id": 738, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 124, - "src": "4679:6:1", + "referencedDeclaration": 230, + "src": "5723:6:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, @@ -7637,18 +10527,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 533, + "id": 739, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 116, - "src": "4689:10:1", + "referencedDeclaration": 220, + "src": "5733:10:2", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 534, + "id": 740, "isConstant": false, "isLValue": false, "isPure": true, @@ -7656,13 +10546,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4689:20:1", + "src": "5733:20:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$116", + "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "4679:30:1", + "src": "5723:30:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7672,32 +10562,32 @@ "operator": "&&", "rightExpression": { "argumentTypes": null, - "id": 536, + "id": 742, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 126, - "src": "4713:7:1", + "referencedDeclaration": 232, + "src": "5757:7:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "4679:41:1", + "src": "5723:41:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 531, - "id": 538, + "functionReturnParameters": 737, + "id": 744, "nodeType": "Return", - "src": "4672:48:1" + "src": "5716:48:2" } ] }, "documentation": null, - "id": 540, + "id": 746, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7705,23 +10595,23 @@ "name": "isMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 528, + "id": 734, "nodeType": "ParameterList", "parameters": [], - "src": "4631:2:1" + "src": "5675:2:2" }, "payable": false, "returnParameters": { - "id": 531, + "id": 737, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 530, + "id": 736, "name": "", "nodeType": "VariableDeclaration", - "scope": 540, - "src": "4655:4:1", + "scope": 746, + "src": "5699:4:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7729,10 +10619,10 @@ "typeString": "bool" }, "typeName": { - "id": 529, + "id": 735, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4655:4:1", + "src": "5699:4:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7742,1134 +10632,279 @@ "visibility": "internal" } ], - "src": "4654:6:1" + "src": "5698:6:2" }, - "scope": 549, - "src": "4614:114:1", + "scope": 771, + "src": "5658:114:2", "stateMutability": "view", - "superFunction": 797, + "superFunction": 1024, "visibility": "public" }, { "body": { - "id": 547, + "id": 753, "nodeType": "Block", - "src": "4786:32:1", + "src": "5834:38:2", "statements": [ { "expression": { "argumentTypes": null, - "id": 545, - "name": "_miner", + "id": 751, + "name": "_currentYear", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 122, - "src": "4804:6:1", + "referencedDeclaration": 234, + "src": "5852:12:2", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } }, - "functionReturnParameters": 544, - "id": 546, + "functionReturnParameters": 750, + "id": 752, "nodeType": "Return", - "src": "4797:13:1" + "src": "5845:19:2" } ] }, "documentation": null, - "id": 548, + "id": 754, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], - "name": "getMiner", + "name": "getCurrentYear", "nodeType": "FunctionDefinition", "parameters": { - "id": 541, + "id": 747, "nodeType": "ParameterList", "parameters": [], - "src": "4753:2:1" + "src": "5803:2:2" }, "payable": false, "returnParameters": { - "id": 544, + "id": 750, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 543, + "id": 749, "name": "", "nodeType": "VariableDeclaration", - "scope": 548, - "src": "4777:7:1", + "scope": 754, + "src": "5827:5:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint8", + "typeString": "uint8" }, "typeName": { - "id": 542, - "name": "address", + "id": 748, + "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4777:7:1", + "src": "5827:5:2", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], - "src": "4776:9:1" + "src": "5826:7:2" }, - "scope": 549, - "src": "4736:82:1", + "scope": 771, + "src": "5780:92:2", "stateMutability": "view", - "superFunction": 802, + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 761, + "nodeType": "Block", + "src": "5934:37:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 759, + "name": "_currentDay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 236, + "src": "5952:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "functionReturnParameters": 758, + "id": 760, + "nodeType": "Return", + "src": "5945:18:2" + } + ] + }, + "documentation": null, + "id": 762, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getCurrentDay", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 755, + "nodeType": "ParameterList", + "parameters": [], + "src": "5902:2:2" + }, + "payable": false, + "returnParameters": { + "id": 758, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 757, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 762, + "src": "5926:6:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 756, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5926:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5925:8:2" + }, + "scope": 771, + "src": "5880:91:2", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 769, + "nodeType": "Block", + "src": "6041:44:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 767, + "name": "_currentYearSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 238, + "src": "6059:18:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 766, + "id": 768, + "nodeType": "Return", + "src": "6052:25:2" + } + ] + }, + "documentation": null, + "id": 770, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getCurrentYearSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 763, + "nodeType": "ParameterList", + "parameters": [], + "src": "6008:2:2" + }, + "payable": false, + "returnParameters": { + "id": 766, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 765, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 770, + "src": "6032:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 764, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6032:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6031:9:2" + }, + "scope": 771, + "src": "5979:106:2", + "stateMutability": "view", + "superFunction": null, "visibility": "public" } ], - "scope": 550, - "src": "592:4229:1" + "scope": 772, + "src": "620:5468:2" } ], - "src": "0:4823:1" + "src": "0:6090:2" }, - "id": 1 + "id": 2 }, "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol": { "ast": { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol", "exportedSymbols": { "AlgoSupervisorRole": [ - 636 + 858 ] }, - "id": 637, + "id": 859, "nodeType": "SourceUnit", "nodes": [ { - "id": 551, - "literals": [ - "solidity", - "^", - "0.4", - ".24" - ], - "nodeType": "PragmaDirective", - "src": "0:24:2" - }, - { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", - "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", - "id": 552, - "nodeType": "ImportDirective", - "scope": 637, - "sourceUnit": 935, - "src": "28:189:2", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "id": 636, - "linearizedBaseContracts": [ - 636 - ], - "name": "AlgoSupervisorRole", - "nodeType": "ContractDefinition", - "nodes": [ - { - "id": 555, - "libraryName": { - "contractScope": null, - "id": 553, - "name": "Roles", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 934, - "src": "262:5:2", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$934", - "typeString": "library Roles" - } - }, - "nodeType": "UsingForDirective", - "src": "256:27:2", - "typeName": { - "contractScope": null, - "id": 554, - "name": "Roles.Role", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 847, - "src": "272:10:2", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$847_storage_ptr", - "typeString": "struct Roles.Role" - } - } - }, - { - "constant": false, - "id": 557, - "name": "_supervisors", - "nodeType": "VariableDeclaration", - "scope": 636, - "src": "291:31:2", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$847_storage", - "typeString": "struct Roles.Role" - }, - "typeName": { - "contractScope": null, - "id": 556, - "name": "Roles.Role", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 847, - "src": "291:10:2", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$847_storage_ptr", - "typeString": "struct Roles.Role" - } - }, - "value": null, - "visibility": "private" - }, - { - "body": { - "id": 565, - "nodeType": "Block", - "src": "355:45:2", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 561, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1290, - "src": "381:3:2", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 562, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "381:10:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 560, - "name": "_addSupervisor", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 623, - "src": "366:14:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 563, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "366:26:2", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 564, - "nodeType": "ExpressionStatement", - "src": "366:26:2" - } - ] - }, - "documentation": null, - "id": 566, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 558, - "nodeType": "ParameterList", - "parameters": [], - "src": "343:2:2" - }, - "payable": false, - "returnParameters": { - "id": 559, - "nodeType": "ParameterList", - "parameters": [], - "src": "355:0:2" - }, - "scope": 636, - "src": "331:69:2", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 576, - "nodeType": "Block", - "src": "434:64:2", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 570, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1290, - "src": "466:3:2", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 571, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "466:10:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 569, - "name": "isSupervisor", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 590, - "src": "453:12:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", - "typeString": "function (address) view returns (bool)" - } - }, - "id": 572, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "453:24:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 568, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1293, - 1294 - ], - "referencedDeclaration": 1293, - "src": "445:7:2", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 573, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "445:33:2", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 574, - "nodeType": "ExpressionStatement", - "src": "445:33:2" - }, - { - "id": 575, - "nodeType": "PlaceholderStatement", - "src": "489:1:2" - } - ] - }, - "documentation": null, - "id": 577, - "name": "onlySupervisor", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 567, - "nodeType": "ParameterList", - "parameters": [], - "src": "431:2:2" - }, - "src": "408:90:2", - "visibility": "internal" - }, - { - "body": { - "id": 589, - "nodeType": "Block", - "src": "572:51:2", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 586, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 579, - "src": "607:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 584, - "name": "_supervisors", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 557, - "src": "590:12:2", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$847_storage", - "typeString": "struct Roles.Role storage ref" - } - }, - "id": 585, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "has", - "nodeType": "MemberAccess", - "referencedDeclaration": 933, - "src": "590:16:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$847_storage_ptr_$", - "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" - } - }, - "id": 587, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "590:25:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 583, - "id": 588, - "nodeType": "Return", - "src": "583:32:2" - } - ] - }, - "documentation": null, - "id": 590, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "isSupervisor", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 580, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 579, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 590, - "src": "528:15:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 578, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "528:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "527:17:2" - }, - "payable": false, - "returnParameters": { - "id": 583, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 582, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 590, - "src": "566:4:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 581, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "566:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "565:6:2" - }, - "scope": 636, - "src": "506:117:2", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 601, - "nodeType": "Block", - "src": "693:42:2", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 598, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 592, - "src": "719:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 597, - "name": "_addSupervisor", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 623, - "src": "704:14:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 599, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "704:23:2", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 600, - "nodeType": "ExpressionStatement", - "src": "704:23:2" - } - ] - }, - "documentation": null, - "id": 602, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": null, - "id": 595, - "modifierName": { - "argumentTypes": null, - "id": 594, - "name": "onlySupervisor", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 577, - "src": "678:14:2", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "678:14:2" - } - ], - "name": "addSupervisor", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 593, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 592, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 602, - "src": "654:15:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 591, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "654:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "653:17:2" - }, - "payable": false, - "returnParameters": { - "id": 596, - "nodeType": "ParameterList", - "parameters": [], - "src": "693:0:2" - }, - "scope": 636, - "src": "631:104:2", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 610, - "nodeType": "Block", - "src": "780:48:2", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 606, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1290, - "src": "809:3:2", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 607, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "809:10:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 605, - "name": "_removeSupervisor", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 635, - "src": "791:17:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 608, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "791:29:2", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 609, - "nodeType": "ExpressionStatement", - "src": "791:29:2" - } - ] - }, - "documentation": null, - "id": 611, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "renounceSupervisor", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 603, - "nodeType": "ParameterList", - "parameters": [], - "src": "770:2:2" - }, - "payable": false, - "returnParameters": { - "id": 604, - "nodeType": "ParameterList", - "parameters": [], - "src": "780:0:2" - }, - "scope": 636, - "src": "743:85:2", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 622, - "nodeType": "Block", - "src": "886:44:2", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 619, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 613, - "src": "914:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 616, - "name": "_supervisors", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 557, - "src": "897:12:2", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$847_storage", - "typeString": "struct Roles.Role storage ref" - } - }, - "id": 618, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 879, - "src": "897:16:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$847_storage_ptr_$", - "typeString": "function (struct Roles.Role storage pointer,address)" - } - }, - "id": 620, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "897:25:2", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 621, - "nodeType": "ExpressionStatement", - "src": "897:25:2" - } - ] - }, - "documentation": null, - "id": 623, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "_addSupervisor", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 614, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 613, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 623, - "src": "860:15:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 612, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "860:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "859:17:2" - }, - "payable": false, - "returnParameters": { - "id": 615, - "nodeType": "ParameterList", - "parameters": [], - "src": "886:0:2" - }, - "scope": 636, - "src": "836:94:2", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 634, - "nodeType": "Block", - "src": "991:47:2", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 631, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 625, - "src": "1022:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 628, - "name": "_supervisors", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 557, - "src": "1002:12:2", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$847_storage", - "typeString": "struct Roles.Role storage ref" - } - }, - "id": 630, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "remove", - "nodeType": "MemberAccess", - "referencedDeclaration": 910, - "src": "1002:19:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$847_storage_ptr_$", - "typeString": "function (struct Roles.Role storage pointer,address)" - } - }, - "id": 632, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1002:28:2", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 633, - "nodeType": "ExpressionStatement", - "src": "1002:28:2" - } - ] - }, - "documentation": null, - "id": 635, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "_removeSupervisor", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 626, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 625, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 635, - "src": "965:15:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 624, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "965:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "964:17:2" - }, - "payable": false, - "returnParameters": { - "id": 627, - "nodeType": "ParameterList", - "parameters": [], - "src": "991:0:2" - }, - "scope": 636, - "src": "938:100:2", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 637, - "src": "221:820:2" - } - ], - "src": "0:1043:2" - }, - "id": 2 - }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol": { - "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol", - "exportedSymbols": { - "AlgoSystemRole": [ - 723 - ] - }, - "id": 724, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 638, + "id": 773, "literals": [ "solidity", "^", @@ -8882,10 +10917,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", - "id": 639, + "id": 774, "nodeType": "ImportDirective", - "scope": 724, - "sourceUnit": 935, + "scope": 859, + "sourceUnit": 1162, "src": "28:189:3", "symbolAliases": [], "unitAlias": "" @@ -8896,64 +10931,64 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 723, + "id": 858, "linearizedBaseContracts": [ - 723 + 858 ], - "name": "AlgoSystemRole", + "name": "AlgoSupervisorRole", "nodeType": "ContractDefinition", "nodes": [ { - "id": 642, + "id": 777, "libraryName": { "contractScope": null, - "id": 640, + "id": 775, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 934, - "src": "258:5:3", + "referencedDeclaration": 1161, + "src": "262:5:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$934", + "typeIdentifier": "t_contract$_Roles_$1161", "typeString": "library Roles" } }, "nodeType": "UsingForDirective", - "src": "252:27:3", + "src": "256:27:3", "typeName": { "contractScope": null, - "id": 641, + "id": 776, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 847, - "src": "268:10:3", + "referencedDeclaration": 1074, + "src": "272:10:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", "typeString": "struct Roles.Role" } } }, { "constant": false, - "id": 644, - "name": "_systemMembers", + "id": 779, + "name": "_supervisors", "nodeType": "VariableDeclaration", - "scope": 723, - "src": "287:33:3", + "scope": 858, + "src": "291:31:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$847_storage", + "typeIdentifier": "t_struct$_Role_$1074_storage", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 643, + "id": 778, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 847, - "src": "287:10:3", + "referencedDeclaration": 1074, + "src": "291:10:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -8962,9 +10997,9 @@ }, { "body": { - "id": 652, + "id": 787, "nodeType": "Block", - "src": "353:41:3", + "src": "355:45:3", "statements": [ { "expression": { @@ -8974,18 +11009,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 648, + "id": 783, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1290, - "src": "375:3:3", + "referencedDeclaration": 1517, + "src": "381:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 649, + "id": 784, "isConstant": false, "isLValue": false, "isPure": false, @@ -8993,7 +11028,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "375:10:3", + "src": "381:10:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9007,18 +11042,18 @@ "typeString": "address" } ], - "id": 647, - "name": "_addSystem", + "id": 782, + "name": "_addSupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 710, - "src": "364:10:3", + "referencedDeclaration": 845, + "src": "366:14:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 650, + "id": 785, "isConstant": false, "isLValue": false, "isPure": false, @@ -9026,20 +11061,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "364:22:3", + "src": "366:26:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 651, + "id": 786, "nodeType": "ExpressionStatement", - "src": "364:22:3" + "src": "366:26:3" } ] }, "documentation": null, - "id": 653, + "id": 788, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -9047,29 +11082,29 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 645, + "id": 780, "nodeType": "ParameterList", "parameters": [], - "src": "341:2:3" + "src": "343:2:3" }, "payable": false, "returnParameters": { - "id": 646, + "id": 781, "nodeType": "ParameterList", "parameters": [], - "src": "353:0:3" + "src": "355:0:3" }, - "scope": 723, - "src": "329:65:3", + "scope": 858, + "src": "331:69:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 663, + "id": 798, "nodeType": "Block", - "src": "424:60:3", + "src": "434:64:3", "statements": [ { "expression": { @@ -9082,18 +11117,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 657, + "id": 792, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1290, - "src": "452:3:3", + "referencedDeclaration": 1517, + "src": "466:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 658, + "id": 793, "isConstant": false, "isLValue": false, "isPure": false, @@ -9101,7 +11136,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "452:10:3", + "src": "466:10:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9115,18 +11150,18 @@ "typeString": "address" } ], - "id": 656, - "name": "isSystem", + "id": 791, + "name": "isSupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "443:8:3", + "referencedDeclaration": 812, + "src": "453:12:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)" } }, - "id": 659, + "id": 794, "isConstant": false, "isLValue": false, "isPure": false, @@ -9134,7 +11169,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "443:20:3", + "src": "453:24:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9148,21 +11183,21 @@ "typeString": "bool" } ], - "id": 655, + "id": 790, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1293, - 1294 + 1520, + 1521 ], - "referencedDeclaration": 1293, - "src": "435:7:3", + "referencedDeclaration": 1520, + "src": "445:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 660, + "id": 795, "isConstant": false, "isLValue": false, "isPure": false, @@ -9170,41 +11205,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "435:29:3", + "src": "445:33:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 661, + "id": 796, "nodeType": "ExpressionStatement", - "src": "435:29:3" + "src": "445:33:3" }, { - "id": 662, + "id": 797, "nodeType": "PlaceholderStatement", - "src": "475:1:3" + "src": "489:1:3" } ] }, "documentation": null, - "id": 664, - "name": "onlySystem", + "id": 799, + "name": "onlySupervisor", "nodeType": "ModifierDefinition", "parameters": { - "id": 654, + "id": 789, "nodeType": "ParameterList", "parameters": [], - "src": "421:2:3" + "src": "431:2:3" }, - "src": "402:82:3", + "src": "408:90:3", "visibility": "internal" }, { "body": { - "id": 676, + "id": 811, "nodeType": "Block", - "src": "554:53:3", + "src": "572:51:3", "statements": [ { "expression": { @@ -9212,12 +11247,12 @@ "arguments": [ { "argumentTypes": null, - "id": 673, + "id": 808, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 666, - "src": "591:7:3", + "referencedDeclaration": 801, + "src": "607:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9233,32 +11268,32 @@ ], "expression": { "argumentTypes": null, - "id": 671, - "name": "_systemMembers", + "id": 806, + "name": "_supervisors", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 644, - "src": "572:14:3", + "referencedDeclaration": 779, + "src": "590:12:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$847_storage", + "typeIdentifier": "t_struct$_Role_$1074_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 672, + "id": 807, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 933, - "src": "572:18:3", + "referencedDeclaration": 1160, + "src": "590:16:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$847_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1074_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1074_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 674, + "id": 809, "isConstant": false, "isLValue": false, "isPure": false, @@ -9266,38 +11301,38 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "572:27:3", + "src": "590:25:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 670, - "id": 675, + "functionReturnParameters": 805, + "id": 810, "nodeType": "Return", - "src": "565:34:3" + "src": "583:32:3" } ] }, "documentation": null, - "id": 677, + "id": 812, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], - "name": "isSystem", + "name": "isSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 667, + "id": 802, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 666, + "id": 801, "name": "account", "nodeType": "VariableDeclaration", - "scope": 677, - "src": "510:15:3", + "scope": 812, + "src": "528:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9305,10 +11340,10 @@ "typeString": "address" }, "typeName": { - "id": 665, + "id": 800, "name": "address", "nodeType": "ElementaryTypeName", - "src": "510:7:3", + "src": "528:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9318,20 +11353,20 @@ "visibility": "internal" } ], - "src": "509:17:3" + "src": "527:17:3" }, "payable": false, "returnParameters": { - "id": 670, + "id": 805, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 669, + "id": 804, "name": "", "nodeType": "VariableDeclaration", - "scope": 677, - "src": "548:4:3", + "scope": 812, + "src": "566:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9339,10 +11374,10 @@ "typeString": "bool" }, "typeName": { - "id": 668, + "id": 803, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "548:4:3", + "src": "566:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9352,19 +11387,19 @@ "visibility": "internal" } ], - "src": "547:6:3" + "src": "565:6:3" }, - "scope": 723, - "src": "492:115:3", + "scope": 858, + "src": "506:117:3", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 688, + "id": 823, "nodeType": "Block", - "src": "669:38:3", + "src": "693:42:3", "statements": [ { "expression": { @@ -9372,12 +11407,12 @@ "arguments": [ { "argumentTypes": null, - "id": 685, + "id": 820, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 679, - "src": "691:7:3", + "referencedDeclaration": 814, + "src": "719:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9391,18 +11426,18 @@ "typeString": "address" } ], - "id": 684, - "name": "_addSystem", + "id": 819, + "name": "_addSupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 710, - "src": "680:10:3", + "referencedDeclaration": 845, + "src": "704:14:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 686, + "id": 821, "isConstant": false, "isLValue": false, "isPure": false, @@ -9410,57 +11445,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "680:19:3", + "src": "704:23:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 687, + "id": 822, "nodeType": "ExpressionStatement", - "src": "680:19:3" + "src": "704:23:3" } ] }, "documentation": null, - "id": 689, + "id": 824, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 682, + "id": 817, "modifierName": { "argumentTypes": null, - "id": 681, - "name": "onlySystem", + "id": 816, + "name": "onlySupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 664, - "src": "658:10:3", + "referencedDeclaration": 799, + "src": "678:14:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "658:10:3" + "src": "678:14:3" } ], - "name": "addSystem", + "name": "addSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 680, + "id": 815, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 679, + "id": 814, "name": "account", "nodeType": "VariableDeclaration", - "scope": 689, - "src": "634:15:3", + "scope": 824, + "src": "654:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9468,10 +11503,10 @@ "typeString": "address" }, "typeName": { - "id": 678, + "id": 813, "name": "address", "nodeType": "ElementaryTypeName", - "src": "634:7:3", + "src": "654:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9481,26 +11516,26 @@ "visibility": "internal" } ], - "src": "633:17:3" + "src": "653:17:3" }, "payable": false, "returnParameters": { - "id": 683, + "id": 818, "nodeType": "ParameterList", "parameters": [], - "src": "669:0:3" + "src": "693:0:3" }, - "scope": 723, - "src": "615:92:3", + "scope": 858, + "src": "631:104:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 697, + "id": 832, "nodeType": "Block", - "src": "748:44:3", + "src": "780:48:3", "statements": [ { "expression": { @@ -9510,18 +11545,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 693, + "id": 828, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1290, - "src": "773:3:3", + "referencedDeclaration": 1517, + "src": "809:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 694, + "id": 829, "isConstant": false, "isLValue": false, "isPure": false, @@ -9529,7 +11564,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "773:10:3", + "src": "809:10:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9543,18 +11578,18 @@ "typeString": "address" } ], - "id": 692, - "name": "_removeSystem", + "id": 827, + "name": "_removeSupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 722, - "src": "759:13:3", + "referencedDeclaration": 857, + "src": "791:17:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 695, + "id": 830, "isConstant": false, "isLValue": false, "isPure": false, @@ -9562,20 +11597,1037 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "759:25:3", + "src": "791:29:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 696, + "id": 831, "nodeType": "ExpressionStatement", - "src": "759:25:3" + "src": "791:29:3" } ] }, "documentation": null, - "id": 698, + "id": 833, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "renounceSupervisor", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 825, + "nodeType": "ParameterList", + "parameters": [], + "src": "770:2:3" + }, + "payable": false, + "returnParameters": { + "id": 826, + "nodeType": "ParameterList", + "parameters": [], + "src": "780:0:3" + }, + "scope": 858, + "src": "743:85:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 844, + "nodeType": "Block", + "src": "886:44:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 841, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 835, + "src": "914:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 838, + "name": "_supervisors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 779, + "src": "897:12:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1074_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 840, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 1106, + "src": "897:16:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1074_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1074_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "897:25:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 843, + "nodeType": "ExpressionStatement", + "src": "897:25:3" + } + ] + }, + "documentation": null, + "id": 845, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_addSupervisor", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 836, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 835, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 845, + "src": "860:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 834, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "860:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "859:17:3" + }, + "payable": false, + "returnParameters": { + "id": 837, + "nodeType": "ParameterList", + "parameters": [], + "src": "886:0:3" + }, + "scope": 858, + "src": "836:94:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 856, + "nodeType": "Block", + "src": "991:47:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 853, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 847, + "src": "1022:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 850, + "name": "_supervisors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 779, + "src": "1002:12:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1074_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 852, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 1137, + "src": "1002:19:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1074_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1074_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 854, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1002:28:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 855, + "nodeType": "ExpressionStatement", + "src": "1002:28:3" + } + ] + }, + "documentation": null, + "id": 857, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_removeSupervisor", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 848, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 847, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 857, + "src": "965:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 846, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "965:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "964:17:3" + }, + "payable": false, + "returnParameters": { + "id": 849, + "nodeType": "ParameterList", + "parameters": [], + "src": "991:0:3" + }, + "scope": 858, + "src": "938:100:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 859, + "src": "221:820:3" + } + ], + "src": "0:1043:3" + }, + "id": 3 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol", + "exportedSymbols": { + "AlgoSystemRole": [ + 945 + ] + }, + "id": 946, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 860, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:4" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "id": 861, + "nodeType": "ImportDirective", + "scope": 946, + "sourceUnit": 1162, + "src": "28:189:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 945, + "linearizedBaseContracts": [ + 945 + ], + "name": "AlgoSystemRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 864, + "libraryName": { + "contractScope": null, + "id": 862, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1161, + "src": "258:5:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$1161", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "252:27:4", + "typeName": { + "contractScope": null, + "id": 863, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1074, + "src": "268:10:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "constant": false, + "id": 866, + "name": "_systemMembers", + "nodeType": "VariableDeclaration", + "scope": 945, + "src": "287:33:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1074_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 865, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1074, + "src": "287:10:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 874, + "nodeType": "Block", + "src": "353:41:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 870, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1517, + "src": "375:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "375:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 869, + "name": "_addSystem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 932, + "src": "364:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "364:22:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 873, + "nodeType": "ExpressionStatement", + "src": "364:22:4" + } + ] + }, + "documentation": null, + "id": 875, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 867, + "nodeType": "ParameterList", + "parameters": [], + "src": "341:2:4" + }, + "payable": false, + "returnParameters": { + "id": 868, + "nodeType": "ParameterList", + "parameters": [], + "src": "353:0:4" + }, + "scope": 945, + "src": "329:65:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 885, + "nodeType": "Block", + "src": "424:60:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 879, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1517, + "src": "452:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 880, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "452:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 878, + "name": "isSystem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 899, + "src": "443:8:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 881, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "443:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 877, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1520, + 1521 + ], + "referencedDeclaration": 1520, + "src": "435:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 882, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "435:29:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 883, + "nodeType": "ExpressionStatement", + "src": "435:29:4" + }, + { + "id": 884, + "nodeType": "PlaceholderStatement", + "src": "475:1:4" + } + ] + }, + "documentation": null, + "id": 886, + "name": "onlySystem", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 876, + "nodeType": "ParameterList", + "parameters": [], + "src": "421:2:4" + }, + "src": "402:82:4", + "visibility": "internal" + }, + { + "body": { + "id": 898, + "nodeType": "Block", + "src": "554:53:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 895, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 888, + "src": "591:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 893, + "name": "_systemMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 866, + "src": "572:14:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1074_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 894, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 1160, + "src": "572:18:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1074_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1074_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 896, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "572:27:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 892, + "id": 897, + "nodeType": "Return", + "src": "565:34:4" + } + ] + }, + "documentation": null, + "id": 899, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isSystem", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 889, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 888, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 899, + "src": "510:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 887, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "510:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "509:17:4" + }, + "payable": false, + "returnParameters": { + "id": 892, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 891, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 899, + "src": "548:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 890, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "548:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "547:6:4" + }, + "scope": 945, + "src": "492:115:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 910, + "nodeType": "Block", + "src": "669:38:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 907, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 901, + "src": "691:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 906, + "name": "_addSystem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 932, + "src": "680:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 908, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "680:19:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 909, + "nodeType": "ExpressionStatement", + "src": "680:19:4" + } + ] + }, + "documentation": null, + "id": 911, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 904, + "modifierName": { + "argumentTypes": null, + "id": 903, + "name": "onlySystem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 886, + "src": "658:10:4", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "658:10:4" + } + ], + "name": "addSystem", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 902, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 901, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 911, + "src": "634:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 900, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "634:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "633:17:4" + }, + "payable": false, + "returnParameters": { + "id": 905, + "nodeType": "ParameterList", + "parameters": [], + "src": "669:0:4" + }, + "scope": 945, + "src": "615:92:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 919, + "nodeType": "Block", + "src": "748:44:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 915, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1517, + "src": "773:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 916, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "773:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 914, + "name": "_removeSystem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 944, + "src": "759:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 917, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "759:25:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 918, + "nodeType": "ExpressionStatement", + "src": "759:25:4" + } + ] + }, + "documentation": null, + "id": 920, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -9583,29 +12635,29 @@ "name": "renounceSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 690, + "id": 912, "nodeType": "ParameterList", "parameters": [], - "src": "738:2:3" + "src": "738:2:4" }, "payable": false, "returnParameters": { - "id": 691, + "id": 913, "nodeType": "ParameterList", "parameters": [], - "src": "748:0:3" + "src": "748:0:4" }, - "scope": 723, - "src": "715:77:3", + "scope": 945, + "src": "715:77:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 709, + "id": 931, "nodeType": "Block", - "src": "846:46:3", + "src": "846:46:4", "statements": [ { "expression": { @@ -9613,12 +12665,12 @@ "arguments": [ { "argumentTypes": null, - "id": 706, + "id": 928, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 700, - "src": "876:7:3", + "referencedDeclaration": 922, + "src": "876:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9634,32 +12686,32 @@ ], "expression": { "argumentTypes": null, - "id": 703, + "id": 925, "name": "_systemMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 644, - "src": "857:14:3", + "referencedDeclaration": 866, + "src": "857:14:4", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$847_storage", + "typeIdentifier": "t_struct$_Role_$1074_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 705, + "id": 927, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 879, - "src": "857:18:3", + "referencedDeclaration": 1106, + "src": "857:18:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$847_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1074_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1074_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 707, + "id": 929, "isConstant": false, "isLValue": false, "isPure": false, @@ -9667,20 +12719,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "857:27:3", + "src": "857:27:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 708, + "id": 930, "nodeType": "ExpressionStatement", - "src": "857:27:3" + "src": "857:27:4" } ] }, "documentation": null, - "id": 710, + "id": 932, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -9688,16 +12740,16 @@ "name": "_addSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 701, + "id": 923, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 700, + "id": 922, "name": "account", "nodeType": "VariableDeclaration", - "scope": 710, - "src": "820:15:3", + "scope": 932, + "src": "820:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9705,10 +12757,10 @@ "typeString": "address" }, "typeName": { - "id": 699, + "id": 921, "name": "address", "nodeType": "ElementaryTypeName", - "src": "820:7:3", + "src": "820:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9718,26 +12770,26 @@ "visibility": "internal" } ], - "src": "819:17:3" + "src": "819:17:4" }, "payable": false, "returnParameters": { - "id": 702, + "id": 924, "nodeType": "ParameterList", "parameters": [], - "src": "846:0:3" + "src": "846:0:4" }, - "scope": 723, - "src": "800:92:3", + "scope": 945, + "src": "800:92:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 721, + "id": 943, "nodeType": "Block", - "src": "949:49:3", + "src": "949:49:4", "statements": [ { "expression": { @@ -9745,12 +12797,12 @@ "arguments": [ { "argumentTypes": null, - "id": 718, + "id": 940, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 712, - "src": "982:7:3", + "referencedDeclaration": 934, + "src": "982:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9766,32 +12818,32 @@ ], "expression": { "argumentTypes": null, - "id": 715, + "id": 937, "name": "_systemMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 644, - "src": "960:14:3", + "referencedDeclaration": 866, + "src": "960:14:4", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$847_storage", + "typeIdentifier": "t_struct$_Role_$1074_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 717, + "id": 939, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 910, - "src": "960:21:3", + "referencedDeclaration": 1137, + "src": "960:21:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$847_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1074_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1074_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 719, + "id": 941, "isConstant": false, "isLValue": false, "isPure": false, @@ -9799,20 +12851,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "960:30:3", + "src": "960:30:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 720, + "id": 942, "nodeType": "ExpressionStatement", - "src": "960:30:3" + "src": "960:30:4" } ] }, "documentation": null, - "id": 722, + "id": 944, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -9820,16 +12872,16 @@ "name": "_removeSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 713, + "id": 935, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 712, + "id": 934, "name": "account", "nodeType": "VariableDeclaration", - "scope": 722, - "src": "923:15:3", + "scope": 944, + "src": "923:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9837,10 +12889,10 @@ "typeString": "address" }, "typeName": { - "id": 711, + "id": 933, "name": "address", "nodeType": "ElementaryTypeName", - "src": "923:7:3", + "src": "923:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9850,81 +12902,81 @@ "visibility": "internal" } ], - "src": "922:17:3" + "src": "922:17:4" }, "payable": false, "returnParameters": { - "id": 714, + "id": 936, "nodeType": "ParameterList", "parameters": [], - "src": "949:0:3" + "src": "949:0:4" }, - "scope": 723, - "src": "900:98:3", + "scope": 945, + "src": "900:98:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 724, - "src": "221:780:3" + "scope": 946, + "src": "221:780:4" } ], - "src": "0:1003:3" + "src": "0:1003:4" }, - "id": 3 + "id": 4 }, "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol": { "ast": { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol", "exportedSymbols": { "ERC20TokenHolder": [ - 780 + 1002 ] }, - "id": 781, + "id": 1003, "nodeType": "SourceUnit", "nodes": [ { - "id": 725, + "id": 947, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:4" + "src": "0:23:5" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "id": 726, + "id": 948, "nodeType": "ImportDirective", - "scope": 781, - "sourceUnit": 1132, - "src": "27:195:4", + "scope": 1003, + "sourceUnit": 1359, + "src": "27:195:5", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", - "id": 727, + "id": 949, "nodeType": "ImportDirective", - "scope": 781, - "sourceUnit": 1276, - "src": "224:198:4", + "scope": 1003, + "sourceUnit": 1503, + "src": "224:198:5", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", "file": "./Terminable.sol", - "id": 728, + "id": 950, "nodeType": "ImportDirective", - "scope": 781, - "sourceUnit": 841, - "src": "426:26:4", + "scope": 1003, + "sourceUnit": 1068, + "src": "426:26:5", "symbolAliases": [], "unitAlias": "" }, @@ -9934,86 +12986,86 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 729, + "id": 951, "name": "Terminable", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 840, - "src": "485:10:4", + "referencedDeclaration": 1067, + "src": "485:10:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_Terminable_$840", + "typeIdentifier": "t_contract$_Terminable_$1067", "typeString": "contract Terminable" } }, - "id": 730, + "id": 952, "nodeType": "InheritanceSpecifier", - "src": "485:10:4" + "src": "485:10:5" } ], "contractDependencies": [ - 840 + 1067 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 780, + "id": 1002, "linearizedBaseContracts": [ - 780, - 840 + 1002, + 1067 ], "name": "ERC20TokenHolder", "nodeType": "ContractDefinition", "nodes": [ { - "id": 733, + "id": 955, "libraryName": { "contractScope": null, - "id": 731, + "id": 953, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1275, - "src": "509:9:4", + "referencedDeclaration": 1502, + "src": "509:9:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1275", + "typeIdentifier": "t_contract$_SafeERC20_$1502", "typeString": "library SafeERC20" } }, "nodeType": "UsingForDirective", - "src": "503:27:4", + "src": "503:27:5", "typeName": { "contractScope": null, - "id": 732, + "id": 954, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1131, - "src": "523:6:4", + "referencedDeclaration": 1358, + "src": "523:6:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" } } }, { "constant": false, - "id": 735, + "id": 957, "name": "_token", "nodeType": "VariableDeclaration", - "scope": 780, - "src": "538:22:4", + "scope": 1002, + "src": "538:22:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 734, + "id": 956, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1131, - "src": "538:6:4", + "referencedDeclaration": 1358, + "src": "538:6:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" } }, @@ -10022,28 +13074,28 @@ }, { "body": { - "id": 748, + "id": 970, "nodeType": "Block", - "src": "625:48:4", + "src": "625:48:5", "statements": [ { "expression": { "argumentTypes": null, - "id": 746, + "id": 968, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 742, + "id": 964, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 735, - "src": "636:6:4", + "referencedDeclaration": 957, + "src": "636:6:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" } }, @@ -10054,12 +13106,12 @@ "arguments": [ { "argumentTypes": null, - "id": 744, + "id": 966, "name": "tokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 737, - "src": "652:12:4", + "referencedDeclaration": 959, + "src": "652:12:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10073,18 +13125,18 @@ "typeString": "address" } ], - "id": 743, + "id": 965, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1131, - "src": "645:6:4", + "referencedDeclaration": 1358, + "src": "645:6:5", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$1131_$", + "typeIdentifier": "t_type$_t_contract$_IERC20_$1358_$", "typeString": "type(contract IERC20)" } }, - "id": 745, + "id": 967, "isConstant": false, "isLValue": false, "isPure": false, @@ -10092,63 +13144,63 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "645:20:4", + "src": "645:20:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" } }, - "src": "636:29:4", + "src": "636:29:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" } }, - "id": 747, + "id": 969, "nodeType": "ExpressionStatement", - "src": "636:29:4" + "src": "636:29:5" } ] }, "documentation": null, - "id": 749, + "id": 971, "implemented": true, "isConstructor": true, "isDeclaredConst": false, "modifiers": [ { "arguments": [], - "id": 740, + "id": 962, "modifierName": { "argumentTypes": null, - "id": 739, + "id": 961, "name": "Terminable", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 840, - "src": "603:10:4", + "referencedDeclaration": 1067, + "src": "603:10:5", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Terminable_$840_$", + "typeIdentifier": "t_type$_t_contract$_Terminable_$1067_$", "typeString": "type(contract Terminable)" } }, "nodeType": "ModifierInvocation", - "src": "603:12:4" + "src": "603:12:5" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 738, + "id": 960, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 737, + "id": 959, "name": "tokenAddress", "nodeType": "VariableDeclaration", - "scope": 749, - "src": "581:20:4", + "scope": 971, + "src": "581:20:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10156,10 +13208,10 @@ "typeString": "address" }, "typeName": { - "id": 736, + "id": 958, "name": "address", "nodeType": "ElementaryTypeName", - "src": "581:7:4", + "src": "581:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10169,39 +13221,39 @@ "visibility": "internal" } ], - "src": "580:22:4" + "src": "580:22:5" }, "payable": false, "returnParameters": { - "id": 741, + "id": 963, "nodeType": "ParameterList", "parameters": [], - "src": "625:0:4" + "src": "625:0:5" }, - "scope": 780, - "src": "569:104:4", + "scope": 1002, + "src": "569:104:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 778, + "id": 1000, "nodeType": "Block", - "src": "712:214:4", + "src": "712:214:5", "statements": [ { "assignments": [ - 753 + 975 ], "declarations": [ { "constant": false, - "id": 753, + "id": 975, "name": "currentBalance", "nodeType": "VariableDeclaration", - "scope": 779, - "src": "723:22:4", + "scope": 1001, + "src": "723:22:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10209,10 +13261,10 @@ "typeString": "uint256" }, "typeName": { - "id": 752, + "id": 974, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "723:7:4", + "src": "723:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10222,7 +13274,7 @@ "visibility": "internal" } ], - "id": 760, + "id": 982, "initialValue": { "argumentTypes": null, "arguments": [ @@ -10231,14 +13283,14 @@ "arguments": [ { "argumentTypes": null, - "id": 757, + "id": 979, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1317, - "src": "773:4:4", + "referencedDeclaration": 1546, + "src": "773:4:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20TokenHolder_$780", + "typeIdentifier": "t_contract$_ERC20TokenHolder_$1002", "typeString": "contract ERC20TokenHolder" } } @@ -10246,24 +13298,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ERC20TokenHolder_$780", + "typeIdentifier": "t_contract$_ERC20TokenHolder_$1002", "typeString": "contract ERC20TokenHolder" } ], - "id": 756, + "id": 978, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "765:7:4", + "src": "765:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 758, + "id": 980, "isConstant": false, "isLValue": false, "isPure": false, @@ -10271,7 +13323,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "765:13:4", + "src": "765:13:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10287,32 +13339,32 @@ ], "expression": { "argumentTypes": null, - "id": 754, + "id": 976, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 735, - "src": "748:6:4", + "referencedDeclaration": 957, + "src": "748:6:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" } }, - "id": 755, + "id": 977, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 1076, - "src": "748:16:4", + "referencedDeclaration": 1303, + "src": "748:16:5", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 759, + "id": 981, "isConstant": false, "isLValue": false, "isPure": false, @@ -10320,14 +13372,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "748:31:4", + "src": "748:31:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "723:56:4" + "src": "723:56:5" }, { "condition": { @@ -10336,19 +13388,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 763, + "id": 985, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 761, + "id": 983, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 753, - "src": "793:14:4", + "referencedDeclaration": 975, + "src": "793:14:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10359,14 +13411,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 762, + "id": 984, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "810:1:4", + "src": "810:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -10374,20 +13426,20 @@ }, "value": "0" }, - "src": "793:18:4", + "src": "793:18:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 772, + "id": 994, "nodeType": "IfStatement", - "src": "790:95:4", + "src": "790:95:5", "trueBody": { - "id": 771, + "id": 993, "nodeType": "Block", - "src": "813:72:4", + "src": "813:72:5", "statements": [ { "expression": { @@ -10395,12 +13447,12 @@ "arguments": [ { "argumentTypes": null, - "id": 767, + "id": 989, "name": "_creator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 807, - "src": "848:8:4", + "referencedDeclaration": 1034, + "src": "848:8:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10408,12 +13460,12 @@ }, { "argumentTypes": null, - "id": 768, + "id": 990, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 753, - "src": "858:14:4", + "referencedDeclaration": 975, + "src": "858:14:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10433,32 +13485,32 @@ ], "expression": { "argumentTypes": null, - "id": 764, + "id": 986, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 735, - "src": "828:6:4", + "referencedDeclaration": 957, + "src": "828:6:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" } }, - "id": 766, + "id": 988, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1156, - "src": "828:19:4", + "referencedDeclaration": 1383, + "src": "828:19:5", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1131_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1131_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1358_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1358_$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 769, + "id": 991, "isConstant": false, "isLValue": false, "isPure": false, @@ -10466,15 +13518,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "828:45:4", + "src": "828:45:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 770, + "id": 992, "nodeType": "ExpressionStatement", - "src": "828:45:4" + "src": "828:45:5" } ] } @@ -10487,32 +13539,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 773, + "id": 995, "name": "Terminable", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 840, - "src": "895:10:4", + "referencedDeclaration": 1067, + "src": "895:10:5", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Terminable_$840_$", + "typeIdentifier": "t_type$_t_contract$_Terminable_$1067_$", "typeString": "type(contract Terminable)" } }, - "id": 775, + "id": 997, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "_terminate", "nodeType": "MemberAccess", - "referencedDeclaration": 839, - "src": "895:21:4", + "referencedDeclaration": 1066, + "src": "895:21:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 776, + "id": 998, "isConstant": false, "isLValue": false, "isPure": false, @@ -10520,20 +13572,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "895:23:4", + "src": "895:23:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 777, + "id": 999, "nodeType": "ExpressionStatement", - "src": "895:23:4" + "src": "895:23:5" } ] }, "documentation": null, - "id": 779, + "id": 1001, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -10541,313 +13593,46 @@ "name": "_terminate", "nodeType": "FunctionDefinition", "parameters": { - "id": 750, + "id": 972, "nodeType": "ParameterList", "parameters": [], - "src": "700:2:4" + "src": "700:2:5" }, "payable": false, "returnParameters": { - "id": 751, + "id": 973, "nodeType": "ParameterList", "parameters": [], - "src": "712:0:4" + "src": "712:0:5" }, - "scope": 780, - "src": "681:245:4", + "scope": 1002, + "src": "681:245:5", "stateMutability": "nonpayable", - "superFunction": 839, + "superFunction": 1066, "visibility": "internal" } ], - "scope": 781, - "src": "456:473:4" + "scope": 1003, + "src": "456:473:5" } ], - "src": "0:929:4" + "src": "0:929:5" }, - "id": 4 + "id": 5 }, "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol": { "ast": { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", "exportedSymbols": { "IAlgoMiner": [ - 803 + 1030 ] }, - "id": 804, + "id": 1031, "nodeType": "SourceUnit", "nodes": [ { - "id": 782, - "literals": [ - "solidity", - "0.4", - ".24" - ], - "nodeType": "PragmaDirective", - "src": "0:23:5" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": false, - "id": 803, - "linearizedBaseContracts": [ - 803 - ], - "name": "IAlgoMiner", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": null, - "documentation": null, - "id": 787, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "isAlgoMiner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 783, - "nodeType": "ParameterList", - "parameters": [], - "src": "74:2:5" - }, - "payable": false, - "returnParameters": { - "id": 786, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 785, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 787, - "src": "98:4:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 784, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "98:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "97:6:5" - }, - "scope": 803, - "src": "54:50:5", - "stateMutability": "pure", - "superFunction": null, - "visibility": "public" - }, - { - "body": null, - "documentation": null, - "id": 792, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getCategory", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 788, - "nodeType": "ParameterList", - "parameters": [], - "src": "130:2:5" - }, - "payable": false, - "returnParameters": { - "id": 791, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 790, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 792, - "src": "154:5:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 789, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "154:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "153:7:5" - }, - "scope": 803, - "src": "110:51:5", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": null, - "documentation": null, - "id": 797, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "isMining", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 793, - "nodeType": "ParameterList", - "parameters": [], - "src": "184:2:5" - }, - "payable": false, - "returnParameters": { - "id": 796, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 795, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 797, - "src": "208:4:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 794, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "208:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "207:6:5" - }, - "scope": 803, - "src": "167:47:5", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": null, - "documentation": null, - "id": 802, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getMiner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 798, - "nodeType": "ParameterList", - "parameters": [], - "src": "237:2:5" - }, - "payable": false, - "returnParameters": { - "id": 801, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 800, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 802, - "src": "261:7:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 799, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "261:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "260:9:5" - }, - "scope": 803, - "src": "220:50:5", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 804, - "src": "27:246:5" - } - ], - "src": "0:273:5" - }, - "id": 5 - }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol": { - "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", - "exportedSymbols": { - "Terminable": [ - 840 - ] - }, - "id": 841, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 805, + "id": 1004, "literals": [ "solidity", "0.4", @@ -10861,21 +13646,344 @@ "contractDependencies": [], "contractKind": "contract", "documentation": null, - "fullyImplemented": true, - "id": 840, + "fullyImplemented": false, + "id": 1030, "linearizedBaseContracts": [ - 840 + 1030 + ], + "name": "IAlgoMiner", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 1009, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isAlgoMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1005, + "nodeType": "ParameterList", + "parameters": [], + "src": "74:2:6" + }, + "payable": false, + "returnParameters": { + "id": 1008, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1007, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1009, + "src": "98:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1006, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "98:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "97:6:6" + }, + "scope": 1030, + "src": "54:50:6", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 1014, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getMinerType", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1010, + "nodeType": "ParameterList", + "parameters": [], + "src": "131:2:6" + }, + "payable": false, + "returnParameters": { + "id": 1013, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1012, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1014, + "src": "155:5:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1011, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "155:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "154:7:6" + }, + "scope": 1030, + "src": "110:52:6", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 1019, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getCategory", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1015, + "nodeType": "ParameterList", + "parameters": [], + "src": "188:2:6" + }, + "payable": false, + "returnParameters": { + "id": 1018, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1017, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1019, + "src": "212:5:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1016, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "212:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "211:7:6" + }, + "scope": 1030, + "src": "168:51:6", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 1024, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isMining", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1020, + "nodeType": "ParameterList", + "parameters": [], + "src": "242:2:6" + }, + "payable": false, + "returnParameters": { + "id": 1023, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1022, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1024, + "src": "266:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1021, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "266:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "265:6:6" + }, + "scope": 1030, + "src": "225:47:6", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 1029, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1025, + "nodeType": "ParameterList", + "parameters": [], + "src": "295:2:6" + }, + "payable": false, + "returnParameters": { + "id": 1028, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1027, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1029, + "src": "319:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1026, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "319:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "318:9:6" + }, + "scope": 1030, + "src": "278:50:6", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1031, + "src": "27:304:6" + } + ], + "src": "0:331:6" + }, + "id": 6 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", + "exportedSymbols": { + "Terminable": [ + 1067 + ] + }, + "id": 1068, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1032, + "literals": [ + "solidity", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:23:7" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 1067, + "linearizedBaseContracts": [ + 1067 ], "name": "Terminable", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 807, + "id": 1034, "name": "_creator", "nodeType": "VariableDeclaration", - "scope": 840, - "src": "56:25:6", + "scope": 1067, + "src": "56:25:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -10883,10 +13991,10 @@ "typeString": "address" }, "typeName": { - "id": 806, + "id": 1033, "name": "address", "nodeType": "ElementaryTypeName", - "src": "56:7:6", + "src": "56:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10897,11 +14005,11 @@ }, { "constant": false, - "id": 809, + "id": 1036, "name": "_terminated", "nodeType": "VariableDeclaration", - "scope": 840, - "src": "88:25:6", + "scope": 1067, + "src": "88:25:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -10909,10 +14017,10 @@ "typeString": "bool" }, "typeName": { - "id": 808, + "id": 1035, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "88:4:6", + "src": "88:4:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10923,26 +14031,26 @@ }, { "body": { - "id": 821, + "id": 1048, "nodeType": "Block", - "src": "145:70:6", + "src": "145:70:7", "statements": [ { "expression": { "argumentTypes": null, - "id": 815, + "id": 1042, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 812, + "id": 1039, "name": "_creator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 807, - "src": "156:8:6", + "referencedDeclaration": 1034, + "src": "156:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10954,18 +14062,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 813, + "id": 1040, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1290, - "src": "167:3:6", + "referencedDeclaration": 1517, + "src": "167:3:7", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 814, + "id": 1041, "isConstant": false, "isLValue": false, "isPure": false, @@ -10973,38 +14081,38 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "167:10:6", + "src": "167:10:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "156:21:6", + "src": "156:21:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 816, + "id": 1043, "nodeType": "ExpressionStatement", - "src": "156:21:6" + "src": "156:21:7" }, { "expression": { "argumentTypes": null, - "id": 819, + "id": 1046, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 817, + "id": 1044, "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 809, - "src": "188:11:6", + "referencedDeclaration": 1036, + "src": "188:11:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11015,14 +14123,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 818, + "id": 1045, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "202:5:6", + "src": "202:5:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -11030,20 +14138,20 @@ }, "value": "false" }, - "src": "188:19:6", + "src": "188:19:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 820, + "id": 1047, "nodeType": "ExpressionStatement", - "src": "188:19:6" + "src": "188:19:7" } ] }, "documentation": null, - "id": 822, + "id": 1049, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -11051,29 +14159,29 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 810, + "id": 1037, "nodeType": "ParameterList", "parameters": [], - "src": "133:2:6" + "src": "133:2:7" }, "payable": false, "returnParameters": { - "id": 811, + "id": 1038, "nodeType": "ParameterList", "parameters": [], - "src": "145:0:6" + "src": "145:0:7" }, - "scope": 840, - "src": "122:93:6", + "scope": 1067, + "src": "122:93:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 830, + "id": 1057, "nodeType": "Block", - "src": "248:52:6", + "src": "248:52:7", "statements": [ { "expression": { @@ -11081,2897 +14189,28 @@ "arguments": [ { "argumentTypes": null, - "id": 826, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "267:12:6", - "subExpression": { - "argumentTypes": null, - "id": 825, - "name": "_terminated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 809, - "src": "268:11:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 824, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1293, - 1294 - ], - "referencedDeclaration": 1293, - "src": "259:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 827, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "259:21:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 828, - "nodeType": "ExpressionStatement", - "src": "259:21:6" - }, - { - "id": 829, - "nodeType": "PlaceholderStatement", - "src": "291:1:6" - } - ] - }, - "documentation": null, - "id": 831, - "name": "notTerminated", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 823, - "nodeType": "ParameterList", - "parameters": [], - "src": "245:2:6" - }, - "src": "223:77:6", - "visibility": "internal" - }, - { - "body": { - "id": 838, - "nodeType": "Block", - "src": "339:37:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 836, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 834, - "name": "_terminated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 809, - "src": "350:11:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 835, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "364:4:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "350:18:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 837, - "nodeType": "ExpressionStatement", - "src": "350:18:6" - } - ] - }, - "documentation": null, - "id": 839, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "_terminate", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 832, - "nodeType": "ParameterList", - "parameters": [], - "src": "327:2:6" - }, - "payable": false, - "returnParameters": { - "id": 833, - "nodeType": "ParameterList", - "parameters": [], - "src": "339:0:6" - }, - "scope": 840, - "src": "308:68:6", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 841, - "src": "27:352:6" - } - ], - "src": "0:379:6" - }, - "id": 6 - }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { - "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", - "exportedSymbols": { - "Roles": [ - 934 - ] - }, - "id": 935, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 842, - "literals": [ - "solidity", - "^", - "0.4", - ".24" - ], - "nodeType": "PragmaDirective", - "src": "0:24:7" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", - "fullyImplemented": true, - "id": 934, - "linearizedBaseContracts": [ - 934 - ], - "name": "Roles", - "nodeType": "ContractDefinition", - "nodes": [ - { - "canonicalName": "Roles.Role", - "id": 847, - "members": [ - { - "constant": false, - "id": 846, - "name": "bearer", - "nodeType": "VariableDeclaration", - "scope": 847, - "src": "145:32:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 845, - "keyType": { - "id": 843, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "154:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "145:25:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 844, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "165:4:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "internal" - } - ], - "name": "Role", - "nodeType": "StructDefinition", - "scope": 934, - "src": "127:55:7", - "visibility": "public" - }, - { - "body": { - "id": 878, - "nodeType": "Block", - "src": "302:109:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 859, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 855, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 851, - "src": "316:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 857, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "335:1:7", - "subdenomination": null, - "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": 856, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "327:7:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 858, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "327:10:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "316:21:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 854, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1293, - 1294 - ], - "referencedDeclaration": 1293, - "src": "308:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 860, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "308:30:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 861, - "nodeType": "ExpressionStatement", - "src": "308:30:7" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 867, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "352:19:7", - "subExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 864, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 849, - "src": "357:4:7", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$847_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - { - "argumentTypes": null, - "id": 865, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 851, - "src": "363:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Role_$847_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 863, - "name": "has", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 933, - "src": "353:3:7", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$_t_bool_$", - "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" - } - }, - "id": 866, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "353:18:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 862, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1293, - 1294 - ], - "referencedDeclaration": 1293, - "src": "344:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 868, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "344:28:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 869, - "nodeType": "ExpressionStatement", - "src": "344:28:7" - }, - { - "expression": { - "argumentTypes": null, - "id": 876, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 870, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 849, - "src": "379:4:7", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$847_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - "id": 873, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "bearer", - "nodeType": "MemberAccess", - "referencedDeclaration": 846, - "src": "379:11:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 874, - "indexExpression": { - "argumentTypes": null, - "id": 872, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 851, - "src": "391:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "379:20:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 875, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "402:4:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "379:27:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 877, - "nodeType": "ExpressionStatement", - "src": "379:27:7" - } - ] - }, - "documentation": "@dev give an account access to this role", - "id": 879, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "add", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 852, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 849, - "name": "role", - "nodeType": "VariableDeclaration", - "scope": 879, - "src": "257:17:7", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$847_storage_ptr", - "typeString": "struct Roles.Role" - }, - "typeName": { - "contractScope": null, - "id": 848, - "name": "Role", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 847, - "src": "257:4:7", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$847_storage_ptr", - "typeString": "struct Roles.Role" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 851, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 879, - "src": "276:15:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 850, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "276:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "256:36:7" - }, - "payable": false, - "returnParameters": { - "id": 853, - "nodeType": "ParameterList", - "parameters": [], - "src": "302:0:7" - }, - "scope": 934, - "src": "244:167:7", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 909, - "nodeType": "Block", - "src": "538:109:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 891, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 887, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 883, - "src": "552:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 889, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "571:1:7", - "subdenomination": null, - "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": 888, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "563:7:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 890, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "563:10:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "552:21:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 886, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1293, - 1294 - ], - "referencedDeclaration": 1293, - "src": "544:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 892, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "544:30:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 893, - "nodeType": "ExpressionStatement", - "src": "544:30:7" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 896, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 881, - "src": "592:4:7", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$847_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - { - "argumentTypes": null, - "id": 897, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 883, - "src": "598:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Role_$847_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 895, - "name": "has", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 933, - "src": "588:3:7", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$_t_bool_$", - "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" - } - }, - "id": 898, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "588:18:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 894, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1293, - 1294 - ], - "referencedDeclaration": 1293, - "src": "580:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 899, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "580:27:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 900, - "nodeType": "ExpressionStatement", - "src": "580:27:7" - }, - { - "expression": { - "argumentTypes": null, - "id": 907, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 901, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 881, - "src": "614:4:7", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$847_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - "id": 904, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "bearer", - "nodeType": "MemberAccess", - "referencedDeclaration": 846, - "src": "614:11:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 905, - "indexExpression": { - "argumentTypes": null, - "id": 903, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 883, - "src": "626:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "614:20:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 906, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "637:5:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "614:28:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 908, - "nodeType": "ExpressionStatement", - "src": "614:28:7" - } - ] - }, - "documentation": "@dev remove an account's access to this role", - "id": 910, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "remove", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 884, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 881, - "name": "role", - "nodeType": "VariableDeclaration", - "scope": 910, - "src": "493:17:7", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$847_storage_ptr", - "typeString": "struct Roles.Role" - }, - "typeName": { - "contractScope": null, - "id": 880, - "name": "Role", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 847, - "src": "493:4:7", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$847_storage_ptr", - "typeString": "struct Roles.Role" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 883, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 910, - "src": "512:15:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 882, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "512:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "492:36:7" - }, - "payable": false, - "returnParameters": { - "id": 885, - "nodeType": "ParameterList", - "parameters": [], - "src": "538:0:7" - }, - "scope": 934, - "src": "477:170:7", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 932, - "nodeType": "Block", - "src": "817:74:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 924, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 920, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 914, - "src": "831:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 922, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "850:1:7", - "subdenomination": null, - "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": 921, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "842:7:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 923, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "842:10:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "831:21:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 919, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1293, - 1294 - ], - "referencedDeclaration": 1293, - "src": "823:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 925, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "823:30:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 926, - "nodeType": "ExpressionStatement", - "src": "823:30:7" - }, - { - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 927, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 912, - "src": "866:4:7", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$847_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - "id": 928, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "bearer", - "nodeType": "MemberAccess", - "referencedDeclaration": 846, - "src": "866:11:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 930, - "indexExpression": { - "argumentTypes": null, - "id": 929, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 914, - "src": "878:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "866:20:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 918, - "id": 931, - "nodeType": "Return", - "src": "859:27:7" - } - ] - }, - "documentation": "@dev check if an account has this role\n@return bool", - "id": 933, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "has", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 915, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 912, - "name": "role", - "nodeType": "VariableDeclaration", - "scope": 933, - "src": "738:17:7", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$847_storage_ptr", - "typeString": "struct Roles.Role" - }, - "typeName": { - "contractScope": null, - "id": 911, - "name": "Role", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 847, - "src": "738:4:7", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$847_storage_ptr", - "typeString": "struct Roles.Role" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 914, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 933, - "src": "757:15:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 913, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "757:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "737:36:7" - }, - "payable": false, - "returnParameters": { - "id": 918, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 917, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 933, - "src": "809:4:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 916, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "809:4:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "808:6:7" - }, - "scope": 934, - "src": "725:166:7", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 935, - "src": "109:784:7" - } - ], - "src": "0:894:7" - }, - "id": 7 - }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { - "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", - "exportedSymbols": { - "SafeMath": [ - 1062 - ] - }, - "id": 1063, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 936, - "literals": [ - "solidity", - "^", - "0.4", - ".24" - ], - "nodeType": "PragmaDirective", - "src": "0:24:8" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", - "fullyImplemented": true, - "id": 1062, - "linearizedBaseContracts": [ - 1062 - ], - "name": "SafeMath", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 968, - "nodeType": "Block", - "src": "271:314:8", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 947, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 945, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 938, - "src": "486:1:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 946, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "491:1:8", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "486:6:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 951, - "nodeType": "IfStatement", - "src": "482:35:8", - "trueBody": { - "id": 950, - "nodeType": "Block", - "src": "494:23:8", - "statements": [ - { - "expression": { - "argumentTypes": null, - "hexValue": "30", - "id": 948, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "509:1:8", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "functionReturnParameters": 944, - "id": 949, - "nodeType": "Return", - "src": "502:8:8" - } - ] - } - }, - { - "assignments": [ - 953 - ], - "declarations": [ - { - "constant": false, - "id": 953, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 969, - "src": "523:9:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 952, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "523:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 957, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 956, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 954, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 938, - "src": "535:1:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "id": 955, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 940, - "src": "539:1:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "535:5:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "523:17:8" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 963, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 961, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 959, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 953, - "src": "554:1:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "id": 960, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 938, - "src": "558:1:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "554:5:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 962, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 940, - "src": "563:1:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "554:10:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 958, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1293, - 1294 - ], - "referencedDeclaration": 1293, - "src": "546:7:8", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 964, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "546:19:8", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 965, - "nodeType": "ExpressionStatement", - "src": "546:19:8" - }, - { - "expression": { - "argumentTypes": null, - "id": 966, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 953, - "src": "579:1:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 944, - "id": 967, - "nodeType": "Return", - "src": "572:8:8" - } - ] - }, - "documentation": "@dev Multiplies two numbers, reverts on overflow.", - "id": 969, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "mul", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 941, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 938, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 969, - "src": "217:9:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 937, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "217:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 940, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 969, - "src": "228:9:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 939, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "228:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "216:22:8" - }, - "payable": false, - "returnParameters": { - "id": 944, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 943, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 969, - "src": "262:7:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 942, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "262:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "261:9:8" - }, - "scope": 1062, - "src": "204:381:8", - "stateMutability": "pure", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 992, - "nodeType": "Block", - "src": "762:203:8", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 981, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 979, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 973, - "src": "776:1:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 980, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "780:1:8", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "776:5:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 978, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1293, - 1294 - ], - "referencedDeclaration": 1293, - "src": "768:7:8", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 982, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "768:14:8", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 983, - "nodeType": "ExpressionStatement", - "src": "768:14:8" - }, - { - "assignments": [ - 985 - ], - "declarations": [ - { - "constant": false, - "id": 985, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 993, - "src": "846:9:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 984, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "846:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 989, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 988, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 986, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 971, - "src": "858:1:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "id": 987, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 973, - "src": "862:1:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "858:5:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "846:17:8" - }, - { - "expression": { - "argumentTypes": null, - "id": 990, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "959:1:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 977, - "id": 991, - "nodeType": "Return", - "src": "952:8:8" - } - ] - }, - "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", - "id": 993, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "div", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 974, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 971, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 993, - "src": "708:9:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 970, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "708:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 973, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 993, - "src": "719:9:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 972, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "719:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "707:22:8" - }, - "payable": false, - "returnParameters": { - "id": 977, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 976, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 993, - "src": "753:7:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 975, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "753:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "752:9:8" - }, - "scope": 1062, - "src": "695:270:8", - "stateMutability": "pure", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 1016, - "nodeType": "Block", - "src": "1145:64:8", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1005, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1003, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 997, - "src": "1159:1:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "id": 1004, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 995, - "src": "1164:1:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1159:6:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1002, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1293, - 1294 - ], - "referencedDeclaration": 1293, - "src": "1151:7:8", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1006, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1151:15:8", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1007, - "nodeType": "ExpressionStatement", - "src": "1151:15:8" - }, - { - "assignments": [ - 1009 - ], - "declarations": [ - { - "constant": false, - "id": 1009, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 1017, - "src": "1172:9:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1008, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1172:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1013, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1012, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1010, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 995, - "src": "1184:1:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 1011, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 997, - "src": "1188:1:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1184:5:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1172:17:8" - }, - { - "expression": { - "argumentTypes": null, - "id": 1014, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1009, - "src": "1203:1:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 1001, - "id": 1015, - "nodeType": "Return", - "src": "1196:8:8" - } - ] - }, - "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", - "id": 1017, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "sub", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 998, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 995, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 1017, - "src": "1091:9:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 994, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1091:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 997, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 1017, - "src": "1102:9:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 996, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1102:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1090:22:8" - }, - "payable": false, - "returnParameters": { - "id": 1001, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1000, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1017, - "src": "1136:7:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 999, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1136:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1135:9:8" - }, - "scope": 1062, - "src": "1078:131:8", - "stateMutability": "pure", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 1040, - "nodeType": "Block", - "src": "1339:64:8", - "statements": [ - { - "assignments": [ - 1027 - ], - "declarations": [ - { - "constant": false, - "id": 1027, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 1041, - "src": "1345:9:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1026, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1345:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1031, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1030, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1028, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1019, - "src": "1357:1:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 1029, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1021, - "src": "1361:1:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1357:5:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1345:17:8" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1035, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1033, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1027, - "src": "1376:1:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "id": 1034, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1019, - "src": "1381:1:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1376:6:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1032, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1293, - 1294 - ], - "referencedDeclaration": 1293, - "src": "1368:7:8", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1036, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1368:15:8", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1037, - "nodeType": "ExpressionStatement", - "src": "1368:15:8" - }, - { - "expression": { - "argumentTypes": null, - "id": 1038, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1027, - "src": "1397:1:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 1025, - "id": 1039, - "nodeType": "Return", - "src": "1390:8:8" - } - ] - }, - "documentation": "@dev Adds two numbers, reverts on overflow.", - "id": 1041, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "add", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1022, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1019, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 1041, - "src": "1285:9:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1018, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1285:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1021, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 1041, - "src": "1296:9:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1020, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1296:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1284:22:8" - }, - "payable": false, - "returnParameters": { - "id": 1025, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1024, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1041, - "src": "1330:7:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1023, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1330:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1329:9:8" - }, - "scope": 1062, - "src": "1272:131:8", - "stateMutability": "pure", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 1060, - "nodeType": "Block", - "src": "1602:44:8", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, "id": 1053, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftExpression": { + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "267:12:7", + "subExpression": { "argumentTypes": null, - "id": 1051, - "name": "b", + "id": 1052, + "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1045, - "src": "1616:1:8", + "referencedDeclaration": 1036, + "src": "268:11:7", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1052, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1621:1:8", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1616:6:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -13985,15 +14224,15 @@ "typeString": "bool" } ], - "id": 1050, + "id": 1051, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1293, - 1294 + 1520, + 1521 ], - "referencedDeclaration": 1293, - "src": "1608:7:8", + "referencedDeclaration": 1520, + "src": "259:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -14007,7 +14246,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1608:15:8", + "src": "259:21:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -14015,94 +14254,609 @@ }, "id": 1055, "nodeType": "ExpressionStatement", - "src": "1608:15:8" + "src": "259:21:7" }, + { + "id": 1056, + "nodeType": "PlaceholderStatement", + "src": "291:1:7" + } + ] + }, + "documentation": null, + "id": 1058, + "name": "notTerminated", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1050, + "nodeType": "ParameterList", + "parameters": [], + "src": "245:2:7" + }, + "src": "223:77:7", + "visibility": "internal" + }, + { + "body": { + "id": 1065, + "nodeType": "Block", + "src": "339:37:7", + "statements": [ { "expression": { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1058, + "id": 1063, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftExpression": { + "leftHandSide": { "argumentTypes": null, - "id": 1056, - "name": "a", + "id": 1061, + "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1043, - "src": "1636:1:8", + "referencedDeclaration": 1036, + "src": "350:11:7", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { "argumentTypes": null, - "id": 1057, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1045, - "src": "1640:1:8", + "hexValue": "74727565", + "id": 1062, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "364:4:7", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" }, - "src": "1636:5:8", + "src": "350:18:7", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "functionReturnParameters": 1049, - "id": 1059, - "nodeType": "Return", - "src": "1629:12:8" + "id": 1064, + "nodeType": "ExpressionStatement", + "src": "350:18:7" } ] }, - "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", - "id": 1061, + "documentation": null, + "id": 1066, "implemented": true, "isConstructor": false, - "isDeclaredConst": true, + "isDeclaredConst": false, "modifiers": [], - "name": "mod", + "name": "_terminate", "nodeType": "FunctionDefinition", "parameters": { - "id": 1046, + "id": 1059, + "nodeType": "ParameterList", + "parameters": [], + "src": "327:2:7" + }, + "payable": false, + "returnParameters": { + "id": 1060, + "nodeType": "ParameterList", + "parameters": [], + "src": "339:0:7" + }, + "scope": 1067, + "src": "308:68:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 1068, + "src": "27:352:7" + } + ], + "src": "0:379:7" + }, + "id": 7 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "exportedSymbols": { + "Roles": [ + 1161 + ] + }, + "id": 1162, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1069, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:8" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", + "fullyImplemented": true, + "id": 1161, + "linearizedBaseContracts": [ + 1161 + ], + "name": "Roles", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "Roles.Role", + "id": 1074, + "members": [ + { + "constant": false, + "id": 1073, + "name": "bearer", + "nodeType": "VariableDeclaration", + "scope": 1074, + "src": "145:32:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 1072, + "keyType": { + "id": 1070, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "154:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "145:25:8", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 1071, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "165:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Role", + "nodeType": "StructDefinition", + "scope": 1161, + "src": "127:55:8", + "visibility": "public" + }, + { + "body": { + "id": 1105, + "nodeType": "Block", + "src": "302:109:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1086, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1082, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1078, + "src": "316:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1084, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "335:1:8", + "subdenomination": null, + "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": 1083, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "327:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1085, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "327:10:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "316:21:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1081, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1520, + 1521 + ], + "referencedDeclaration": 1520, + "src": "308:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1087, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "308:30:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1088, + "nodeType": "ExpressionStatement", + "src": "308:30:8" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "352:19:8", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1091, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1076, + "src": "357:4:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 1092, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1078, + "src": "363:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1090, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1160, + "src": "353:3:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1074_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 1093, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "353:18:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1089, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1520, + 1521 + ], + "referencedDeclaration": 1520, + "src": "344:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "344:28:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1096, + "nodeType": "ExpressionStatement", + "src": "344:28:8" + }, + { + "expression": { + "argumentTypes": null, + "id": 1103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1097, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1076, + "src": "379:4:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 1100, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1073, + "src": "379:11:8", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1101, + "indexExpression": { + "argumentTypes": null, + "id": 1099, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1078, + "src": "391:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "379:20:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1102, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "402:4:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "379:27:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1104, + "nodeType": "ExpressionStatement", + "src": "379:27:8" + } + ] + }, + "documentation": "@dev give an account access to this role", + "id": 1106, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1079, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1043, - "name": "a", + "id": 1076, + "name": "role", "nodeType": "VariableDeclaration", - "scope": 1061, - "src": "1548:9:8", + "scope": 1106, + "src": "257:17:8", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeString": "struct Roles.Role" }, "typeName": { - "id": 1042, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1548:7:8", + "contractScope": null, + "id": 1075, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1074, + "src": "257:4:8", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeString": "struct Roles.Role" } }, "value": null, @@ -14110,95 +14864,805 @@ }, { "constant": false, - "id": 1045, - "name": "b", + "id": 1078, + "name": "account", "nodeType": "VariableDeclaration", - "scope": 1061, - "src": "1559:9:8", + "scope": 1106, + "src": "276:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 1044, - "name": "uint256", + "id": 1077, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "1559:7:8", + "src": "276:7:8", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "value": null, "visibility": "internal" } ], - "src": "1547:22:8" + "src": "256:36:8" }, "payable": false, "returnParameters": { - "id": 1049, + "id": 1080, + "nodeType": "ParameterList", + "parameters": [], + "src": "302:0:8" + }, + "scope": 1161, + "src": "244:167:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1136, + "nodeType": "Block", + "src": "538:109:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1114, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1110, + "src": "552:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1116, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "571:1:8", + "subdenomination": null, + "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": 1115, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "563:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1117, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "563:10:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "552:21:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1113, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1520, + 1521 + ], + "referencedDeclaration": 1520, + "src": "544:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "544:30:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1120, + "nodeType": "ExpressionStatement", + "src": "544:30:8" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1123, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1108, + "src": "592:4:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 1124, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1110, + "src": "598:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1122, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1160, + "src": "588:3:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1074_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 1125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "588:18:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1121, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1520, + 1521 + ], + "referencedDeclaration": 1520, + "src": "580:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "580:27:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1127, + "nodeType": "ExpressionStatement", + "src": "580:27:8" + }, + { + "expression": { + "argumentTypes": null, + "id": 1134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1128, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1108, + "src": "614:4:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 1131, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1073, + "src": "614:11:8", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1132, + "indexExpression": { + "argumentTypes": null, + "id": 1130, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1110, + "src": "626:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "614:20:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1133, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "637:5:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "614:28:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1135, + "nodeType": "ExpressionStatement", + "src": "614:28:8" + } + ] + }, + "documentation": "@dev remove an account's access to this role", + "id": 1137, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "remove", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1111, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1048, - "name": "", + "id": 1108, + "name": "role", "nodeType": "VariableDeclaration", - "scope": 1061, - "src": "1593:7:8", + "scope": 1137, + "src": "493:17:8", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 1107, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1074, + "src": "493:4:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1110, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1137, + "src": "512:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 1047, - "name": "uint256", + "id": 1109, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "1593:7:8", + "src": "512:7:8", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "value": null, "visibility": "internal" } ], - "src": "1592:9:8" + "src": "492:36:8" }, - "scope": 1062, - "src": "1535:111:8", - "stateMutability": "pure", + "payable": false, + "returnParameters": { + "id": 1112, + "nodeType": "ParameterList", + "parameters": [], + "src": "538:0:8" + }, + "scope": 1161, + "src": "477:170:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1159, + "nodeType": "Block", + "src": "817:74:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1147, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1141, + "src": "831:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1149, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "850:1:8", + "subdenomination": null, + "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": 1148, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "842:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1150, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "842:10:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "831:21:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1146, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1520, + 1521 + ], + "referencedDeclaration": 1520, + "src": "823:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "823:30:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1153, + "nodeType": "ExpressionStatement", + "src": "823:30:8" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1154, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1139, + "src": "866:4:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 1155, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1073, + "src": "866:11:8", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1157, + "indexExpression": { + "argumentTypes": null, + "id": 1156, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1141, + "src": "878:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "866:20:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1145, + "id": 1158, + "nodeType": "Return", + "src": "859:27:8" + } + ] + }, + "documentation": "@dev check if an account has this role\n@return bool", + "id": 1160, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "has", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1142, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1139, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1160, + "src": "738:17:8", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 1138, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1074, + "src": "738:4:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1141, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1160, + "src": "757:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1140, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "757:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "737:36:8" + }, + "payable": false, + "returnParameters": { + "id": 1145, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1144, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1160, + "src": "809:4:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1143, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "809:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "808:6:8" + }, + "scope": 1161, + "src": "725:166:8", + "stateMutability": "view", "superFunction": null, "visibility": "internal" } ], - "scope": 1063, - "src": "117:1531:8" + "scope": 1162, + "src": "109:784:8" } ], - "src": "0:1649:8" + "src": "0:894:8" }, "id": 8 }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "exportedSymbols": { - "IERC20": [ - 1131 + "SafeMath": [ + 1289 ] }, - "id": 1132, + "id": 1290, "nodeType": "SourceUnit", "nodes": [ { - "id": 1064, + "id": 1163, "literals": [ "solidity", "^", @@ -14211,420 +15675,351 @@ { "baseContracts": [], "contractDependencies": [], - "contractKind": "interface", - "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", - "fullyImplemented": false, - "id": 1131, + "contractKind": "library", + "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", + "fullyImplemented": true, + "id": 1289, "linearizedBaseContracts": [ - 1131 + 1289 ], - "name": "IERC20", + "name": "SafeMath", "nodeType": "ContractDefinition", "nodes": [ { - "body": null, - "documentation": null, - "id": 1069, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "totalSupply", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1065, - "nodeType": "ParameterList", - "parameters": [], - "src": "156:2:9" - }, - "payable": false, - "returnParameters": { - "id": 1068, - "nodeType": "ParameterList", - "parameters": [ + "body": { + "id": 1195, + "nodeType": "Block", + "src": "271:314:9", + "statements": [ { - "constant": false, - "id": 1067, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1069, - "src": "182:7:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1066, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "182:7:9", - "typeDescriptions": { + "condition": { + "argumentTypes": null, + "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "181:9:9" - }, - "scope": 1131, - "src": "136:55:9", - "stateMutability": "view", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 1076, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "balanceOf", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1072, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1071, - "name": "who", - "nodeType": "VariableDeclaration", - "scope": 1076, - "src": "214:11:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1070, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "214:7:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "213:13:9" - }, - "payable": false, - "returnParameters": { - "id": 1075, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1074, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1076, - "src": "250:7:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1073, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "250:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "249:9:9" - }, - "scope": 1131, - "src": "195:64:9", - "stateMutability": "view", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 1085, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "allowance", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1081, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1078, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 1085, - "src": "282:13:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1077, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "282:7:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1080, - "name": "spender", - "nodeType": "VariableDeclaration", - "scope": 1085, - "src": "297:15:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1079, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "297:7:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "281:32:9" - }, - "payable": false, - "returnParameters": { - "id": 1084, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1083, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1085, - "src": "341:7:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1082, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "341:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "340:9:9" - }, - "scope": 1131, - "src": "263:87:9", - "stateMutability": "view", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 1094, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "transfer", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1090, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1087, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1094, - "src": "372:10:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1086, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "372:7:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1089, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1094, - "src": "384:13:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1088, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "384:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "371:27:9" - }, - "payable": false, - "returnParameters": { - "id": 1093, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1092, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1094, - "src": "417:4:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1091, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "417:4:9", + }, + "id": 1174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1172, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1165, + "src": "486:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1173, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "491:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "486:6:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "value": null, - "visibility": "internal" + "falseBody": null, + "id": 1178, + "nodeType": "IfStatement", + "src": "482:35:9", + "trueBody": { + "id": 1177, + "nodeType": "Block", + "src": "494:23:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1175, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "509:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 1171, + "id": 1176, + "nodeType": "Return", + "src": "502:8:9" + } + ] + } + }, + { + "assignments": [ + 1180 + ], + "declarations": [ + { + "constant": false, + "id": 1180, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 1196, + "src": "523:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1179, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "523:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1184, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1181, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1165, + "src": "535:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 1182, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1167, + "src": "539:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "535:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "523:17:9" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1186, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1180, + "src": "554:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 1187, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1165, + "src": "558:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "554:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1189, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1167, + "src": "563:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "554:10:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1185, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1520, + 1521 + ], + "referencedDeclaration": 1520, + "src": "546:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "546:19:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1192, + "nodeType": "ExpressionStatement", + "src": "546:19:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 1193, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1180, + "src": "579:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1171, + "id": 1194, + "nodeType": "Return", + "src": "572:8:9" } - ], - "src": "416:6:9" + ] }, - "scope": 1131, - "src": "354:69:9", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 1103, - "implemented": false, + "documentation": "@dev Multiplies two numbers, reverts on overflow.", + "id": 1196, + "implemented": true, "isConstructor": false, - "isDeclaredConst": false, + "isDeclaredConst": true, "modifiers": [], - "name": "approve", + "name": "mul", "nodeType": "FunctionDefinition", "parameters": { - "id": 1099, + "id": 1168, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1096, - "name": "spender", + "id": 1165, + "name": "a", "nodeType": "VariableDeclaration", - "scope": 1103, - "src": "444:15:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1095, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "444:7:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1098, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1103, - "src": "461:13:9", + "scope": 1196, + "src": "217:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14632,10 +16027,36 @@ "typeString": "uint256" }, "typeName": { - "id": 1097, + "id": 1164, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "461:7:9", + "src": "217:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1167, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 1196, + "src": "228:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1166, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "228:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14645,121 +16066,20 @@ "visibility": "internal" } ], - "src": "443:32:9" + "src": "216:22:9" }, "payable": false, "returnParameters": { - "id": 1102, + "id": 1171, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1101, + "id": 1170, "name": "", "nodeType": "VariableDeclaration", - "scope": 1103, - "src": "498:4:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1100, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "498:4:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "497:6:9" - }, - "scope": 1131, - "src": "427:77:9", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 1114, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "transferFrom", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1110, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1105, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 1114, - "src": "530:12:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1104, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "530:7:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1107, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1114, - "src": "544:10:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1106, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "544:7:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1109, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1114, - "src": "556:13:9", + "scope": 1196, + "src": "262:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14767,10 +16087,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1108, + "id": 1169, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "556:7:9", + "src": "262:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14780,120 +16100,539 @@ "visibility": "internal" } ], - "src": "529:41:9" + "src": "261:9:9" + }, + "scope": 1289, + "src": "204:381:9", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1219, + "nodeType": "Block", + "src": "762:203:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1206, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1200, + "src": "776:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1207, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "780:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "776:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1205, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1520, + 1521 + ], + "referencedDeclaration": 1520, + "src": "768:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "768:14:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1210, + "nodeType": "ExpressionStatement", + "src": "768:14:9" + }, + { + "assignments": [ + 1212 + ], + "declarations": [ + { + "constant": false, + "id": 1212, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 1220, + "src": "846:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1211, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "846:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1216, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1213, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1198, + "src": "858:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 1214, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1200, + "src": "862:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "858:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "846:17:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 1217, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1212, + "src": "959:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1204, + "id": 1218, + "nodeType": "Return", + "src": "952:8:9" + } + ] + }, + "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", + "id": 1220, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1201, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1198, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 1220, + "src": "708:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1197, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "708:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1200, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 1220, + "src": "719:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1199, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "719:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "707:22:9" }, "payable": false, "returnParameters": { - "id": 1113, + "id": 1204, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1112, + "id": 1203, "name": "", "nodeType": "VariableDeclaration", - "scope": 1114, - "src": "593:4:9", + "scope": 1220, + "src": "753:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 1111, - "name": "bool", + "id": 1202, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "593:4:9", + "src": "753:7:9", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], - "src": "592:6:9" + "src": "752:9:9" }, - "scope": 1131, - "src": "508:91:9", - "stateMutability": "nonpayable", + "scope": 1289, + "src": "695:270:9", + "stateMutability": "pure", "superFunction": null, - "visibility": "external" + "visibility": "internal" }, { - "anonymous": false, - "documentation": null, - "id": 1122, - "name": "Transfer", - "nodeType": "EventDefinition", + "body": { + "id": 1243, + "nodeType": "Block", + "src": "1145:64:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1230, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1224, + "src": "1159:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 1231, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1222, + "src": "1164:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1159:6:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1229, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1520, + 1521 + ], + "referencedDeclaration": 1520, + "src": "1151:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1151:15:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1234, + "nodeType": "ExpressionStatement", + "src": "1151:15:9" + }, + { + "assignments": [ + 1236 + ], + "declarations": [ + { + "constant": false, + "id": 1236, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 1244, + "src": "1172:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1235, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1172:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1240, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1237, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1222, + "src": "1184:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 1238, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1224, + "src": "1188:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1184:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1172:17:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 1241, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1236, + "src": "1203:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1228, + "id": 1242, + "nodeType": "Return", + "src": "1196:8:9" + } + ] + }, + "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", + "id": 1244, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", "parameters": { - "id": 1121, + "id": 1225, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1116, - "indexed": true, - "name": "from", + "id": 1222, + "name": "a", "nodeType": "VariableDeclaration", - "scope": 1122, - "src": "623:20:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1115, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "623:7:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1118, - "indexed": true, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1122, - "src": "649:18:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1117, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "649:7:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1120, - "indexed": false, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1122, - "src": "673:13:9", + "scope": 1244, + "src": "1091:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14901,10 +16640,36 @@ "typeString": "uint256" }, "typeName": { - "id": 1119, + "id": 1221, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "673:7:9", + "src": "1091:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1224, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 1244, + "src": "1102:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1223, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1102:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14914,82 +16679,20 @@ "visibility": "internal" } ], - "src": "617:73:9" + "src": "1090:22:9" }, - "src": "603:88:9" - }, - { - "anonymous": false, - "documentation": null, - "id": 1130, - "name": "Approval", - "nodeType": "EventDefinition", - "parameters": { - "id": 1129, + "payable": false, + "returnParameters": { + "id": 1228, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1124, - "indexed": true, - "name": "owner", + "id": 1227, + "name": "", "nodeType": "VariableDeclaration", - "scope": 1130, - "src": "715:21:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1123, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "715:7:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1126, - "indexed": true, - "name": "spender", - "nodeType": "VariableDeclaration", - "scope": 1130, - "src": "742:23:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1125, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "742:7:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1128, - "indexed": false, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1130, - "src": "771:13:9", + "scope": 1244, + "src": "1136:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14997,10 +16700,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1127, + "id": 1226, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "771:7:9", + "src": "1136:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15010,32 +16713,600 @@ "visibility": "internal" } ], - "src": "709:79:9" + "src": "1135:9:9" }, - "src": "695:94:9" + "scope": 1289, + "src": "1078:131:9", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1267, + "nodeType": "Block", + "src": "1339:64:9", + "statements": [ + { + "assignments": [ + 1254 + ], + "declarations": [ + { + "constant": false, + "id": 1254, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 1268, + "src": "1345:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1253, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1345:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1258, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1255, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1246, + "src": "1357:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 1256, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1248, + "src": "1361:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1357:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1345:17:9" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1260, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1254, + "src": "1376:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 1261, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1246, + "src": "1381:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1376:6:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1259, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1520, + 1521 + ], + "referencedDeclaration": 1520, + "src": "1368:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1368:15:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1264, + "nodeType": "ExpressionStatement", + "src": "1368:15:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 1265, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1254, + "src": "1397:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1252, + "id": 1266, + "nodeType": "Return", + "src": "1390:8:9" + } + ] + }, + "documentation": "@dev Adds two numbers, reverts on overflow.", + "id": 1268, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1249, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1246, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 1268, + "src": "1285:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1245, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1285:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1248, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 1268, + "src": "1296:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1247, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1296:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1284:22:9" + }, + "payable": false, + "returnParameters": { + "id": 1252, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1251, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1268, + "src": "1330:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1250, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1330:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1329:9:9" + }, + "scope": 1289, + "src": "1272:131:9", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1287, + "nodeType": "Block", + "src": "1602:44:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1278, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1272, + "src": "1616:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1279, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1621:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1616:6:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1277, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1520, + 1521 + ], + "referencedDeclaration": 1520, + "src": "1608:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1608:15:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1282, + "nodeType": "ExpressionStatement", + "src": "1608:15:9" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1285, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1283, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1270, + "src": "1636:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "id": 1284, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1272, + "src": "1640:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1636:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1276, + "id": 1286, + "nodeType": "Return", + "src": "1629:12:9" + } + ] + }, + "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", + "id": 1288, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "mod", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1273, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1270, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 1288, + "src": "1548:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1269, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1548:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1272, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 1288, + "src": "1559:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1271, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1559:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1547:22:9" + }, + "payable": false, + "returnParameters": { + "id": 1276, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1275, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1288, + "src": "1593:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1274, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1593:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1592:9:9" + }, + "scope": 1289, + "src": "1535:111:9", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" } ], - "scope": 1132, - "src": "115:676:9" + "scope": 1290, + "src": "117:1531:9" } ], - "src": "0:792:9" + "src": "0:1649:9" }, "id": 9 }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol": { "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "exportedSymbols": { - "SafeERC20": [ - 1275 + "IERC20": [ + 1358 ] }, - "id": 1276, + "id": 1359, "nodeType": "SourceUnit", "nodes": [ { - "id": 1133, + "id": 1291, "literals": [ "solidity", "^", @@ -15045,25 +17316,862 @@ "nodeType": "PragmaDirective", "src": "0:24:10" }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", + "fullyImplemented": false, + "id": 1358, + "linearizedBaseContracts": [ + 1358 + ], + "name": "IERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 1296, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1292, + "nodeType": "ParameterList", + "parameters": [], + "src": "156:2:10" + }, + "payable": false, + "returnParameters": { + "id": 1295, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1294, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1296, + "src": "182:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1293, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "182:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "181:9:10" + }, + "scope": 1358, + "src": "136:55:10", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1303, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1299, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1298, + "name": "who", + "nodeType": "VariableDeclaration", + "scope": 1303, + "src": "214:11:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1297, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "214:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "213:13:10" + }, + "payable": false, + "returnParameters": { + "id": 1302, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1301, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1303, + "src": "250:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1300, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "250:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "249:9:10" + }, + "scope": 1358, + "src": "195:64:10", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1312, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1308, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1305, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1312, + "src": "282:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1304, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "282:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1307, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1312, + "src": "297:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1306, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "297:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "281:32:10" + }, + "payable": false, + "returnParameters": { + "id": 1311, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1310, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1312, + "src": "341:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1309, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "341:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "340:9:10" + }, + "scope": 1358, + "src": "263:87:10", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1321, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1317, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1314, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1321, + "src": "372:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1313, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "372:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1316, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1321, + "src": "384:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1315, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "384:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "371:27:10" + }, + "payable": false, + "returnParameters": { + "id": 1320, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1319, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1321, + "src": "417:4:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1318, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "417:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "416:6:10" + }, + "scope": 1358, + "src": "354:69:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1330, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1323, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1330, + "src": "444:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1322, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "444:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1325, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1330, + "src": "461:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1324, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "461:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "443:32:10" + }, + "payable": false, + "returnParameters": { + "id": 1329, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1328, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1330, + "src": "498:4:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1327, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "498:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "497:6:10" + }, + "scope": 1358, + "src": "427:77:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1341, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1337, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1332, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 1341, + "src": "530:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1331, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "530:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1334, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1341, + "src": "544:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1333, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "544:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1336, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1341, + "src": "556:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1335, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "556:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "529:41:10" + }, + "payable": false, + "returnParameters": { + "id": 1340, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1339, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1341, + "src": "593:4:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1338, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "593:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "592:6:10" + }, + "scope": 1358, + "src": "508:91:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": null, + "id": 1349, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 1348, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1343, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 1349, + "src": "623:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1342, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "623:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1345, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1349, + "src": "649:18:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1344, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "649:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1347, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1349, + "src": "673:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1346, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "673:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "617:73:10" + }, + "src": "603:88:10" + }, + { + "anonymous": false, + "documentation": null, + "id": 1357, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 1356, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1351, + "indexed": true, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1357, + "src": "715:21:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1350, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "715:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1353, + "indexed": true, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1357, + "src": "742:23:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1352, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "742:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1355, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1357, + "src": "771:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1354, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "771:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "709:79:10" + }, + "src": "695:94:10" + } + ], + "scope": 1359, + "src": "115:676:10" + } + ], + "src": "0:792:10" + }, + "id": 10 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "exportedSymbols": { + "SafeERC20": [ + 1502 + ] + }, + "id": 1503, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1360, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:11" + }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "./IERC20.sol", - "id": 1134, + "id": 1361, "nodeType": "ImportDirective", - "scope": 1276, - "sourceUnit": 1132, - "src": "26:22:10", + "scope": 1503, + "sourceUnit": 1359, + "src": "26:22:11", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "file": "../../math/SafeMath.sol", - "id": 1135, + "id": 1362, "nodeType": "ImportDirective", - "scope": 1276, - "sourceUnit": 1063, - "src": "49:33:10", + "scope": 1503, + "sourceUnit": 1290, + "src": "49:33:11", "symbolAliases": [], "unitAlias": "" }, @@ -15073,34 +18181,34 @@ "contractKind": "library", "documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.", "fullyImplemented": true, - "id": 1275, + "id": 1502, "linearizedBaseContracts": [ - 1275 + 1502 ], "name": "SafeERC20", "nodeType": "ContractDefinition", "nodes": [ { - "id": 1138, + "id": 1365, "libraryName": { "contractScope": null, - "id": 1136, + "id": 1363, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1062, - "src": "382:8:10", + "referencedDeclaration": 1289, + "src": "382:8:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$1062", + "typeIdentifier": "t_contract$_SafeMath_$1289", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", - "src": "376:27:10", + "src": "376:27:11", "typeName": { - "id": 1137, + "id": 1364, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "395:7:10", + "src": "395:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15109,9 +18217,9 @@ }, { "body": { - "id": 1155, + "id": 1382, "nodeType": "Block", - "src": "501:45:10", + "src": "501:45:11", "statements": [ { "expression": { @@ -15122,12 +18230,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1150, + "id": 1377, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1142, - "src": "530:2:10", + "referencedDeclaration": 1369, + "src": "530:2:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15135,12 +18243,12 @@ }, { "argumentTypes": null, - "id": 1151, + "id": 1378, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1144, - "src": "534:5:10", + "referencedDeclaration": 1371, + "src": "534:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15160,32 +18268,32 @@ ], "expression": { "argumentTypes": null, - "id": 1148, + "id": 1375, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1140, - "src": "515:5:10", + "referencedDeclaration": 1367, + "src": "515:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" } }, - "id": 1149, + "id": 1376, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1094, - "src": "515:14:10", + "referencedDeclaration": 1321, + "src": "515:14:11", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1152, + "id": 1379, "isConstant": false, "isLValue": false, "isPure": false, @@ -15193,7 +18301,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "515:25:10", + "src": "515:25:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -15207,21 +18315,21 @@ "typeString": "bool" } ], - "id": 1147, + "id": 1374, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1293, - 1294 + 1520, + 1521 ], - "referencedDeclaration": 1293, - "src": "507:7:10", + "referencedDeclaration": 1520, + "src": "507:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1153, + "id": 1380, "isConstant": false, "isLValue": false, "isPure": false, @@ -15229,20 +18337,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "507:34:10", + "src": "507:34:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1154, + "id": 1381, "nodeType": "ExpressionStatement", - "src": "507:34:10" + "src": "507:34:11" } ] }, "documentation": null, - "id": 1156, + "id": 1383, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -15250,31 +18358,31 @@ "name": "safeTransfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 1145, + "id": 1372, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1140, + "id": 1367, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1156, - "src": "434:12:10", + "scope": 1383, + "src": "434:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1139, + "id": 1366, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1131, - "src": "434:6:10", + "referencedDeclaration": 1358, + "src": "434:6:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" } }, @@ -15283,11 +18391,11 @@ }, { "constant": false, - "id": 1142, + "id": 1369, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1156, - "src": "452:10:10", + "scope": 1383, + "src": "452:10:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15295,10 +18403,10 @@ "typeString": "address" }, "typeName": { - "id": 1141, + "id": 1368, "name": "address", "nodeType": "ElementaryTypeName", - "src": "452:7:10", + "src": "452:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15309,11 +18417,11 @@ }, { "constant": false, - "id": 1144, + "id": 1371, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1156, - "src": "468:13:10", + "scope": 1383, + "src": "468:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15321,10 +18429,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1143, + "id": 1370, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "468:7:10", + "src": "468:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15334,26 +18442,26 @@ "visibility": "internal" } ], - "src": "428:57:10" + "src": "428:57:11" }, "payable": false, "returnParameters": { - "id": 1146, + "id": 1373, "nodeType": "ParameterList", "parameters": [], - "src": "501:0:10" + "src": "501:0:11" }, - "scope": 1275, - "src": "407:139:10", + "scope": 1502, + "src": "407:139:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1176, + "id": 1403, "nodeType": "Block", - "src": "666:55:10", + "src": "666:55:11", "statements": [ { "expression": { @@ -15364,12 +18472,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1170, + "id": 1397, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1160, - "src": "699:4:10", + "referencedDeclaration": 1387, + "src": "699:4:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15377,12 +18485,12 @@ }, { "argumentTypes": null, - "id": 1171, + "id": 1398, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1162, - "src": "705:2:10", + "referencedDeclaration": 1389, + "src": "705:2:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15390,12 +18498,12 @@ }, { "argumentTypes": null, - "id": 1172, + "id": 1399, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1164, - "src": "709:5:10", + "referencedDeclaration": 1391, + "src": "709:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15419,32 +18527,32 @@ ], "expression": { "argumentTypes": null, - "id": 1168, + "id": 1395, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1158, - "src": "680:5:10", + "referencedDeclaration": 1385, + "src": "680:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" } }, - "id": 1169, + "id": 1396, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", - "referencedDeclaration": 1114, - "src": "680:18:10", + "referencedDeclaration": 1341, + "src": "680:18:11", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)" } }, - "id": 1173, + "id": 1400, "isConstant": false, "isLValue": false, "isPure": false, @@ -15452,7 +18560,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "680:35:10", + "src": "680:35:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -15466,21 +18574,21 @@ "typeString": "bool" } ], - "id": 1167, + "id": 1394, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1293, - 1294 + 1520, + 1521 ], - "referencedDeclaration": 1293, - "src": "672:7:10", + "referencedDeclaration": 1520, + "src": "672:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1174, + "id": 1401, "isConstant": false, "isLValue": false, "isPure": false, @@ -15488,20 +18596,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "672:44:10", + "src": "672:44:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1175, + "id": 1402, "nodeType": "ExpressionStatement", - "src": "672:44:10" + "src": "672:44:11" } ] }, "documentation": null, - "id": 1177, + "id": 1404, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -15509,31 +18617,31 @@ "name": "safeTransferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 1165, + "id": 1392, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1158, + "id": 1385, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1177, - "src": "581:12:10", + "scope": 1404, + "src": "581:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1157, + "id": 1384, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1131, - "src": "581:6:10", + "referencedDeclaration": 1358, + "src": "581:6:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" } }, @@ -15542,11 +18650,11 @@ }, { "constant": false, - "id": 1160, + "id": 1387, "name": "from", "nodeType": "VariableDeclaration", - "scope": 1177, - "src": "599:12:10", + "scope": 1404, + "src": "599:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15554,10 +18662,10 @@ "typeString": "address" }, "typeName": { - "id": 1159, + "id": 1386, "name": "address", "nodeType": "ElementaryTypeName", - "src": "599:7:10", + "src": "599:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15568,11 +18676,11 @@ }, { "constant": false, - "id": 1162, + "id": 1389, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1177, - "src": "617:10:10", + "scope": 1404, + "src": "617:10:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15580,10 +18688,10 @@ "typeString": "address" }, "typeName": { - "id": 1161, + "id": 1388, "name": "address", "nodeType": "ElementaryTypeName", - "src": "617:7:10", + "src": "617:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15594,11 +18702,11 @@ }, { "constant": false, - "id": 1164, + "id": 1391, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1177, - "src": "633:13:10", + "scope": 1404, + "src": "633:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15606,10 +18714,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1163, + "id": 1390, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "633:7:10", + "src": "633:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15619,26 +18727,26 @@ "visibility": "internal" } ], - "src": "575:75:10" + "src": "575:75:11" }, "payable": false, "returnParameters": { - "id": 1166, + "id": 1393, "nodeType": "ParameterList", "parameters": [], - "src": "666:0:10" + "src": "666:0:11" }, - "scope": 1275, - "src": "550:171:10", + "scope": 1502, + "src": "550:171:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1211, + "id": 1438, "nodeType": "Block", - "src": "823:330:10", + "src": "823:330:11", "statements": [ { "expression": { @@ -15650,7 +18758,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1200, + "id": 1427, "isConstant": false, "isLValue": false, "isPure": false, @@ -15664,19 +18772,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1189, + "id": 1416, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1187, + "id": 1414, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1183, - "src": "1045:5:10", + "referencedDeclaration": 1410, + "src": "1045:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15687,14 +18795,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1188, + "id": 1415, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1054:1:10", + "src": "1054:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -15702,21 +18810,21 @@ }, "value": "0" }, - "src": "1045:10:10", + "src": "1045:10:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 1190, + "id": 1417, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "1044:12:10", + "src": "1044:12:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -15733,7 +18841,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1198, + "id": 1425, "isConstant": false, "isLValue": false, "isPure": false, @@ -15745,18 +18853,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1193, + "id": 1420, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1290, - "src": "1077:3:10", + "referencedDeclaration": 1517, + "src": "1077:3:11", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1194, + "id": 1421, "isConstant": false, "isLValue": false, "isPure": false, @@ -15764,7 +18872,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1077:10:10", + "src": "1077:10:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15772,12 +18880,12 @@ }, { "argumentTypes": null, - "id": 1195, + "id": 1422, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1181, - "src": "1089:7:10", + "referencedDeclaration": 1408, + "src": "1089:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15797,32 +18905,32 @@ ], "expression": { "argumentTypes": null, - "id": 1191, + "id": 1418, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1179, - "src": "1061:5:10", + "referencedDeclaration": 1406, + "src": "1061:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" } }, - "id": 1192, + "id": 1419, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 1085, - "src": "1061:15:10", + "referencedDeclaration": 1312, + "src": "1061:15:11", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1196, + "id": 1423, "isConstant": false, "isLValue": false, "isPure": false, @@ -15830,7 +18938,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1061:36:10", + "src": "1061:36:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15841,14 +18949,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1197, + "id": 1424, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1101:1:10", + "src": "1101:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -15856,27 +18964,27 @@ }, "value": "0" }, - "src": "1061:41:10", + "src": "1061:41:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 1199, + "id": 1426, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "1060:43:10", + "src": "1060:43:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1044:59:10", + "src": "1044:59:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -15890,21 +18998,21 @@ "typeString": "bool" } ], - "id": 1186, + "id": 1413, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1293, - 1294 + 1520, + 1521 ], - "referencedDeclaration": 1293, - "src": "1036:7:10", + "referencedDeclaration": 1520, + "src": "1036:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1201, + "id": 1428, "isConstant": false, "isLValue": false, "isPure": false, @@ -15912,15 +19020,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1036:68:10", + "src": "1036:68:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1202, + "id": 1429, "nodeType": "ExpressionStatement", - "src": "1036:68:10" + "src": "1036:68:11" }, { "expression": { @@ -15931,12 +19039,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1206, + "id": 1433, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1181, - "src": "1132:7:10", + "referencedDeclaration": 1408, + "src": "1132:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15944,12 +19052,12 @@ }, { "argumentTypes": null, - "id": 1207, + "id": 1434, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1183, - "src": "1141:5:10", + "referencedDeclaration": 1410, + "src": "1141:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15969,32 +19077,32 @@ ], "expression": { "argumentTypes": null, - "id": 1204, + "id": 1431, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1179, - "src": "1118:5:10", + "referencedDeclaration": 1406, + "src": "1118:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" } }, - "id": 1205, + "id": 1432, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 1103, - "src": "1118:13:10", + "referencedDeclaration": 1330, + "src": "1118:13:11", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1208, + "id": 1435, "isConstant": false, "isLValue": false, "isPure": false, @@ -16002,7 +19110,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1118:29:10", + "src": "1118:29:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -16016,21 +19124,21 @@ "typeString": "bool" } ], - "id": 1203, + "id": 1430, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1293, - 1294 + 1520, + 1521 ], - "referencedDeclaration": 1293, - "src": "1110:7:10", + "referencedDeclaration": 1520, + "src": "1110:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1209, + "id": 1436, "isConstant": false, "isLValue": false, "isPure": false, @@ -16038,20 +19146,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1110:38:10", + "src": "1110:38:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1210, + "id": 1437, "nodeType": "ExpressionStatement", - "src": "1110:38:10" + "src": "1110:38:11" } ] }, "documentation": null, - "id": 1212, + "id": 1439, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -16059,31 +19167,31 @@ "name": "safeApprove", "nodeType": "FunctionDefinition", "parameters": { - "id": 1184, + "id": 1411, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1179, + "id": 1406, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1212, - "src": "751:12:10", + "scope": 1439, + "src": "751:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1178, + "id": 1405, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1131, - "src": "751:6:10", + "referencedDeclaration": 1358, + "src": "751:6:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" } }, @@ -16092,11 +19200,11 @@ }, { "constant": false, - "id": 1181, + "id": 1408, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1212, - "src": "769:15:10", + "scope": 1439, + "src": "769:15:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16104,10 +19212,10 @@ "typeString": "address" }, "typeName": { - "id": 1180, + "id": 1407, "name": "address", "nodeType": "ElementaryTypeName", - "src": "769:7:10", + "src": "769:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -16118,11 +19226,11 @@ }, { "constant": false, - "id": 1183, + "id": 1410, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1212, - "src": "790:13:10", + "scope": 1439, + "src": "790:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16130,10 +19238,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1182, + "id": 1409, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "790:7:10", + "src": "790:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16143,39 +19251,39 @@ "visibility": "internal" } ], - "src": "745:62:10" + "src": "745:62:11" }, "payable": false, "returnParameters": { - "id": 1185, + "id": 1412, "nodeType": "ParameterList", "parameters": [], - "src": "823:0:10" + "src": "823:0:11" }, - "scope": 1275, - "src": "725:428:10", + "scope": 1502, + "src": "725:428:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1242, + "id": 1469, "nodeType": "Block", - "src": "1265:135:10", + "src": "1265:135:11", "statements": [ { "assignments": [ - 1222 + 1449 ], "declarations": [ { "constant": false, - "id": 1222, + "id": 1449, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 1243, - "src": "1271:20:10", + "scope": 1470, + "src": "1271:20:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16183,10 +19291,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1221, + "id": 1448, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1271:7:10", + "src": "1271:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16196,18 +19304,18 @@ "visibility": "internal" } ], - "id": 1233, + "id": 1460, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1231, + "id": 1458, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1218, - "src": "1338:5:10", + "referencedDeclaration": 1445, + "src": "1338:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16229,14 +19337,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1226, + "id": 1453, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1311, - "src": "1318:4:10", + "referencedDeclaration": 1540, + "src": "1318:4:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1275", + "typeIdentifier": "t_contract$_SafeERC20_$1502", "typeString": "library SafeERC20" } } @@ -16244,24 +19352,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$1275", + "typeIdentifier": "t_contract$_SafeERC20_$1502", "typeString": "library SafeERC20" } ], - "id": 1225, + "id": 1452, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1310:7:10", + "src": "1310:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1227, + "id": 1454, "isConstant": false, "isLValue": false, "isPure": false, @@ -16269,7 +19377,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1310:13:10", + "src": "1310:13:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -16277,12 +19385,12 @@ }, { "argumentTypes": null, - "id": 1228, + "id": 1455, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1216, - "src": "1325:7:10", + "referencedDeclaration": 1443, + "src": "1325:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -16302,32 +19410,32 @@ ], "expression": { "argumentTypes": null, - "id": 1223, + "id": 1450, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1214, - "src": "1294:5:10", + "referencedDeclaration": 1441, + "src": "1294:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" } }, - "id": 1224, + "id": 1451, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 1085, - "src": "1294:15:10", + "referencedDeclaration": 1312, + "src": "1294:15:11", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1229, + "id": 1456, "isConstant": false, "isLValue": false, "isPure": false, @@ -16335,27 +19443,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1294:39:10", + "src": "1294:39:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1230, + "id": 1457, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1041, - "src": "1294:43:10", + "referencedDeclaration": 1268, + "src": "1294:43:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1232, + "id": 1459, "isConstant": false, "isLValue": false, "isPure": false, @@ -16363,14 +19471,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1294:50:10", + "src": "1294:50:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1271:73:10" + "src": "1271:73:11" }, { "expression": { @@ -16381,12 +19489,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1237, + "id": 1464, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1216, - "src": "1372:7:10", + "referencedDeclaration": 1443, + "src": "1372:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -16394,12 +19502,12 @@ }, { "argumentTypes": null, - "id": 1238, + "id": 1465, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1222, - "src": "1381:12:10", + "referencedDeclaration": 1449, + "src": "1381:12:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16419,32 +19527,32 @@ ], "expression": { "argumentTypes": null, - "id": 1235, + "id": 1462, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1214, - "src": "1358:5:10", + "referencedDeclaration": 1441, + "src": "1358:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" } }, - "id": 1236, + "id": 1463, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 1103, - "src": "1358:13:10", + "referencedDeclaration": 1330, + "src": "1358:13:11", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1239, + "id": 1466, "isConstant": false, "isLValue": false, "isPure": false, @@ -16452,7 +19560,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1358:36:10", + "src": "1358:36:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -16466,21 +19574,21 @@ "typeString": "bool" } ], - "id": 1234, + "id": 1461, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1293, - 1294 + 1520, + 1521 ], - "referencedDeclaration": 1293, - "src": "1350:7:10", + "referencedDeclaration": 1520, + "src": "1350:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1240, + "id": 1467, "isConstant": false, "isLValue": false, "isPure": false, @@ -16488,20 +19596,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1350:45:10", + "src": "1350:45:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1241, + "id": 1468, "nodeType": "ExpressionStatement", - "src": "1350:45:10" + "src": "1350:45:11" } ] }, "documentation": null, - "id": 1243, + "id": 1470, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -16509,31 +19617,31 @@ "name": "safeIncreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1219, + "id": 1446, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1214, + "id": 1441, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1243, - "src": "1193:12:10", + "scope": 1470, + "src": "1193:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1213, + "id": 1440, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1131, - "src": "1193:6:10", + "referencedDeclaration": 1358, + "src": "1193:6:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" } }, @@ -16542,11 +19650,11 @@ }, { "constant": false, - "id": 1216, + "id": 1443, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1243, - "src": "1211:15:10", + "scope": 1470, + "src": "1211:15:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16554,10 +19662,10 @@ "typeString": "address" }, "typeName": { - "id": 1215, + "id": 1442, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1211:7:10", + "src": "1211:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -16568,11 +19676,11 @@ }, { "constant": false, - "id": 1218, + "id": 1445, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1243, - "src": "1232:13:10", + "scope": 1470, + "src": "1232:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16580,10 +19688,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1217, + "id": 1444, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1232:7:10", + "src": "1232:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16593,39 +19701,39 @@ "visibility": "internal" } ], - "src": "1187:62:10" + "src": "1187:62:11" }, "payable": false, "returnParameters": { - "id": 1220, + "id": 1447, "nodeType": "ParameterList", "parameters": [], - "src": "1265:0:10" + "src": "1265:0:11" }, - "scope": 1275, - "src": "1157:243:10", + "scope": 1502, + "src": "1157:243:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1273, + "id": 1500, "nodeType": "Block", - "src": "1512:135:10", + "src": "1512:135:11", "statements": [ { "assignments": [ - 1253 + 1480 ], "declarations": [ { "constant": false, - "id": 1253, + "id": 1480, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 1274, - "src": "1518:20:10", + "scope": 1501, + "src": "1518:20:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16633,10 +19741,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1252, + "id": 1479, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1518:7:10", + "src": "1518:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16646,18 +19754,18 @@ "visibility": "internal" } ], - "id": 1264, + "id": 1491, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1262, + "id": 1489, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, - "src": "1585:5:10", + "referencedDeclaration": 1476, + "src": "1585:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16679,14 +19787,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1257, + "id": 1484, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1311, - "src": "1565:4:10", + "referencedDeclaration": 1540, + "src": "1565:4:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1275", + "typeIdentifier": "t_contract$_SafeERC20_$1502", "typeString": "library SafeERC20" } } @@ -16694,24 +19802,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$1275", + "typeIdentifier": "t_contract$_SafeERC20_$1502", "typeString": "library SafeERC20" } ], - "id": 1256, + "id": 1483, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1557:7:10", + "src": "1557:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1258, + "id": 1485, "isConstant": false, "isLValue": false, "isPure": false, @@ -16719,7 +19827,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1557:13:10", + "src": "1557:13:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -16727,12 +19835,12 @@ }, { "argumentTypes": null, - "id": 1259, + "id": 1486, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, - "src": "1572:7:10", + "referencedDeclaration": 1474, + "src": "1572:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -16752,32 +19860,32 @@ ], "expression": { "argumentTypes": null, - "id": 1254, + "id": 1481, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1245, - "src": "1541:5:10", + "referencedDeclaration": 1472, + "src": "1541:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" } }, - "id": 1255, + "id": 1482, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 1085, - "src": "1541:15:10", + "referencedDeclaration": 1312, + "src": "1541:15:11", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1260, + "id": 1487, "isConstant": false, "isLValue": false, "isPure": false, @@ -16785,27 +19893,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1541:39:10", + "src": "1541:39:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1261, + "id": 1488, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 1017, - "src": "1541:43:10", + "referencedDeclaration": 1244, + "src": "1541:43:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1263, + "id": 1490, "isConstant": false, "isLValue": false, "isPure": false, @@ -16813,14 +19921,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1541:50:10", + "src": "1541:50:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1518:73:10" + "src": "1518:73:11" }, { "expression": { @@ -16831,12 +19939,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1268, + "id": 1495, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, - "src": "1619:7:10", + "referencedDeclaration": 1474, + "src": "1619:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -16844,12 +19952,12 @@ }, { "argumentTypes": null, - "id": 1269, + "id": 1496, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1253, - "src": "1628:12:10", + "referencedDeclaration": 1480, + "src": "1628:12:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16869,32 +19977,32 @@ ], "expression": { "argumentTypes": null, - "id": 1266, + "id": 1493, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1245, - "src": "1605:5:10", + "referencedDeclaration": 1472, + "src": "1605:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" } }, - "id": 1267, + "id": 1494, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 1103, - "src": "1605:13:10", + "referencedDeclaration": 1330, + "src": "1605:13:11", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1270, + "id": 1497, "isConstant": false, "isLValue": false, "isPure": false, @@ -16902,7 +20010,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1605:36:10", + "src": "1605:36:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -16916,21 +20024,21 @@ "typeString": "bool" } ], - "id": 1265, + "id": 1492, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1293, - 1294 + 1520, + 1521 ], - "referencedDeclaration": 1293, - "src": "1597:7:10", + "referencedDeclaration": 1520, + "src": "1597:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1271, + "id": 1498, "isConstant": false, "isLValue": false, "isPure": false, @@ -16938,20 +20046,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1597:45:10", + "src": "1597:45:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1272, + "id": 1499, "nodeType": "ExpressionStatement", - "src": "1597:45:10" + "src": "1597:45:11" } ] }, "documentation": null, - "id": 1274, + "id": 1501, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -16959,31 +20067,31 @@ "name": "safeDecreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1250, + "id": 1477, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1245, + "id": 1472, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1274, - "src": "1440:12:10", + "scope": 1501, + "src": "1440:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1244, + "id": 1471, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1131, - "src": "1440:6:10", + "referencedDeclaration": 1358, + "src": "1440:6:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1131", + "typeIdentifier": "t_contract$_IERC20_$1358", "typeString": "contract IERC20" } }, @@ -16992,11 +20100,11 @@ }, { "constant": false, - "id": 1247, + "id": 1474, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1274, - "src": "1458:15:10", + "scope": 1501, + "src": "1458:15:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -17004,10 +20112,10 @@ "typeString": "address" }, "typeName": { - "id": 1246, + "id": 1473, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1458:7:10", + "src": "1458:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -17018,11 +20126,11 @@ }, { "constant": false, - "id": 1249, + "id": 1476, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1274, - "src": "1479:13:10", + "scope": 1501, + "src": "1479:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -17030,10 +20138,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1248, + "id": 1475, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1479:7:10", + "src": "1479:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -17043,29 +20151,29 @@ "visibility": "internal" } ], - "src": "1434:62:10" + "src": "1434:62:11" }, "payable": false, "returnParameters": { - "id": 1251, + "id": 1478, "nodeType": "ParameterList", "parameters": [], - "src": "1512:0:10" + "src": "1512:0:11" }, - "scope": 1275, - "src": "1404:243:10", + "scope": 1502, + "src": "1404:243:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 1276, - "src": "353:1296:10" + "scope": 1503, + "src": "353:1296:11" } ], - "src": "0:1650:10" + "src": "0:1650:11" }, - "id": 10 + "id": 11 } } } \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.abi b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.abi index 7673494cb..3e4826eae 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.abi +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.abi @@ -1 +1 @@ -[{"constant":false,"inputs":[],"name":"terminate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pauseMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isAlgoMiner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"isMining","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"startMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMinerAddress","type":"address"}],"name":"migrateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMiner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSystem","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"stopAndRemoveOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"resumeMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCategory","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSupervisor","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"mine","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deactivateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwnerAddress","type":"address"}],"name":"resetMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"activateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"DAYS_PER_YEAR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"stopMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"minerType","type":"uint16"},{"name":"category","type":"uint8"},{"name":"minerAccountAddress","type":"address"},{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file +[{"constant":false,"inputs":[],"name":"terminate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pauseMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isAlgoMiner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"isMining","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"startMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMinerAddress","type":"address"}],"name":"migrateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMiner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getReferral","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSystem","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"stopAndRemoveOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentDay","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"resumeMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMinerType","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCategory","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSupervisor","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwnerAddress","type":"address"},{"name":"newReferralAddress","type":"address"}],"name":"resetMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"mine","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deactivateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"activateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"DAYS_PER_YEAR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentYearSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentYear","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"stopMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"minerType","type":"uint8"},{"name":"category","type":"uint8"},{"name":"minerAccountAddress","type":"address"},{"name":"referralAccountAddress","type":"address"},{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin index 5d1e3dc47..b6225eb89 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b506040516080806200122083398101604090815281516020830151918301516060909301516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a038416179055919391620000819064010000000062000126810204565b620000953364010000000062000144810204565b620000a9336401000000006200015f810204565b60008360ff1610158015620000c2575060058360ff1611155b1515620000ce57600080fd5b506005805461ffff191661ffff949094169390931762ff000019166201000060ff939093169290920291909117630100000060b860020a0319166301000000600160a060020a0392909216919091021790556200020d565b6200014160028264010000000062000f3d6200017a82021704565b50565b6200014160038264010000000062000f3d6200017a82021704565b6200014160048264010000000062000f3d6200017a82021704565b600160a060020a03811615156200019057600080fd5b620001a58282640100000000620001d5810204565b15620001b057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001ed57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b611003806200021d6000396000f3006080604052600436106101485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630c08bf88811461014d578063162f986d146101645780631777fb4b1461017957806319a74ab3146101a257806321b79d98146101b7578063231d4e2a146101cc57806329d10b6e146101ed5780632e6b68491461020e578063302c11ca1461022f57806334cdcf2614610260578063363aa6c714610281578063427534a414610296578063608d3d3d146102ab57806374be7592146102cc57806380258e47146102ed57806381a244591461031857806399f4b251146103395780639e614ca01461034e578063ada436e914610363578063b2a32cd514610384578063be95249414610399578063c6846ef8146103ae578063d43acc79146103d5578063da408679146103ea578063e9d61859146103ff575b600080fd5b34801561015957600080fd5b50610162610414565b005b34801561017057600080fd5b50610162610432565b34801561018557600080fd5b5061018e6104a1565b604080519115158252519081900360200190f35b3480156101ae57600080fd5b5061018e6104a6565b3480156101c357600080fd5b506101626104dd565b3480156101d857600080fd5b50610162600160a060020a0360043516610577565b3480156101f957600080fd5b50610162600160a060020a0360043516610663565b34801561021a57600080fd5b50610162600160a060020a0360043516610680565b34801561023b57600080fd5b5061024461069d565b60408051600160a060020a039092168252519081900360200190f35b34801561026c57600080fd5b5061018e600160a060020a03600435166106b3565b34801561028d57600080fd5b506101626106cc565b3480156102a257600080fd5b50610162610764565b3480156102b757600080fd5b5061018e600160a060020a03600435166107d0565b3480156102d857600080fd5b50610162600160a060020a03600435166107e3565b3480156102f957600080fd5b50610302610800565b6040805160ff9092168252519081900360200190f35b34801561032457600080fd5b5061018e600160a060020a036004351661080f565b34801561034557600080fd5b50610162610822565b34801561035a57600080fd5b50610162610a1e565b34801561036f57600080fd5b50610162600160a060020a0360043516610a92565b34801561039057600080fd5b50610162610b2b565b3480156103a557600080fd5b50610162610c45565b3480156103ba57600080fd5b506103c3610c4e565b60408051918252519081900360200190f35b3480156103e157600080fd5b50610162610c54565b3480156103f657600080fd5b50610162610c5d565b34801561040b57600080fd5b50610162610cf2565b61041d336107d0565b151561042857600080fd5b610430610cfb565b565b60005460a060020a900460ff161561044957600080fd5b6104523361080f565b151561045d57600080fd5b600160055460b860020a900460ff16600381111561047757fe5b1461048157600080fd5b600580546002919060b860020a60ff02191660b860020a835b0217905550565b600190565b6000600160055460b860020a900460ff1660038111156104c257fe5b1480156104d8575060055460c060020a900460ff165b905090565b60005460a060020a900460ff16156104f457600080fd5b60055463010000009004600160a060020a0316331461051257600080fd5b600160055460b860020a900460ff16600381111561052c57fe5b1461053657600080fd5b60055460c060020a900460ff161561054d57600080fd5b6005805478ff000000000000000000000000000000000000000000000000191660c060020a179055565b610580336107d0565b151561058b57600080fd5b600060055460b860020a900460ff1660038111156105a557fe5b146105af57600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051610660928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b15801561061b57600080fd5b505af115801561062f573d6000803e3d6000fd5b505050506040513d602081101561064557600080fd5b5051600154600160a060020a0316919063ffffffff610dc216565b50565b61066c3361080f565b151561067757600080fd5b61066081610e7a565b610689336107d0565b151561069457600080fd5b61066081610e8b565b60055463010000009004600160a060020a031690565b60006106c660028363ffffffff610e9c16565b92915050565b60005460a060020a900460ff16156106e357600080fd5b6106ec3361080f565b15156106f757600080fd5b600360055460b860020a900460ff16600381111561071157fe5b141561071c57600080fd5b6005805460b860020a60ff021916770300000000000000000000000000000000000000000000001778ff00ffffffffffffffffffffffffffffffffffffffff00000019169055565b60005460a060020a900460ff161561077b57600080fd5b6107843361080f565b151561078f57600080fd5b600260055460b860020a900460ff1660038111156107a957fe5b146107b357600080fd5b600580546001919060b860020a60ff02191660b860020a8361049a565b60006106c660038363ffffffff610e9c16565b6107ec336106b3565b15156107f757600080fd5b61066081610ed3565b60055462010000900460ff1690565b60006106c660048363ffffffff610e9c16565b6000805460a060020a900460ff161561083a57600080fd5b610843336106b3565b151561084e57600080fd5b600160055460b860020a900460ff16600381111561086857fe5b1461087257600080fd5b60055460c060020a900460ff16151561088a57600080fd5b60055460d060020a900461ffff16151561090957600580547bffff00000000000000000000000000000000000000000000000000001979ff0000000000000000000000000000000000000000000000000019909116790100000000000000000000000000000000000000000000000000171660d060020a1790556109dd565b60058054600161ffff60d060020a808404821692909201811682027bffff00000000000000000000000000000000000000000000000000001990931692909217928390559091041661016e14156109dd57600580547bffff000000000000000000000000000000000000000000000000000019600160ff790100000000000000000000000000000000000000000000000000808504821692909201160279ff0000000000000000000000000000000000000000000000000019909216919091171660d060020a179055600654600290046006555b5060065461016d9004600081116109f357600080fd5b60055460015461066091600160a060020a03918216916301000000909104168363ffffffff610dc216565b60005460a060020a900460ff1615610a3557600080fd5b610a3e336107d0565b1515610a4957600080fd5b600060055460b860020a900460ff166003811115610a6357fe5b1415610a6e57600080fd5b6005805478ffff000000000000000000000000000000000000000000000019169055565b60005460a060020a900460ff1615610aa957600080fd5b610ab23361080f565b1515610abd57600080fd5b600360055460b860020a900460ff166003811115610ad757fe5b14610ae157600080fd5b60058054600160a060020a039290921663010000000260b860020a60ff021990921660b860020a1776ffffffffffffffffffffffffffffffffffffffff0000001916919091179055565b6000805460a060020a900460ff1615610b4357600080fd5b610b4c336107d0565b1515610b5757600080fd5b600060055460b860020a900460ff166003811115610b7157fe5b14610b7b57600080fd5b6006541515610c2c57600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b158015610bea57600080fd5b505af1158015610bfe573d6000803e3d6000fd5b505050506040513d6020811015610c1457600080fd5b50519050801515610c2457600080fd5b600281046006555b506005805460b860020a60ff02191660b860020a179055565b61043033610ee4565b61016d81565b61043033610ef5565b60005460a060020a900460ff1615610c7457600080fd5b60055463010000009004600160a060020a03163314610c9257600080fd5b600160055460b860020a900460ff166003811115610cac57fe5b14610cb657600080fd5b60055460c060020a900460ff161515610cce57600080fd5b6005805478ff00000000000000000000000000000000000000000000000019169055565b61043033610f06565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610d6057600080fd5b505af1158015610d74573d6000803e3d6000fd5b505050506040513d6020811015610d8a57600080fd5b505190506000811115610dba57600054600154610dba91600160a060020a0391821691168363ffffffff610dc216565b610660610f17565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610e3e57600080fd5b505af1158015610e52573d6000803e3d6000fd5b505050506040513d6020811015610e6857600080fd5b50511515610e7557600080fd5b505050565b61066060048263ffffffff610f3d16565b61066060038263ffffffff610f3d16565b6000600160a060020a0382161515610eb357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61066060028263ffffffff610f3d16565b61066060048263ffffffff610f8b16565b61066060038263ffffffff610f8b16565b61066060028263ffffffff610f8b16565b6000805474ff0000000000000000000000000000000000000000191660a060020a179055565b600160a060020a0381161515610f5257600080fd5b610f5c8282610e9c565b15610f6657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610fa057600080fd5b610faa8282610e9c565b1515610fb557600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058200a38ca8f69ea6e0732674e2a58d5b93661b5c2aa8a6c6b89ced63a3d5f3186730029 \ No newline at end of file +60806040523480156200001157600080fd5b5060405160a080620014c7833981016040908152815160208301519183015160608401516080909401516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790559294919262000087906401000000006200014c810204565b6200009b336401000000006200016a810204565b620000af3364010000000062000185810204565b60008460ff1610158015620000c8575060058460ff1611155b1515620000d457600080fd5b6005805486919060ff191660018381811115620000ed57fe5b0217905550506005805461ff00191661010060ff9590951694909402939093176201000060b060020a03191662010000600160a060020a03938416021790925560068054600160a060020a031916929091169190911790555062000233565b62000167600282640100000000620011be620001a082021704565b50565b62000167600382640100000000620011be620001a082021704565b62000167600482640100000000620011be620001a082021704565b600160a060020a0381161515620001b657600080fd5b620001cb8282640100000000620001fb810204565b15620001d657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200021357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61128480620002436000396000f30060806040526004361061017f5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630c08bf888114610184578063162f986d1461019b5780631777fb4b146101b057806319a74ab3146101d957806321b79d98146101ee578063231d4e2a1461020357806329d10b6e146102245780632e6b684914610245578063302c11ca14610266578063329b1c921461029757806334cdcf26146102ac578063363aa6c7146102cd5780633e6968b6146102e2578063427534a41461030e5780634969ae7014610323578063608d3d3d1461034e57806374be75921461036f57806380258e471461039057806381a24459146103a55780638329138f146103c657806399f4b251146103ed5780639e614ca014610402578063b2a32cd514610417578063be9524941461042c578063c6846ef814610441578063cdfd0f6414610468578063ce41607a1461047d578063d43acc7914610492578063da408679146104a7578063e9d61859146104bc575b600080fd5b34801561019057600080fd5b506101996104d1565b005b3480156101a757600080fd5b506101996104ef565b3480156101bc57600080fd5b506101c561055e565b604080519115158252519081900360200190f35b3480156101e557600080fd5b506101c5610563565b3480156101fa57600080fd5b5061019961059a565b34801561020f57600080fd5b50610199600160a060020a0360043516610630565b34801561023057600080fd5b50610199600160a060020a036004351661071c565b34801561025157600080fd5b50610199600160a060020a0360043516610739565b34801561027257600080fd5b5061027b610756565b60408051600160a060020a039092168252519081900360200190f35b3480156102a357600080fd5b5061027b61076b565b3480156102b857600080fd5b506101c5600160a060020a036004351661077a565b3480156102d957600080fd5b50610199610795565b3480156102ee57600080fd5b506102f7610846565b6040805161ffff9092168252519081900360200190f35b34801561031a57600080fd5b50610199610857565b34801561032f57600080fd5b506103386108c3565b6040805160ff9092168252519081900360200190f35b34801561035a57600080fd5b506101c5600160a060020a03600435166108d7565b34801561037b57600080fd5b50610199600160a060020a03600435166108ea565b34801561039c57600080fd5b50610338610907565b3480156103b157600080fd5b506101c5600160a060020a0360043516610915565b3480156103d257600080fd5b50610199600160a060020a0360043581169060243516610928565b3480156103f957600080fd5b506101996109db565b34801561040e57600080fd5b50610199610c2e565b34801561042357600080fd5b50610199610c9f565b34801561043857600080fd5b50610199610dfd565b34801561044d57600080fd5b50610456610e06565b60408051918252519081900360200190f35b34801561047457600080fd5b50610456610e0c565b34801561048957600080fd5b50610338610e12565b34801561049e57600080fd5b50610199610e35565b3480156104b357600080fd5b50610199610e3e565b3480156104c857600080fd5b50610199610ecf565b6104da336108d7565b15156104e557600080fd5b6104ed610ed8565b565b60005460a060020a900460ff161561050657600080fd5b61050f33610915565b151561051a57600080fd5b600160065460a060020a900460ff16600381111561053457fe5b1461053e57600080fd5b600680546002919060a060020a60ff02191660a060020a835b0217905550565b600190565b6000600160065460a060020a900460ff16600381111561057f57fe5b148015610595575060065460a860020a900460ff165b905090565b60005460a060020a900460ff16156105b157600080fd5b600554620100009004600160a060020a031633146105ce57600080fd5b600160065460a060020a900460ff1660038111156105e857fe5b146105f257600080fd5b60065460a860020a900460ff161561060957600080fd5b6006805475ff000000000000000000000000000000000000000000191660a860020a179055565b610639336108d7565b151561064457600080fd5b600060065460a060020a900460ff16600381111561065e57fe5b1461066857600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051610719928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b1580156106d457600080fd5b505af11580156106e8573d6000803e3d6000fd5b505050506040513d60208110156106fe57600080fd5b5051600154600160a060020a0316919063ffffffff610f9f16565b50565b61072533610915565b151561073057600080fd5b61071981611057565b610742336108d7565b151561074d57600080fd5b61071981611068565b600554620100009004600160a060020a031690565b600654600160a060020a031690565b600061078d60028363ffffffff61107916565b90505b919050565b60005460a060020a900460ff16156107ac57600080fd5b6107b533610915565b15156107c057600080fd5b600360065460a060020a900460ff1660038111156107da57fe5b14156107e557600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff00001916905560a060020a60ff021916740300000000000000000000000000000000000000001775ff00ffffffffffffffffffffffffffffffffffffffff19169055565b60065460b860020a900461ffff1690565b60005460a060020a900460ff161561086e57600080fd5b61087733610915565b151561088257600080fd5b600260065460a060020a900460ff16600381111561089c57fe5b146108a657600080fd5b600680546001919060a060020a60ff02191660a060020a83610557565b60055460009060ff16600181111561059557fe5b600061078d60038363ffffffff61107916565b6108f33361077a565b15156108fe57600080fd5b610719816110b0565b600554610100900460ff1690565b600061078d60048363ffffffff61107916565b60005460a060020a900460ff161561093f57600080fd5b61094833610915565b151561095357600080fd5b600360065460a060020a900460ff16600381111561096d57fe5b1461097757600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a039687160217905560a060020a60ff02191660a060020a1773ffffffffffffffffffffffffffffffffffffffff191691909216179055565b60008054819060a060020a900460ff16156109f557600080fd5b6109fe3361077a565b1515610a0957600080fd5b600060055460ff166001811115610a1c57fe5b14610a2657600080fd5b600160065460a060020a900460ff166003811115610a4057fe5b14610a4a57600080fd5b60065460a860020a900460ff161515610a6257600080fd5b60065460b860020a900461ffff161515610ad8576006805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610ba0565b60068054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610ba0576006805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600754600290046007555b60075461016d9004915060008211610bb757600080fd5b600554600154610be191600160a060020a039182169162010000909104168463ffffffff610f9f16565b600654600160a060020a031615610c2a57506064600a82020460008111610c0757600080fd5b600654600154610c2a91600160a060020a0391821691168363ffffffff610f9f16565b5050565b60005460a060020a900460ff1615610c4557600080fd5b610c4e336108d7565b1515610c5957600080fd5b600060065460a060020a900460ff166003811115610c7357fe5b1415610c7e57600080fd5b6006805475ffff000000000000000000000000000000000000000019169055565b600080548190819060a060020a900460ff1615610cbb57600080fd5b610cc4336108d7565b1515610ccf57600080fd5b600060065460a060020a900460ff166003811115610ce957fe5b14610cf357600080fd5b600060055460ff166001811115610d0657fe5b148015610d135750600754155b15610de257600554610d2c90610100900460ff166110c1565b92506064600a8402600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519390920486019450600160a060020a0316916370a08231916024808201926020929091908290030181600087803b158015610da057600080fd5b505af1158015610db4573d6000803e3d6000fd5b505050506040513d6020811015610dca57600080fd5b50519050818114610dda57600080fd5b600283046007555b50506006805460a060020a60ff02191660a060020a17905550565b6104ed33611173565b61016d81565b60075490565b600654760100000000000000000000000000000000000000000000900460ff1690565b6104ed33611184565b60005460a060020a900460ff1615610e5557600080fd5b600554620100009004600160a060020a03163314610e7257600080fd5b600160065460a060020a900460ff166003811115610e8c57fe5b14610e9657600080fd5b60065460a860020a900460ff161515610eae57600080fd5b6006805475ff00000000000000000000000000000000000000000019169055565b6104ed33611195565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610f3d57600080fd5b505af1158015610f51573d6000803e3d6000fd5b505050506040513d6020811015610f6757600080fd5b505190506000811115610f9757600054600154610f9791600160a060020a0391821691168363ffffffff610f9f16565b6107196111a6565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561101b57600080fd5b505af115801561102f573d6000803e3d6000fd5b505050506040513d602081101561104557600080fd5b5051151561105257600080fd5b505050565b61071960048263ffffffff6111be16565b61071960038263ffffffff6111be16565b6000600160a060020a038216151561109057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61071960028263ffffffff6111be16565b600060ff821615156110de575069152d02c7e14af6800000610790565b8160ff16600114156110fb575069d3c21bcecceda1000000610790565b8160ff166002141561111957506a01a784379d99db42000000610790565b8160ff166003141561113757506a027b46536c66c8e3000000610790565b8160ff166004141561115557506a034f086f3b33b684000000610790565b8160ff166005141561079057506a0422ca8b0a00a425000000610790565b61071960048263ffffffff61120c16565b61071960038263ffffffff61120c16565b61071960028263ffffffff61120c16565b6000805460a060020a60ff02191660a060020a179055565b600160a060020a03811615156111d357600080fd5b6111dd8282611079565b156111e757600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561122157600080fd5b61122b8282611079565b151561123657600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820d37bea8cf990d36f43cc5b4af261b636128105f981b5fa7014ca1bf22a0030880029 \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json index 55de43ce4..c1eec1c76 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json @@ -111,6 +111,20 @@ "stateMutability": "view", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "getReferral", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [ @@ -139,6 +153,20 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "getCurrentDay", + "outputs": [ + { + "name": "", + "type": "uint16" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": false, "inputs": [], @@ -148,6 +176,20 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "getMinerType", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [ @@ -214,6 +256,24 @@ "stateMutability": "view", "type": "function" }, + { + "constant": false, + "inputs": [ + { + "name": "newOwnerAddress", + "type": "address" + }, + { + "name": "newReferralAddress", + "type": "address" + } + ], + "name": "resetMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "constant": false, "inputs": [], @@ -232,20 +292,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "constant": false, - "inputs": [ - { - "name": "newOwnerAddress", - "type": "address" - } - ], - "name": "resetMiner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { "constant": false, "inputs": [], @@ -278,6 +324,34 @@ "stateMutability": "view", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "getCurrentYearSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getCurrentYear", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": false, "inputs": [], @@ -309,7 +383,7 @@ "inputs": [ { "name": "minerType", - "type": "uint16" + "type": "uint8" }, { "name": "category", @@ -319,6 +393,10 @@ "name": "minerAccountAddress", "type": "address" }, + { + "name": "referralAccountAddress", + "type": "address" + }, { "name": "tokenAddress", "type": "address" @@ -329,7 +407,7 @@ "type": "constructor" } ], - "bytecode": "60806040523480156200001157600080fd5b506040516080806200122083398101604090815281516020830151918301516060909301516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a038416179055919391620000819064010000000062000126810204565b620000953364010000000062000144810204565b620000a9336401000000006200015f810204565b60008360ff1610158015620000c2575060058360ff1611155b1515620000ce57600080fd5b506005805461ffff191661ffff949094169390931762ff000019166201000060ff939093169290920291909117630100000060b860020a0319166301000000600160a060020a0392909216919091021790556200020d565b6200014160028264010000000062000f3d6200017a82021704565b50565b6200014160038264010000000062000f3d6200017a82021704565b6200014160048264010000000062000f3d6200017a82021704565b600160a060020a03811615156200019057600080fd5b620001a58282640100000000620001d5810204565b15620001b057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001ed57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b611003806200021d6000396000f3006080604052600436106101485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630c08bf88811461014d578063162f986d146101645780631777fb4b1461017957806319a74ab3146101a257806321b79d98146101b7578063231d4e2a146101cc57806329d10b6e146101ed5780632e6b68491461020e578063302c11ca1461022f57806334cdcf2614610260578063363aa6c714610281578063427534a414610296578063608d3d3d146102ab57806374be7592146102cc57806380258e47146102ed57806381a244591461031857806399f4b251146103395780639e614ca01461034e578063ada436e914610363578063b2a32cd514610384578063be95249414610399578063c6846ef8146103ae578063d43acc79146103d5578063da408679146103ea578063e9d61859146103ff575b600080fd5b34801561015957600080fd5b50610162610414565b005b34801561017057600080fd5b50610162610432565b34801561018557600080fd5b5061018e6104a1565b604080519115158252519081900360200190f35b3480156101ae57600080fd5b5061018e6104a6565b3480156101c357600080fd5b506101626104dd565b3480156101d857600080fd5b50610162600160a060020a0360043516610577565b3480156101f957600080fd5b50610162600160a060020a0360043516610663565b34801561021a57600080fd5b50610162600160a060020a0360043516610680565b34801561023b57600080fd5b5061024461069d565b60408051600160a060020a039092168252519081900360200190f35b34801561026c57600080fd5b5061018e600160a060020a03600435166106b3565b34801561028d57600080fd5b506101626106cc565b3480156102a257600080fd5b50610162610764565b3480156102b757600080fd5b5061018e600160a060020a03600435166107d0565b3480156102d857600080fd5b50610162600160a060020a03600435166107e3565b3480156102f957600080fd5b50610302610800565b6040805160ff9092168252519081900360200190f35b34801561032457600080fd5b5061018e600160a060020a036004351661080f565b34801561034557600080fd5b50610162610822565b34801561035a57600080fd5b50610162610a1e565b34801561036f57600080fd5b50610162600160a060020a0360043516610a92565b34801561039057600080fd5b50610162610b2b565b3480156103a557600080fd5b50610162610c45565b3480156103ba57600080fd5b506103c3610c4e565b60408051918252519081900360200190f35b3480156103e157600080fd5b50610162610c54565b3480156103f657600080fd5b50610162610c5d565b34801561040b57600080fd5b50610162610cf2565b61041d336107d0565b151561042857600080fd5b610430610cfb565b565b60005460a060020a900460ff161561044957600080fd5b6104523361080f565b151561045d57600080fd5b600160055460b860020a900460ff16600381111561047757fe5b1461048157600080fd5b600580546002919060b860020a60ff02191660b860020a835b0217905550565b600190565b6000600160055460b860020a900460ff1660038111156104c257fe5b1480156104d8575060055460c060020a900460ff165b905090565b60005460a060020a900460ff16156104f457600080fd5b60055463010000009004600160a060020a0316331461051257600080fd5b600160055460b860020a900460ff16600381111561052c57fe5b1461053657600080fd5b60055460c060020a900460ff161561054d57600080fd5b6005805478ff000000000000000000000000000000000000000000000000191660c060020a179055565b610580336107d0565b151561058b57600080fd5b600060055460b860020a900460ff1660038111156105a557fe5b146105af57600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051610660928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b15801561061b57600080fd5b505af115801561062f573d6000803e3d6000fd5b505050506040513d602081101561064557600080fd5b5051600154600160a060020a0316919063ffffffff610dc216565b50565b61066c3361080f565b151561067757600080fd5b61066081610e7a565b610689336107d0565b151561069457600080fd5b61066081610e8b565b60055463010000009004600160a060020a031690565b60006106c660028363ffffffff610e9c16565b92915050565b60005460a060020a900460ff16156106e357600080fd5b6106ec3361080f565b15156106f757600080fd5b600360055460b860020a900460ff16600381111561071157fe5b141561071c57600080fd5b6005805460b860020a60ff021916770300000000000000000000000000000000000000000000001778ff00ffffffffffffffffffffffffffffffffffffffff00000019169055565b60005460a060020a900460ff161561077b57600080fd5b6107843361080f565b151561078f57600080fd5b600260055460b860020a900460ff1660038111156107a957fe5b146107b357600080fd5b600580546001919060b860020a60ff02191660b860020a8361049a565b60006106c660038363ffffffff610e9c16565b6107ec336106b3565b15156107f757600080fd5b61066081610ed3565b60055462010000900460ff1690565b60006106c660048363ffffffff610e9c16565b6000805460a060020a900460ff161561083a57600080fd5b610843336106b3565b151561084e57600080fd5b600160055460b860020a900460ff16600381111561086857fe5b1461087257600080fd5b60055460c060020a900460ff16151561088a57600080fd5b60055460d060020a900461ffff16151561090957600580547bffff00000000000000000000000000000000000000000000000000001979ff0000000000000000000000000000000000000000000000000019909116790100000000000000000000000000000000000000000000000000171660d060020a1790556109dd565b60058054600161ffff60d060020a808404821692909201811682027bffff00000000000000000000000000000000000000000000000000001990931692909217928390559091041661016e14156109dd57600580547bffff000000000000000000000000000000000000000000000000000019600160ff790100000000000000000000000000000000000000000000000000808504821692909201160279ff0000000000000000000000000000000000000000000000000019909216919091171660d060020a179055600654600290046006555b5060065461016d9004600081116109f357600080fd5b60055460015461066091600160a060020a03918216916301000000909104168363ffffffff610dc216565b60005460a060020a900460ff1615610a3557600080fd5b610a3e336107d0565b1515610a4957600080fd5b600060055460b860020a900460ff166003811115610a6357fe5b1415610a6e57600080fd5b6005805478ffff000000000000000000000000000000000000000000000019169055565b60005460a060020a900460ff1615610aa957600080fd5b610ab23361080f565b1515610abd57600080fd5b600360055460b860020a900460ff166003811115610ad757fe5b14610ae157600080fd5b60058054600160a060020a039290921663010000000260b860020a60ff021990921660b860020a1776ffffffffffffffffffffffffffffffffffffffff0000001916919091179055565b6000805460a060020a900460ff1615610b4357600080fd5b610b4c336107d0565b1515610b5757600080fd5b600060055460b860020a900460ff166003811115610b7157fe5b14610b7b57600080fd5b6006541515610c2c57600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b158015610bea57600080fd5b505af1158015610bfe573d6000803e3d6000fd5b505050506040513d6020811015610c1457600080fd5b50519050801515610c2457600080fd5b600281046006555b506005805460b860020a60ff02191660b860020a179055565b61043033610ee4565b61016d81565b61043033610ef5565b60005460a060020a900460ff1615610c7457600080fd5b60055463010000009004600160a060020a03163314610c9257600080fd5b600160055460b860020a900460ff166003811115610cac57fe5b14610cb657600080fd5b60055460c060020a900460ff161515610cce57600080fd5b6005805478ff00000000000000000000000000000000000000000000000019169055565b61043033610f06565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610d6057600080fd5b505af1158015610d74573d6000803e3d6000fd5b505050506040513d6020811015610d8a57600080fd5b505190506000811115610dba57600054600154610dba91600160a060020a0391821691168363ffffffff610dc216565b610660610f17565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610e3e57600080fd5b505af1158015610e52573d6000803e3d6000fd5b505050506040513d6020811015610e6857600080fd5b50511515610e7557600080fd5b505050565b61066060048263ffffffff610f3d16565b61066060038263ffffffff610f3d16565b6000600160a060020a0382161515610eb357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61066060028263ffffffff610f3d16565b61066060048263ffffffff610f8b16565b61066060038263ffffffff610f8b16565b61066060028263ffffffff610f8b16565b6000805474ff0000000000000000000000000000000000000000191660a060020a179055565b600160a060020a0381161515610f5257600080fd5b610f5c8282610e9c565b15610f6657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610fa057600080fd5b610faa8282610e9c565b1515610fb557600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058200a38ca8f69ea6e0732674e2a58d5b93661b5c2aa8a6c6b89ced63a3d5f3186730029", + "bytecode": "60806040523480156200001157600080fd5b5060405160a080620014c7833981016040908152815160208301519183015160608401516080909401516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790559294919262000087906401000000006200014c810204565b6200009b336401000000006200016a810204565b620000af3364010000000062000185810204565b60008460ff1610158015620000c8575060058460ff1611155b1515620000d457600080fd5b6005805486919060ff191660018381811115620000ed57fe5b0217905550506005805461ff00191661010060ff9590951694909402939093176201000060b060020a03191662010000600160a060020a03938416021790925560068054600160a060020a031916929091169190911790555062000233565b62000167600282640100000000620011be620001a082021704565b50565b62000167600382640100000000620011be620001a082021704565b62000167600482640100000000620011be620001a082021704565b600160a060020a0381161515620001b657600080fd5b620001cb8282640100000000620001fb810204565b15620001d657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200021357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61128480620002436000396000f30060806040526004361061017f5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630c08bf888114610184578063162f986d1461019b5780631777fb4b146101b057806319a74ab3146101d957806321b79d98146101ee578063231d4e2a1461020357806329d10b6e146102245780632e6b684914610245578063302c11ca14610266578063329b1c921461029757806334cdcf26146102ac578063363aa6c7146102cd5780633e6968b6146102e2578063427534a41461030e5780634969ae7014610323578063608d3d3d1461034e57806374be75921461036f57806380258e471461039057806381a24459146103a55780638329138f146103c657806399f4b251146103ed5780639e614ca014610402578063b2a32cd514610417578063be9524941461042c578063c6846ef814610441578063cdfd0f6414610468578063ce41607a1461047d578063d43acc7914610492578063da408679146104a7578063e9d61859146104bc575b600080fd5b34801561019057600080fd5b506101996104d1565b005b3480156101a757600080fd5b506101996104ef565b3480156101bc57600080fd5b506101c561055e565b604080519115158252519081900360200190f35b3480156101e557600080fd5b506101c5610563565b3480156101fa57600080fd5b5061019961059a565b34801561020f57600080fd5b50610199600160a060020a0360043516610630565b34801561023057600080fd5b50610199600160a060020a036004351661071c565b34801561025157600080fd5b50610199600160a060020a0360043516610739565b34801561027257600080fd5b5061027b610756565b60408051600160a060020a039092168252519081900360200190f35b3480156102a357600080fd5b5061027b61076b565b3480156102b857600080fd5b506101c5600160a060020a036004351661077a565b3480156102d957600080fd5b50610199610795565b3480156102ee57600080fd5b506102f7610846565b6040805161ffff9092168252519081900360200190f35b34801561031a57600080fd5b50610199610857565b34801561032f57600080fd5b506103386108c3565b6040805160ff9092168252519081900360200190f35b34801561035a57600080fd5b506101c5600160a060020a03600435166108d7565b34801561037b57600080fd5b50610199600160a060020a03600435166108ea565b34801561039c57600080fd5b50610338610907565b3480156103b157600080fd5b506101c5600160a060020a0360043516610915565b3480156103d257600080fd5b50610199600160a060020a0360043581169060243516610928565b3480156103f957600080fd5b506101996109db565b34801561040e57600080fd5b50610199610c2e565b34801561042357600080fd5b50610199610c9f565b34801561043857600080fd5b50610199610dfd565b34801561044d57600080fd5b50610456610e06565b60408051918252519081900360200190f35b34801561047457600080fd5b50610456610e0c565b34801561048957600080fd5b50610338610e12565b34801561049e57600080fd5b50610199610e35565b3480156104b357600080fd5b50610199610e3e565b3480156104c857600080fd5b50610199610ecf565b6104da336108d7565b15156104e557600080fd5b6104ed610ed8565b565b60005460a060020a900460ff161561050657600080fd5b61050f33610915565b151561051a57600080fd5b600160065460a060020a900460ff16600381111561053457fe5b1461053e57600080fd5b600680546002919060a060020a60ff02191660a060020a835b0217905550565b600190565b6000600160065460a060020a900460ff16600381111561057f57fe5b148015610595575060065460a860020a900460ff165b905090565b60005460a060020a900460ff16156105b157600080fd5b600554620100009004600160a060020a031633146105ce57600080fd5b600160065460a060020a900460ff1660038111156105e857fe5b146105f257600080fd5b60065460a860020a900460ff161561060957600080fd5b6006805475ff000000000000000000000000000000000000000000191660a860020a179055565b610639336108d7565b151561064457600080fd5b600060065460a060020a900460ff16600381111561065e57fe5b1461066857600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051610719928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b1580156106d457600080fd5b505af11580156106e8573d6000803e3d6000fd5b505050506040513d60208110156106fe57600080fd5b5051600154600160a060020a0316919063ffffffff610f9f16565b50565b61072533610915565b151561073057600080fd5b61071981611057565b610742336108d7565b151561074d57600080fd5b61071981611068565b600554620100009004600160a060020a031690565b600654600160a060020a031690565b600061078d60028363ffffffff61107916565b90505b919050565b60005460a060020a900460ff16156107ac57600080fd5b6107b533610915565b15156107c057600080fd5b600360065460a060020a900460ff1660038111156107da57fe5b14156107e557600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff00001916905560a060020a60ff021916740300000000000000000000000000000000000000001775ff00ffffffffffffffffffffffffffffffffffffffff19169055565b60065460b860020a900461ffff1690565b60005460a060020a900460ff161561086e57600080fd5b61087733610915565b151561088257600080fd5b600260065460a060020a900460ff16600381111561089c57fe5b146108a657600080fd5b600680546001919060a060020a60ff02191660a060020a83610557565b60055460009060ff16600181111561059557fe5b600061078d60038363ffffffff61107916565b6108f33361077a565b15156108fe57600080fd5b610719816110b0565b600554610100900460ff1690565b600061078d60048363ffffffff61107916565b60005460a060020a900460ff161561093f57600080fd5b61094833610915565b151561095357600080fd5b600360065460a060020a900460ff16600381111561096d57fe5b1461097757600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a039687160217905560a060020a60ff02191660a060020a1773ffffffffffffffffffffffffffffffffffffffff191691909216179055565b60008054819060a060020a900460ff16156109f557600080fd5b6109fe3361077a565b1515610a0957600080fd5b600060055460ff166001811115610a1c57fe5b14610a2657600080fd5b600160065460a060020a900460ff166003811115610a4057fe5b14610a4a57600080fd5b60065460a860020a900460ff161515610a6257600080fd5b60065460b860020a900461ffff161515610ad8576006805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610ba0565b60068054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610ba0576006805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600754600290046007555b60075461016d9004915060008211610bb757600080fd5b600554600154610be191600160a060020a039182169162010000909104168463ffffffff610f9f16565b600654600160a060020a031615610c2a57506064600a82020460008111610c0757600080fd5b600654600154610c2a91600160a060020a0391821691168363ffffffff610f9f16565b5050565b60005460a060020a900460ff1615610c4557600080fd5b610c4e336108d7565b1515610c5957600080fd5b600060065460a060020a900460ff166003811115610c7357fe5b1415610c7e57600080fd5b6006805475ffff000000000000000000000000000000000000000019169055565b600080548190819060a060020a900460ff1615610cbb57600080fd5b610cc4336108d7565b1515610ccf57600080fd5b600060065460a060020a900460ff166003811115610ce957fe5b14610cf357600080fd5b600060055460ff166001811115610d0657fe5b148015610d135750600754155b15610de257600554610d2c90610100900460ff166110c1565b92506064600a8402600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519390920486019450600160a060020a0316916370a08231916024808201926020929091908290030181600087803b158015610da057600080fd5b505af1158015610db4573d6000803e3d6000fd5b505050506040513d6020811015610dca57600080fd5b50519050818114610dda57600080fd5b600283046007555b50506006805460a060020a60ff02191660a060020a17905550565b6104ed33611173565b61016d81565b60075490565b600654760100000000000000000000000000000000000000000000900460ff1690565b6104ed33611184565b60005460a060020a900460ff1615610e5557600080fd5b600554620100009004600160a060020a03163314610e7257600080fd5b600160065460a060020a900460ff166003811115610e8c57fe5b14610e9657600080fd5b60065460a860020a900460ff161515610eae57600080fd5b6006805475ff00000000000000000000000000000000000000000019169055565b6104ed33611195565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610f3d57600080fd5b505af1158015610f51573d6000803e3d6000fd5b505050506040513d6020811015610f6757600080fd5b505190506000811115610f9757600054600154610f9791600160a060020a0391821691168363ffffffff610f9f16565b6107196111a6565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561101b57600080fd5b505af115801561102f573d6000803e3d6000fd5b505050506040513d602081101561104557600080fd5b5051151561105257600080fd5b505050565b61071960048263ffffffff6111be16565b61071960038263ffffffff6111be16565b6000600160a060020a038216151561109057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61071960028263ffffffff6111be16565b600060ff821615156110de575069152d02c7e14af6800000610790565b8160ff16600114156110fb575069d3c21bcecceda1000000610790565b8160ff166002141561111957506a01a784379d99db42000000610790565b8160ff166003141561113757506a027b46536c66c8e3000000610790565b8160ff166004141561115557506a034f086f3b33b684000000610790565b8160ff166005141561079057506a0422ca8b0a00a425000000610790565b61071960048263ffffffff61120c16565b61071960038263ffffffff61120c16565b61071960028263ffffffff61120c16565b6000805460a060020a60ff02191660a060020a179055565b600160a060020a03811615156111d357600080fd5b6111dd8282611079565b156111e757600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561122157600080fd5b61122b8282611079565b151561123657600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820d37bea8cf990d36f43cc5b4af261b636128105f981b5fa7014ca1bf22a0030880029", "functionHashes": { "DAYS_PER_YEAR()": "c6846ef8", "activateMiner()": "b2a32cd5", @@ -338,7 +416,12 @@ "addSystem(address)": "74be7592", "deactivateMiner()": "9e614ca0", "getCategory()": "80258e47", + "getCurrentDay()": "3e6968b6", + "getCurrentYear()": "ce41607a", + "getCurrentYearSupply()": "cdfd0f64", "getMiner()": "302c11ca", + "getMinerType()": "4969ae70", + "getReferral()": "329b1c92", "isAlgoMiner()": "1777fb4b", "isCoreTeam(address)": "608d3d3d", "isMining()": "19a74ab3", @@ -350,7 +433,7 @@ "renounceCoreTeam()": "d43acc79", "renounceSupervisor()": "be952494", "renounceSystem()": "e9d61859", - "resetMiner(address)": "ada436e9", + "resetMiner(address,address)": "8329138f", "resumeMining()": "427534a4", "startMining()": "21b79d98", "stopAndRemoveOwnership()": "363aa6c7", @@ -359,19 +442,24 @@ }, "gasEstimates": { "creation": { - "codeDepositCost": "819800", + "codeDepositCost": "948000", "executionCost": "infinite", "totalCost": "infinite" }, "external": { - "DAYS_PER_YEAR()": "646", + "DAYS_PER_YEAR()": "712", "activateMiner()": "infinite", "addCoreTeam(address)": "infinite", "addSupervisor(address)": "infinite", "addSystem(address)": "infinite", "deactivateMiner()": "infinite", - "getCategory()": "718", + "getCategory()": "784", + "getCurrentDay()": "737", + "getCurrentYear()": "982", + "getCurrentYearSupply()": "934", "getMiner()": "724", + "getMinerType()": "744", + "getReferral()": "735", "isAlgoMiner()": "234", "isCoreTeam(address)": "infinite", "isMining()": "881", @@ -383,11 +471,11 @@ "renounceCoreTeam()": "infinite", "renounceSupervisor()": "infinite", "renounceSystem()": "infinite", - "resetMiner(address)": "infinite", + "resetMiner(address,address)": "infinite", "resumeMining()": "infinite", "startMining()": "21742", "stopAndRemoveOwnership()": "infinite", - "stopMining()": "22094", + "stopMining()": "22204", "terminate()": "infinite" } } diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json index 996c88e64..0fb87aba4 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json @@ -1,5 +1,36 @@ { "contracts": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol": { + "AlgoCommon": { + "abi": [], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a72305820a82cc7d287f8450e22843025dd73eaa06172ebd434e1e3cf86a642a33d96584e0029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x35 DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xa8 0x2c 0xc7 0xd2 DUP8 0xf8 GASLIMIT 0xe 0x22 DUP5 ADDRESS 0x25 0xdd PUSH20 0xEAA06172EBD434E1E3CF86A642A33D96584E0029 ", + "sourceMap": "27:1033:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27:1033:0;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "10600", + "executionCost": "66", + "totalCost": "10666" + }, + "internal": { + "getCapacityByCategory(uint8)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol\":\"AlgoCommon\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol\":{\"keccak256\":\"0x2314139702cc63c8daa379e521abea3be32730ba896f68f3f865749907e64539\",\"urls\":[\"bzzr://b945e0ec5a4ca8a52b5e816c5bb00807d0ca43c5363102821b36c8c4ee98a2d5\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + }, "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol": { "AlgoCoreTeamRole": { "abi": [ @@ -101,20 +132,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "constant": true, - "inputs": [], - "name": "TOKEN_FACTOR", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { "constant": false, "inputs": [ @@ -129,48 +146,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "constant": true, - "inputs": [], - "name": "CAT_4_VALUE", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "CAT_1_VALUE", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "CAT_3_VALUE", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { "constant": true, "inputs": [ @@ -190,48 +165,6 @@ "stateMutability": "view", "type": "function" }, - { - "constant": true, - "inputs": [], - "name": "CAT_0_VALUE", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "CAT_5_VALUE", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "CAT_2_VALUE", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { "constant": false, "inputs": [], @@ -245,7 +178,7 @@ "inputs": [ { "name": "poolType", - "type": "uint16" + "type": "uint8" }, { "name": "tokenAddress", @@ -263,24 +196,17 @@ "evm": { "bytecode": { "linkReferences": {}, - "object": "608060405234801561001057600080fd5b5060405160408061091a8339810160405280516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561006f9064010000000061008b810204565b506003805461ffff191661ffff92909216919091179055610134565b6100a36002826401000000006107116100a682021704565b50565b600160a060020a03811615156100bb57600080fd5b6100ce82826401000000006100fd810204565b156100d857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561011457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6107d7806101436000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632296f4c7146100bc57806325109e8b146100dd5780632e6b684914610104578063455acbcd14610125578063492fba841461013a57806349dc9ed01461014f578063608d3d3d146101645780639fc3c98314610199578063a89febb2146101ae578063aed6183f146101c3578063d43acc79146101d8575b600080fd5b3480156100b157600080fd5b506100ba6101ed565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661020b565b3480156100e957600080fd5b506100f2610475565b60408051918252519081900360200190f35b34801561011057600080fd5b506100ba600160a060020a0360043516610481565b34801561013157600080fd5b506100f26104a1565b34801561014657600080fd5b506100f26104b0565b34801561015b57600080fd5b506100f26104be565b34801561017057600080fd5b50610185600160a060020a03600435166104cd565b604080519115158252519081900360200190f35b3480156101a557600080fd5b506100f26104e6565b3480156101ba57600080fd5b506100f26104f4565b3480156101cf57600080fd5b506100f2610503565b3480156101e457600080fd5b506100ba610512565b6101f6336104cd565b151561020157600080fd5b61020961051b565b565b600080548190819074010000000000000000000000000000000000000000900460ff161561023857600080fd5b610241336104cd565b151561024c57600080fd5b600160a060020a03841660009081526004602052604090205460ff161561027257600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102b357600080fd5b505af11580156102c7573d6000803e3d6000fd5b505050506040513d60208110156102dd57600080fd5b505115156102ea57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032857600080fd5b505af115801561033c573d6000803e3d6000fd5b505050506040513d602081101561035257600080fd5b50519150600060ff83161080159061036e575060058260ff1611155b151561037957600080fd5b50600060ff82161515610397575069152d02c7e14af6800000610428565b8160ff16600114156103b4575069d3c21bcecceda1000000610428565b8160ff16600214156103d257506a01a784379d99db42000000610428565b8160ff16600314156103f057506a027b46536c66c8e3000000610428565b8160ff166004141561040e57506a034f086f3b33b684000000610428565b8160ff166005141561042857506a0422ca8b0a00a4250000005b6000811161043557600080fd5b600160a060020a038085166000908152600460205260409020805460ff191660019081179091555461046f9116858363ffffffff6105e216565b50505050565b670de0b6b3a764000081565b61048a336104cd565b151561049557600080fd5b61049e81610681565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b60006104e060028363ffffffff61069216565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b610209336106c9565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561058057600080fd5b505af1158015610594573d6000803e3d6000fd5b505050506040513d60208110156105aa57600080fd5b5051905060008111156105da576000546001546105da91600160a060020a0391821691168363ffffffff6105e216565b61049e6106da565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561064557600080fd5b505af1158015610659573d6000803e3d6000fd5b505050506040513d602081101561066f57600080fd5b5051151561067c57600080fd5b505050565b61049e60028263ffffffff61071116565b6000600160a060020a03821615156106a957600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61049e60028263ffffffff61075f16565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a038116151561072657600080fd5b6107308282610692565b1561073a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561077457600080fd5b61077e8282610692565b151561078957600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a7230582003c6fe797e016b5da34d582d5503b392dfdb98114c82abcb7165886533dc93b80029", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 PUSH2 0x91A DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP2 DUP3 AND DUP2 OR PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND OR SWAP1 SSTORE PUSH2 0x6F SWAP1 PUSH5 0x100000000 PUSH2 0x8B DUP2 MUL DIV JUMP JUMPDEST POP PUSH1 0x3 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH2 0xFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x134 JUMP JUMPDEST PUSH2 0xA3 PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH2 0x711 PUSH2 0xA6 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCE DUP3 DUP3 PUSH5 0x100000000 PUSH2 0xFD DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH2 0xD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x114 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x7D7 DUP1 PUSH2 0x143 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA0 JUMPI PUSH4 0xFFFFFFFF PUSH1 0xE0 PUSH1 0x2 EXP PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0xC08BF88 DUP2 EQ PUSH2 0xA5 JUMPI DUP1 PUSH4 0x2296F4C7 EQ PUSH2 0xBC JUMPI DUP1 PUSH4 0x25109E8B EQ PUSH2 0xDD JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x455ACBCD EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0x492FBA84 EQ PUSH2 0x13A JUMPI DUP1 PUSH4 0x49DC9ED0 EQ PUSH2 0x14F JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x9FC3C983 EQ PUSH2 0x199 JUMPI DUP1 PUSH4 0xA89FEBB2 EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0xAED6183F EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x1D8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0x1ED JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x20B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF2 PUSH2 0x475 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x481 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x131 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF2 PUSH2 0x4A1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x146 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF2 PUSH2 0x4B0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF2 PUSH2 0x4BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x185 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x4CD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF2 PUSH2 0x4E6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF2 PUSH2 0x4F4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF2 PUSH2 0x503 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0x512 JUMP JUMPDEST PUSH2 0x1F6 CALLER PUSH2 0x4CD JUMP JUMPDEST ISZERO ISZERO PUSH2 0x201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x209 PUSH2 0x51B JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 DUP2 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x238 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x241 CALLER PUSH2 0x4CD JUMP JUMPDEST ISZERO ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 SWAP3 POP DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2C7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x2EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x328 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x33C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP PUSH1 0x0 PUSH1 0xFF DUP4 AND LT DUP1 ISZERO SWAP1 PUSH2 0x36E JUMPI POP PUSH1 0x5 DUP3 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0xFF DUP3 AND ISZERO ISZERO PUSH2 0x397 JUMPI POP PUSH10 0x152D02C7E14AF6800000 PUSH2 0x428 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x3B4 JUMPI POP PUSH10 0xD3C21BCECCEDA1000000 PUSH2 0x428 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x3D2 JUMPI POP PUSH11 0x1A784379D99DB42000000 PUSH2 0x428 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x3F0 JUMPI POP PUSH11 0x27B46536C66C8E3000000 PUSH2 0x428 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x40E JUMPI POP PUSH11 0x34F086F3B33B684000000 PUSH2 0x428 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x428 JUMPI POP PUSH11 0x422CA8B0A00A425000000 JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x435 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x46F SWAP2 AND DUP6 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x5E2 AND JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH2 0x48A CALLER PUSH2 0x4CD JUMP JUMPDEST ISZERO ISZERO PUSH2 0x495 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x49E DUP2 PUSH2 0x681 JUMP JUMPDEST POP JUMP JUMPDEST PUSH11 0x34F086F3B33B684000000 DUP2 JUMP JUMPDEST PUSH10 0xD3C21BCECCEDA1000000 DUP2 JUMP JUMPDEST PUSH11 0x27B46536C66C8E3000000 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E0 PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x692 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH10 0x152D02C7E14AF6800000 DUP2 JUMP JUMPDEST PUSH11 0x422CA8B0A00A425000000 DUP2 JUMP JUMPDEST PUSH11 0x1A784379D99DB42000000 DUP2 JUMP JUMPDEST PUSH2 0x209 CALLER PUSH2 0x6C9 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x580 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x594 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0x5DA JUMPI PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0x5DA SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0x5E2 AND JUMP JUMPDEST PUSH2 0x49E PUSH2 0x6DA JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x645 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x659 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x66F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x67C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x49E PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x711 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x6A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x49E PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x75F AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x726 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x730 DUP3 DUP3 PUSH2 0x692 JUMP JUMPDEST ISZERO PUSH2 0x73A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x774 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x77E DUP3 DUP3 PUSH2 0x692 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x789 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 SUB 0xc6 INVALID PUSH26 0x7E016B5DA34D582D5503B392DFDB98114C82ABCB7165886533DC SWAP4 0xb8 STOP 0x29 ", - "sourceMap": "524:1915:1:-;;;1182:174;8:9:-1;5:2;;;30:1;27;20:12;5:2;1182:174:1;;;;;;;;;;;;;;;;;;;156:8:4;:21;;167:10;-1:-1:-1;;;;;;156:21:4;;;;;-1:-1:-1;;;;;;188:19:4;;;;-1:-1:-1;636:29:2;;;;;-1:-1:-1;;;;;636:29:2;;;;;368:24:0;;:12;;;;:24;:::i;:::-;-1:-1:-1;1328:9:1;:20;;-1:-1:-1;;1328:20:1;;;;;;;;;;;;524:1915;;824:96:0;883:29;:16;904:7;883:20;;;;;;:29;:::i;:::-;824:96;:::o;244:167:5:-;-1:-1:-1;;;;;316:21:5;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:5;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:5;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:5;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:5;:11;:20;;;;;;;;;;;;;;;725:166::o;524:1915:1:-;;;;;;;" + "object": "608060405234801561001057600080fd5b506040516040806107f28339810160405280516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561006f90640100000000610093810204565b6003805483919060ff19166001838181111561008757fe5b0217905550505061013c565b6100ab6002826401000000006105e16100ae82021704565b50565b600160a060020a03811615156100c357600080fd5b6100d68282640100000000610105810204565b156100e057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561011c57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106a78061014b6000396000f3006080604052600436106100535763ffffffff60e060020a6000350416630c08bf8881146100585780632296f4c71461006f5780632e6b684914610090578063608d3d3d146100b1578063d43acc79146100e6575b600080fd5b34801561006457600080fd5b5061006d6100fb565b005b34801561007b57600080fd5b5061006d600160a060020a0360043516610119565b34801561009c57600080fd5b5061006d600160a060020a03600435166102f5565b3480156100bd57600080fd5b506100d2600160a060020a0360043516610315565b604080519115158252519081900360200190f35b3480156100f257600080fd5b5061006d610330565b61010433610315565b151561010f57600080fd5b610117610339565b565b600080548190819074010000000000000000000000000000000000000000900460ff161561014657600080fd5b61014f33610315565b151561015a57600080fd5b600160a060020a03841660009081526004602052604090205460ff161561018057600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156101c157600080fd5b505af11580156101d5573d6000803e3d6000fd5b505050506040513d60208110156101eb57600080fd5b505115156101f857600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561023657600080fd5b505af115801561024a573d6000803e3d6000fd5b505050506040513d602081101561026057600080fd5b50519150600060ff83161080159061027c575060058260ff1611155b151561028757600080fd5b61029082610400565b9050600160035460ff1660018111156102a557fe5b14156102b5576064600a82020490505b600160a060020a038085166000908152600460205260409020805460ff19166001908117909155546102ef9116858363ffffffff6104b216565b50505050565b6102fe33610315565b151561030957600080fd5b61031281610551565b50565b600061032860028363ffffffff61056216565b90505b919050565b61011733610599565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561039e57600080fd5b505af11580156103b2573d6000803e3d6000fd5b505050506040513d60208110156103c857600080fd5b5051905060008111156103f8576000546001546103f891600160a060020a0391821691168363ffffffff6104b216565b6103126105aa565b600060ff8216151561041d575069152d02c7e14af680000061032b565b8160ff166001141561043a575069d3c21bcecceda100000061032b565b8160ff166002141561045857506a01a784379d99db4200000061032b565b8160ff166003141561047657506a027b46536c66c8e300000061032b565b8160ff166004141561049457506a034f086f3b33b68400000061032b565b8160ff166005141561032b57506a0422ca8b0a00a42500000061032b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561051557600080fd5b505af1158015610529573d6000803e3d6000fd5b505050506040513d602081101561053f57600080fd5b5051151561054c57600080fd5b505050565b61031260028263ffffffff6105e116565b6000600160a060020a038216151561057957600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61031260028263ffffffff61062f16565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a03811615156105f657600080fd5b6106008282610562565b1561060a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561064457600080fd5b61064e8282610562565b151561065957600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058208317cc38f72fdbf4d19029db12a6c784275ab5dfd7521863b2c79aee26e6effb0029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 PUSH2 0x7F2 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP2 DUP3 AND DUP2 OR PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND OR SWAP1 SSTORE PUSH2 0x6F SWAP1 PUSH5 0x100000000 PUSH2 0x93 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD DUP4 SWAP2 SWAP1 PUSH1 0xFF NOT AND PUSH1 0x1 DUP4 DUP2 DUP2 GT ISZERO PUSH2 0x87 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP POP POP PUSH2 0x13C JUMP JUMPDEST PUSH2 0xAB PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH2 0x5E1 PUSH2 0xAE DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 DUP3 DUP3 PUSH5 0x100000000 PUSH2 0x105 DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH2 0xE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x11C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x6A7 DUP1 PUSH2 0x14B PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x53 JUMPI PUSH4 0xFFFFFFFF PUSH1 0xE0 PUSH1 0x2 EXP PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0xC08BF88 DUP2 EQ PUSH2 0x58 JUMPI DUP1 PUSH4 0x2296F4C7 EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0x90 JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0xB1 JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0xE6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D PUSH2 0xFB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x2F5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x315 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D PUSH2 0x330 JUMP JUMPDEST PUSH2 0x104 CALLER PUSH2 0x315 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x10F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x117 PUSH2 0x339 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 DUP2 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x146 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F CALLER PUSH2 0x315 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x15A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x180 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 SWAP3 POP DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x1F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP PUSH1 0x0 PUSH1 0xFF DUP4 AND LT DUP1 ISZERO SWAP1 PUSH2 0x27C JUMPI POP PUSH1 0x5 DUP3 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0x287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x290 DUP3 PUSH2 0x400 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x3 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x2A5 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x2B5 JUMPI PUSH1 0x64 PUSH1 0xA DUP3 MUL DIV SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x2EF SWAP2 AND DUP6 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x4B2 AND JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x2FE CALLER PUSH2 0x315 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x309 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x312 DUP2 PUSH2 0x551 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x328 PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x562 AND JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x117 CALLER PUSH2 0x599 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0x3F8 JUMPI PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0x3F8 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0x4B2 AND JUMP JUMPDEST PUSH2 0x312 PUSH2 0x5AA JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND ISZERO ISZERO PUSH2 0x41D JUMPI POP PUSH10 0x152D02C7E14AF6800000 PUSH2 0x32B JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x43A JUMPI POP PUSH10 0xD3C21BCECCEDA1000000 PUSH2 0x32B JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x458 JUMPI POP PUSH11 0x1A784379D99DB42000000 PUSH2 0x32B JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x476 JUMPI POP PUSH11 0x27B46536C66C8E3000000 PUSH2 0x32B JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x494 JUMPI POP PUSH11 0x34F086F3B33B684000000 PUSH2 0x32B JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x32B JUMPI POP PUSH11 0x422CA8B0A00A425000000 PUSH2 0x32B JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x515 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x529 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x53F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x54C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x312 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x5E1 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x312 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x62F AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x5F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x600 DUP3 DUP3 PUSH2 0x562 JUMP JUMPDEST ISZERO PUSH2 0x60A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x644 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64E DUP3 DUP3 PUSH2 0x562 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x659 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 DUP4 OR 0xcc CODESIZE 0xf7 0x2f 0xdb DELEGATECALL 0xd1 SWAP1 0x29 0xdb SLT 0xa6 0xc7 DUP5 0x27 GAS 0xb5 0xdf 0xd7 MSTORE XOR PUSH4 0xB2C79AEE 0x26 0xe6 0xef CREATE2 STOP 0x29 ", + "sourceMap": "552:1250:2:-;;;814:176;8:9:-1;5:2;;;30:1;27;20:12;5:2;814:176:2;;;;;;;;;;;;;;;;;;;156:8:5;:21;;167:10;-1:-1:-1;;;;;;156:21:5;;;;;-1:-1:-1;;;;;;188:19:5;;;;-1:-1:-1;636:29:3;;;;;-1:-1:-1;;;;;636:29:3;;;;;368:24:1;;:12;;;;:24;:::i;:::-;962:9:2;:20;;974:8;;962:9;-1:-1:-1;;962:20:2;;974:8;962:20;;;;;;;;;;;;;814:176;;552:1250;;824:96:1;883:29;:16;904:7;883:20;;;;;;:29;:::i;:::-;824:96;:::o;244:167:6:-;-1:-1:-1;;;;;316:21:6;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:6;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:6;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:6;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:6;:11;:20;;;;;;;;;;;;;;;725:166::o;552:1250:2:-;;;;;;;" }, "gasEstimates": { "creation": { - "codeDepositCost": "401400", + "codeDepositCost": "340600", "executionCost": "infinite", "totalCost": "infinite" }, "external": { - "CAT_0_VALUE()": "423", - "CAT_1_VALUE()": "357", - "CAT_2_VALUE()": "467", - "CAT_3_VALUE()": "379", - "CAT_4_VALUE()": "335", - "CAT_5_VALUE()": "445", - "TOKEN_FACTOR()": "291", "addCoreTeam(address)": "infinite", "isCoreTeam(address)": "infinite", "renounceCoreTeam()": "infinite", @@ -289,13 +215,6 @@ } }, "methodIdentifiers": { - "CAT_0_VALUE()": "9fc3c983", - "CAT_1_VALUE()": "492fba84", - "CAT_2_VALUE()": "aed6183f", - "CAT_3_VALUE()": "49dc9ed0", - "CAT_4_VALUE()": "455acbcd", - "CAT_5_VALUE()": "a89febb2", - "TOKEN_FACTOR()": "25109e8b", "addCoreTeam(address)": "2e6b6849", "isCoreTeam(address)": "608d3d3d", "renounceCoreTeam()": "d43acc79", @@ -303,7 +222,7 @@ "trasferToMiner(address)": "2296f4c7" } }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"terminate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"trasferToMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"TOKEN_FACTOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_4_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_1_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_3_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_0_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_5_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_2_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"poolType\",\"type\":\"uint16\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":\"AlgoPool\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":{\"keccak256\":\"0xbb72ddedfb108359e22306e75ce9d1e16ce7fa9e743dfec3a25402df643f3b43\",\"urls\":[\"bzzr://ac95c8dff53cdf9caa690eb44d9f5545d941fdaa6131c412440c503c912db991\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol\":{\"keccak256\":\"0x71adbf7f060599239b7a981594e43dc8fbe8597fd2853b6fe9e70ff39883d73a\",\"urls\":[\"bzzr://70691c1638cdc0f744f8c5b5a94e4f857ba40ad053816cfbd15e13ed41a3bc66\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0x94c226040dfda257ee61c1455bbb920db28b6ad0f5cba33ecc76319c003630b7\",\"urls\":[\"bzzr://bdd0568ed74054f0f91933dab7fbba6789cceb60ab2f5200d719347161e8feed\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol\":{\"keccak256\":\"0x29a8fa3204dbd204355714601ce21d7d717a586a4de21009d8f2a3ca7981963f\",\"urls\":[\"bzzr://55d9b762620cef1e6f7b11a26d6cc123f5b608a59e0d36f9bc0a1e8ff0ff5c42\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"terminate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"trasferToMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"poolType\",\"type\":\"uint8\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":\"AlgoPool\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol\":{\"keccak256\":\"0x2314139702cc63c8daa379e521abea3be32730ba896f68f3f865749907e64539\",\"urls\":[\"bzzr://b945e0ec5a4ca8a52b5e816c5bb00807d0ca43c5363102821b36c8c4ee98a2d5\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":{\"keccak256\":\"0x46653d14027337c1d08f502ae1b0d45f3fccf84c0c8d8ec9ab7b5443d627be60\",\"urls\":[\"bzzr://f1b02198c082a8f940590db1e5704f9cac3058f509b035e7d1e45b8e2dc9a632\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol\":{\"keccak256\":\"0x71adbf7f060599239b7a981594e43dc8fbe8597fd2853b6fe9e70ff39883d73a\",\"urls\":[\"bzzr://70691c1638cdc0f744f8c5b5a94e4f857ba40ad053816cfbd15e13ed41a3bc66\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0xdc21d3ce2e847a83e62a95fc4e8a31305771c1c6549fba2102ae9a7caa09a1e5\",\"urls\":[\"bzzr://291aa93e18c12398d6d8031308b1a0231d253ec061a5449d0335bd476554383e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol\":{\"keccak256\":\"0x29a8fa3204dbd204355714601ce21d7d717a586a4de21009d8f2a3ca7981963f\",\"urls\":[\"bzzr://55d9b762620cef1e6f7b11a26d6cc123f5b608a59e0d36f9bc0a1e8ff0ff5c42\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -388,6 +307,20 @@ "stateMutability": "view", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "getMinerType", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [], @@ -417,6 +350,7 @@ "methodIdentifiers": { "getCategory()": "80258e47", "getMiner()": "302c11ca", + "getMinerType()": "4969ae70", "isAlgoMiner()": "1777fb4b", "isMining()": "19a74ab3" } @@ -468,7 +402,7 @@ "linkReferences": {}, "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820ba9d82b11504517181f938ed511f09c0a22046ef39e2e32460a2175b508e16a80029", "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xba SWAP14 DUP3 0xb1 ISZERO DIV MLOAD PUSH18 0x81F938ED511F09C0A22046EF39E2E32460A2 OR JUMPDEST POP DUP15 AND 0xa8 STOP 0x29 ", - "sourceMap": "109:784:5:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "sourceMap": "109:784:6:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -502,7 +436,7 @@ "linkReferences": {}, "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820da2bd0dd3588878574232c2d13f92e16f4b0e8ad94ede9adb0d087f862d4f8cf0029", "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xda 0x2b 0xd0 0xdd CALLDATALOAD DUP9 DUP8 DUP6 PUSH21 0x232C2D13F92E16F4B0E8AD94EDE9ADB0D087F862D4 0xf8 0xcf STOP 0x29 ", - "sourceMap": "117:1531:6:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "sourceMap": "117:1531:7:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -742,7 +676,7 @@ "linkReferences": {}, "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820c0f55d8db2bd761049fa5ba6b6c207a4d595b758946aba3715580373517606710029", "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xc0 0xf5 0x5d DUP14 0xb2 0xbd PUSH23 0x1049FA5BA6B6C207A4D595B758946ABA37155803735176 MOD PUSH18 0x2900000000000000000000000000000000 ", - "sourceMap": "353:1296:8:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "sourceMap": "353:1296:9:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -768,38 +702,26 @@ } }, "sources": { - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol": { "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol", + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol", "exportedSymbols": { - "AlgoCoreTeamRole": [ - 86 + "AlgoCommon": [ + 97 ] }, - "id": 87, + "id": 98, "nodeType": "SourceUnit", "nodes": [ { "id": 1, "literals": [ "solidity", - "^", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:24:0" - }, - { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", - "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", - "id": 2, - "nodeType": "ImportDirective", - "scope": 87, - "sourceUnit": 512, - "src": "28:189:0", - "symbolAliases": [], - "unitAlias": "" + "src": "0:23:0" }, { "baseContracts": [], @@ -807,1153 +729,20 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 86, + "id": 97, "linearizedBaseContracts": [ - 86 + 97 ], - "name": "AlgoCoreTeamRole", + "name": "AlgoCommon", "nodeType": "ContractDefinition", "nodes": [ - { - "id": 5, - "libraryName": { - "contractScope": null, - "id": 3, - "name": "Roles", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 511, - "src": "260:5:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$511", - "typeString": "library Roles" - } - }, - "nodeType": "UsingForDirective", - "src": "254:27:0", - "typeName": { - "contractScope": null, - "id": 4, - "name": "Roles.Role", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 424, - "src": "270:10:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$424_storage_ptr", - "typeString": "struct Roles.Role" - } - } - }, - { - "constant": false, - "id": 7, - "name": "_coreTeamMembers", - "nodeType": "VariableDeclaration", - "scope": 86, - "src": "289:35:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$424_storage", - "typeString": "struct Roles.Role" - }, - "typeName": { - "contractScope": null, - "id": 6, - "name": "Roles.Role", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 424, - "src": "289:10:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$424_storage_ptr", - "typeString": "struct Roles.Role" - } - }, - "value": null, - "visibility": "private" - }, - { - "body": { - "id": 15, - "nodeType": "Block", - "src": "357:43:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 11, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 867, - "src": "381:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 12, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "381:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 10, - "name": "_addCoreTeam", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 73, - "src": "368:12:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 13, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "368:24:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 14, - "nodeType": "ExpressionStatement", - "src": "368:24:0" - } - ] - }, - "documentation": null, - "id": 16, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 8, - "nodeType": "ParameterList", - "parameters": [], - "src": "345:2:0" - }, - "payable": false, - "returnParameters": { - "id": 9, - "nodeType": "ParameterList", - "parameters": [], - "src": "357:0:0" - }, - "scope": 86, - "src": "333:67:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 26, - "nodeType": "Block", - "src": "432:62:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 20, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 867, - "src": "462:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 21, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "462:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 19, - "name": "isCoreTeam", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "451:10:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", - "typeString": "function (address) view returns (bool)" - } - }, - "id": 22, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "451:22:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 18, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 870, - 871 - ], - "referencedDeclaration": 870, - "src": "443:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 23, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "443:31:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 24, - "nodeType": "ExpressionStatement", - "src": "443:31:0" - }, - { - "id": 25, - "nodeType": "PlaceholderStatement", - "src": "485:1:0" - } - ] - }, - "documentation": null, - "id": 27, - "name": "onlyCoreTeam", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 17, - "nodeType": "ParameterList", - "parameters": [], - "src": "429:2:0" - }, - "src": "408:86:0", - "visibility": "internal" - }, - { - "body": { - "id": 39, - "nodeType": "Block", - "src": "566:55:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 36, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 29, - "src": "605:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 34, - "name": "_coreTeamMembers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7, - "src": "584:16:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$424_storage", - "typeString": "struct Roles.Role storage ref" - } - }, - "id": 35, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "has", - "nodeType": "MemberAccess", - "referencedDeclaration": 510, - "src": "584:20:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$424_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$424_storage_ptr_$", - "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" - } - }, - "id": 37, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "584:29:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 33, - "id": 38, - "nodeType": "Return", - "src": "577:36:0" - } - ] - }, - "documentation": null, - "id": 40, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "isCoreTeam", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 30, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 29, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 40, - "src": "522:15:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 28, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "522:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "521:17:0" - }, - "payable": false, - "returnParameters": { - "id": 33, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 32, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 40, - "src": "560:4:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 31, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "560:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "559:6:0" - }, - "scope": 86, - "src": "502:119:0", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 51, - "nodeType": "Block", - "src": "687:40:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 48, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42, - "src": "711:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 47, - "name": "_addCoreTeam", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 73, - "src": "698:12:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 49, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "698:21:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 50, - "nodeType": "ExpressionStatement", - "src": "698:21:0" - } - ] - }, - "documentation": null, - "id": 52, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": null, - "id": 45, - "modifierName": { - "argumentTypes": null, - "id": 44, - "name": "onlyCoreTeam", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 27, - "src": "674:12:0", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "674:12:0" - } - ], - "name": "addCoreTeam", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 43, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 42, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 52, - "src": "650:15:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 41, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "650:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "649:17:0" - }, - "payable": false, - "returnParameters": { - "id": 46, - "nodeType": "ParameterList", - "parameters": [], - "src": "687:0:0" - }, - "scope": 86, - "src": "629:98:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 60, - "nodeType": "Block", - "src": "770:46:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 56, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 867, - "src": "797:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 57, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "797:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 55, - "name": "_removeCoreTeam", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 85, - "src": "781:15:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 58, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "781:27:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 59, - "nodeType": "ExpressionStatement", - "src": "781:27:0" - } - ] - }, - "documentation": null, - "id": 61, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "renounceCoreTeam", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 53, - "nodeType": "ParameterList", - "parameters": [], - "src": "760:2:0" - }, - "payable": false, - "returnParameters": { - "id": 54, - "nodeType": "ParameterList", - "parameters": [], - "src": "770:0:0" - }, - "scope": 86, - "src": "735:81:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 72, - "nodeType": "Block", - "src": "872:48:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 69, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63, - "src": "904:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 66, - "name": "_coreTeamMembers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7, - "src": "883:16:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$424_storage", - "typeString": "struct Roles.Role storage ref" - } - }, - "id": 68, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 456, - "src": "883:20:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$424_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$424_storage_ptr_$", - "typeString": "function (struct Roles.Role storage pointer,address)" - } - }, - "id": 70, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "883:29:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 71, - "nodeType": "ExpressionStatement", - "src": "883:29:0" - } - ] - }, - "documentation": null, - "id": 73, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "_addCoreTeam", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 64, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 73, - "src": "846:15:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "846:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "845:17:0" - }, - "payable": false, - "returnParameters": { - "id": 65, - "nodeType": "ParameterList", - "parameters": [], - "src": "872:0:0" - }, - "scope": 86, - "src": "824:96:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 84, - "nodeType": "Block", - "src": "979:51:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 81, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75, - "src": "1014:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 78, - "name": "_coreTeamMembers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7, - "src": "990:16:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$424_storage", - "typeString": "struct Roles.Role storage ref" - } - }, - "id": 80, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "remove", - "nodeType": "MemberAccess", - "referencedDeclaration": 487, - "src": "990:23:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$424_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$424_storage_ptr_$", - "typeString": "function (struct Roles.Role storage pointer,address)" - } - }, - "id": 82, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "990:32:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 83, - "nodeType": "ExpressionStatement", - "src": "990:32:0" - } - ] - }, - "documentation": null, - "id": 85, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "_removeCoreTeam", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 76, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 75, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 85, - "src": "953:15:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 74, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "953:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "952:17:0" - }, - "payable": false, - "returnParameters": { - "id": 77, - "nodeType": "ParameterList", - "parameters": [], - "src": "979:0:0" - }, - "scope": 86, - "src": "928:102:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 87, - "src": "221:812:0" - } - ], - "src": "0:1035:0" - }, - "id": 0 - }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol": { - "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol", - "exportedSymbols": { - "AlgoPool": [ - 300 - ] - }, - "id": 301, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 88, - "literals": [ - "solidity", - "0.4", - ".24" - ], - "nodeType": "PragmaDirective", - "src": "0:23:1" - }, - { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "id": 89, - "nodeType": "ImportDirective", - "scope": 301, - "sourceUnit": 709, - "src": "27:195:1", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", - "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", - "id": 90, - "nodeType": "ImportDirective", - "scope": 301, - "sourceUnit": 853, - "src": "224:198:1", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", - "file": "./IAlgoMiner.sol", - "id": 91, - "nodeType": "ImportDirective", - "scope": 301, - "sourceUnit": 381, - "src": "426:26:1", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol", - "file": "./ERC20TokenHolder.sol", - "id": 92, - "nodeType": "ImportDirective", - "scope": 301, - "sourceUnit": 358, - "src": "454:32:1", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol", - "file": "./AlgoCoreTeamRole.sol", - "id": 93, - "nodeType": "ImportDirective", - "scope": 301, - "sourceUnit": 87, - "src": "488:32:1", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [ - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 94, - "name": "ERC20TokenHolder", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 357, - "src": "545:16:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20TokenHolder_$357", - "typeString": "contract ERC20TokenHolder" - } - }, - "id": 95, - "nodeType": "InheritanceSpecifier", - "src": "545:16:1" - }, - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 96, - "name": "AlgoCoreTeamRole", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 86, - "src": "563:16:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoCoreTeamRole_$86", - "typeString": "contract AlgoCoreTeamRole" - } - }, - "id": 97, - "nodeType": "InheritanceSpecifier", - "src": "563:16:1" - } - ], - "contractDependencies": [ - 357, - 86, - 417 - ], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "id": 300, - "linearizedBaseContracts": [ - 300, - 86, - 357, - 417 - ], - "name": "AlgoPool", - "nodeType": "ContractDefinition", - "nodes": [ - { - "id": 100, - "libraryName": { - "contractScope": null, - "id": 98, - "name": "SafeERC20", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 852, - "src": "593:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$852", - "typeString": "library SafeERC20" - } - }, - "nodeType": "UsingForDirective", - "src": "587:27:1", - "typeName": { - "contractScope": null, - "id": 99, - "name": "IERC20", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 708, - "src": "607:6:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$708", - "typeString": "contract IERC20" - } - } - }, { "constant": true, - "id": 107, + "id": 8, "name": "TOKEN_FACTOR", "nodeType": "VariableDeclaration", - "scope": 300, - "src": "622:56:1", + "scope": 97, + "src": "56:58:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1961,10 +750,10 @@ "typeString": "uint256" }, "typeName": { - "id": 101, + "id": 2, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "622:7:1", + "src": "56:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1976,7 +765,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 106, + "id": 7, "isConstant": false, "isLValue": false, "isPure": true, @@ -1984,14 +773,14 @@ "leftExpression": { "argumentTypes": null, "hexValue": "3130", - "id": 102, + "id": 3, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "661:2:1", + "src": "97:2:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", @@ -2007,14 +796,14 @@ { "argumentTypes": null, "hexValue": "3138", - "id": 104, + "id": 5, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "675:2:1", + "src": "111:2:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_18_by_1", @@ -2030,20 +819,20 @@ "typeString": "int_const 18" } ], - "id": 103, + "id": 4, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "667:7:1", + "src": "103:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": "uint256" }, - "id": 105, + "id": 6, "isConstant": false, "isLValue": false, "isPure": true, @@ -2051,27 +840,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "667:11:1", + "src": "103:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "661:17:1", + "src": "97:17:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "visibility": "public" + "visibility": "internal" }, { "constant": true, - "id": 112, + "id": 13, "name": "CAT_0_VALUE", "nodeType": "VariableDeclaration", - "scope": 300, - "src": "685:59:1", + "scope": 97, + "src": "121:61:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2079,10 +868,10 @@ "typeString": "uint256" }, "typeName": { - "id": 108, + "id": 9, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "685:7:1", + "src": "121:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2094,7 +883,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 111, + "id": 12, "isConstant": false, "isLValue": false, "isPure": true, @@ -2102,14 +891,14 @@ "leftExpression": { "argumentTypes": null, "hexValue": "313030303030", - "id": 109, + "id": 10, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "723:6:1", + "src": "161:6:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_100000_by_1", @@ -2121,32 +910,32 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 110, + "id": 11, "name": "TOKEN_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 107, - "src": "732:12:1", + "referencedDeclaration": 8, + "src": "170:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "723:21:1", + "src": "161:21:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "visibility": "public" + "visibility": "internal" }, { "constant": true, - "id": 117, + "id": 18, "name": "CAT_1_VALUE", "nodeType": "VariableDeclaration", - "scope": 300, - "src": "751:60:1", + "scope": 97, + "src": "189:62:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2154,10 +943,10 @@ "typeString": "uint256" }, "typeName": { - "id": 113, + "id": 14, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "751:7:1", + "src": "189:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2169,7 +958,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 116, + "id": 17, "isConstant": false, "isLValue": false, "isPure": true, @@ -2177,14 +966,14 @@ "leftExpression": { "argumentTypes": null, "hexValue": "31303030303030", - "id": 114, + "id": 15, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "789:7:1", + "src": "229:7:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000000_by_1", @@ -2196,32 +985,32 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 115, + "id": 16, "name": "TOKEN_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 107, - "src": "799:12:1", + "referencedDeclaration": 8, + "src": "239:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "789:22:1", + "src": "229:22:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "visibility": "public" + "visibility": "internal" }, { "constant": true, - "id": 124, + "id": 25, "name": "CAT_2_VALUE", "nodeType": "VariableDeclaration", - "scope": 300, - "src": "818:64:1", + "scope": 97, + "src": "258:66:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2229,10 +1018,10 @@ "typeString": "uint256" }, "typeName": { - "id": 118, + "id": 19, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "818:7:1", + "src": "258:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2244,7 +1033,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 123, + "id": 24, "isConstant": false, "isLValue": false, "isPure": true, @@ -2255,7 +1044,7 @@ "typeIdentifier": "t_rational_2000000_by_1", "typeString": "int_const 2000000" }, - "id": 121, + "id": 22, "isConstant": false, "isLValue": false, "isPure": true, @@ -2263,14 +1052,14 @@ "leftExpression": { "argumentTypes": null, "hexValue": "32", - "id": 119, + "id": 20, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "856:1:1", + "src": "298:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -2283,14 +1072,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31303030303030", - "id": 120, + "id": 21, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "860:7:1", + "src": "302:7:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000000_by_1", @@ -2298,7 +1087,7 @@ }, "value": "1000000" }, - "src": "856:11:1", + "src": "298:11:0", "typeDescriptions": { "typeIdentifier": "t_rational_2000000_by_1", "typeString": "int_const 2000000" @@ -2308,32 +1097,32 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 122, + "id": 23, "name": "TOKEN_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 107, - "src": "870:12:1", + "referencedDeclaration": 8, + "src": "312:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "856:26:1", + "src": "298:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "visibility": "public" + "visibility": "internal" }, { "constant": true, - "id": 131, + "id": 32, "name": "CAT_3_VALUE", "nodeType": "VariableDeclaration", - "scope": 300, - "src": "889:64:1", + "scope": 97, + "src": "331:66:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2341,10 +1130,10 @@ "typeString": "uint256" }, "typeName": { - "id": 125, + "id": 26, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "889:7:1", + "src": "331:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2356,7 +1145,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 130, + "id": 31, "isConstant": false, "isLValue": false, "isPure": true, @@ -2367,7 +1156,7 @@ "typeIdentifier": "t_rational_3000000_by_1", "typeString": "int_const 3000000" }, - "id": 128, + "id": 29, "isConstant": false, "isLValue": false, "isPure": true, @@ -2375,14 +1164,14 @@ "leftExpression": { "argumentTypes": null, "hexValue": "33", - "id": 126, + "id": 27, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "927:1:1", + "src": "371:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", @@ -2395,14 +1184,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31303030303030", - "id": 127, + "id": 28, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "931:7:1", + "src": "375:7:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000000_by_1", @@ -2410,7 +1199,7 @@ }, "value": "1000000" }, - "src": "927:11:1", + "src": "371:11:0", "typeDescriptions": { "typeIdentifier": "t_rational_3000000_by_1", "typeString": "int_const 3000000" @@ -2420,32 +1209,32 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 129, + "id": 30, "name": "TOKEN_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 107, - "src": "941:12:1", + "referencedDeclaration": 8, + "src": "385:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "927:26:1", + "src": "371:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "visibility": "public" + "visibility": "internal" }, { "constant": true, - "id": 138, + "id": 39, "name": "CAT_4_VALUE", "nodeType": "VariableDeclaration", - "scope": 300, - "src": "960:64:1", + "scope": 97, + "src": "404:66:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2453,10 +1242,10 @@ "typeString": "uint256" }, "typeName": { - "id": 132, + "id": 33, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "960:7:1", + "src": "404:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2468,7 +1257,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 137, + "id": 38, "isConstant": false, "isLValue": false, "isPure": true, @@ -2479,7 +1268,7 @@ "typeIdentifier": "t_rational_4000000_by_1", "typeString": "int_const 4000000" }, - "id": 135, + "id": 36, "isConstant": false, "isLValue": false, "isPure": true, @@ -2487,14 +1276,14 @@ "leftExpression": { "argumentTypes": null, "hexValue": "34", - "id": 133, + "id": 34, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "998:1:1", + "src": "444:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", @@ -2507,14 +1296,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31303030303030", - "id": 134, + "id": 35, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1002:7:1", + "src": "448:7:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000000_by_1", @@ -2522,7 +1311,7 @@ }, "value": "1000000" }, - "src": "998:11:1", + "src": "444:11:0", "typeDescriptions": { "typeIdentifier": "t_rational_4000000_by_1", "typeString": "int_const 4000000" @@ -2532,32 +1321,32 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 136, + "id": 37, "name": "TOKEN_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 107, - "src": "1012:12:1", + "referencedDeclaration": 8, + "src": "458:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "998:26:1", + "src": "444:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "visibility": "public" + "visibility": "internal" }, { "constant": true, - "id": 145, + "id": 46, "name": "CAT_5_VALUE", "nodeType": "VariableDeclaration", - "scope": 300, - "src": "1031:64:1", + "scope": 97, + "src": "477:66:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2565,10 +1354,10 @@ "typeString": "uint256" }, "typeName": { - "id": 139, + "id": 40, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1031:7:1", + "src": "477:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2580,7 +1369,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 144, + "id": 45, "isConstant": false, "isLValue": false, "isPure": true, @@ -2591,7 +1380,7 @@ "typeIdentifier": "t_rational_5000000_by_1", "typeString": "int_const 5000000" }, - "id": 142, + "id": 43, "isConstant": false, "isLValue": false, "isPure": true, @@ -2599,14 +1388,14 @@ "leftExpression": { "argumentTypes": null, "hexValue": "35", - "id": 140, + "id": 41, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1069:1:1", + "src": "517:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -2619,14 +1408,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31303030303030", - "id": 141, + "id": 42, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1073:7:1", + "src": "521:7:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000000_by_1", @@ -2634,7 +1423,7 @@ }, "value": "1000000" }, - "src": "1069:11:1", + "src": "517:11:0", "typeDescriptions": { "typeIdentifier": "t_rational_5000000_by_1", "typeString": "int_const 5000000" @@ -2644,46 +1433,1864 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 143, + "id": 44, "name": "TOKEN_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 107, - "src": "1083:12:1", + "referencedDeclaration": 8, + "src": "531:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1069:26:1", + "src": "517:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "visibility": "public" + "visibility": "internal" + }, + { + "body": { + "id": 95, + "nodeType": "Block", + "src": "631:426:0", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 55, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 53, + "name": "category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "645:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 54, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "657:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "645:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 61, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 59, + "name": "category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "714:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 60, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "726:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "714:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 67, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 65, + "name": "category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "783:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 66, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "795:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "783:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 73, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 71, + "name": "category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "852:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "33", + "id": 72, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "864:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "src": "852:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 79, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 77, + "name": "category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "921:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "34", + "id": 78, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "933:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "921:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 85, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 83, + "name": "category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "990:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "35", + "id": 84, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1002:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "src": "990:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 89, + "nodeType": "IfStatement", + "src": "987:63:0", + "trueBody": { + "id": 88, + "nodeType": "Block", + "src": "1005:45:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 86, + "name": "CAT_5_VALUE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "1027:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 52, + "id": 87, + "nodeType": "Return", + "src": "1020:18:0" + } + ] + } + }, + "id": 90, + "nodeType": "IfStatement", + "src": "918:132:0", + "trueBody": { + "id": 82, + "nodeType": "Block", + "src": "936:45:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 80, + "name": "CAT_4_VALUE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 39, + "src": "958:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 52, + "id": 81, + "nodeType": "Return", + "src": "951:18:0" + } + ] + } + }, + "id": 91, + "nodeType": "IfStatement", + "src": "849:201:0", + "trueBody": { + "id": 76, + "nodeType": "Block", + "src": "867:45:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 74, + "name": "CAT_3_VALUE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32, + "src": "889:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 52, + "id": 75, + "nodeType": "Return", + "src": "882:18:0" + } + ] + } + }, + "id": 92, + "nodeType": "IfStatement", + "src": "780:270:0", + "trueBody": { + "id": 70, + "nodeType": "Block", + "src": "798:45:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 68, + "name": "CAT_2_VALUE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 25, + "src": "820:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 52, + "id": 69, + "nodeType": "Return", + "src": "813:18:0" + } + ] + } + }, + "id": 93, + "nodeType": "IfStatement", + "src": "711:339:0", + "trueBody": { + "id": 64, + "nodeType": "Block", + "src": "729:45:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 62, + "name": "CAT_1_VALUE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18, + "src": "751:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 52, + "id": 63, + "nodeType": "Return", + "src": "744:18:0" + } + ] + } + }, + "id": 94, + "nodeType": "IfStatement", + "src": "642:408:0", + "trueBody": { + "id": 58, + "nodeType": "Block", + "src": "660:45:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 56, + "name": "CAT_0_VALUE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13, + "src": "682:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 52, + "id": 57, + "nodeType": "Return", + "src": "675:18:0" + } + ] + } + } + ] + }, + "documentation": null, + "id": 96, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getCapacityByCategory", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 49, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 48, + "name": "category", + "nodeType": "VariableDeclaration", + "scope": 96, + "src": "583:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 47, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "583:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "582:16:0" + }, + "payable": false, + "returnParameters": { + "id": 52, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 51, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 96, + "src": "622:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 50, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "622:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "621:9:0" + }, + "scope": 97, + "src": "552:505:0", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 98, + "src": "27:1033:0" + } + ], + "src": "0:1060:0" + }, + "id": 0 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol", + "exportedSymbols": { + "AlgoCoreTeamRole": [ + 184 + ] + }, + "id": 185, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 99, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:1" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "id": 100, + "nodeType": "ImportDirective", + "scope": 185, + "sourceUnit": 532, + "src": "28:189:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 184, + "linearizedBaseContracts": [ + 184 + ], + "name": "AlgoCoreTeamRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 103, + "libraryName": { + "contractScope": null, + "id": 101, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 531, + "src": "260:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$531", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "254:27:1", + "typeName": { + "contractScope": null, + "id": 102, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 444, + "src": "270:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeString": "struct Roles.Role" + } + } }, { "constant": false, - "id": 147, - "name": "_poolType", + "id": 105, + "name": "_coreTeamMembers", "nodeType": "VariableDeclaration", - "scope": 300, - "src": "1104:24:1", + "scope": 184, + "src": "289:35:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" + "typeIdentifier": "t_struct$_Role_$444_storage", + "typeString": "struct Roles.Role" }, "typeName": { - "id": 146, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "1104:6:1", + "contractScope": null, + "id": 104, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 444, + "src": "289:10:1", "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" + "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 113, + "nodeType": "Block", + "src": "357:43:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 109, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 887, + "src": "381:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 110, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "381:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 108, + "name": "_addCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 171, + "src": "368:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "368:24:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 112, + "nodeType": "ExpressionStatement", + "src": "368:24:1" + } + ] + }, + "documentation": null, + "id": 114, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 106, + "nodeType": "ParameterList", + "parameters": [], + "src": "345:2:1" + }, + "payable": false, + "returnParameters": { + "id": 107, + "nodeType": "ParameterList", + "parameters": [], + "src": "357:0:1" + }, + "scope": 184, + "src": "333:67:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 124, + "nodeType": "Block", + "src": "432:62:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 118, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 887, + "src": "462:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "462:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 117, + "name": "isCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 138, + "src": "451:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "451:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 116, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 890, + 891 + ], + "referencedDeclaration": 890, + "src": "443:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "443:31:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 122, + "nodeType": "ExpressionStatement", + "src": "443:31:1" + }, + { + "id": 123, + "nodeType": "PlaceholderStatement", + "src": "485:1:1" + } + ] + }, + "documentation": null, + "id": 125, + "name": "onlyCoreTeam", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 115, + "nodeType": "ParameterList", + "parameters": [], + "src": "429:2:1" + }, + "src": "408:86:1", + "visibility": "internal" + }, + { + "body": { + "id": 137, + "nodeType": "Block", + "src": "566:55:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 134, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 127, + "src": "605:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 132, + "name": "_coreTeamMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 105, + "src": "584:16:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$444_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 133, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 530, + "src": "584:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$444_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$444_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "584:29:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 131, + "id": 136, + "nodeType": "Return", + "src": "577:36:1" + } + ] + }, + "documentation": null, + "id": 138, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 128, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 127, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 138, + "src": "522:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 126, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "522:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "521:17:1" + }, + "payable": false, + "returnParameters": { + "id": 131, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 130, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 138, + "src": "560:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 129, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "560:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "559:6:1" + }, + "scope": 184, + "src": "502:119:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 149, + "nodeType": "Block", + "src": "687:40:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 146, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 140, + "src": "711:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 145, + "name": "_addCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 171, + "src": "698:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 147, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "698:21:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 148, + "nodeType": "ExpressionStatement", + "src": "698:21:1" + } + ] + }, + "documentation": null, + "id": 150, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 143, + "modifierName": { + "argumentTypes": null, + "id": 142, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125, + "src": "674:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "674:12:1" + } + ], + "name": "addCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 141, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 140, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 150, + "src": "650:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 139, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "650:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "649:17:1" + }, + "payable": false, + "returnParameters": { + "id": 144, + "nodeType": "ParameterList", + "parameters": [], + "src": "687:0:1" + }, + "scope": 184, + "src": "629:98:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 158, + "nodeType": "Block", + "src": "770:46:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 154, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 887, + "src": "797:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "797:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 153, + "name": "_removeCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 183, + "src": "781:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "781:27:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 157, + "nodeType": "ExpressionStatement", + "src": "781:27:1" + } + ] + }, + "documentation": null, + "id": 159, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "renounceCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 151, + "nodeType": "ParameterList", + "parameters": [], + "src": "760:2:1" + }, + "payable": false, + "returnParameters": { + "id": 152, + "nodeType": "ParameterList", + "parameters": [], + "src": "770:0:1" + }, + "scope": 184, + "src": "735:81:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 170, + "nodeType": "Block", + "src": "872:48:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 167, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "904:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 164, + "name": "_coreTeamMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 105, + "src": "883:16:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$444_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 166, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 476, + "src": "883:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$444_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$444_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "883:29:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 169, + "nodeType": "ExpressionStatement", + "src": "883:29:1" + } + ] + }, + "documentation": null, + "id": 171, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_addCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 162, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 161, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 171, + "src": "846:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 160, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "846:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "845:17:1" + }, + "payable": false, + "returnParameters": { + "id": 163, + "nodeType": "ParameterList", + "parameters": [], + "src": "872:0:1" + }, + "scope": 184, + "src": "824:96:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 182, + "nodeType": "Block", + "src": "979:51:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 179, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 173, + "src": "1014:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 176, + "name": "_coreTeamMembers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 105, + "src": "990:16:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$444_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 178, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 507, + "src": "990:23:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$444_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$444_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "990:32:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 181, + "nodeType": "ExpressionStatement", + "src": "990:32:1" + } + ] + }, + "documentation": null, + "id": 183, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_removeCoreTeam", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 174, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 173, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 183, + "src": "953:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 172, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "953:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "952:17:1" + }, + "payable": false, + "returnParameters": { + "id": 175, + "nodeType": "ParameterList", + "parameters": [], + "src": "979:0:1" + }, + "scope": 184, + "src": "928:102:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 185, + "src": "221:812:1" + } + ], + "src": "0:1035:1" + }, + "id": 1 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol", + "exportedSymbols": { + "AlgoPool": [ + 315 + ] + }, + "id": 316, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 186, + "literals": [ + "solidity", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:23:2" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "id": 187, + "nodeType": "ImportDirective", + "scope": 316, + "sourceUnit": 729, + "src": "27:195:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "id": 188, + "nodeType": "ImportDirective", + "scope": 316, + "sourceUnit": 873, + "src": "224:198:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", + "file": "./IAlgoMiner.sol", + "id": 189, + "nodeType": "ImportDirective", + "scope": 316, + "sourceUnit": 401, + "src": "426:26:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol", + "file": "./AlgoCommon.sol", + "id": 190, + "nodeType": "ImportDirective", + "scope": 316, + "sourceUnit": 98, + "src": "454:26:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol", + "file": "./ERC20TokenHolder.sol", + "id": 191, + "nodeType": "ImportDirective", + "scope": 316, + "sourceUnit": 373, + "src": "482:32:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol", + "file": "./AlgoCoreTeamRole.sol", + "id": 192, + "nodeType": "ImportDirective", + "scope": 316, + "sourceUnit": 185, + "src": "516:32:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 193, + "name": "AlgoCommon", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 97, + "src": "573:10:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AlgoCommon_$97", + "typeString": "contract AlgoCommon" + } + }, + "id": 194, + "nodeType": "InheritanceSpecifier", + "src": "573:10:2" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 195, + "name": "ERC20TokenHolder", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 372, + "src": "585:16:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20TokenHolder_$372", + "typeString": "contract ERC20TokenHolder" + } + }, + "id": 196, + "nodeType": "InheritanceSpecifier", + "src": "585:16:2" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 197, + "name": "AlgoCoreTeamRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 184, + "src": "603:16:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AlgoCoreTeamRole_$184", + "typeString": "contract AlgoCoreTeamRole" + } + }, + "id": 198, + "nodeType": "InheritanceSpecifier", + "src": "603:16:2" + } + ], + "contractDependencies": [ + 97, + 372, + 184, + 437 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 315, + "linearizedBaseContracts": [ + 315, + 184, + 372, + 437, + 97 + ], + "name": "AlgoPool", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 201, + "libraryName": { + "contractScope": null, + "id": 199, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 872, + "src": "633:9:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$872", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "627:27:2", + "typeName": { + "contractScope": null, + "id": 200, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 728, + "src": "647:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$728", + "typeString": "contract IERC20" + } + } + }, + { + "canonicalName": "AlgoPool.PoolType", + "id": 204, + "members": [ + { + "id": 202, + "name": "MinerPool", + "nodeType": "EnumValue", + "src": "687:9:2" + }, + { + "id": 203, + "name": "ReferralPool", + "nodeType": "EnumValue", + "src": "707:12:2" + } + ], + "name": "PoolType", + "nodeType": "EnumDefinition", + "src": "662:64:2" + }, + { + "constant": false, + "id": 206, + "name": "_poolType", + "nodeType": "VariableDeclaration", + "scope": 315, + "src": "734:26:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_PoolType_$204", + "typeString": "enum AlgoPool.PoolType" + }, + "typeName": { + "contractScope": null, + "id": 205, + "name": "PoolType", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 204, + "src": "734:8:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_PoolType_$204", + "typeString": "enum AlgoPool.PoolType" } }, "value": null, @@ -2691,11 +3298,11 @@ }, { "constant": false, - "id": 151, + "id": 210, "name": "_fundedMiners", "nodeType": "VariableDeclaration", - "scope": 300, - "src": "1135:38:1", + "scope": 315, + "src": "767:38:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2703,28 +3310,28 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 150, + "id": 209, "keyType": { - "id": 148, + "id": 207, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1143:7:1", + "src": "775:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "1135:24:1", + "src": "767:24:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 149, + "id": 208, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1154:4:1", + "src": "786:4:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2736,60 +3343,60 @@ }, { "body": { - "id": 167, + "id": 226, "nodeType": "Block", - "src": "1317:39:1", + "src": "951:39:2", "statements": [ { "expression": { "argumentTypes": null, - "id": 165, + "id": 224, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 163, + "id": 222, "name": "_poolType", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 147, - "src": "1328:9:1", + "referencedDeclaration": 206, + "src": "962:9:2", "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" + "typeIdentifier": "t_enum$_PoolType_$204", + "typeString": "enum AlgoPool.PoolType" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 164, + "id": 223, "name": "poolType", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "1340:8:1", + "referencedDeclaration": 212, + "src": "974:8:2", "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" + "typeIdentifier": "t_enum$_PoolType_$204", + "typeString": "enum AlgoPool.PoolType" } }, - "src": "1328:20:1", + "src": "962:20:2", "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" + "typeIdentifier": "t_enum$_PoolType_$204", + "typeString": "enum AlgoPool.PoolType" } }, - "id": 166, + "id": 225, "nodeType": "ExpressionStatement", - "src": "1328:20:1" + "src": "962:20:2" } ] }, "documentation": null, - "id": 168, + "id": 227, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -2798,82 +3405,84 @@ "arguments": [ { "argumentTypes": null, - "id": 158, + "id": 217, "name": "tokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 155, - "src": "1259:12:1", + "referencedDeclaration": 214, + "src": "893:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], - "id": 159, + "id": 218, "modifierName": { "argumentTypes": null, - "id": 157, + "id": 216, "name": "ERC20TokenHolder", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 357, - "src": "1242:16:1", + "referencedDeclaration": 372, + "src": "876:16:2", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20TokenHolder_$357_$", + "typeIdentifier": "t_type$_t_contract$_ERC20TokenHolder_$372_$", "typeString": "type(contract ERC20TokenHolder)" } }, "nodeType": "ModifierInvocation", - "src": "1242:30:1" + "src": "876:30:2" }, { "arguments": [], - "id": 161, + "id": 220, "modifierName": { "argumentTypes": null, - "id": 160, + "id": 219, "name": "AlgoCoreTeamRole", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 86, - "src": "1282:16:1", + "referencedDeclaration": 184, + "src": "916:16:2", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AlgoCoreTeamRole_$86_$", + "typeIdentifier": "t_type$_t_contract$_AlgoCoreTeamRole_$184_$", "typeString": "type(contract AlgoCoreTeamRole)" } }, "nodeType": "ModifierInvocation", - "src": "1282:18:1" + "src": "916:18:2" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 156, + "id": 215, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 153, + "id": 212, "name": "poolType", "nodeType": "VariableDeclaration", - "scope": 168, - "src": "1194:15:1", + "scope": 227, + "src": "826:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" + "typeIdentifier": "t_enum$_PoolType_$204", + "typeString": "enum AlgoPool.PoolType" }, "typeName": { - "id": 152, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "1194:6:1", + "contractScope": null, + "id": 211, + "name": "PoolType", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 204, + "src": "826:8:2", "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" + "typeIdentifier": "t_enum$_PoolType_$204", + "typeString": "enum AlgoPool.PoolType" } }, "value": null, @@ -2881,11 +3490,11 @@ }, { "constant": false, - "id": 155, + "id": 214, "name": "tokenAddress", "nodeType": "VariableDeclaration", - "scope": 168, - "src": "1211:20:1", + "scope": 227, + "src": "845:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2893,10 +3502,10 @@ "typeString": "address" }, "typeName": { - "id": 154, + "id": 213, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1211:7:1", + "src": "845:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2906,26 +3515,26 @@ "visibility": "internal" } ], - "src": "1193:39:1" + "src": "825:41:2" }, "payable": false, "returnParameters": { - "id": 162, + "id": 221, "nodeType": "ParameterList", "parameters": [], - "src": "1317:0:1" + "src": "951:0:2" }, - "scope": 300, - "src": "1182:174:1", + "scope": 315, + "src": "814:176:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 289, + "id": 304, "nodeType": "Block", - "src": "1444:912:1", + "src": "1078:641:2", "statements": [ { "expression": { @@ -2933,7 +3542,7 @@ "arguments": [ { "argumentTypes": null, - "id": 181, + "id": 240, "isConstant": false, "isLValue": false, "isPure": false, @@ -2941,31 +3550,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1463:28:1", + "src": "1097:28:2", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 178, + "id": 237, "name": "_fundedMiners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 151, - "src": "1464:13:1", + "referencedDeclaration": 210, + "src": "1098:13:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 180, + "id": 239, "indexExpression": { "argumentTypes": null, - "id": 179, + "id": 238, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 170, - "src": "1478:12:1", + "referencedDeclaration": 229, + "src": "1112:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2976,7 +3585,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1464:27:1", + "src": "1098:27:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2995,21 +3604,21 @@ "typeString": "bool" } ], - "id": 177, + "id": 236, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 870, - 871 + 890, + 891 ], - "referencedDeclaration": 870, - "src": "1455:7:1", + "referencedDeclaration": 890, + "src": "1089:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 182, + "id": 241, "isConstant": false, "isLValue": false, "isPure": false, @@ -3017,43 +3626,43 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1455:37:1", + "src": "1089:37:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 183, + "id": 242, "nodeType": "ExpressionStatement", - "src": "1455:37:1" + "src": "1089:37:2" }, { "assignments": [ - 185 + 244 ], "declarations": [ { "constant": false, - "id": 185, + "id": 244, "name": "algoMiner", "nodeType": "VariableDeclaration", - "scope": 290, - "src": "1505:20:1", + "scope": 305, + "src": "1139:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$380", + "typeIdentifier": "t_contract$_IAlgoMiner_$400", "typeString": "contract IAlgoMiner" }, "typeName": { "contractScope": null, - "id": 184, + "id": 243, "name": "IAlgoMiner", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 380, - "src": "1505:10:1", + "referencedDeclaration": 400, + "src": "1139:10:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$380", + "typeIdentifier": "t_contract$_IAlgoMiner_$400", "typeString": "contract IAlgoMiner" } }, @@ -3061,18 +3670,18 @@ "visibility": "internal" } ], - "id": 189, + "id": 248, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 187, + "id": 246, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 170, - "src": "1539:12:1", + "referencedDeclaration": 229, + "src": "1173:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3086,18 +3695,18 @@ "typeString": "address" } ], - "id": 186, + "id": 245, "name": "IAlgoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 380, - "src": "1528:10:1", + "referencedDeclaration": 400, + "src": "1162:10:2", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$380_$", + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$400_$", "typeString": "type(contract IAlgoMiner)" } }, - "id": 188, + "id": 247, "isConstant": false, "isLValue": false, "isPure": false, @@ -3105,14 +3714,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1528:24:1", + "src": "1162:24:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$380", + "typeIdentifier": "t_contract$_IAlgoMiner_$400", "typeString": "contract IAlgoMiner" } }, "nodeType": "VariableDeclarationStatement", - "src": "1505:47:1" + "src": "1139:47:2" }, { "expression": { @@ -3125,32 +3734,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 191, + "id": 250, "name": "algoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 185, - "src": "1581:9:1", + "referencedDeclaration": 244, + "src": "1215:9:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$380", + "typeIdentifier": "t_contract$_IAlgoMiner_$400", "typeString": "contract IAlgoMiner" } }, - "id": 192, + "id": 251, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isAlgoMiner", "nodeType": "MemberAccess", - "referencedDeclaration": 364, - "src": "1581:21:1", + "referencedDeclaration": 379, + "src": "1215:21:2", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$__$returns$_t_bool_$", "typeString": "function () pure external returns (bool)" } }, - "id": 193, + "id": 252, "isConstant": false, "isLValue": false, "isPure": false, @@ -3158,7 +3767,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1581:23:1", + "src": "1215:23:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3172,21 +3781,21 @@ "typeString": "bool" } ], - "id": 190, + "id": 249, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 870, - 871 + 890, + 891 ], - "referencedDeclaration": 870, - "src": "1573:7:1", + "referencedDeclaration": 890, + "src": "1207:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 194, + "id": 253, "isConstant": false, "isLValue": false, "isPure": false, @@ -3194,28 +3803,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1573:32:1", + "src": "1207:32:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 195, + "id": 254, "nodeType": "ExpressionStatement", - "src": "1573:32:1" + "src": "1207:32:2" }, { "assignments": [ - 197 + 256 ], "declarations": [ { "constant": false, - "id": 197, + "id": 256, "name": "minerCategory", "nodeType": "VariableDeclaration", - "scope": 290, - "src": "1626:19:1", + "scope": 305, + "src": "1260:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3223,10 +3832,10 @@ "typeString": "uint8" }, "typeName": { - "id": 196, + "id": 255, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1626:5:1", + "src": "1260:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3236,7 +3845,7 @@ "visibility": "internal" } ], - "id": 201, + "id": 260, "initialValue": { "argumentTypes": null, "arguments": [], @@ -3244,32 +3853,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 198, + "id": 257, "name": "algoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 185, - "src": "1648:9:1", + "referencedDeclaration": 244, + "src": "1282:9:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$380", + "typeIdentifier": "t_contract$_IAlgoMiner_$400", "typeString": "contract IAlgoMiner" } }, - "id": 199, + "id": 258, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getCategory", "nodeType": "MemberAccess", - "referencedDeclaration": 369, - "src": "1648:21:1", + "referencedDeclaration": 389, + "src": "1282:21:2", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, - "id": 200, + "id": 259, "isConstant": false, "isLValue": false, "isPure": false, @@ -3277,14 +3886,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1648:23:1", + "src": "1282:23:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", - "src": "1626:45:1" + "src": "1260:45:2" }, { "expression": { @@ -3296,7 +3905,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 209, + "id": 268, "isConstant": false, "isLValue": false, "isPure": false, @@ -3307,19 +3916,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 205, + "id": 264, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 203, + "id": 262, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 197, - "src": "1692:13:1", + "referencedDeclaration": 256, + "src": "1326:13:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3330,14 +3939,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 204, + "id": 263, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1709:1:1", + "src": "1343:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3345,7 +3954,7 @@ }, "value": "0" }, - "src": "1692:18:1", + "src": "1326:18:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3359,19 +3968,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 208, + "id": 267, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 206, + "id": 265, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 197, - "src": "1714:13:1", + "referencedDeclaration": 256, + "src": "1348:13:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3382,14 +3991,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "35", - "id": 207, + "id": 266, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1731:1:1", + "src": "1365:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -3397,13 +4006,13 @@ }, "value": "5" }, - "src": "1714:18:1", + "src": "1348:18:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1692:40:1", + "src": "1326:40:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3417,21 +4026,21 @@ "typeString": "bool" } ], - "id": 202, + "id": 261, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 870, - 871 + 890, + 891 ], - "referencedDeclaration": 870, - "src": "1684:7:1", + "referencedDeclaration": 890, + "src": "1318:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 210, + "id": 269, "isConstant": false, "isLValue": false, "isPure": false, @@ -3439,28 +4048,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1684:49:1", + "src": "1318:49:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 211, + "id": 270, "nodeType": "ExpressionStatement", - "src": "1684:49:1" + "src": "1318:49:2" }, { "assignments": [ - 213 + 272 ], "declarations": [ { "constant": false, - "id": 213, + "id": 272, "name": "value", "nodeType": "VariableDeclaration", - "scope": 290, - "src": "1746:13:1", + "scope": 305, + "src": "1380:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3468,10 +4077,10 @@ "typeString": "uint256" }, "typeName": { - "id": 212, + "id": 271, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1746:7:1", + "src": "1380:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3481,644 +4090,146 @@ "visibility": "internal" } ], - "id": 215, + "id": 276, "initialValue": { "argumentTypes": null, - "hexValue": "30", - "id": 214, + "arguments": [ + { + "argumentTypes": null, + "id": 274, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 256, + "src": "1418:13:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 273, + "name": "getCapacityByCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 96, + "src": "1396:21:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint8_$returns$_t_uint256_$", + "typeString": "function (uint8) pure returns (uint256)" + } + }, + "id": 275, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "number", + "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "nodeType": "Literal", - "src": "1762:1:1", - "subdenomination": null, + "names": [], + "nodeType": "FunctionCall", + "src": "1396:36:2", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, "nodeType": "VariableDeclarationStatement", - "src": "1746:17:1" + "src": "1380:52:2" }, { "condition": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_enum$_PoolType_$204", + "typeString": "enum AlgoPool.PoolType" }, - "id": 218, + "id": 280, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 216, - "name": "minerCategory", + "id": 277, + "name": "_poolType", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 197, - "src": "1779:13:1", + "referencedDeclaration": 206, + "src": "1527:9:2", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_enum$_PoolType_$204", + "typeString": "enum AlgoPool.PoolType" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, - "hexValue": "30", - "id": 217, + "expression": { + "argumentTypes": null, + "id": 278, + "name": "PoolType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 204, + "src": "1540:8:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_PoolType_$204_$", + "typeString": "type(enum AlgoPool.PoolType)" + } + }, + "id": 279, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", "lValueRequested": false, - "nodeType": "Literal", - "src": "1796:1:1", - "subdenomination": null, + "memberName": "ReferralPool", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1540:21:2", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_enum$_PoolType_$204", + "typeString": "enum AlgoPool.PoolType" + } }, - "src": "1779:18:1", + "src": "1527:34:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 226, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 224, - "name": "minerCategory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 197, - "src": "1854:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 225, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1871:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "1854:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 234, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 232, - "name": "minerCategory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 197, - "src": "1929:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 233, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1946:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "1929:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 242, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 240, - "name": "minerCategory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 197, - "src": "2004:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 241, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2021:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "src": "2004:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 250, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 248, - "name": "minerCategory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 197, - "src": "2079:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "34", - "id": 249, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2096:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - }, - "value": "4" - }, - "src": "2079:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 258, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 256, - "name": "minerCategory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 197, - "src": "2154:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "35", - "id": 257, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2171:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_5_by_1", - "typeString": "int_const 5" - }, - "value": "5" - }, - "src": "2154:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 264, - "nodeType": "IfStatement", - "src": "2151:69:1", - "trueBody": { - "id": 263, - "nodeType": "Block", - "src": "2174:46:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 261, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 259, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 213, - "src": "2189:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 260, - "name": "CAT_5_VALUE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 145, - "src": "2197:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2189:19:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 262, - "nodeType": "ExpressionStatement", - "src": "2189:19:1" - } - ] - } - }, - "id": 265, - "nodeType": "IfStatement", - "src": "2076:144:1", - "trueBody": { - "id": 255, - "nodeType": "Block", - "src": "2099:46:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 253, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 251, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 213, - "src": "2114:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 252, - "name": "CAT_4_VALUE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 138, - "src": "2122:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2114:19:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 254, - "nodeType": "ExpressionStatement", - "src": "2114:19:1" - } - ] - } - }, - "id": 266, - "nodeType": "IfStatement", - "src": "2001:219:1", - "trueBody": { - "id": 247, - "nodeType": "Block", - "src": "2024:46:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 245, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 243, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 213, - "src": "2039:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 244, - "name": "CAT_3_VALUE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 131, - "src": "2047:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2039:19:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 246, - "nodeType": "ExpressionStatement", - "src": "2039:19:1" - } - ] - } - }, - "id": 267, - "nodeType": "IfStatement", - "src": "1926:294:1", - "trueBody": { - "id": 239, - "nodeType": "Block", - "src": "1949:46:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 237, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 235, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 213, - "src": "1964:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 236, - "name": "CAT_2_VALUE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 124, - "src": "1972:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1964:19:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 238, - "nodeType": "ExpressionStatement", - "src": "1964:19:1" - } - ] - } - }, - "id": 268, - "nodeType": "IfStatement", - "src": "1851:369:1", - "trueBody": { - "id": 231, - "nodeType": "Block", - "src": "1874:46:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 229, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 227, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 213, - "src": "1889:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 228, - "name": "CAT_1_VALUE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 117, - "src": "1897:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1889:19:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 230, - "nodeType": "ExpressionStatement", - "src": "1889:19:1" - } - ] - } - }, - "id": 269, + "falseBody": null, + "id": 290, "nodeType": "IfStatement", - "src": "1776:444:1", + "src": "1524:90:2", "trueBody": { - "id": 223, + "id": 289, "nodeType": "Block", - "src": "1799:46:1", + "src": "1563:51:2", "statements": [ { "expression": { "argumentTypes": null, - "id": 221, + "id": 287, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 219, + "id": 281, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 213, - "src": "1814:5:1", + "referencedDeclaration": 272, + "src": "1578:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4128,26 +4239,100 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 220, - "name": "CAT_0_VALUE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 112, - "src": "1822:11:1", + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 282, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 272, + "src": "1586:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 283, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1594:2:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "1586:10:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "313030", + "id": 285, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1599:3:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + }, + "value": "100" + }, + "src": "1586:16:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1814:19:1", + "src": "1578:24:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 222, + "id": 288, "nodeType": "ExpressionStatement", - "src": "1814:19:1" + "src": "1578:24:2" } ] } @@ -4155,101 +4340,7 @@ { "expression": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 273, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 271, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 213, - "src": "2240:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 272, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2248:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2240:9:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 270, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 870, - 871 - ], - "referencedDeclaration": 870, - "src": "2232:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 274, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2232:18:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 275, - "nodeType": "ExpressionStatement", - "src": "2232:18:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 280, + "id": 295, "isConstant": false, "isLValue": false, "isPure": false, @@ -4258,26 +4349,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 276, + "id": 291, "name": "_fundedMiners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 151, - "src": "2263:13:1", + "referencedDeclaration": 210, + "src": "1626:13:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 278, + "id": 293, "indexExpression": { "argumentTypes": null, - "id": 277, + "id": 292, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 170, - "src": "2277:12:1", + "referencedDeclaration": 229, + "src": "1640:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4288,7 +4379,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2263:27:1", + "src": "1626:27:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4299,14 +4390,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 279, + "id": 294, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2293:4:1", + "src": "1656:4:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4314,15 +4405,15 @@ }, "value": "true" }, - "src": "2263:34:1", + "src": "1626:34:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 281, + "id": 296, "nodeType": "ExpressionStatement", - "src": "2263:34:1" + "src": "1626:34:2" }, { "expression": { @@ -4330,12 +4421,12 @@ "arguments": [ { "argumentTypes": null, - "id": 285, + "id": 300, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 170, - "src": "2328:12:1", + "referencedDeclaration": 229, + "src": "1691:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4343,12 +4434,12 @@ }, { "argumentTypes": null, - "id": 286, + "id": 301, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 213, - "src": "2342:5:1", + "referencedDeclaration": 272, + "src": "1705:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4368,32 +4459,32 @@ ], "expression": { "argumentTypes": null, - "id": 282, + "id": 297, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 312, - "src": "2308:6:1", + "referencedDeclaration": 327, + "src": "1671:6:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$708", + "typeIdentifier": "t_contract$_IERC20_$728", "typeString": "contract IERC20" } }, - "id": 284, + "id": 299, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 733, - "src": "2308:19:1", + "referencedDeclaration": 753, + "src": "1671:19:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$708_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$708_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$728_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$728_$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 287, + "id": 302, "isConstant": false, "isLValue": false, "isPure": false, @@ -4401,76 +4492,76 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2308:40:1", + "src": "1671:40:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 288, + "id": 303, "nodeType": "ExpressionStatement", - "src": "2308:40:1" + "src": "1671:40:2" } ] }, "documentation": null, - "id": 290, + "id": 305, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 173, + "id": 232, "modifierName": { "argumentTypes": null, - "id": 172, + "id": 231, "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 408, - "src": "1417:13:1", + "referencedDeclaration": 428, + "src": "1051:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1417:13:1" + "src": "1051:13:2" }, { "arguments": null, - "id": 175, + "id": 234, "modifierName": { "argumentTypes": null, - "id": 174, + "id": 233, "name": "onlyCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 27, - "src": "1431:12:1", + "referencedDeclaration": 125, + "src": "1065:12:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1431:12:1" + "src": "1065:12:2" } ], "name": "trasferToMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 171, + "id": 230, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 170, + "id": 229, "name": "minerAddress", "nodeType": "VariableDeclaration", - "scope": 290, - "src": "1388:20:1", + "scope": 305, + "src": "1022:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4478,10 +4569,10 @@ "typeString": "address" }, "typeName": { - "id": 169, + "id": 228, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1388:7:1", + "src": "1022:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4491,26 +4582,26 @@ "visibility": "internal" } ], - "src": "1387:22:1" + "src": "1021:22:2" }, "payable": false, "returnParameters": { - "id": 176, + "id": 235, "nodeType": "ParameterList", "parameters": [], - "src": "1444:0:1" + "src": "1078:0:2" }, - "scope": 300, - "src": "1364:992:1", + "scope": 315, + "src": "998:721:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 298, + "id": 313, "nodeType": "Block", - "src": "2405:31:1", + "src": "1768:31:2", "statements": [ { "expression": { @@ -4518,20 +4609,20 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 295, + "id": 310, "name": "_terminate", "nodeType": "Identifier", "overloadedDeclarations": [ - 356 + 371 ], - "referencedDeclaration": 356, - "src": "2416:10:1", + "referencedDeclaration": 371, + "src": "1779:10:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 296, + "id": 311, "isConstant": false, "isLValue": false, "isPure": false, @@ -4539,125 +4630,125 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2416:12:1", + "src": "1779:12:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 297, + "id": 312, "nodeType": "ExpressionStatement", - "src": "2416:12:1" + "src": "1779:12:2" } ] }, "documentation": null, - "id": 299, + "id": 314, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 293, + "id": 308, "modifierName": { "argumentTypes": null, - "id": 292, + "id": 307, "name": "onlyCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 27, - "src": "2392:12:1", + "referencedDeclaration": 125, + "src": "1755:12:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2392:12:1" + "src": "1755:12:2" } ], "name": "terminate", "nodeType": "FunctionDefinition", "parameters": { - "id": 291, + "id": 306, "nodeType": "ParameterList", "parameters": [], - "src": "2382:2:1" + "src": "1745:2:2" }, "payable": false, "returnParameters": { - "id": 294, + "id": 309, "nodeType": "ParameterList", "parameters": [], - "src": "2405:0:1" + "src": "1768:0:2" }, - "scope": 300, - "src": "2364:72:1", + "scope": 315, + "src": "1727:72:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 301, - "src": "524:1915:1" + "scope": 316, + "src": "552:1250:2" } ], - "src": "0:2441:1" + "src": "0:1804:2" }, - "id": 1 + "id": 2 }, "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol": { "ast": { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol", "exportedSymbols": { "ERC20TokenHolder": [ - 357 + 372 ] }, - "id": 358, + "id": 373, "nodeType": "SourceUnit", "nodes": [ { - "id": 302, + "id": 317, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:2" + "src": "0:23:3" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "id": 303, + "id": 318, "nodeType": "ImportDirective", - "scope": 358, - "sourceUnit": 709, - "src": "27:195:2", + "scope": 373, + "sourceUnit": 729, + "src": "27:195:3", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", - "id": 304, + "id": 319, "nodeType": "ImportDirective", - "scope": 358, - "sourceUnit": 853, - "src": "224:198:2", + "scope": 373, + "sourceUnit": 873, + "src": "224:198:3", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", "file": "./Terminable.sol", - "id": 305, + "id": 320, "nodeType": "ImportDirective", - "scope": 358, - "sourceUnit": 418, - "src": "426:26:2", + "scope": 373, + "sourceUnit": 438, + "src": "426:26:3", "symbolAliases": [], "unitAlias": "" }, @@ -4667,86 +4758,86 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 306, + "id": 321, "name": "Terminable", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 417, - "src": "485:10:2", + "referencedDeclaration": 437, + "src": "485:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_Terminable_$417", + "typeIdentifier": "t_contract$_Terminable_$437", "typeString": "contract Terminable" } }, - "id": 307, + "id": 322, "nodeType": "InheritanceSpecifier", - "src": "485:10:2" + "src": "485:10:3" } ], "contractDependencies": [ - 417 + 437 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 357, + "id": 372, "linearizedBaseContracts": [ - 357, - 417 + 372, + 437 ], "name": "ERC20TokenHolder", "nodeType": "ContractDefinition", "nodes": [ { - "id": 310, + "id": 325, "libraryName": { "contractScope": null, - "id": 308, + "id": 323, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 852, - "src": "509:9:2", + "referencedDeclaration": 872, + "src": "509:9:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$852", + "typeIdentifier": "t_contract$_SafeERC20_$872", "typeString": "library SafeERC20" } }, "nodeType": "UsingForDirective", - "src": "503:27:2", + "src": "503:27:3", "typeName": { "contractScope": null, - "id": 309, + "id": 324, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 708, - "src": "523:6:2", + "referencedDeclaration": 728, + "src": "523:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$708", + "typeIdentifier": "t_contract$_IERC20_$728", "typeString": "contract IERC20" } } }, { "constant": false, - "id": 312, + "id": 327, "name": "_token", "nodeType": "VariableDeclaration", - "scope": 357, - "src": "538:22:2", + "scope": 372, + "src": "538:22:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$708", + "typeIdentifier": "t_contract$_IERC20_$728", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 311, + "id": 326, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 708, - "src": "538:6:2", + "referencedDeclaration": 728, + "src": "538:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$708", + "typeIdentifier": "t_contract$_IERC20_$728", "typeString": "contract IERC20" } }, @@ -4755,28 +4846,28 @@ }, { "body": { - "id": 325, + "id": 340, "nodeType": "Block", - "src": "625:48:2", + "src": "625:48:3", "statements": [ { "expression": { "argumentTypes": null, - "id": 323, + "id": 338, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 319, + "id": 334, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 312, - "src": "636:6:2", + "referencedDeclaration": 327, + "src": "636:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$708", + "typeIdentifier": "t_contract$_IERC20_$728", "typeString": "contract IERC20" } }, @@ -4787,12 +4878,12 @@ "arguments": [ { "argumentTypes": null, - "id": 321, + "id": 336, "name": "tokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 314, - "src": "652:12:2", + "referencedDeclaration": 329, + "src": "652:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4806,18 +4897,18 @@ "typeString": "address" } ], - "id": 320, + "id": 335, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 708, - "src": "645:6:2", + "referencedDeclaration": 728, + "src": "645:6:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$708_$", + "typeIdentifier": "t_type$_t_contract$_IERC20_$728_$", "typeString": "type(contract IERC20)" } }, - "id": 322, + "id": 337, "isConstant": false, "isLValue": false, "isPure": false, @@ -4825,63 +4916,63 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "645:20:2", + "src": "645:20:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$708", + "typeIdentifier": "t_contract$_IERC20_$728", "typeString": "contract IERC20" } }, - "src": "636:29:2", + "src": "636:29:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$708", + "typeIdentifier": "t_contract$_IERC20_$728", "typeString": "contract IERC20" } }, - "id": 324, + "id": 339, "nodeType": "ExpressionStatement", - "src": "636:29:2" + "src": "636:29:3" } ] }, "documentation": null, - "id": 326, + "id": 341, "implemented": true, "isConstructor": true, "isDeclaredConst": false, "modifiers": [ { "arguments": [], - "id": 317, + "id": 332, "modifierName": { "argumentTypes": null, - "id": 316, + "id": 331, "name": "Terminable", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 417, - "src": "603:10:2", + "referencedDeclaration": 437, + "src": "603:10:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Terminable_$417_$", + "typeIdentifier": "t_type$_t_contract$_Terminable_$437_$", "typeString": "type(contract Terminable)" } }, "nodeType": "ModifierInvocation", - "src": "603:12:2" + "src": "603:12:3" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 315, + "id": 330, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 314, + "id": 329, "name": "tokenAddress", "nodeType": "VariableDeclaration", - "scope": 326, - "src": "581:20:2", + "scope": 341, + "src": "581:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4889,10 +4980,10 @@ "typeString": "address" }, "typeName": { - "id": 313, + "id": 328, "name": "address", "nodeType": "ElementaryTypeName", - "src": "581:7:2", + "src": "581:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4902,39 +4993,39 @@ "visibility": "internal" } ], - "src": "580:22:2" + "src": "580:22:3" }, "payable": false, "returnParameters": { - "id": 318, + "id": 333, "nodeType": "ParameterList", "parameters": [], - "src": "625:0:2" + "src": "625:0:3" }, - "scope": 357, - "src": "569:104:2", + "scope": 372, + "src": "569:104:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 355, + "id": 370, "nodeType": "Block", - "src": "712:214:2", + "src": "712:214:3", "statements": [ { "assignments": [ - 330 + 345 ], "declarations": [ { "constant": false, - "id": 330, + "id": 345, "name": "currentBalance", "nodeType": "VariableDeclaration", - "scope": 356, - "src": "723:22:2", + "scope": 371, + "src": "723:22:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4942,10 +5033,10 @@ "typeString": "uint256" }, "typeName": { - "id": 329, + "id": 344, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "723:7:2", + "src": "723:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4955,7 +5046,7 @@ "visibility": "internal" } ], - "id": 337, + "id": 352, "initialValue": { "argumentTypes": null, "arguments": [ @@ -4964,14 +5055,14 @@ "arguments": [ { "argumentTypes": null, - "id": 334, + "id": 349, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 894, - "src": "773:4:2", + "referencedDeclaration": 916, + "src": "773:4:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20TokenHolder_$357", + "typeIdentifier": "t_contract$_ERC20TokenHolder_$372", "typeString": "contract ERC20TokenHolder" } } @@ -4979,24 +5070,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ERC20TokenHolder_$357", + "typeIdentifier": "t_contract$_ERC20TokenHolder_$372", "typeString": "contract ERC20TokenHolder" } ], - "id": 333, + "id": 348, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "765:7:2", + "src": "765:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 335, + "id": 350, "isConstant": false, "isLValue": false, "isPure": false, @@ -5004,7 +5095,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "765:13:2", + "src": "765:13:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5020,32 +5111,32 @@ ], "expression": { "argumentTypes": null, - "id": 331, + "id": 346, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 312, - "src": "748:6:2", + "referencedDeclaration": 327, + "src": "748:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$708", + "typeIdentifier": "t_contract$_IERC20_$728", "typeString": "contract IERC20" } }, - "id": 332, + "id": 347, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 653, - "src": "748:16:2", + "referencedDeclaration": 673, + "src": "748:16:3", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 336, + "id": 351, "isConstant": false, "isLValue": false, "isPure": false, @@ -5053,14 +5144,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "748:31:2", + "src": "748:31:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "723:56:2" + "src": "723:56:3" }, { "condition": { @@ -5069,19 +5160,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 340, + "id": 355, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 338, + "id": 353, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "793:14:2", + "referencedDeclaration": 345, + "src": "793:14:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5092,14 +5183,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 339, + "id": 354, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "810:1:2", + "src": "810:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5107,20 +5198,20 @@ }, "value": "0" }, - "src": "793:18:2", + "src": "793:18:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 349, + "id": 364, "nodeType": "IfStatement", - "src": "790:95:2", + "src": "790:95:3", "trueBody": { - "id": 348, + "id": 363, "nodeType": "Block", - "src": "813:72:2", + "src": "813:72:3", "statements": [ { "expression": { @@ -5128,12 +5219,12 @@ "arguments": [ { "argumentTypes": null, - "id": 344, + "id": 359, "name": "_creator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 384, - "src": "848:8:2", + "referencedDeclaration": 404, + "src": "848:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5141,12 +5232,12 @@ }, { "argumentTypes": null, - "id": 345, + "id": 360, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "858:14:2", + "referencedDeclaration": 345, + "src": "858:14:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5166,32 +5257,32 @@ ], "expression": { "argumentTypes": null, - "id": 341, + "id": 356, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 312, - "src": "828:6:2", + "referencedDeclaration": 327, + "src": "828:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$708", + "typeIdentifier": "t_contract$_IERC20_$728", "typeString": "contract IERC20" } }, - "id": 343, + "id": 358, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 733, - "src": "828:19:2", + "referencedDeclaration": 753, + "src": "828:19:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$708_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$708_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$728_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$728_$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 346, + "id": 361, "isConstant": false, "isLValue": false, "isPure": false, @@ -5199,15 +5290,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "828:45:2", + "src": "828:45:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 347, + "id": 362, "nodeType": "ExpressionStatement", - "src": "828:45:2" + "src": "828:45:3" } ] } @@ -5220,32 +5311,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 350, + "id": 365, "name": "Terminable", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 417, - "src": "895:10:2", + "referencedDeclaration": 437, + "src": "895:10:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Terminable_$417_$", + "typeIdentifier": "t_type$_t_contract$_Terminable_$437_$", "typeString": "type(contract Terminable)" } }, - "id": 352, + "id": 367, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "_terminate", "nodeType": "MemberAccess", - "referencedDeclaration": 416, - "src": "895:21:2", + "referencedDeclaration": 436, + "src": "895:21:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 353, + "id": 368, "isConstant": false, "isLValue": false, "isPure": false, @@ -5253,20 +5344,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "895:23:2", + "src": "895:23:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 354, + "id": 369, "nodeType": "ExpressionStatement", - "src": "895:23:2" + "src": "895:23:3" } ] }, "documentation": null, - "id": 356, + "id": 371, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -5274,313 +5365,46 @@ "name": "_terminate", "nodeType": "FunctionDefinition", "parameters": { - "id": 327, + "id": 342, "nodeType": "ParameterList", "parameters": [], - "src": "700:2:2" + "src": "700:2:3" }, "payable": false, "returnParameters": { - "id": 328, + "id": 343, "nodeType": "ParameterList", "parameters": [], - "src": "712:0:2" + "src": "712:0:3" }, - "scope": 357, - "src": "681:245:2", + "scope": 372, + "src": "681:245:3", "stateMutability": "nonpayable", - "superFunction": 416, + "superFunction": 436, "visibility": "internal" } ], - "scope": 358, - "src": "456:473:2" + "scope": 373, + "src": "456:473:3" } ], - "src": "0:929:2" + "src": "0:929:3" }, - "id": 2 + "id": 3 }, "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol": { "ast": { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", "exportedSymbols": { "IAlgoMiner": [ - 380 + 400 ] }, - "id": 381, + "id": 401, "nodeType": "SourceUnit", "nodes": [ { - "id": 359, - "literals": [ - "solidity", - "0.4", - ".24" - ], - "nodeType": "PragmaDirective", - "src": "0:23:3" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": false, - "id": 380, - "linearizedBaseContracts": [ - 380 - ], - "name": "IAlgoMiner", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": null, - "documentation": null, - "id": 364, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "isAlgoMiner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 360, - "nodeType": "ParameterList", - "parameters": [], - "src": "74:2:3" - }, - "payable": false, - "returnParameters": { - "id": 363, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 362, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 364, - "src": "98:4:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 361, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "98:4:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "97:6:3" - }, - "scope": 380, - "src": "54:50:3", - "stateMutability": "pure", - "superFunction": null, - "visibility": "public" - }, - { - "body": null, - "documentation": null, - "id": 369, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getCategory", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 365, - "nodeType": "ParameterList", - "parameters": [], - "src": "130:2:3" - }, - "payable": false, - "returnParameters": { - "id": 368, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 367, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 369, - "src": "154:5:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 366, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "154:5:3", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "153:7:3" - }, - "scope": 380, - "src": "110:51:3", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": null, - "documentation": null, - "id": 374, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "isMining", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 370, - "nodeType": "ParameterList", - "parameters": [], - "src": "184:2:3" - }, - "payable": false, - "returnParameters": { - "id": 373, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 372, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 374, - "src": "208:4:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 371, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "208:4:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "207:6:3" - }, - "scope": 380, - "src": "167:47:3", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": null, - "documentation": null, - "id": 379, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getMiner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 375, - "nodeType": "ParameterList", - "parameters": [], - "src": "237:2:3" - }, - "payable": false, - "returnParameters": { - "id": 378, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 377, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 379, - "src": "261:7:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 376, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "261:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "260:9:3" - }, - "scope": 380, - "src": "220:50:3", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 381, - "src": "27:246:3" - } - ], - "src": "0:273:3" - }, - "id": 3 - }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol": { - "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", - "exportedSymbols": { - "Terminable": [ - 417 - ] - }, - "id": 418, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 382, + "id": 374, "literals": [ "solidity", "0.4", @@ -5594,21 +5418,344 @@ "contractDependencies": [], "contractKind": "contract", "documentation": null, - "fullyImplemented": true, - "id": 417, + "fullyImplemented": false, + "id": 400, "linearizedBaseContracts": [ - 417 + 400 + ], + "name": "IAlgoMiner", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 379, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isAlgoMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 375, + "nodeType": "ParameterList", + "parameters": [], + "src": "74:2:4" + }, + "payable": false, + "returnParameters": { + "id": 378, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 377, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 379, + "src": "98:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 376, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "98:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "97:6:4" + }, + "scope": 400, + "src": "54:50:4", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 384, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getMinerType", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 380, + "nodeType": "ParameterList", + "parameters": [], + "src": "131:2:4" + }, + "payable": false, + "returnParameters": { + "id": 383, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 382, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 384, + "src": "155:5:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 381, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "155:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "154:7:4" + }, + "scope": 400, + "src": "110:52:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 389, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getCategory", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 385, + "nodeType": "ParameterList", + "parameters": [], + "src": "188:2:4" + }, + "payable": false, + "returnParameters": { + "id": 388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 387, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 389, + "src": "212:5:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 386, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "212:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "211:7:4" + }, + "scope": 400, + "src": "168:51:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 394, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isMining", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 390, + "nodeType": "ParameterList", + "parameters": [], + "src": "242:2:4" + }, + "payable": false, + "returnParameters": { + "id": 393, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 392, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 394, + "src": "266:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 391, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "266:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "265:6:4" + }, + "scope": 400, + "src": "225:47:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 399, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 395, + "nodeType": "ParameterList", + "parameters": [], + "src": "295:2:4" + }, + "payable": false, + "returnParameters": { + "id": 398, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 397, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 399, + "src": "319:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 396, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "319:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "318:9:4" + }, + "scope": 400, + "src": "278:50:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 401, + "src": "27:304:4" + } + ], + "src": "0:331:4" + }, + "id": 4 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", + "exportedSymbols": { + "Terminable": [ + 437 + ] + }, + "id": 438, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 402, + "literals": [ + "solidity", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:23:5" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 437, + "linearizedBaseContracts": [ + 437 ], "name": "Terminable", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 384, + "id": 404, "name": "_creator", "nodeType": "VariableDeclaration", - "scope": 417, - "src": "56:25:4", + "scope": 437, + "src": "56:25:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -5616,10 +5763,10 @@ "typeString": "address" }, "typeName": { - "id": 383, + "id": 403, "name": "address", "nodeType": "ElementaryTypeName", - "src": "56:7:4", + "src": "56:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5630,11 +5777,11 @@ }, { "constant": false, - "id": 386, + "id": 406, "name": "_terminated", "nodeType": "VariableDeclaration", - "scope": 417, - "src": "88:25:4", + "scope": 437, + "src": "88:25:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -5642,10 +5789,10 @@ "typeString": "bool" }, "typeName": { - "id": 385, + "id": 405, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "88:4:4", + "src": "88:4:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5656,26 +5803,26 @@ }, { "body": { - "id": 398, + "id": 418, "nodeType": "Block", - "src": "145:70:4", + "src": "145:70:5", "statements": [ { "expression": { "argumentTypes": null, - "id": 392, + "id": 412, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 389, + "id": 409, "name": "_creator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 384, - "src": "156:8:4", + "referencedDeclaration": 404, + "src": "156:8:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5687,18 +5834,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 390, + "id": 410, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 867, - "src": "167:3:4", + "referencedDeclaration": 887, + "src": "167:3:5", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 391, + "id": 411, "isConstant": false, "isLValue": false, "isPure": false, @@ -5706,38 +5853,38 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "167:10:4", + "src": "167:10:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "156:21:4", + "src": "156:21:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 393, + "id": 413, "nodeType": "ExpressionStatement", - "src": "156:21:4" + "src": "156:21:5" }, { "expression": { "argumentTypes": null, - "id": 396, + "id": 416, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 394, + "id": 414, "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 386, - "src": "188:11:4", + "referencedDeclaration": 406, + "src": "188:11:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5748,14 +5895,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 395, + "id": 415, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "202:5:4", + "src": "202:5:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5763,20 +5910,20 @@ }, "value": "false" }, - "src": "188:19:4", + "src": "188:19:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 397, + "id": 417, "nodeType": "ExpressionStatement", - "src": "188:19:4" + "src": "188:19:5" } ] }, "documentation": null, - "id": 399, + "id": 419, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -5784,29 +5931,29 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 387, + "id": 407, "nodeType": "ParameterList", "parameters": [], - "src": "133:2:4" + "src": "133:2:5" }, "payable": false, "returnParameters": { - "id": 388, + "id": 408, "nodeType": "ParameterList", "parameters": [], - "src": "145:0:4" + "src": "145:0:5" }, - "scope": 417, - "src": "122:93:4", + "scope": 437, + "src": "122:93:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 407, + "id": 427, "nodeType": "Block", - "src": "248:52:4", + "src": "248:52:5", "statements": [ { "expression": { @@ -5814,7 +5961,7 @@ "arguments": [ { "argumentTypes": null, - "id": 403, + "id": 423, "isConstant": false, "isLValue": false, "isPure": false, @@ -5822,15 +5969,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "267:12:4", + "src": "267:12:5", "subExpression": { "argumentTypes": null, - "id": 402, + "id": 422, "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 386, - "src": "268:11:4", + "referencedDeclaration": 406, + "src": "268:11:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5849,21 +5996,21 @@ "typeString": "bool" } ], - "id": 401, + "id": 421, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 870, - 871 + 890, + 891 ], - "referencedDeclaration": 870, - "src": "259:7:4", + "referencedDeclaration": 890, + "src": "259:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 404, + "id": 424, "isConstant": false, "isLValue": false, "isPure": false, @@ -5871,58 +6018,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "259:21:4", + "src": "259:21:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 405, + "id": 425, "nodeType": "ExpressionStatement", - "src": "259:21:4" + "src": "259:21:5" }, { - "id": 406, + "id": 426, "nodeType": "PlaceholderStatement", - "src": "291:1:4" + "src": "291:1:5" } ] }, "documentation": null, - "id": 408, + "id": 428, "name": "notTerminated", "nodeType": "ModifierDefinition", "parameters": { - "id": 400, + "id": 420, "nodeType": "ParameterList", "parameters": [], - "src": "245:2:4" + "src": "245:2:5" }, - "src": "223:77:4", + "src": "223:77:5", "visibility": "internal" }, { "body": { - "id": 415, + "id": 435, "nodeType": "Block", - "src": "339:37:4", + "src": "339:37:5", "statements": [ { "expression": { "argumentTypes": null, - "id": 413, + "id": 433, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 411, + "id": 431, "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 386, - "src": "350:11:4", + "referencedDeclaration": 406, + "src": "350:11:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5933,14 +6080,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 412, + "id": 432, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "364:4:4", + "src": "364:4:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5948,1346 +6095,67 @@ }, "value": "true" }, - "src": "350:18:4", + "src": "350:18:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 414, + "id": 434, "nodeType": "ExpressionStatement", - "src": "350:18:4" + "src": "350:18:5" } ] }, "documentation": null, - "id": 416, + "id": 436, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "_terminate", "nodeType": "FunctionDefinition", - "parameters": { - "id": 409, - "nodeType": "ParameterList", - "parameters": [], - "src": "327:2:4" - }, - "payable": false, - "returnParameters": { - "id": 410, - "nodeType": "ParameterList", - "parameters": [], - "src": "339:0:4" - }, - "scope": 417, - "src": "308:68:4", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 418, - "src": "27:352:4" - } - ], - "src": "0:379:4" - }, - "id": 4 - }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { - "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", - "exportedSymbols": { - "Roles": [ - 511 - ] - }, - "id": 512, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 419, - "literals": [ - "solidity", - "^", - "0.4", - ".24" - ], - "nodeType": "PragmaDirective", - "src": "0:24:5" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", - "fullyImplemented": true, - "id": 511, - "linearizedBaseContracts": [ - 511 - ], - "name": "Roles", - "nodeType": "ContractDefinition", - "nodes": [ - { - "canonicalName": "Roles.Role", - "id": 424, - "members": [ - { - "constant": false, - "id": 423, - "name": "bearer", - "nodeType": "VariableDeclaration", - "scope": 424, - "src": "145:32:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 422, - "keyType": { - "id": 420, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "154:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "145:25:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 421, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "165:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "internal" - } - ], - "name": "Role", - "nodeType": "StructDefinition", - "scope": 511, - "src": "127:55:5", - "visibility": "public" - }, - { - "body": { - "id": 455, - "nodeType": "Block", - "src": "302:109:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 436, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 432, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 428, - "src": "316:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 434, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "335:1:5", - "subdenomination": null, - "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": 433, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "327:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 435, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "327:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "316:21:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 431, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 870, - 871 - ], - "referencedDeclaration": 870, - "src": "308:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 437, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "308:30:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 438, - "nodeType": "ExpressionStatement", - "src": "308:30:5" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 444, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "352:19:5", - "subExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 441, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 426, - "src": "357:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$424_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - { - "argumentTypes": null, - "id": 442, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 428, - "src": "363:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Role_$424_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 440, - "name": "has", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 510, - "src": "353:3:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$424_storage_ptr_$_t_address_$returns$_t_bool_$", - "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" - } - }, - "id": 443, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "353:18:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 439, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 870, - 871 - ], - "referencedDeclaration": 870, - "src": "344:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 445, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "344:28:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 446, - "nodeType": "ExpressionStatement", - "src": "344:28:5" - }, - { - "expression": { - "argumentTypes": null, - "id": 453, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 447, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 426, - "src": "379:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$424_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - "id": 450, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "bearer", - "nodeType": "MemberAccess", - "referencedDeclaration": 423, - "src": "379:11:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 451, - "indexExpression": { - "argumentTypes": null, - "id": 449, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 428, - "src": "391:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "379:20:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 452, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "402:4:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "379:27:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 454, - "nodeType": "ExpressionStatement", - "src": "379:27:5" - } - ] - }, - "documentation": "@dev give an account access to this role", - "id": 456, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "add", - "nodeType": "FunctionDefinition", "parameters": { "id": 429, "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 426, - "name": "role", - "nodeType": "VariableDeclaration", - "scope": 456, - "src": "257:17:5", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$424_storage_ptr", - "typeString": "struct Roles.Role" - }, - "typeName": { - "contractScope": null, - "id": 425, - "name": "Role", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 424, - "src": "257:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$424_storage_ptr", - "typeString": "struct Roles.Role" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 428, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 456, - "src": "276:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 427, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "276:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "256:36:5" + "parameters": [], + "src": "327:2:5" }, "payable": false, "returnParameters": { "id": 430, "nodeType": "ParameterList", "parameters": [], - "src": "302:0:5" + "src": "339:0:5" }, - "scope": 511, - "src": "244:167:5", + "scope": 437, + "src": "308:68:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" - }, - { - "body": { - "id": 486, - "nodeType": "Block", - "src": "538:109:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 468, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 464, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 460, - "src": "552:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 466, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "571:1:5", - "subdenomination": null, - "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": 465, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "563:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 467, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "563:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "552:21:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 463, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 870, - 871 - ], - "referencedDeclaration": 870, - "src": "544:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 469, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "544:30:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 470, - "nodeType": "ExpressionStatement", - "src": "544:30:5" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 473, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 458, - "src": "592:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$424_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - { - "argumentTypes": null, - "id": 474, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 460, - "src": "598:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Role_$424_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 472, - "name": "has", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 510, - "src": "588:3:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$424_storage_ptr_$_t_address_$returns$_t_bool_$", - "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" - } - }, - "id": 475, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "588:18:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 471, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 870, - 871 - ], - "referencedDeclaration": 870, - "src": "580:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 476, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "580:27:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 477, - "nodeType": "ExpressionStatement", - "src": "580:27:5" - }, - { - "expression": { - "argumentTypes": null, - "id": 484, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 478, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 458, - "src": "614:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$424_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - "id": 481, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "bearer", - "nodeType": "MemberAccess", - "referencedDeclaration": 423, - "src": "614:11:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 482, - "indexExpression": { - "argumentTypes": null, - "id": 480, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 460, - "src": "626:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "614:20:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 483, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "637:5:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "614:28:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 485, - "nodeType": "ExpressionStatement", - "src": "614:28:5" - } - ] - }, - "documentation": "@dev remove an account's access to this role", - "id": 487, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "remove", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 461, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 458, - "name": "role", - "nodeType": "VariableDeclaration", - "scope": 487, - "src": "493:17:5", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$424_storage_ptr", - "typeString": "struct Roles.Role" - }, - "typeName": { - "contractScope": null, - "id": 457, - "name": "Role", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 424, - "src": "493:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$424_storage_ptr", - "typeString": "struct Roles.Role" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 460, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 487, - "src": "512:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 459, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "512:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "492:36:5" - }, - "payable": false, - "returnParameters": { - "id": 462, - "nodeType": "ParameterList", - "parameters": [], - "src": "538:0:5" - }, - "scope": 511, - "src": "477:170:5", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 509, - "nodeType": "Block", - "src": "817:74:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 501, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 497, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 491, - "src": "831:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 499, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "850:1:5", - "subdenomination": null, - "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": 498, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "842:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 500, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "842:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "831:21:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 496, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 870, - 871 - ], - "referencedDeclaration": 870, - "src": "823:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 502, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "823:30:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 503, - "nodeType": "ExpressionStatement", - "src": "823:30:5" - }, - { - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 504, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 489, - "src": "866:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$424_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - "id": 505, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "bearer", - "nodeType": "MemberAccess", - "referencedDeclaration": 423, - "src": "866:11:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 507, - "indexExpression": { - "argumentTypes": null, - "id": 506, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 491, - "src": "878:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "866:20:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 495, - "id": 508, - "nodeType": "Return", - "src": "859:27:5" - } - ] - }, - "documentation": "@dev check if an account has this role\n@return bool", - "id": 510, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "has", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 492, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 489, - "name": "role", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "738:17:5", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$424_storage_ptr", - "typeString": "struct Roles.Role" - }, - "typeName": { - "contractScope": null, - "id": 488, - "name": "Role", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 424, - "src": "738:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$424_storage_ptr", - "typeString": "struct Roles.Role" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 491, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "757:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 490, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "757:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "737:36:5" - }, - "payable": false, - "returnParameters": { - "id": 495, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 494, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "809:4:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 493, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "809:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "808:6:5" - }, - "scope": 511, - "src": "725:166:5", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" } ], - "scope": 512, - "src": "109:784:5" + "scope": 438, + "src": "27:352:5" } ], - "src": "0:894:5" + "src": "0:379:5" }, "id": 5 }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "exportedSymbols": { - "SafeMath": [ - 639 + "Roles": [ + 531 ] }, - "id": 640, + "id": 532, "nodeType": "SourceUnit", "nodes": [ { - "id": 513, + "id": 439, "literals": [ "solidity", "^", @@ -7301,189 +6169,77 @@ "baseContracts": [], "contractDependencies": [], "contractKind": "library", - "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", + "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", "fullyImplemented": true, - "id": 639, + "id": 531, "linearizedBaseContracts": [ - 639 + 531 ], - "name": "SafeMath", + "name": "Roles", "nodeType": "ContractDefinition", "nodes": [ { - "body": { - "id": 545, - "nodeType": "Block", - "src": "271:314:6", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 524, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 522, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 515, - "src": "486:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 523, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "491:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "486:6:6", + "canonicalName": "Roles.Role", + "id": 444, + "members": [ + { + "constant": false, + "id": 443, + "name": "bearer", + "nodeType": "VariableDeclaration", + "scope": 444, + "src": "145:32:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 442, + "keyType": { + "id": 440, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "154:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "145:25:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 441, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "165:4:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } - }, - "falseBody": null, - "id": 528, - "nodeType": "IfStatement", - "src": "482:35:6", - "trueBody": { - "id": 527, - "nodeType": "Block", - "src": "494:23:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "hexValue": "30", - "id": 525, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "509:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "functionReturnParameters": 521, - "id": 526, - "nodeType": "Return", - "src": "502:8:6" - } - ] } }, - { - "assignments": [ - 530 - ], - "declarations": [ - { - "constant": false, - "id": 530, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 546, - "src": "523:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 529, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "523:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 534, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 533, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 531, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 515, - "src": "535:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "id": 532, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 517, - "src": "539:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "535:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "523:17:6" - }, + "value": null, + "visibility": "internal" + } + ], + "name": "Role", + "nodeType": "StructDefinition", + "scope": 531, + "src": "127:55:6", + "visibility": "public" + }, + { + "body": { + "id": 475, + "nodeType": "Block", + "src": "302:109:6", + "statements": [ { "expression": { "argumentTypes": null, @@ -7491,75 +6247,86 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 540, + "id": 456, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 538, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 536, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "554:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "id": 537, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 515, - "src": "558:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "554:5:6", + "id": 452, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 448, + "src": "316:7:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "BinaryOperation", - "operator": "==", + "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 539, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 517, - "src": "563:1:6", + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 454, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "335:1:6", + "subdenomination": null, + "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": 453, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "327:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 455, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "327:10:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "src": "554:10:6", + "src": "316:21:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7573,21 +6340,21 @@ "typeString": "bool" } ], - "id": 535, + "id": 451, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 870, - 871 + 890, + 891 ], - "referencedDeclaration": 870, - "src": "546:7:6", + "referencedDeclaration": 890, + "src": "308:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 541, + "id": 457, "isConstant": false, "isLValue": false, "isPure": false, @@ -7595,70 +6362,273 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "546:19:6", + "src": "308:30:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 542, + "id": 458, "nodeType": "ExpressionStatement", - "src": "546:19:6" + "src": "308:30:6" }, { "expression": { "argumentTypes": null, - "id": 543, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "579:1:6", + "arguments": [ + { + "argumentTypes": null, + "id": 464, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "352:19:6", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 461, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 446, + "src": "357:4:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 462, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 448, + "src": "363:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 460, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "353:3:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$444_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "353:18:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 459, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 890, + 891 + ], + "referencedDeclaration": 890, + "src": "344:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "344:28:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "functionReturnParameters": 521, - "id": 544, - "nodeType": "Return", - "src": "572:8:6" + "id": 466, + "nodeType": "ExpressionStatement", + "src": "344:28:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 467, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 446, + "src": "379:4:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 470, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 443, + "src": "379:11:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 471, + "indexExpression": { + "argumentTypes": null, + "id": 469, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 448, + "src": "391:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "379:20:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 472, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "402:4:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "379:27:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 474, + "nodeType": "ExpressionStatement", + "src": "379:27:6" } ] }, - "documentation": "@dev Multiplies two numbers, reverts on overflow.", - "id": 546, + "documentation": "@dev give an account access to this role", + "id": 476, "implemented": true, "isConstructor": false, - "isDeclaredConst": true, + "isDeclaredConst": false, "modifiers": [], - "name": "mul", + "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 518, + "id": 449, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 515, - "name": "a", + "id": 446, + "name": "role", "nodeType": "VariableDeclaration", - "scope": 546, - "src": "217:9:6", + "scope": 476, + "src": "257:17:6", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeString": "struct Roles.Role" }, "typeName": { - "id": 514, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "217:7:6", + "contractScope": null, + "id": 445, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 444, + "src": "257:4:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeString": "struct Roles.Role" } }, "value": null, @@ -7666,79 +6636,1001 @@ }, { "constant": false, - "id": 517, - "name": "b", + "id": 448, + "name": "account", "nodeType": "VariableDeclaration", - "scope": 546, - "src": "228:9:6", + "scope": 476, + "src": "276:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 516, - "name": "uint256", + "id": 447, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "228:7:6", + "src": "276:7:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "value": null, "visibility": "internal" } ], - "src": "216:22:6" + "src": "256:36:6" }, "payable": false, "returnParameters": { - "id": 521, + "id": 450, "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 520, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 546, - "src": "262:7:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 519, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "262:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "261:9:6" + "parameters": [], + "src": "302:0:6" }, - "scope": 639, - "src": "204:381:6", - "stateMutability": "pure", + "scope": 531, + "src": "244:167:6", + "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 569, + "id": 506, "nodeType": "Block", - "src": "762:203:6", + "src": "538:109:6", "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 484, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 480, + "src": "552:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 486, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "571:1:6", + "subdenomination": null, + "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": 485, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "563:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 487, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "563:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "552:21:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 483, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 890, + 891 + ], + "referencedDeclaration": 890, + "src": "544:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 489, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "544:30:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 490, + "nodeType": "ExpressionStatement", + "src": "544:30:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 493, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 478, + "src": "592:4:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 494, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 480, + "src": "598:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 492, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "588:3:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$444_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "588:18:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 491, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 890, + 891 + ], + "referencedDeclaration": 890, + "src": "580:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 496, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "580:27:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 497, + "nodeType": "ExpressionStatement", + "src": "580:27:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 498, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 478, + "src": "614:4:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 501, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 443, + "src": "614:11:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 502, + "indexExpression": { + "argumentTypes": null, + "id": 500, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 480, + "src": "626:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "614:20:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 503, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "637:5:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "614:28:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 505, + "nodeType": "ExpressionStatement", + "src": "614:28:6" + } + ] + }, + "documentation": "@dev remove an account's access to this role", + "id": 507, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "remove", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 481, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 478, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 507, + "src": "493:17:6", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 477, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 444, + "src": "493:4:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 480, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 507, + "src": "512:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 479, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "512:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "492:36:6" + }, + "payable": false, + "returnParameters": { + "id": 482, + "nodeType": "ParameterList", + "parameters": [], + "src": "538:0:6" + }, + "scope": 531, + "src": "477:170:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 529, + "nodeType": "Block", + "src": "817:74:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 517, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 511, + "src": "831:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 519, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "850:1:6", + "subdenomination": null, + "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": 518, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "842:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 520, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "842:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "831:21:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 516, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 890, + 891 + ], + "referencedDeclaration": 890, + "src": "823:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 522, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "823:30:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 523, + "nodeType": "ExpressionStatement", + "src": "823:30:6" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 524, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 509, + "src": "866:4:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 525, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 443, + "src": "866:11:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 527, + "indexExpression": { + "argumentTypes": null, + "id": 526, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 511, + "src": "878:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "866:20:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 515, + "id": 528, + "nodeType": "Return", + "src": "859:27:6" + } + ] + }, + "documentation": "@dev check if an account has this role\n@return bool", + "id": 530, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "has", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 512, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 509, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 530, + "src": "738:17:6", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 508, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 444, + "src": "738:4:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 511, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 530, + "src": "757:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 510, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "757:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "737:36:6" + }, + "payable": false, + "returnParameters": { + "id": 515, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 514, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 530, + "src": "809:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 513, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "809:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "808:6:6" + }, + "scope": 531, + "src": "725:166:6", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 532, + "src": "109:784:6" + } + ], + "src": "0:894:6" + }, + "id": 6 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", + "exportedSymbols": { + "SafeMath": [ + 659 + ] + }, + "id": 660, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 533, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:7" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", + "fullyImplemented": true, + "id": 659, + "linearizedBaseContracts": [ + 659 + ], + "name": "SafeMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 565, + "nodeType": "Block", + "src": "271:314:7", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 542, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 535, + "src": "486:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 543, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "491:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "486:6:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 548, + "nodeType": "IfStatement", + "src": "482:35:7", + "trueBody": { + "id": 547, + "nodeType": "Block", + "src": "494:23:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 545, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "509:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 541, + "id": 546, + "nodeType": "Return", + "src": "502:8:7" + } + ] + } + }, + { + "assignments": [ + 550 + ], + "declarations": [ + { + "constant": false, + "id": 550, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 566, + "src": "523:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 549, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "523:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 554, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 551, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 535, + "src": "535:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 552, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "539:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "535:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "523:17:7" + }, { "expression": { "argumentTypes": null, @@ -7749,45 +7641,72 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 558, + "id": 560, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 556, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 550, - "src": "776:1:6", + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 556, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 550, + "src": "554:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 557, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 535, + "src": "558:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "554:5:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", - "operator": ">", + "operator": "==", "rightExpression": { "argumentTypes": null, - "hexValue": "30", - "id": 557, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "780:1:6", - "subdenomination": null, + "id": 559, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "563:1:7", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - "src": "776:5:6", + "src": "554:10:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7805,17 +7724,17 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 870, - 871 + 890, + 891 ], - "referencedDeclaration": 870, - "src": "768:7:6", + "referencedDeclaration": 890, + "src": "546:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 559, + "id": 561, "isConstant": false, "isLValue": false, "isPure": false, @@ -7823,28 +7742,256 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "768:14:6", + "src": "546:19:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 560, + "id": 562, "nodeType": "ExpressionStatement", - "src": "768:14:6" + "src": "546:19:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 563, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 550, + "src": "579:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 541, + "id": 564, + "nodeType": "Return", + "src": "572:8:7" + } + ] + }, + "documentation": "@dev Multiplies two numbers, reverts on overflow.", + "id": 566, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "mul", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 538, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 535, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 566, + "src": "217:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 534, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "217:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 537, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 566, + "src": "228:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 536, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "228:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "216:22:7" + }, + "payable": false, + "returnParameters": { + "id": 541, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 540, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 566, + "src": "262:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 539, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "262:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "261:9:7" + }, + "scope": 659, + "src": "204:381:7", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 589, + "nodeType": "Block", + "src": "762:203:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 576, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 570, + "src": "776:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 577, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "780:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "776:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 575, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 890, + 891 + ], + "referencedDeclaration": 890, + "src": "768:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "768:14:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 580, + "nodeType": "ExpressionStatement", + "src": "768:14:7" }, { "assignments": [ - 562 + 582 ], "declarations": [ { "constant": false, - "id": 562, + "id": 582, "name": "c", "nodeType": "VariableDeclaration", - "scope": 570, - "src": "846:9:6", + "scope": 590, + "src": "846:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7852,10 +7999,10 @@ "typeString": "uint256" }, "typeName": { - "id": 561, + "id": 581, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "846:7:6", + "src": "846:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7865,26 +8012,26 @@ "visibility": "internal" } ], - "id": 566, + "id": 586, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 565, + "id": 585, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 563, + "id": 583, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 548, - "src": "858:1:6", + "referencedDeclaration": 568, + "src": "858:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7894,49 +8041,49 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 564, + "id": 584, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 550, - "src": "862:1:6", + "referencedDeclaration": 570, + "src": "862:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "858:5:6", + "src": "858:5:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "846:17:6" + "src": "846:17:7" }, { "expression": { "argumentTypes": null, - "id": 567, + "id": 587, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 562, - "src": "959:1:6", + "referencedDeclaration": 582, + "src": "959:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 554, - "id": 568, + "functionReturnParameters": 574, + "id": 588, "nodeType": "Return", - "src": "952:8:6" + "src": "952:8:7" } ] }, "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", - "id": 570, + "id": 590, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7944,16 +8091,16 @@ "name": "div", "nodeType": "FunctionDefinition", "parameters": { - "id": 551, + "id": 571, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 548, + "id": 568, "name": "a", "nodeType": "VariableDeclaration", - "scope": 570, - "src": "708:9:6", + "scope": 590, + "src": "708:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7961,10 +8108,10 @@ "typeString": "uint256" }, "typeName": { - "id": 547, + "id": 567, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "708:7:6", + "src": "708:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7975,11 +8122,11 @@ }, { "constant": false, - "id": 550, + "id": 570, "name": "b", "nodeType": "VariableDeclaration", - "scope": 570, - "src": "719:9:6", + "scope": 590, + "src": "719:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7987,10 +8134,10 @@ "typeString": "uint256" }, "typeName": { - "id": 549, + "id": 569, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "719:7:6", + "src": "719:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8000,20 +8147,20 @@ "visibility": "internal" } ], - "src": "707:22:6" + "src": "707:22:7" }, "payable": false, "returnParameters": { - "id": 554, + "id": 574, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 553, + "id": 573, "name": "", "nodeType": "VariableDeclaration", - "scope": 570, - "src": "753:7:6", + "scope": 590, + "src": "753:7:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8021,10 +8168,10 @@ "typeString": "uint256" }, "typeName": { - "id": 552, + "id": 572, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "753:7:6", + "src": "753:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8034,19 +8181,19 @@ "visibility": "internal" } ], - "src": "752:9:6" + "src": "752:9:7" }, - "scope": 639, - "src": "695:270:6", + "scope": 659, + "src": "695:270:7", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 593, + "id": 613, "nodeType": "Block", - "src": "1145:64:6", + "src": "1145:64:7", "statements": [ { "expression": { @@ -8058,19 +8205,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 582, + "id": 602, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 580, + "id": 600, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 574, - "src": "1159:1:6", + "referencedDeclaration": 594, + "src": "1159:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8080,18 +8227,18 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 581, + "id": 601, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 572, - "src": "1164:1:6", + "referencedDeclaration": 592, + "src": "1164:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1159:6:6", + "src": "1159:6:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8105,21 +8252,21 @@ "typeString": "bool" } ], - "id": 579, + "id": 599, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 870, - 871 + 890, + 891 ], - "referencedDeclaration": 870, - "src": "1151:7:6", + "referencedDeclaration": 890, + "src": "1151:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 583, + "id": 603, "isConstant": false, "isLValue": false, "isPure": false, @@ -8127,28 +8274,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1151:15:6", + "src": "1151:15:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 584, + "id": 604, "nodeType": "ExpressionStatement", - "src": "1151:15:6" + "src": "1151:15:7" }, { "assignments": [ - 586 + 606 ], "declarations": [ { "constant": false, - "id": 586, + "id": 606, "name": "c", "nodeType": "VariableDeclaration", - "scope": 594, - "src": "1172:9:6", + "scope": 614, + "src": "1172:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8156,10 +8303,10 @@ "typeString": "uint256" }, "typeName": { - "id": 585, + "id": 605, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1172:7:6", + "src": "1172:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8169,26 +8316,26 @@ "visibility": "internal" } ], - "id": 590, + "id": 610, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 589, + "id": 609, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 587, + "id": 607, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 572, - "src": "1184:1:6", + "referencedDeclaration": 592, + "src": "1184:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8198,49 +8345,49 @@ "operator": "-", "rightExpression": { "argumentTypes": null, - "id": 588, + "id": 608, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 574, - "src": "1188:1:6", + "referencedDeclaration": 594, + "src": "1188:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1184:5:6", + "src": "1184:5:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1172:17:6" + "src": "1172:17:7" }, { "expression": { "argumentTypes": null, - "id": 591, + "id": 611, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 586, - "src": "1203:1:6", + "referencedDeclaration": 606, + "src": "1203:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 578, - "id": 592, + "functionReturnParameters": 598, + "id": 612, "nodeType": "Return", - "src": "1196:8:6" + "src": "1196:8:7" } ] }, "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", - "id": 594, + "id": 614, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -8248,16 +8395,16 @@ "name": "sub", "nodeType": "FunctionDefinition", "parameters": { - "id": 575, + "id": 595, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 572, + "id": 592, "name": "a", "nodeType": "VariableDeclaration", - "scope": 594, - "src": "1091:9:6", + "scope": 614, + "src": "1091:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8265,10 +8412,10 @@ "typeString": "uint256" }, "typeName": { - "id": 571, + "id": 591, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1091:7:6", + "src": "1091:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8279,11 +8426,11 @@ }, { "constant": false, - "id": 574, + "id": 594, "name": "b", "nodeType": "VariableDeclaration", - "scope": 594, - "src": "1102:9:6", + "scope": 614, + "src": "1102:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8291,10 +8438,10 @@ "typeString": "uint256" }, "typeName": { - "id": 573, + "id": 593, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1102:7:6", + "src": "1102:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8304,20 +8451,20 @@ "visibility": "internal" } ], - "src": "1090:22:6" + "src": "1090:22:7" }, "payable": false, "returnParameters": { - "id": 578, + "id": 598, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 577, + "id": 597, "name": "", "nodeType": "VariableDeclaration", - "scope": 594, - "src": "1136:7:6", + "scope": 614, + "src": "1136:7:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8325,10 +8472,10 @@ "typeString": "uint256" }, "typeName": { - "id": 576, + "id": 596, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1136:7:6", + "src": "1136:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8338,32 +8485,32 @@ "visibility": "internal" } ], - "src": "1135:9:6" + "src": "1135:9:7" }, - "scope": 639, - "src": "1078:131:6", + "scope": 659, + "src": "1078:131:7", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 617, + "id": 637, "nodeType": "Block", - "src": "1339:64:6", + "src": "1339:64:7", "statements": [ { "assignments": [ - 604 + 624 ], "declarations": [ { "constant": false, - "id": 604, + "id": 624, "name": "c", "nodeType": "VariableDeclaration", - "scope": 618, - "src": "1345:9:6", + "scope": 638, + "src": "1345:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8371,10 +8518,10 @@ "typeString": "uint256" }, "typeName": { - "id": 603, + "id": 623, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1345:7:6", + "src": "1345:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8384,26 +8531,26 @@ "visibility": "internal" } ], - "id": 608, + "id": 628, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 607, + "id": 627, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 605, + "id": 625, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 596, - "src": "1357:1:6", + "referencedDeclaration": 616, + "src": "1357:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8413,25 +8560,25 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 606, + "id": 626, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 598, - "src": "1361:1:6", + "referencedDeclaration": 618, + "src": "1361:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1357:5:6", + "src": "1357:5:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1345:17:6" + "src": "1345:17:7" }, { "expression": { @@ -8443,19 +8590,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 612, + "id": 632, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 610, + "id": 630, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 604, - "src": "1376:1:6", + "referencedDeclaration": 624, + "src": "1376:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8465,18 +8612,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 611, + "id": 631, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 596, - "src": "1381:1:6", + "referencedDeclaration": 616, + "src": "1381:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1376:6:6", + "src": "1376:6:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8490,21 +8637,21 @@ "typeString": "bool" } ], - "id": 609, + "id": 629, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 870, - 871 + 890, + 891 ], - "referencedDeclaration": 870, - "src": "1368:7:6", + "referencedDeclaration": 890, + "src": "1368:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 613, + "id": 633, "isConstant": false, "isLValue": false, "isPure": false, @@ -8512,39 +8659,39 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1368:15:6", + "src": "1368:15:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 614, + "id": 634, "nodeType": "ExpressionStatement", - "src": "1368:15:6" + "src": "1368:15:7" }, { "expression": { "argumentTypes": null, - "id": 615, + "id": 635, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 604, - "src": "1397:1:6", + "referencedDeclaration": 624, + "src": "1397:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 602, - "id": 616, + "functionReturnParameters": 622, + "id": 636, "nodeType": "Return", - "src": "1390:8:6" + "src": "1390:8:7" } ] }, "documentation": "@dev Adds two numbers, reverts on overflow.", - "id": 618, + "id": 638, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -8552,16 +8699,16 @@ "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 599, + "id": 619, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 596, + "id": 616, "name": "a", "nodeType": "VariableDeclaration", - "scope": 618, - "src": "1285:9:6", + "scope": 638, + "src": "1285:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8569,10 +8716,10 @@ "typeString": "uint256" }, "typeName": { - "id": 595, + "id": 615, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1285:7:6", + "src": "1285:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8583,11 +8730,11 @@ }, { "constant": false, - "id": 598, + "id": 618, "name": "b", "nodeType": "VariableDeclaration", - "scope": 618, - "src": "1296:9:6", + "scope": 638, + "src": "1296:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8595,10 +8742,10 @@ "typeString": "uint256" }, "typeName": { - "id": 597, + "id": 617, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1296:7:6", + "src": "1296:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8608,20 +8755,20 @@ "visibility": "internal" } ], - "src": "1284:22:6" + "src": "1284:22:7" }, "payable": false, "returnParameters": { - "id": 602, + "id": 622, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 601, + "id": 621, "name": "", "nodeType": "VariableDeclaration", - "scope": 618, - "src": "1330:7:6", + "scope": 638, + "src": "1330:7:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8629,10 +8776,10 @@ "typeString": "uint256" }, "typeName": { - "id": 600, + "id": 620, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1330:7:6", + "src": "1330:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8642,19 +8789,19 @@ "visibility": "internal" } ], - "src": "1329:9:6" + "src": "1329:9:7" }, - "scope": 639, - "src": "1272:131:6", + "scope": 659, + "src": "1272:131:7", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 637, + "id": 657, "nodeType": "Block", - "src": "1602:44:6", + "src": "1602:44:7", "statements": [ { "expression": { @@ -8666,19 +8813,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 630, + "id": 650, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 628, + "id": 648, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 622, - "src": "1616:1:6", + "referencedDeclaration": 642, + "src": "1616:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8689,14 +8836,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 629, + "id": 649, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1621:1:6", + "src": "1621:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -8704,7 +8851,7 @@ }, "value": "0" }, - "src": "1616:6:6", + "src": "1616:6:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8718,21 +8865,21 @@ "typeString": "bool" } ], - "id": 627, + "id": 647, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 870, - 871 + 890, + 891 ], - "referencedDeclaration": 870, - "src": "1608:7:6", + "referencedDeclaration": 890, + "src": "1608:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 631, + "id": 651, "isConstant": false, "isLValue": false, "isPure": false, @@ -8740,15 +8887,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1608:15:6", + "src": "1608:15:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 632, + "id": 652, "nodeType": "ExpressionStatement", - "src": "1608:15:6" + "src": "1608:15:7" }, { "expression": { @@ -8757,19 +8904,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 635, + "id": 655, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 633, + "id": 653, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 620, - "src": "1636:1:6", + "referencedDeclaration": 640, + "src": "1636:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8779,32 +8926,32 @@ "operator": "%", "rightExpression": { "argumentTypes": null, - "id": 634, + "id": 654, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 622, - "src": "1640:1:6", + "referencedDeclaration": 642, + "src": "1640:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1636:5:6", + "src": "1636:5:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 626, - "id": 636, + "functionReturnParameters": 646, + "id": 656, "nodeType": "Return", - "src": "1629:12:6" + "src": "1629:12:7" } ] }, "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", - "id": 638, + "id": 658, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -8812,16 +8959,16 @@ "name": "mod", "nodeType": "FunctionDefinition", "parameters": { - "id": 623, + "id": 643, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 620, + "id": 640, "name": "a", "nodeType": "VariableDeclaration", - "scope": 638, - "src": "1548:9:6", + "scope": 658, + "src": "1548:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8829,10 +8976,10 @@ "typeString": "uint256" }, "typeName": { - "id": 619, + "id": 639, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1548:7:6", + "src": "1548:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8843,11 +8990,11 @@ }, { "constant": false, - "id": 622, + "id": 642, "name": "b", "nodeType": "VariableDeclaration", - "scope": 638, - "src": "1559:9:6", + "scope": 658, + "src": "1559:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8855,10 +9002,10 @@ "typeString": "uint256" }, "typeName": { - "id": 621, + "id": 641, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1559:7:6", + "src": "1559:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8868,20 +9015,20 @@ "visibility": "internal" } ], - "src": "1547:22:6" + "src": "1547:22:7" }, "payable": false, "returnParameters": { - "id": 626, + "id": 646, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 625, + "id": 645, "name": "", "nodeType": "VariableDeclaration", - "scope": 638, - "src": "1593:7:6", + "scope": 658, + "src": "1593:7:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8889,10 +9036,10 @@ "typeString": "uint256" }, "typeName": { - "id": 624, + "id": 644, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1593:7:6", + "src": "1593:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8902,36 +9049,36 @@ "visibility": "internal" } ], - "src": "1592:9:6" + "src": "1592:9:7" }, - "scope": 639, - "src": "1535:111:6", + "scope": 659, + "src": "1535:111:7", "stateMutability": "pure", "superFunction": null, "visibility": "internal" } ], - "scope": 640, - "src": "117:1531:6" + "scope": 660, + "src": "117:1531:7" } ], - "src": "0:1649:6" + "src": "0:1649:7" }, - "id": 6 + "id": 7 }, "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol": { "ast": { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "exportedSymbols": { "IERC20": [ - 708 + 728 ] }, - "id": 709, + "id": 729, "nodeType": "SourceUnit", "nodes": [ { - "id": 641, + "id": 661, "literals": [ "solidity", "^", @@ -8939,7 +9086,7 @@ ".24" ], "nodeType": "PragmaDirective", - "src": "0:24:7" + "src": "0:24:8" }, { "baseContracts": [], @@ -8947,9 +9094,9 @@ "contractKind": "interface", "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", "fullyImplemented": false, - "id": 708, + "id": 728, "linearizedBaseContracts": [ - 708 + 728 ], "name": "IERC20", "nodeType": "ContractDefinition", @@ -8957,7 +9104,7 @@ { "body": null, "documentation": null, - "id": 646, + "id": 666, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -8965,23 +9112,23 @@ "name": "totalSupply", "nodeType": "FunctionDefinition", "parameters": { - "id": 642, + "id": 662, "nodeType": "ParameterList", "parameters": [], - "src": "156:2:7" + "src": "156:2:8" }, "payable": false, "returnParameters": { - "id": 645, + "id": 665, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 644, + "id": 664, "name": "", "nodeType": "VariableDeclaration", - "scope": 646, - "src": "182:7:7", + "scope": 666, + "src": "182:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8989,10 +9136,10 @@ "typeString": "uint256" }, "typeName": { - "id": 643, + "id": 663, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "182:7:7", + "src": "182:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9002,10 +9149,10 @@ "visibility": "internal" } ], - "src": "181:9:7" + "src": "181:9:8" }, - "scope": 708, - "src": "136:55:7", + "scope": 728, + "src": "136:55:8", "stateMutability": "view", "superFunction": null, "visibility": "external" @@ -9013,7 +9160,7 @@ { "body": null, "documentation": null, - "id": 653, + "id": 673, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -9021,16 +9168,16 @@ "name": "balanceOf", "nodeType": "FunctionDefinition", "parameters": { - "id": 649, + "id": 669, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 648, + "id": 668, "name": "who", "nodeType": "VariableDeclaration", - "scope": 653, - "src": "214:11:7", + "scope": 673, + "src": "214:11:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9038,10 +9185,10 @@ "typeString": "address" }, "typeName": { - "id": 647, + "id": 667, "name": "address", "nodeType": "ElementaryTypeName", - "src": "214:7:7", + "src": "214:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9051,20 +9198,20 @@ "visibility": "internal" } ], - "src": "213:13:7" + "src": "213:13:8" }, "payable": false, "returnParameters": { - "id": 652, + "id": 672, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 651, + "id": 671, "name": "", "nodeType": "VariableDeclaration", - "scope": 653, - "src": "250:7:7", + "scope": 673, + "src": "250:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9072,10 +9219,10 @@ "typeString": "uint256" }, "typeName": { - "id": 650, + "id": 670, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "250:7:7", + "src": "250:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9085,10 +9232,10 @@ "visibility": "internal" } ], - "src": "249:9:7" + "src": "249:9:8" }, - "scope": 708, - "src": "195:64:7", + "scope": 728, + "src": "195:64:8", "stateMutability": "view", "superFunction": null, "visibility": "external" @@ -9096,7 +9243,7 @@ { "body": null, "documentation": null, - "id": 662, + "id": 682, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -9104,260 +9251,76 @@ "name": "allowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 658, + "id": 678, "nodeType": "ParameterList", "parameters": [ - { - "constant": false, - "id": 655, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 662, - "src": "282:13:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 654, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "282:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 657, - "name": "spender", - "nodeType": "VariableDeclaration", - "scope": 662, - "src": "297:15:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 656, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "297:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "281:32:7" - }, - "payable": false, - "returnParameters": { - "id": 661, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 660, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 662, - "src": "341:7:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 659, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "341:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "340:9:7" - }, - "scope": 708, - "src": "263:87:7", - "stateMutability": "view", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 671, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "transfer", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 667, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 664, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 671, - "src": "372:10:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 663, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "372:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 666, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 671, - "src": "384:13:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 665, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "384:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "371:27:7" - }, - "payable": false, - "returnParameters": { - "id": 670, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 669, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 671, - "src": "417:4:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 668, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "417:4:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "416:6:7" - }, - "scope": 708, - "src": "354:69:7", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 680, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "approve", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 676, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 673, - "name": "spender", - "nodeType": "VariableDeclaration", - "scope": 680, - "src": "444:15:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 672, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "444:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, { "constant": false, "id": 675, - "name": "value", + "name": "owner", "nodeType": "VariableDeclaration", - "scope": 680, - "src": "461:13:7", + "scope": 682, + "src": "282:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 674, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "282:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 677, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 682, + "src": "297:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 676, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "297:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "281:32:8" + }, + "payable": false, + "returnParameters": { + "id": 681, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 680, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 682, + "src": "341:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9365,10 +9328,10 @@ "typeString": "uint256" }, "typeName": { - "id": 674, + "id": 679, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "461:7:7", + "src": "341:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9378,45 +9341,11 @@ "visibility": "internal" } ], - "src": "443:32:7" + "src": "340:9:8" }, - "payable": false, - "returnParameters": { - "id": 679, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 678, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 680, - "src": "498:4:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 677, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "498:4:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "497:6:7" - }, - "scope": 708, - "src": "427:77:7", - "stateMutability": "nonpayable", + "scope": 728, + "src": "263:87:8", + "stateMutability": "view", "superFunction": null, "visibility": "external" }, @@ -9428,45 +9357,19 @@ "isConstructor": false, "isDeclaredConst": false, "modifiers": [], - "name": "transferFrom", + "name": "transfer", "nodeType": "FunctionDefinition", "parameters": { "id": 687, "nodeType": "ParameterList", "parameters": [ - { - "constant": false, - "id": 682, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 691, - "src": "530:12:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 681, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "530:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, { "constant": false, "id": 684, "name": "to", "nodeType": "VariableDeclaration", "scope": 691, - "src": "544:10:7", + "src": "372:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9477,7 +9380,7 @@ "id": 683, "name": "address", "nodeType": "ElementaryTypeName", - "src": "544:7:7", + "src": "372:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9492,7 +9395,7 @@ "name": "value", "nodeType": "VariableDeclaration", "scope": 691, - "src": "556:13:7", + "src": "384:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9503,7 +9406,7 @@ "id": 685, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "556:7:7", + "src": "384:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9513,7 +9416,7 @@ "visibility": "internal" } ], - "src": "529:41:7" + "src": "371:27:8" }, "payable": false, "returnParameters": { @@ -9526,7 +9429,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 691, - "src": "593:4:7", + "src": "417:4:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9537,7 +9440,7 @@ "id": 688, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "593:4:7", + "src": "417:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9547,32 +9450,35 @@ "visibility": "internal" } ], - "src": "592:6:7" + "src": "416:6:8" }, - "scope": 708, - "src": "508:91:7", + "scope": 728, + "src": "354:69:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, { - "anonymous": false, + "body": null, "documentation": null, - "id": 699, - "name": "Transfer", - "nodeType": "EventDefinition", + "id": 700, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", "parameters": { - "id": 698, + "id": 696, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 693, - "indexed": true, - "name": "from", + "name": "spender", "nodeType": "VariableDeclaration", - "scope": 699, - "src": "623:20:7", + "scope": 700, + "src": "444:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9583,7 +9489,7 @@ "id": 692, "name": "address", "nodeType": "ElementaryTypeName", - "src": "623:7:7", + "src": "444:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9595,38 +9501,10 @@ { "constant": false, "id": 695, - "indexed": true, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 699, - "src": "649:18:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 694, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "649:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 697, - "indexed": false, "name": "value", "nodeType": "VariableDeclaration", - "scope": 699, - "src": "673:13:7", + "scope": 700, + "src": "461:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9634,10 +9512,10 @@ "typeString": "uint256" }, "typeName": { - "id": 696, + "id": 694, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "673:7:7", + "src": "461:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9647,28 +9525,69 @@ "visibility": "internal" } ], - "src": "617:73:7" + "src": "443:32:8" }, - "src": "603:88:7" - }, - { - "anonymous": false, - "documentation": null, - "id": 707, - "name": "Approval", - "nodeType": "EventDefinition", - "parameters": { - "id": 706, + "payable": false, + "returnParameters": { + "id": 699, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 701, - "indexed": true, - "name": "owner", + "id": 698, + "name": "", "nodeType": "VariableDeclaration", - "scope": 707, - "src": "715:21:7", + "scope": 700, + "src": "498:4:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 697, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "498:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "497:6:8" + }, + "scope": 728, + "src": "427:77:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 711, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 707, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 702, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 711, + "src": "530:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9676,10 +9595,10 @@ "typeString": "address" }, "typeName": { - "id": 700, + "id": 701, "name": "address", "nodeType": "ElementaryTypeName", - "src": "715:7:7", + "src": "530:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9690,12 +9609,11 @@ }, { "constant": false, - "id": 703, - "indexed": true, - "name": "spender", + "id": 704, + "name": "to", "nodeType": "VariableDeclaration", - "scope": 707, - "src": "742:23:7", + "scope": 711, + "src": "544:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9703,10 +9621,10 @@ "typeString": "address" }, "typeName": { - "id": 702, + "id": 703, "name": "address", "nodeType": "ElementaryTypeName", - "src": "742:7:7", + "src": "544:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9717,12 +9635,11 @@ }, { "constant": false, - "id": 705, - "indexed": false, + "id": 706, "name": "value", "nodeType": "VariableDeclaration", - "scope": 707, - "src": "771:13:7", + "scope": 711, + "src": "556:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9730,10 +9647,10 @@ "typeString": "uint256" }, "typeName": { - "id": 704, + "id": 705, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "771:7:7", + "src": "556:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9743,32 +9660,262 @@ "visibility": "internal" } ], - "src": "709:79:7" + "src": "529:41:8" }, - "src": "695:94:7" + "payable": false, + "returnParameters": { + "id": 710, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 709, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 711, + "src": "593:4:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 708, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "593:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "592:6:8" + }, + "scope": 728, + "src": "508:91:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": null, + "id": 719, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 718, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 713, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 719, + "src": "623:20:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 712, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "623:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 715, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 719, + "src": "649:18:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 714, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "649:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 717, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 719, + "src": "673:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 716, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "673:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "617:73:8" + }, + "src": "603:88:8" + }, + { + "anonymous": false, + "documentation": null, + "id": 727, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 726, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 721, + "indexed": true, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 727, + "src": "715:21:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 720, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "715:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 723, + "indexed": true, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 727, + "src": "742:23:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 722, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "742:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 725, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 727, + "src": "771:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 724, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "771:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "709:79:8" + }, + "src": "695:94:8" } ], - "scope": 709, - "src": "115:676:7" + "scope": 729, + "src": "115:676:8" } ], - "src": "0:792:7" + "src": "0:792:8" }, - "id": 7 + "id": 8 }, "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol": { "ast": { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "exportedSymbols": { "SafeERC20": [ - 852 + 872 ] }, - "id": 853, + "id": 873, "nodeType": "SourceUnit", "nodes": [ { - "id": 710, + "id": 730, "literals": [ "solidity", "^", @@ -9776,27 +9923,27 @@ ".24" ], "nodeType": "PragmaDirective", - "src": "0:24:8" + "src": "0:24:9" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "./IERC20.sol", - "id": 711, + "id": 731, "nodeType": "ImportDirective", - "scope": 853, - "sourceUnit": 709, - "src": "26:22:8", + "scope": 873, + "sourceUnit": 729, + "src": "26:22:9", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "file": "../../math/SafeMath.sol", - "id": 712, + "id": 732, "nodeType": "ImportDirective", - "scope": 853, - "sourceUnit": 640, - "src": "49:33:8", + "scope": 873, + "sourceUnit": 660, + "src": "49:33:9", "symbolAliases": [], "unitAlias": "" }, @@ -9806,34 +9953,34 @@ "contractKind": "library", "documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.", "fullyImplemented": true, - "id": 852, + "id": 872, "linearizedBaseContracts": [ - 852 + 872 ], "name": "SafeERC20", "nodeType": "ContractDefinition", "nodes": [ { - "id": 715, + "id": 735, "libraryName": { "contractScope": null, - "id": 713, + "id": 733, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 639, - "src": "382:8:8", + "referencedDeclaration": 659, + "src": "382:8:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$639", + "typeIdentifier": "t_contract$_SafeMath_$659", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", - "src": "376:27:8", + "src": "376:27:9", "typeName": { - "id": 714, + "id": 734, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "395:7:8", + "src": "395:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9842,251 +9989,9 @@ }, { "body": { - "id": 732, + "id": 752, "nodeType": "Block", - "src": "501:45:8", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 727, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 719, - "src": "530:2:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 728, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 721, - "src": "534:5:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 725, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "515:5:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$708", - "typeString": "contract IERC20" - } - }, - "id": 726, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "transfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 671, - "src": "515:14:8", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256) external returns (bool)" - } - }, - "id": 729, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "515:25:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 724, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 870, - 871 - ], - "referencedDeclaration": 870, - "src": "507:7:8", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 730, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "507:34:8", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 731, - "nodeType": "ExpressionStatement", - "src": "507:34:8" - } - ] - }, - "documentation": null, - "id": 733, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "safeTransfer", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 722, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 717, - "name": "token", - "nodeType": "VariableDeclaration", - "scope": 733, - "src": "434:12:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$708", - "typeString": "contract IERC20" - }, - "typeName": { - "contractScope": null, - "id": 716, - "name": "IERC20", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 708, - "src": "434:6:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$708", - "typeString": "contract IERC20" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 719, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 733, - "src": "452:10:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 718, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "452:7:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 721, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 733, - "src": "468:13:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 720, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "468:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "428:57:8" - }, - "payable": false, - "returnParameters": { - "id": 723, - "nodeType": "ParameterList", - "parameters": [], - "src": "501:0:8" - }, - "scope": 852, - "src": "407:139:8", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 753, - "nodeType": "Block", - "src": "666:55:8", + "src": "501:45:9", "statements": [ { "expression": { @@ -10098,11 +10003,11 @@ { "argumentTypes": null, "id": 747, - "name": "from", + "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 737, - "src": "699:4:8", + "referencedDeclaration": 739, + "src": "530:2:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10111,24 +10016,11 @@ { "argumentTypes": null, "id": 748, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 739, - "src": "705:2:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 749, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 741, - "src": "709:5:8", + "src": "534:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10137,10 +10029,6 @@ ], "expression": { "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, { "typeIdentifier": "t_address", "typeString": "address" @@ -10156,10 +10044,10 @@ "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 735, - "src": "680:5:8", + "referencedDeclaration": 737, + "src": "515:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$708", + "typeIdentifier": "t_contract$_IERC20_$728", "typeString": "contract IERC20" } }, @@ -10168,16 +10056,16 @@ "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "transferFrom", + "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 691, - "src": "680:18:8", + "src": "515:14:9", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,address,uint256) external returns (bool)" + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 750, + "id": 749, "isConstant": false, "isLValue": false, "isPure": false, @@ -10185,7 +10073,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "680:35:8", + "src": "515:25:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10203,17 +10091,17 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 870, - 871 + 890, + 891 ], - "referencedDeclaration": 870, - "src": "672:7:8", + "referencedDeclaration": 890, + "src": "507:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 751, + "id": 750, "isConstant": false, "isLValue": false, "isPure": false, @@ -10221,25 +10109,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "672:44:8", + "src": "507:34:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 752, + "id": 751, "nodeType": "ExpressionStatement", - "src": "672:44:8" + "src": "507:34:9" } ] }, "documentation": null, - "id": 754, + "id": 753, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], - "name": "safeTransferFrom", + "name": "safeTransfer", "nodeType": "FunctionDefinition", "parameters": { "id": 742, @@ -10247,65 +10135,39 @@ "parameters": [ { "constant": false, - "id": 735, + "id": 737, "name": "token", "nodeType": "VariableDeclaration", - "scope": 754, - "src": "581:12:8", + "scope": 753, + "src": "434:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$708", + "typeIdentifier": "t_contract$_IERC20_$728", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 734, + "id": 736, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 708, - "src": "581:6:8", + "referencedDeclaration": 728, + "src": "434:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$708", + "typeIdentifier": "t_contract$_IERC20_$728", "typeString": "contract IERC20" } }, "value": null, "visibility": "internal" }, - { - "constant": false, - "id": 737, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 754, - "src": "599:12:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 736, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "599:7:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, { "constant": false, "id": 739, "name": "to", "nodeType": "VariableDeclaration", - "scope": 754, - "src": "617:10:8", + "scope": 753, + "src": "452:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10316,7 +10178,7 @@ "id": 738, "name": "address", "nodeType": "ElementaryTypeName", - "src": "617:7:8", + "src": "452:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10330,8 +10192,8 @@ "id": 741, "name": "value", "nodeType": "VariableDeclaration", - "scope": 754, - "src": "633:13:8", + "scope": 753, + "src": "468:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10342,7 +10204,7 @@ "id": 740, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "633:7:8", + "src": "468:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10352,26 +10214,311 @@ "visibility": "internal" } ], - "src": "575:75:8" + "src": "428:57:9" }, "payable": false, "returnParameters": { "id": 743, "nodeType": "ParameterList", "parameters": [], - "src": "666:0:8" + "src": "501:0:9" }, - "scope": 852, - "src": "550:171:8", + "scope": 872, + "src": "407:139:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 788, + "id": 773, "nodeType": "Block", - "src": "823:330:8", + "src": "666:55:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 767, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 757, + "src": "699:4:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 768, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 759, + "src": "705:2:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 769, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 761, + "src": "709:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 765, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 755, + "src": "680:5:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$728", + "typeString": "contract IERC20" + } + }, + "id": 766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 711, + "src": "680:18:9", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "680:35:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 764, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 890, + 891 + ], + "referencedDeclaration": 890, + "src": "672:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 771, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "672:44:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 772, + "nodeType": "ExpressionStatement", + "src": "672:44:9" + } + ] + }, + "documentation": null, + "id": 774, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 762, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 755, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 774, + "src": "581:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$728", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 754, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 728, + "src": "581:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$728", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 757, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 774, + "src": "599:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 756, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "599:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 759, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 774, + "src": "617:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 758, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "617:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 761, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 774, + "src": "633:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 760, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "633:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "575:75:9" + }, + "payable": false, + "returnParameters": { + "id": 763, + "nodeType": "ParameterList", + "parameters": [], + "src": "666:0:9" + }, + "scope": 872, + "src": "550:171:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 808, + "nodeType": "Block", + "src": "823:330:9", "statements": [ { "expression": { @@ -10383,7 +10530,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 777, + "id": 797, "isConstant": false, "isLValue": false, "isPure": false, @@ -10397,19 +10544,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 766, + "id": 786, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 764, + "id": 784, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 760, - "src": "1045:5:8", + "referencedDeclaration": 780, + "src": "1045:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10420,14 +10567,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 765, + "id": 785, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1054:1:8", + "src": "1054:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -10435,21 +10582,21 @@ }, "value": "0" }, - "src": "1045:10:8", + "src": "1045:10:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 767, + "id": 787, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "1044:12:8", + "src": "1044:12:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10466,7 +10613,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 775, + "id": 795, "isConstant": false, "isLValue": false, "isPure": false, @@ -10478,18 +10625,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 770, + "id": 790, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 867, - "src": "1077:3:8", + "referencedDeclaration": 887, + "src": "1077:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 771, + "id": 791, "isConstant": false, "isLValue": false, "isPure": false, @@ -10497,7 +10644,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1077:10:8", + "src": "1077:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10505,12 +10652,12 @@ }, { "argumentTypes": null, - "id": 772, + "id": 792, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 758, - "src": "1089:7:8", + "referencedDeclaration": 778, + "src": "1089:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10530,32 +10677,32 @@ ], "expression": { "argumentTypes": null, - "id": 768, + "id": 788, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 756, - "src": "1061:5:8", + "referencedDeclaration": 776, + "src": "1061:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$708", + "typeIdentifier": "t_contract$_IERC20_$728", "typeString": "contract IERC20" } }, - "id": 769, + "id": 789, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 662, - "src": "1061:15:8", + "referencedDeclaration": 682, + "src": "1061:15:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 773, + "id": 793, "isConstant": false, "isLValue": false, "isPure": false, @@ -10563,7 +10710,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1061:36:8", + "src": "1061:36:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10574,14 +10721,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 774, + "id": 794, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1101:1:8", + "src": "1101:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -10589,27 +10736,27 @@ }, "value": "0" }, - "src": "1061:41:8", + "src": "1061:41:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 776, + "id": 796, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "1060:43:8", + "src": "1060:43:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1044:59:8", + "src": "1044:59:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10623,21 +10770,21 @@ "typeString": "bool" } ], - "id": 763, + "id": 783, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 870, - 871 + 890, + 891 ], - "referencedDeclaration": 870, - "src": "1036:7:8", + "referencedDeclaration": 890, + "src": "1036:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 778, + "id": 798, "isConstant": false, "isLValue": false, "isPure": false, @@ -10645,15 +10792,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1036:68:8", + "src": "1036:68:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 779, + "id": 799, "nodeType": "ExpressionStatement", - "src": "1036:68:8" + "src": "1036:68:9" }, { "expression": { @@ -10664,12 +10811,12 @@ "arguments": [ { "argumentTypes": null, - "id": 783, + "id": 803, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 758, - "src": "1132:7:8", + "referencedDeclaration": 778, + "src": "1132:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10677,12 +10824,12 @@ }, { "argumentTypes": null, - "id": 784, + "id": 804, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 760, - "src": "1141:5:8", + "referencedDeclaration": 780, + "src": "1141:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10702,32 +10849,32 @@ ], "expression": { "argumentTypes": null, - "id": 781, + "id": 801, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 756, - "src": "1118:5:8", + "referencedDeclaration": 776, + "src": "1118:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$708", + "typeIdentifier": "t_contract$_IERC20_$728", "typeString": "contract IERC20" } }, - "id": 782, + "id": 802, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 680, - "src": "1118:13:8", + "referencedDeclaration": 700, + "src": "1118:13:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 785, + "id": 805, "isConstant": false, "isLValue": false, "isPure": false, @@ -10735,7 +10882,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1118:29:8", + "src": "1118:29:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10749,21 +10896,21 @@ "typeString": "bool" } ], - "id": 780, + "id": 800, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 870, - 871 + 890, + 891 ], - "referencedDeclaration": 870, - "src": "1110:7:8", + "referencedDeclaration": 890, + "src": "1110:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 786, + "id": 806, "isConstant": false, "isLValue": false, "isPure": false, @@ -10771,20 +10918,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1110:38:8", + "src": "1110:38:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 787, + "id": 807, "nodeType": "ExpressionStatement", - "src": "1110:38:8" + "src": "1110:38:9" } ] }, "documentation": null, - "id": 789, + "id": 809, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -10792,31 +10939,31 @@ "name": "safeApprove", "nodeType": "FunctionDefinition", "parameters": { - "id": 761, + "id": 781, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 756, + "id": 776, "name": "token", "nodeType": "VariableDeclaration", - "scope": 789, - "src": "751:12:8", + "scope": 809, + "src": "751:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$708", + "typeIdentifier": "t_contract$_IERC20_$728", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 755, + "id": 775, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 708, - "src": "751:6:8", + "referencedDeclaration": 728, + "src": "751:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$708", + "typeIdentifier": "t_contract$_IERC20_$728", "typeString": "contract IERC20" } }, @@ -10825,11 +10972,11 @@ }, { "constant": false, - "id": 758, + "id": 778, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 789, - "src": "769:15:8", + "scope": 809, + "src": "769:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10837,10 +10984,10 @@ "typeString": "address" }, "typeName": { - "id": 757, + "id": 777, "name": "address", "nodeType": "ElementaryTypeName", - "src": "769:7:8", + "src": "769:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10851,11 +10998,11 @@ }, { "constant": false, - "id": 760, + "id": 780, "name": "value", "nodeType": "VariableDeclaration", - "scope": 789, - "src": "790:13:8", + "scope": 809, + "src": "790:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10863,10 +11010,10 @@ "typeString": "uint256" }, "typeName": { - "id": 759, + "id": 779, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "790:7:8", + "src": "790:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10876,39 +11023,39 @@ "visibility": "internal" } ], - "src": "745:62:8" + "src": "745:62:9" }, "payable": false, "returnParameters": { - "id": 762, + "id": 782, "nodeType": "ParameterList", "parameters": [], - "src": "823:0:8" + "src": "823:0:9" }, - "scope": 852, - "src": "725:428:8", + "scope": 872, + "src": "725:428:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 819, + "id": 839, "nodeType": "Block", - "src": "1265:135:8", + "src": "1265:135:9", "statements": [ { "assignments": [ - 799 + 819 ], "declarations": [ { "constant": false, - "id": 799, + "id": 819, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 820, - "src": "1271:20:8", + "scope": 840, + "src": "1271:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10916,10 +11063,10 @@ "typeString": "uint256" }, "typeName": { - "id": 798, + "id": 818, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1271:7:8", + "src": "1271:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10929,18 +11076,18 @@ "visibility": "internal" } ], - "id": 810, + "id": 830, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 808, + "id": 828, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 795, - "src": "1338:5:8", + "referencedDeclaration": 815, + "src": "1338:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10962,14 +11109,14 @@ "arguments": [ { "argumentTypes": null, - "id": 803, + "id": 823, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 888, - "src": "1318:4:8", + "referencedDeclaration": 910, + "src": "1318:4:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$852", + "typeIdentifier": "t_contract$_SafeERC20_$872", "typeString": "library SafeERC20" } } @@ -10977,24 +11124,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$852", + "typeIdentifier": "t_contract$_SafeERC20_$872", "typeString": "library SafeERC20" } ], - "id": 802, + "id": 822, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1310:7:8", + "src": "1310:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 804, + "id": 824, "isConstant": false, "isLValue": false, "isPure": false, @@ -11002,7 +11149,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1310:13:8", + "src": "1310:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11010,12 +11157,12 @@ }, { "argumentTypes": null, - "id": 805, + "id": 825, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 793, - "src": "1325:7:8", + "referencedDeclaration": 813, + "src": "1325:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11035,32 +11182,32 @@ ], "expression": { "argumentTypes": null, - "id": 800, + "id": 820, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 791, - "src": "1294:5:8", + "referencedDeclaration": 811, + "src": "1294:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$708", + "typeIdentifier": "t_contract$_IERC20_$728", "typeString": "contract IERC20" } }, - "id": 801, + "id": 821, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 662, - "src": "1294:15:8", + "referencedDeclaration": 682, + "src": "1294:15:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 806, + "id": 826, "isConstant": false, "isLValue": false, "isPure": false, @@ -11068,27 +11215,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1294:39:8", + "src": "1294:39:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 807, + "id": 827, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 618, - "src": "1294:43:8", + "referencedDeclaration": 638, + "src": "1294:43:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 809, + "id": 829, "isConstant": false, "isLValue": false, "isPure": false, @@ -11096,14 +11243,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1294:50:8", + "src": "1294:50:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1271:73:8" + "src": "1271:73:9" }, { "expression": { @@ -11114,12 +11261,12 @@ "arguments": [ { "argumentTypes": null, - "id": 814, + "id": 834, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 793, - "src": "1372:7:8", + "referencedDeclaration": 813, + "src": "1372:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11127,12 +11274,12 @@ }, { "argumentTypes": null, - "id": 815, + "id": 835, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 799, - "src": "1381:12:8", + "referencedDeclaration": 819, + "src": "1381:12:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11152,32 +11299,32 @@ ], "expression": { "argumentTypes": null, - "id": 812, + "id": 832, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 791, - "src": "1358:5:8", + "referencedDeclaration": 811, + "src": "1358:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$708", + "typeIdentifier": "t_contract$_IERC20_$728", "typeString": "contract IERC20" } }, - "id": 813, + "id": 833, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 680, - "src": "1358:13:8", + "referencedDeclaration": 700, + "src": "1358:13:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 816, + "id": 836, "isConstant": false, "isLValue": false, "isPure": false, @@ -11185,7 +11332,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1358:36:8", + "src": "1358:36:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11199,21 +11346,21 @@ "typeString": "bool" } ], - "id": 811, + "id": 831, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 870, - 871 + 890, + 891 ], - "referencedDeclaration": 870, - "src": "1350:7:8", + "referencedDeclaration": 890, + "src": "1350:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 817, + "id": 837, "isConstant": false, "isLValue": false, "isPure": false, @@ -11221,20 +11368,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1350:45:8", + "src": "1350:45:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 818, + "id": 838, "nodeType": "ExpressionStatement", - "src": "1350:45:8" + "src": "1350:45:9" } ] }, "documentation": null, - "id": 820, + "id": 840, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -11242,31 +11389,31 @@ "name": "safeIncreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 796, + "id": 816, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 791, + "id": 811, "name": "token", "nodeType": "VariableDeclaration", - "scope": 820, - "src": "1193:12:8", + "scope": 840, + "src": "1193:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$708", + "typeIdentifier": "t_contract$_IERC20_$728", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 790, + "id": 810, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 708, - "src": "1193:6:8", + "referencedDeclaration": 728, + "src": "1193:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$708", + "typeIdentifier": "t_contract$_IERC20_$728", "typeString": "contract IERC20" } }, @@ -11275,11 +11422,11 @@ }, { "constant": false, - "id": 793, + "id": 813, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 820, - "src": "1211:15:8", + "scope": 840, + "src": "1211:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11287,10 +11434,10 @@ "typeString": "address" }, "typeName": { - "id": 792, + "id": 812, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1211:7:8", + "src": "1211:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11301,11 +11448,11 @@ }, { "constant": false, - "id": 795, + "id": 815, "name": "value", "nodeType": "VariableDeclaration", - "scope": 820, - "src": "1232:13:8", + "scope": 840, + "src": "1232:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11313,10 +11460,10 @@ "typeString": "uint256" }, "typeName": { - "id": 794, + "id": 814, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1232:7:8", + "src": "1232:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11326,39 +11473,39 @@ "visibility": "internal" } ], - "src": "1187:62:8" + "src": "1187:62:9" }, "payable": false, "returnParameters": { - "id": 797, + "id": 817, "nodeType": "ParameterList", "parameters": [], - "src": "1265:0:8" + "src": "1265:0:9" }, - "scope": 852, - "src": "1157:243:8", + "scope": 872, + "src": "1157:243:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 850, + "id": 870, "nodeType": "Block", - "src": "1512:135:8", + "src": "1512:135:9", "statements": [ { "assignments": [ - 830 + 850 ], "declarations": [ { "constant": false, - "id": 830, + "id": 850, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 851, - "src": "1518:20:8", + "scope": 871, + "src": "1518:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11366,10 +11513,10 @@ "typeString": "uint256" }, "typeName": { - "id": 829, + "id": 849, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1518:7:8", + "src": "1518:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11379,18 +11526,18 @@ "visibility": "internal" } ], - "id": 841, + "id": 861, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 839, + "id": 859, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 826, - "src": "1585:5:8", + "referencedDeclaration": 846, + "src": "1585:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11412,14 +11559,14 @@ "arguments": [ { "argumentTypes": null, - "id": 834, + "id": 854, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 888, - "src": "1565:4:8", + "referencedDeclaration": 910, + "src": "1565:4:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$852", + "typeIdentifier": "t_contract$_SafeERC20_$872", "typeString": "library SafeERC20" } } @@ -11427,24 +11574,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$852", + "typeIdentifier": "t_contract$_SafeERC20_$872", "typeString": "library SafeERC20" } ], - "id": 833, + "id": 853, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1557:7:8", + "src": "1557:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 835, + "id": 855, "isConstant": false, "isLValue": false, "isPure": false, @@ -11452,7 +11599,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1557:13:8", + "src": "1557:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11460,12 +11607,12 @@ }, { "argumentTypes": null, - "id": 836, + "id": 856, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 824, - "src": "1572:7:8", + "referencedDeclaration": 844, + "src": "1572:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11485,32 +11632,32 @@ ], "expression": { "argumentTypes": null, - "id": 831, + "id": 851, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 822, - "src": "1541:5:8", + "referencedDeclaration": 842, + "src": "1541:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$708", + "typeIdentifier": "t_contract$_IERC20_$728", "typeString": "contract IERC20" } }, - "id": 832, + "id": 852, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 662, - "src": "1541:15:8", + "referencedDeclaration": 682, + "src": "1541:15:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 837, + "id": 857, "isConstant": false, "isLValue": false, "isPure": false, @@ -11518,27 +11665,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1541:39:8", + "src": "1541:39:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 838, + "id": 858, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 594, - "src": "1541:43:8", + "referencedDeclaration": 614, + "src": "1541:43:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 840, + "id": 860, "isConstant": false, "isLValue": false, "isPure": false, @@ -11546,14 +11693,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1541:50:8", + "src": "1541:50:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1518:73:8" + "src": "1518:73:9" }, { "expression": { @@ -11564,12 +11711,12 @@ "arguments": [ { "argumentTypes": null, - "id": 845, + "id": 865, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 824, - "src": "1619:7:8", + "referencedDeclaration": 844, + "src": "1619:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11577,12 +11724,12 @@ }, { "argumentTypes": null, - "id": 846, + "id": 866, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 830, - "src": "1628:12:8", + "referencedDeclaration": 850, + "src": "1628:12:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11602,32 +11749,32 @@ ], "expression": { "argumentTypes": null, - "id": 843, + "id": 863, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 822, - "src": "1605:5:8", + "referencedDeclaration": 842, + "src": "1605:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$708", + "typeIdentifier": "t_contract$_IERC20_$728", "typeString": "contract IERC20" } }, - "id": 844, + "id": 864, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 680, - "src": "1605:13:8", + "referencedDeclaration": 700, + "src": "1605:13:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 847, + "id": 867, "isConstant": false, "isLValue": false, "isPure": false, @@ -11635,7 +11782,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1605:36:8", + "src": "1605:36:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11649,21 +11796,21 @@ "typeString": "bool" } ], - "id": 842, + "id": 862, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 870, - 871 + 890, + 891 ], - "referencedDeclaration": 870, - "src": "1597:7:8", + "referencedDeclaration": 890, + "src": "1597:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 848, + "id": 868, "isConstant": false, "isLValue": false, "isPure": false, @@ -11671,20 +11818,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1597:45:8", + "src": "1597:45:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 849, + "id": 869, "nodeType": "ExpressionStatement", - "src": "1597:45:8" + "src": "1597:45:9" } ] }, "documentation": null, - "id": 851, + "id": 871, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -11692,31 +11839,31 @@ "name": "safeDecreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 827, + "id": 847, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 822, + "id": 842, "name": "token", "nodeType": "VariableDeclaration", - "scope": 851, - "src": "1440:12:8", + "scope": 871, + "src": "1440:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$708", + "typeIdentifier": "t_contract$_IERC20_$728", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 821, + "id": 841, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 708, - "src": "1440:6:8", + "referencedDeclaration": 728, + "src": "1440:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$708", + "typeIdentifier": "t_contract$_IERC20_$728", "typeString": "contract IERC20" } }, @@ -11725,11 +11872,11 @@ }, { "constant": false, - "id": 824, + "id": 844, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 851, - "src": "1458:15:8", + "scope": 871, + "src": "1458:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11737,10 +11884,10 @@ "typeString": "address" }, "typeName": { - "id": 823, + "id": 843, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1458:7:8", + "src": "1458:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11751,11 +11898,11 @@ }, { "constant": false, - "id": 826, + "id": 846, "name": "value", "nodeType": "VariableDeclaration", - "scope": 851, - "src": "1479:13:8", + "scope": 871, + "src": "1479:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11763,10 +11910,10 @@ "typeString": "uint256" }, "typeName": { - "id": 825, + "id": 845, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1479:7:8", + "src": "1479:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11776,29 +11923,29 @@ "visibility": "internal" } ], - "src": "1434:62:8" + "src": "1434:62:9" }, "payable": false, "returnParameters": { - "id": 828, + "id": 848, "nodeType": "ParameterList", "parameters": [], - "src": "1512:0:8" + "src": "1512:0:9" }, - "scope": 852, - "src": "1404:243:8", + "scope": 872, + "src": "1404:243:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 853, - "src": "353:1296:8" + "scope": 873, + "src": "353:1296:9" } ], - "src": "0:1650:8" + "src": "0:1650:9" }, - "id": 8 + "id": 9 } } } \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.abi b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.abi index cd7eb1f10..397eab310 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.abi +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.abi @@ -1 +1 @@ -[{"constant":false,"inputs":[],"name":"terminate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"minerAddress","type":"address"}],"name":"trasferToMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_FACTOR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"CAT_4_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_1_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_3_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_0_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_5_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_2_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"poolType","type":"uint16"},{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file +[{"constant":false,"inputs":[],"name":"terminate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"minerAddress","type":"address"}],"name":"trasferToMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"poolType","type":"uint8"},{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin index 987528f83..d4cc95eca 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b5060405160408061091a8339810160405280516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561006f9064010000000061008b810204565b506003805461ffff191661ffff92909216919091179055610134565b6100a36002826401000000006107116100a682021704565b50565b600160a060020a03811615156100bb57600080fd5b6100ce82826401000000006100fd810204565b156100d857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561011457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6107d7806101436000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632296f4c7146100bc57806325109e8b146100dd5780632e6b684914610104578063455acbcd14610125578063492fba841461013a57806349dc9ed01461014f578063608d3d3d146101645780639fc3c98314610199578063a89febb2146101ae578063aed6183f146101c3578063d43acc79146101d8575b600080fd5b3480156100b157600080fd5b506100ba6101ed565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661020b565b3480156100e957600080fd5b506100f2610475565b60408051918252519081900360200190f35b34801561011057600080fd5b506100ba600160a060020a0360043516610481565b34801561013157600080fd5b506100f26104a1565b34801561014657600080fd5b506100f26104b0565b34801561015b57600080fd5b506100f26104be565b34801561017057600080fd5b50610185600160a060020a03600435166104cd565b604080519115158252519081900360200190f35b3480156101a557600080fd5b506100f26104e6565b3480156101ba57600080fd5b506100f26104f4565b3480156101cf57600080fd5b506100f2610503565b3480156101e457600080fd5b506100ba610512565b6101f6336104cd565b151561020157600080fd5b61020961051b565b565b600080548190819074010000000000000000000000000000000000000000900460ff161561023857600080fd5b610241336104cd565b151561024c57600080fd5b600160a060020a03841660009081526004602052604090205460ff161561027257600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102b357600080fd5b505af11580156102c7573d6000803e3d6000fd5b505050506040513d60208110156102dd57600080fd5b505115156102ea57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032857600080fd5b505af115801561033c573d6000803e3d6000fd5b505050506040513d602081101561035257600080fd5b50519150600060ff83161080159061036e575060058260ff1611155b151561037957600080fd5b50600060ff82161515610397575069152d02c7e14af6800000610428565b8160ff16600114156103b4575069d3c21bcecceda1000000610428565b8160ff16600214156103d257506a01a784379d99db42000000610428565b8160ff16600314156103f057506a027b46536c66c8e3000000610428565b8160ff166004141561040e57506a034f086f3b33b684000000610428565b8160ff166005141561042857506a0422ca8b0a00a4250000005b6000811161043557600080fd5b600160a060020a038085166000908152600460205260409020805460ff191660019081179091555461046f9116858363ffffffff6105e216565b50505050565b670de0b6b3a764000081565b61048a336104cd565b151561049557600080fd5b61049e81610681565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b60006104e060028363ffffffff61069216565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b610209336106c9565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561058057600080fd5b505af1158015610594573d6000803e3d6000fd5b505050506040513d60208110156105aa57600080fd5b5051905060008111156105da576000546001546105da91600160a060020a0391821691168363ffffffff6105e216565b61049e6106da565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561064557600080fd5b505af1158015610659573d6000803e3d6000fd5b505050506040513d602081101561066f57600080fd5b5051151561067c57600080fd5b505050565b61049e60028263ffffffff61071116565b6000600160a060020a03821615156106a957600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61049e60028263ffffffff61075f16565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a038116151561072657600080fd5b6107308282610692565b1561073a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561077457600080fd5b61077e8282610692565b151561078957600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a7230582003c6fe797e016b5da34d582d5503b392dfdb98114c82abcb7165886533dc93b80029 \ No newline at end of file +608060405234801561001057600080fd5b506040516040806107f28339810160405280516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561006f90640100000000610093810204565b6003805483919060ff19166001838181111561008757fe5b0217905550505061013c565b6100ab6002826401000000006105e16100ae82021704565b50565b600160a060020a03811615156100c357600080fd5b6100d68282640100000000610105810204565b156100e057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561011c57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106a78061014b6000396000f3006080604052600436106100535763ffffffff60e060020a6000350416630c08bf8881146100585780632296f4c71461006f5780632e6b684914610090578063608d3d3d146100b1578063d43acc79146100e6575b600080fd5b34801561006457600080fd5b5061006d6100fb565b005b34801561007b57600080fd5b5061006d600160a060020a0360043516610119565b34801561009c57600080fd5b5061006d600160a060020a03600435166102f5565b3480156100bd57600080fd5b506100d2600160a060020a0360043516610315565b604080519115158252519081900360200190f35b3480156100f257600080fd5b5061006d610330565b61010433610315565b151561010f57600080fd5b610117610339565b565b600080548190819074010000000000000000000000000000000000000000900460ff161561014657600080fd5b61014f33610315565b151561015a57600080fd5b600160a060020a03841660009081526004602052604090205460ff161561018057600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156101c157600080fd5b505af11580156101d5573d6000803e3d6000fd5b505050506040513d60208110156101eb57600080fd5b505115156101f857600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561023657600080fd5b505af115801561024a573d6000803e3d6000fd5b505050506040513d602081101561026057600080fd5b50519150600060ff83161080159061027c575060058260ff1611155b151561028757600080fd5b61029082610400565b9050600160035460ff1660018111156102a557fe5b14156102b5576064600a82020490505b600160a060020a038085166000908152600460205260409020805460ff19166001908117909155546102ef9116858363ffffffff6104b216565b50505050565b6102fe33610315565b151561030957600080fd5b61031281610551565b50565b600061032860028363ffffffff61056216565b90505b919050565b61011733610599565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561039e57600080fd5b505af11580156103b2573d6000803e3d6000fd5b505050506040513d60208110156103c857600080fd5b5051905060008111156103f8576000546001546103f891600160a060020a0391821691168363ffffffff6104b216565b6103126105aa565b600060ff8216151561041d575069152d02c7e14af680000061032b565b8160ff166001141561043a575069d3c21bcecceda100000061032b565b8160ff166002141561045857506a01a784379d99db4200000061032b565b8160ff166003141561047657506a027b46536c66c8e300000061032b565b8160ff166004141561049457506a034f086f3b33b68400000061032b565b8160ff166005141561032b57506a0422ca8b0a00a42500000061032b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561051557600080fd5b505af1158015610529573d6000803e3d6000fd5b505050506040513d602081101561053f57600080fd5b5051151561054c57600080fd5b505050565b61031260028263ffffffff6105e116565b6000600160a060020a038216151561057957600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61031260028263ffffffff61062f16565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a03811615156105f657600080fd5b6106008282610562565b1561060a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561064457600080fd5b61064e8282610562565b151561065957600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058208317cc38f72fdbf4d19029db12a6c784275ab5dfd7521863b2c79aee26e6effb0029 \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json index 3a44ddf38..96063ba80 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json @@ -23,20 +23,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "constant": true, - "inputs": [], - "name": "TOKEN_FACTOR", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { "constant": false, "inputs": [ @@ -51,48 +37,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "constant": true, - "inputs": [], - "name": "CAT_4_VALUE", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "CAT_1_VALUE", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "CAT_3_VALUE", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { "constant": true, "inputs": [ @@ -112,48 +56,6 @@ "stateMutability": "view", "type": "function" }, - { - "constant": true, - "inputs": [], - "name": "CAT_0_VALUE", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "CAT_5_VALUE", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "CAT_2_VALUE", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { "constant": false, "inputs": [], @@ -167,7 +69,7 @@ "inputs": [ { "name": "poolType", - "type": "uint16" + "type": "uint8" }, { "name": "tokenAddress", @@ -179,15 +81,8 @@ "type": "constructor" } ], - "bytecode": "608060405234801561001057600080fd5b5060405160408061091a8339810160405280516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561006f9064010000000061008b810204565b506003805461ffff191661ffff92909216919091179055610134565b6100a36002826401000000006107116100a682021704565b50565b600160a060020a03811615156100bb57600080fd5b6100ce82826401000000006100fd810204565b156100d857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561011457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6107d7806101436000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632296f4c7146100bc57806325109e8b146100dd5780632e6b684914610104578063455acbcd14610125578063492fba841461013a57806349dc9ed01461014f578063608d3d3d146101645780639fc3c98314610199578063a89febb2146101ae578063aed6183f146101c3578063d43acc79146101d8575b600080fd5b3480156100b157600080fd5b506100ba6101ed565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661020b565b3480156100e957600080fd5b506100f2610475565b60408051918252519081900360200190f35b34801561011057600080fd5b506100ba600160a060020a0360043516610481565b34801561013157600080fd5b506100f26104a1565b34801561014657600080fd5b506100f26104b0565b34801561015b57600080fd5b506100f26104be565b34801561017057600080fd5b50610185600160a060020a03600435166104cd565b604080519115158252519081900360200190f35b3480156101a557600080fd5b506100f26104e6565b3480156101ba57600080fd5b506100f26104f4565b3480156101cf57600080fd5b506100f2610503565b3480156101e457600080fd5b506100ba610512565b6101f6336104cd565b151561020157600080fd5b61020961051b565b565b600080548190819074010000000000000000000000000000000000000000900460ff161561023857600080fd5b610241336104cd565b151561024c57600080fd5b600160a060020a03841660009081526004602052604090205460ff161561027257600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102b357600080fd5b505af11580156102c7573d6000803e3d6000fd5b505050506040513d60208110156102dd57600080fd5b505115156102ea57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032857600080fd5b505af115801561033c573d6000803e3d6000fd5b505050506040513d602081101561035257600080fd5b50519150600060ff83161080159061036e575060058260ff1611155b151561037957600080fd5b50600060ff82161515610397575069152d02c7e14af6800000610428565b8160ff16600114156103b4575069d3c21bcecceda1000000610428565b8160ff16600214156103d257506a01a784379d99db42000000610428565b8160ff16600314156103f057506a027b46536c66c8e3000000610428565b8160ff166004141561040e57506a034f086f3b33b684000000610428565b8160ff166005141561042857506a0422ca8b0a00a4250000005b6000811161043557600080fd5b600160a060020a038085166000908152600460205260409020805460ff191660019081179091555461046f9116858363ffffffff6105e216565b50505050565b670de0b6b3a764000081565b61048a336104cd565b151561049557600080fd5b61049e81610681565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b60006104e060028363ffffffff61069216565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b610209336106c9565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561058057600080fd5b505af1158015610594573d6000803e3d6000fd5b505050506040513d60208110156105aa57600080fd5b5051905060008111156105da576000546001546105da91600160a060020a0391821691168363ffffffff6105e216565b61049e6106da565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561064557600080fd5b505af1158015610659573d6000803e3d6000fd5b505050506040513d602081101561066f57600080fd5b5051151561067c57600080fd5b505050565b61049e60028263ffffffff61071116565b6000600160a060020a03821615156106a957600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61049e60028263ffffffff61075f16565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a038116151561072657600080fd5b6107308282610692565b1561073a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561077457600080fd5b61077e8282610692565b151561078957600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a7230582003c6fe797e016b5da34d582d5503b392dfdb98114c82abcb7165886533dc93b80029", + "bytecode": "608060405234801561001057600080fd5b506040516040806107f28339810160405280516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561006f90640100000000610093810204565b6003805483919060ff19166001838181111561008757fe5b0217905550505061013c565b6100ab6002826401000000006105e16100ae82021704565b50565b600160a060020a03811615156100c357600080fd5b6100d68282640100000000610105810204565b156100e057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561011c57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106a78061014b6000396000f3006080604052600436106100535763ffffffff60e060020a6000350416630c08bf8881146100585780632296f4c71461006f5780632e6b684914610090578063608d3d3d146100b1578063d43acc79146100e6575b600080fd5b34801561006457600080fd5b5061006d6100fb565b005b34801561007b57600080fd5b5061006d600160a060020a0360043516610119565b34801561009c57600080fd5b5061006d600160a060020a03600435166102f5565b3480156100bd57600080fd5b506100d2600160a060020a0360043516610315565b604080519115158252519081900360200190f35b3480156100f257600080fd5b5061006d610330565b61010433610315565b151561010f57600080fd5b610117610339565b565b600080548190819074010000000000000000000000000000000000000000900460ff161561014657600080fd5b61014f33610315565b151561015a57600080fd5b600160a060020a03841660009081526004602052604090205460ff161561018057600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156101c157600080fd5b505af11580156101d5573d6000803e3d6000fd5b505050506040513d60208110156101eb57600080fd5b505115156101f857600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561023657600080fd5b505af115801561024a573d6000803e3d6000fd5b505050506040513d602081101561026057600080fd5b50519150600060ff83161080159061027c575060058260ff1611155b151561028757600080fd5b61029082610400565b9050600160035460ff1660018111156102a557fe5b14156102b5576064600a82020490505b600160a060020a038085166000908152600460205260409020805460ff19166001908117909155546102ef9116858363ffffffff6104b216565b50505050565b6102fe33610315565b151561030957600080fd5b61031281610551565b50565b600061032860028363ffffffff61056216565b90505b919050565b61011733610599565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561039e57600080fd5b505af11580156103b2573d6000803e3d6000fd5b505050506040513d60208110156103c857600080fd5b5051905060008111156103f8576000546001546103f891600160a060020a0391821691168363ffffffff6104b216565b6103126105aa565b600060ff8216151561041d575069152d02c7e14af680000061032b565b8160ff166001141561043a575069d3c21bcecceda100000061032b565b8160ff166002141561045857506a01a784379d99db4200000061032b565b8160ff166003141561047657506a027b46536c66c8e300000061032b565b8160ff166004141561049457506a034f086f3b33b68400000061032b565b8160ff166005141561032b57506a0422ca8b0a00a42500000061032b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561051557600080fd5b505af1158015610529573d6000803e3d6000fd5b505050506040513d602081101561053f57600080fd5b5051151561054c57600080fd5b505050565b61031260028263ffffffff6105e116565b6000600160a060020a038216151561057957600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61031260028263ffffffff61062f16565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a03811615156105f657600080fd5b6106008282610562565b1561060a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561064457600080fd5b61064e8282610562565b151561065957600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058208317cc38f72fdbf4d19029db12a6c784275ab5dfd7521863b2c79aee26e6effb0029", "functionHashes": { - "CAT_0_VALUE()": "9fc3c983", - "CAT_1_VALUE()": "492fba84", - "CAT_2_VALUE()": "aed6183f", - "CAT_3_VALUE()": "49dc9ed0", - "CAT_4_VALUE()": "455acbcd", - "CAT_5_VALUE()": "a89febb2", - "TOKEN_FACTOR()": "25109e8b", "addCoreTeam(address)": "2e6b6849", "isCoreTeam(address)": "608d3d3d", "renounceCoreTeam()": "d43acc79", @@ -196,18 +91,11 @@ }, "gasEstimates": { "creation": { - "codeDepositCost": "401400", + "codeDepositCost": "340600", "executionCost": "infinite", "totalCost": "infinite" }, "external": { - "CAT_0_VALUE()": "423", - "CAT_1_VALUE()": "357", - "CAT_2_VALUE()": "467", - "CAT_3_VALUE()": "379", - "CAT_4_VALUE()": "335", - "CAT_5_VALUE()": "445", - "TOKEN_FACTOR()": "291", "addCoreTeam(address)": "infinite", "isCoreTeam(address)": "infinite", "renounceCoreTeam()": "infinite", diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/package-lock.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/package-lock.json index 6ca2c08a4..e2076f62f 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/package-lock.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/package-lock.json @@ -370,9 +370,9 @@ } }, "spdx-correct": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz", - "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", "requires": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -399,7 +399,7 @@ }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "resolved": "http://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { "code-point-at": "^1.0.0", diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/package.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/package.json index 7cc030dcd..c6ec5d4db 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/package.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/package.json @@ -9,7 +9,7 @@ "author": "", "license": "ISC", "dependencies": { - "openzeppelin-solidity": "^2.0.0", - "solc": "^0.4.24" + "openzeppelin-solidity": "2.0.0", + "solc": "0.4.24" } } diff --git a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoFeesTests.cs b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoFeesTests.cs index 0aeb0fb1b..dc87e1df0 100644 --- a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoFeesTests.cs +++ b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoFeesTests.cs @@ -37,16 +37,18 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests // Create some miners... var minerAccounts = new IAccount[3]; + var referralAccounts = new IAccount[3]; AlgoMiner[] miners = new AlgoMiner[3]; for (int i = 0; i < 3; i++) { - // Create an account for the miner... + // Create an account for the miner and the referral... minerAccounts[i] = EthAccountFactory.Create(); + referralAccounts[i] = EthAccountFactory.Create(); // Create the miner... miners[i] = new AlgoMiner(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); - await miners[i].DeployAsync(1, 2, minerAccounts[i].Address, token.ContractAddress); + await miners[i].DeployAsync(0, 2, minerAccounts[i].Address, referralAccounts[i].Address, token.ContractAddress); } // Register a miner... @@ -115,6 +117,16 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests var token = new AlgoTokenV1(EthNetwork.Instance.GetWeb3(tokenOwnerAccount), EthNetwork.Instance.GasPriceProvider); await token.DeployAsync(); + // Create the pools to transfer the proper number of tokens to the miners... + var pool1 = new AlgoPool(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); + await pool1.DeployAsync(0, token.ContractAddress); + var pool2 = new AlgoPool(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); + await pool2.DeployAsync(1, token.ContractAddress); + + // Transfer some tokens to the pools... + await token.TransferAsync(pool1.ContractAddress, 100.MAlgo()); + await token.TransferAsync(pool2.ContractAddress, 100.MAlgo()); + // Create a fees... var fees1 = new AlgoFees(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); await fees1.DeployAsync(token.ContractAddress); @@ -127,20 +139,23 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests // Create one miner per category... var minerAccounts = new IAccount[6]; + var referralAccounts = new IAccount[6]; var miners = new AlgoMiner[6]; for (byte i = 0; i <= 5; i++) { - // Create an account for the miner... + // Create an account for the miner and the referral... minerAccounts[i] = EthAccountFactory.Create(); + referralAccounts[i] = EthAccountFactory.Create(); await EthNetwork.Instance.RefillAsync(minerAccounts[i]); // Create the miner... miners[i] = new AlgoMiner(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); - await miners[i].DeployAsync(1, i, minerAccounts[i].Address, token.ContractAddress); + await miners[i].DeployAsync(0, i, minerAccounts[i].Address, referralAccounts[i].Address, token.ContractAddress); // Transfer some tokens to the miner so it can be activated... - await token.TransferAsync(miners[i].ContractAddress, 100.Algo()); + await pool1.TrasferToMinerAsync(miners[i].ContractAddress); + await pool2.TrasferToMinerAsync(miners[i].ContractAddress); // Activate the miner... await miners[i].ActivateMinerAsync(); diff --git a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoMinerTests.cs b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoMinerTests.cs index 11715109f..08b622946 100644 --- a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoMinerTests.cs +++ b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoMinerTests.cs @@ -13,10 +13,8 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests { public class AlgoMinerTests { - private const long INITIAL_SUPPLY = 1000000000; - [Fact] - public async Task BasicMinerWorkfloWTest() + public async Task PoolBasedMinerBasicWorkfloWTest() { EthNetwork.UseGanacheTestNet(); @@ -27,6 +25,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests var coreTeamAccount = EthAccountFactory.Create(); var supervisorAccount = EthAccountFactory.Create(); var minerAccount = EthAccountFactory.Create(); + var referralAccount = EthAccountFactory.Create(); await EthNetwork.Instance.RefillAsync(tokenOwnerAccount); await EthNetwork.Instance.RefillAsync(systemAccount); @@ -38,17 +37,19 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests var token = new AlgoTokenV1(EthNetwork.Instance.GetWeb3(tokenOwnerAccount), EthNetwork.Instance.GasPriceProvider); await token.DeployAsync(); - // Create a pool... + // Create the pools to transfer the proper number of tokens to the miners... var pool1 = new AlgoPool(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); + await pool1.DeployAsync(0, token.ContractAddress); + var pool2 = new AlgoPool(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); + await pool2.DeployAsync(1, token.ContractAddress); - await pool1.DeployAsync(10, token.ContractAddress); - - // Transfer some tokens to the pool... + // Transfer some tokens to the pools... await token.TransferAsync(pool1.ContractAddress, 100.MAlgo()); + await token.TransferAsync(pool2.ContractAddress, 100.MAlgo()); // Create a miner category 2... var miner1 = new AlgoMiner(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); - await miner1.DeployAsync(5, 2, minerAccount.Address, token.ContractAddress); + await miner1.DeployAsync(0, 2, minerAccount.Address, referralAccount.Address, token.ContractAddress); // Add roles to the miner... await miner1.AddSystemAsync(systemAccount.Address); @@ -56,9 +57,10 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests // Transfer tokens to the miner... await pool1.TrasferToMinerAsync(miner1.ContractAddress); + await pool2.TrasferToMinerAsync(miner1.ContractAddress); // Ensure the miner received the tokens according to its category 2. - Assert.Equal(2.MAlgo(), await token.BalanceOfAsync(miner1.ContractAddress)); + Assert.Equal(2.MAlgo() + 2.MAlgo() * 10 / 100, await token.BalanceOfAsync(miner1.ContractAddress)); // Activate the miner... await miner1.ActivateMinerAsync(); @@ -72,13 +74,16 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests var paymentPerDay = 2.MAlgo() / 2 / 365; BigInteger expectedMinerBalance = 0; + BigInteger expectedReferralBalance = 0; for (int i = 0; i < 5; i++) { await miner1.MineAsync(); expectedMinerBalance += paymentPerDay; + expectedReferralBalance += paymentPerDay * 10 / 100; Assert.Equal(expectedMinerBalance, await token.BalanceOfAsync(minerAccount.Address)); + Assert.Equal(expectedReferralBalance, await token.BalanceOfAsync(referralAccount.Address)); } // Pause the miner... @@ -101,8 +106,10 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests miner1.Bind(EthNetwork.Instance.GetWeb3(coreTeamAccount)); await miner1.MineAsync(); expectedMinerBalance += paymentPerDay; + expectedReferralBalance += paymentPerDay * 10 / 100; Assert.Equal(expectedMinerBalance, await token.BalanceOfAsync(minerAccount.Address)); + Assert.Equal(expectedReferralBalance, await token.BalanceOfAsync(referralAccount.Address)); } } } diff --git a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoPoolTests.cs b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoPoolTests.cs index ebef49f56..b80e7c0dd 100644 --- a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoPoolTests.cs +++ b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoPoolTests.cs @@ -15,7 +15,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests public class AlgoPoolTests { [Fact] - public async Task TransferToMinerTest() + public async Task MinerPoolTransferToMinerTest() { EthNetwork.UseGanacheTestNet(); @@ -24,6 +24,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests var tokenOwnerAccount = EthAccountFactory.Create(); var coreTeamAccount = EthAccountFactory.Create(); var minerAccounts = new IAccount[6]; + var referralAccounts = new IAccount[6]; await EthNetwork.Instance.RefillAsync(tokenOwnerAccount); await EthNetwork.Instance.RefillAsync(coreTeamAccount); @@ -34,7 +35,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests // Create a pool... var pool1 = new AlgoPool(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); - await pool1.DeployAsync(10, token.ContractAddress); + await pool1.DeployAsync(0, token.ContractAddress); // Transfer some tokens to the pool... await token.TransferAsync(pool1.ContractAddress, 100.MAlgo()); @@ -42,14 +43,15 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests // Create miners for each category... AlgoMiner[] miners = new AlgoMiner[6]; - for (int i = 0; i <= 5; i++) + for (byte i = 0; i <= 5; i++) { - // Create an account for the miner... + // Create an account for the miner and the referral... minerAccounts[i] = EthAccountFactory.Create(); + referralAccounts[i] = EthAccountFactory.Create(); // Create the miner... miners[i] = new AlgoMiner(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); - await miners[i].DeployAsync((ushort)i, (byte)i, minerAccounts[i].Address, token.ContractAddress); + await miners[i].DeployAsync(0, i, minerAccounts[i].Address, referralAccounts[i].Address, token.ContractAddress); } // Transfer tokens from the pool to the miners... @@ -66,5 +68,60 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests Assert.Equal(4.MAlgo(), await token.BalanceOfAsync(miners[4].ContractAddress)); Assert.Equal(5.MAlgo(), await token.BalanceOfAsync(miners[5].ContractAddress)); } + + [Fact] + public async Task ReferralPoolTransferToMinerTest() + { + EthNetwork.UseGanacheTestNet(); + + var prefundedAccount = new Account(EthNetwork.Instance.PrefundedPrivateKey); + + var tokenOwnerAccount = EthAccountFactory.Create(); + var coreTeamAccount = EthAccountFactory.Create(); + var minerAccounts = new IAccount[6]; + var referralAccounts = new IAccount[6]; + + await EthNetwork.Instance.RefillAsync(tokenOwnerAccount); + await EthNetwork.Instance.RefillAsync(coreTeamAccount); + + // Create the ERC20 token... + var token = new AlgoTokenV1(EthNetwork.Instance.GetWeb3(tokenOwnerAccount), EthNetwork.Instance.GasPriceProvider); + await token.DeployAsync(); + + // Create a pool... + var pool1 = new AlgoPool(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); + await pool1.DeployAsync(1, token.ContractAddress); + + // Transfer some tokens to the pool... + await token.TransferAsync(pool1.ContractAddress, 100.MAlgo()); + + // Create miners for each category... + AlgoMiner[] miners = new AlgoMiner[6]; + + for (byte i = 0; i <= 5; i++) + { + // Create an account for the miner and the referral... + minerAccounts[i] = EthAccountFactory.Create(); + referralAccounts[i] = EthAccountFactory.Create(); + + // Create the miner... + miners[i] = new AlgoMiner(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); + await miners[i].DeployAsync(0, i, minerAccounts[i].Address, referralAccounts[i].Address, token.ContractAddress); + } + + // Transfer tokens from the pool to the miners... + for (int i = 0; i <= 5; i++) + { + await pool1.TrasferToMinerAsync(miners[i].ContractAddress); + } + + // Ensure each miner received the proper amount of tokens according its category... + Assert.Equal(100000.Algo() * 10 / 100, await token.BalanceOfAsync(miners[0].ContractAddress)); + Assert.Equal(1.MAlgo() * 10 / 100, await token.BalanceOfAsync(miners[1].ContractAddress)); + Assert.Equal(2.MAlgo() * 10 / 100, await token.BalanceOfAsync(miners[2].ContractAddress)); + Assert.Equal(3.MAlgo() * 10 / 100, await token.BalanceOfAsync(miners[3].ContractAddress)); + Assert.Equal(4.MAlgo() * 10 / 100, await token.BalanceOfAsync(miners[4].ContractAddress)); + Assert.Equal(5.MAlgo() * 10 / 100, await token.BalanceOfAsync(miners[5].ContractAddress)); + } } } diff --git a/labs/algo-token-playground/README.md b/labs/algo-token-playground/README.md index bf9aa722a..dc2ff3370 100644 --- a/labs/algo-token-playground/README.md +++ b/labs/algo-token-playground/README.md @@ -200,10 +200,10 @@ The following commands are supported for the `AlgoPool` contract: `deploy-algopool [-n ]` Creates a new instance of the `AlgoPool` contract. -* `poolType`: the type of pool (uint16) +* `poolType`: the type of pool (uint8: 0 = PoolType, 1 = ReferralPool) * `tokenAddress`: the address of the AlgoToken contract ->Example: `deploy-algopool 1 token -n dev_pool` +>Example: `deploy-algopool 0 token -n dev_pool` #### algopool-trasfertominer @@ -220,15 +220,16 @@ The following commands are supported for the `AlgoMiner` contract: #### deploy-algominer -`deploy-algominer [-n ]` +`deploy-algominer [-n ]` Creates a new instance of the `AlgoPool` contract. -* `minerType`: the type of miner (uint16) +* `minerType`: the type of miner (uint8: 0 = PoolBased, 1 = NonPoolBased) * `category`: the category of miner (uint8: valid from 0 to 5) * `minerAccountAddress`: the address of the miner's owner +* `referralAccountAddress`: the address of the referral * `tokenAddress`: the address of the AlgoToken contract ->Example: `deploy-algominer 1 2 miner_1_account token -n miner_1` +>Example: `deploy-algominer 0 2 miner_1_account referral_1_account token -n miner_1` #### algominer-activateminer @@ -275,16 +276,17 @@ Resumes the miner. `.algominer-stopandremoveownership` -Sets the miner to the stopped state and remove the ownership, a new owner will be assigned using the `resetMiner` operation. +Sets the miner to the stopped state and remove the ownership, a new owner and referral will be assigned using the `resetMiner` operation. >Example: `miner_1.algominer-stopandremoveownership` #### algominer-resetminer -`.algominer-resetminer ` +`.algominer-resetminer ` Resets the miner. * `newOwnerAddress`: the address of the new owner +* `newReferralAddress`: the address of the new referral >Example: `miner_1.algominer-resetminer` diff --git a/labs/algo-token-playground/algofees-script.md b/labs/algo-token-playground/algofees-script.txt similarity index 57% rename from labs/algo-token-playground/algofees-script.md rename to labs/algo-token-playground/algofees-script.txt index e19a958d1..6763e8f6e 100644 --- a/labs/algo-token-playground/algofees-script.md +++ b/labs/algo-token-playground/algofees-script.txt @@ -1,9 +1,15 @@ new-account -n miner_0_account +new-account -n ref_0_account new-account -n miner_1_account +new-account -n ref_1_account new-account -n miner_2_account +new-account -n ref_2_account new-account -n miner_3_account +new-account -n ref_3_account new-account -n miner_4_account +new-account -n ref_4_account new-account -n miner_5_account +new-account -n ref_5_account import-account 0936af475d2701538aad321f87e0a51f2b297634653393e8cab7290a674009a5 -n prefunded eth-transfer miner_0_account 1eth eth-transfer miner_1_account 1eth @@ -12,18 +18,28 @@ eth-transfer miner_3_account 1eth eth-transfer miner_4_account 1eth eth-transfer miner_5_account 1eth deploy-algotoken -n token -deploy-algominer 1 0 miner_0_account token -n miner_0 -deploy-algominer 1 1 miner_1_account token -n miner_1 -deploy-algominer 1 2 miner_2_account token -n miner_2 -deploy-algominer 1 3 miner_3_account token -n miner_3 -deploy-algominer 1 4 miner_4_account token -n miner_4 -deploy-algominer 1 5 miner_5_account token -n miner_5 -token.algotoken-transfer miner_0 1m -token.algotoken-transfer miner_1 1m -token.algotoken-transfer miner_2 1m -token.algotoken-transfer miner_3 1m -token.algotoken-transfer miner_4 1m -token.algotoken-transfer miner_5 1m +deploy-algominer 1 0 miner_0_account ref_0_account token -n miner_0 +deploy-algominer 1 1 miner_1_account ref_1_account token -n miner_1 +deploy-algominer 1 2 miner_2_account ref_2_account token -n miner_2 +deploy-algominer 1 3 miner_3_account ref_3_account token -n miner_3 +deploy-algominer 1 4 miner_4_account ref_4_account token -n miner_4 +deploy-algominer 1 5 miner_5_account ref_5_account token -n miner_5 +deploy-algopool 0 token -n dev_pool +deploy-algopool 1 token -n ref_pool +token.algotoken-transfer dev_pool 100m +token.algotoken-transfer ref_pool 100m +dev_pool.algopool-trasfertominer miner_0 +ref_pool.algopool-trasfertominer miner_0 +dev_pool.algopool-trasfertominer miner_1 +ref_pool.algopool-trasfertominer miner_1 +dev_pool.algopool-trasfertominer miner_2 +ref_pool.algopool-trasfertominer miner_2 +dev_pool.algopool-trasfertominer miner_3 +ref_pool.algopool-trasfertominer miner_3 +dev_pool.algopool-trasfertominer miner_4 +ref_pool.algopool-trasfertominer miner_4 +dev_pool.algopool-trasfertominer miner_5 +ref_pool.algopool-trasfertominer miner_5 miner_0.algominer-activateminer miner_1.algominer-activateminer miner_2.algominer-activateminer diff --git a/labs/algo-token-playground/algotoken-script.md b/labs/algo-token-playground/pool-based-algominer-script.txt similarity index 62% rename from labs/algo-token-playground/algotoken-script.md rename to labs/algo-token-playground/pool-based-algominer-script.txt index e4fc98581..7d1571fdb 100644 --- a/labs/algo-token-playground/algotoken-script.md +++ b/labs/algo-token-playground/pool-based-algominer-script.txt @@ -1,13 +1,18 @@ new-account -n miner_1_account +new-account -n ref_1_account import-account 0936af475d2701538aad321f87e0a51f2b297634653393e8cab7290a674009a5 -n prefunded eth-transfer miner_1_account 1eth eth-getbalance miner_1_account deploy-algotoken -n token -deploy-algopool 1 token -n dev_pool +deploy-algopool 0 token -n dev_pool +deploy-algopool 1 token -n ref_pool token.algotoken-transfer dev_pool 100m +token.algotoken-transfer ref_pool 100m token.algotoken-balanceof dev_pool -deploy-algominer 1 2 miner_1_account token -n miner_1 +token.algotoken-balanceof ref_pool +deploy-algominer 0 2 miner_1_account ref_1_account token -n miner_1 dev_pool.algopool-trasfertominer miner_1 +ref_pool.algopool-trasfertominer miner_1 token.algotoken-balanceof miner_1 miner_1.algominer-activateminer set-account miner_1_account @@ -15,5 +20,7 @@ miner_1.algominer-startmining set-account prefunded miner_1.algominer-mine token.algotoken-balanceof miner_1_account +token.algotoken-balanceof ref_1_account miner_1.algominer-mine token.algotoken-balanceof miner_1_account +token.algotoken-balanceof ref_1_account diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerDeployCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerDeployCommand.cs index e335c7432..41f9df66f 100644 --- a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerDeployCommand.cs +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerDeployCommand.cs @@ -14,9 +14,10 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoMinerContract { public override string DefaultName => "AlgoMiner"; - public ushort MinerType { get; set; } + public byte MinerType { get; set; } public byte Category { get; set; } public string MinerAccountAddress { get; set; } + public string ReferralAccountAddress { get; set; } public string TokenAddress { get; set; } protected override async Task DeployContractAsync(RuntimeContext context, Web3 web3) @@ -26,6 +27,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoMinerContract MinerType, Category, context.ResolveAccountReference(MinerAccountAddress), + context.ResolveAccountReference(ReferralAccountAddress), context.ResolveContractReference(TokenAddress)); } } diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerResetMinerCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerResetMinerCommand.cs index f66dde831..5faa0df01 100644 --- a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerResetMinerCommand.cs +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerResetMinerCommand.cs @@ -14,12 +14,15 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoMinerContract public class AlgoMinerResetMinerCommand : EthInvokeTransactionalFunctionCommand { public string NewOwnerAddress { get; set; } + public string NewReferralAddress { get; set; } protected override async Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3) { var algoMiner = new AlgoMiner(contractAddress, web3, context.GasPriceProvider); - return await algoMiner.ResetMinerAsync(context.ResolveAccountReference(NewOwnerAddress)); + return await algoMiner.ResetMinerAsync( + context.ResolveAccountReference(NewOwnerAddress), + context.ResolveAccountReference(NewReferralAddress)); } } } diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoPoolContract/AlgoPoolDeployCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoPoolContract/AlgoPoolDeployCommand.cs index e2ca14b22..ed6732c6d 100644 --- a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoPoolContract/AlgoPoolDeployCommand.cs +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoPoolContract/AlgoPoolDeployCommand.cs @@ -14,7 +14,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoPoolContract { public override string DefaultName => "AlgoPool"; - public ushort PoolType { get; set; } + public byte PoolType { get; set; } public string TokenAddress { get; set; } protected override async Task DeployContractAsync(RuntimeContext context, Web3 web3) diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoMinerParsers.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoMinerParsers.cs index 3e10cfd1a..1b857c43b 100644 --- a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoMinerParsers.cs +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoMinerParsers.cs @@ -11,17 +11,19 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Parsers public static void Register() { (from command in CommonParsers.Token("deploy-algominer") - from minerType in CommonParsers.IntegerValue - from category in CommonParsers.IntegerValue + from minerType in CommonParsers.ByteValue + from category in CommonParsers.ByteValue from minerAccountAddress in CommonParsers.StringValue + from referralAccountAddress in CommonParsers.StringValue from tokenAddress in CommonParsers.StringValue from name in CommonParsers.Switch('n', "name", CommonParsers.Identifier).Optional() select new AlgoMinerDeployCommand { Name = name.GetOrDefault(), - MinerType = (ushort)minerType, - Category = (byte)category, + MinerType = minerType, + Category = category, MinerAccountAddress = minerAccountAddress, + ReferralAccountAddress = referralAccountAddress, TokenAddress = tokenAddress }).Register(); @@ -65,10 +67,12 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Parsers (from contractReference in CommonParsers.Invoke("algominer-resetminer") from newOwnerAddress in CommonParsers.StringValue + from newReferralAddress in CommonParsers.StringValue select new AlgoMinerResetMinerCommand { ContractReference = contractReference, - NewOwnerAddress = newOwnerAddress + NewOwnerAddress = newOwnerAddress, + NewReferralAddress = newReferralAddress }).Register(); (from contractReference in CommonParsers.Invoke("algominer-startmining") diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoPoolParsers.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoPoolParsers.cs index abb30cee0..487b903ba 100644 --- a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoPoolParsers.cs +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoPoolParsers.cs @@ -11,13 +11,13 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Parsers public static void Register() { (from command in CommonParsers.Token("deploy-algopool") - from poolType in CommonParsers.IntegerValue + from poolType in CommonParsers.ByteValue from tokenAddress in CommonParsers.StringValue from name in CommonParsers.Switch('n', "name", CommonParsers.Identifier).Optional() select new AlgoPoolDeployCommand { Name = name.GetOrDefault(), - PoolType = (ushort)poolType, + PoolType = poolType, TokenAddress = tokenAddress }).Register(); diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/CommonParsers.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/CommonParsers.cs index 67ffea648..5ee66ae6c 100644 --- a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/CommonParsers.cs +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/CommonParsers.cs @@ -24,6 +24,9 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Parsers from close in Parse.Char('"') select content; + public static readonly Parser ByteValue = + Integer.Select(x => byte.Parse(x, CultureInfo.InvariantCulture)); + public static readonly Parser IntegerValue = Integer.Select(x => int.Parse(x, CultureInfo.InvariantCulture)); diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Runtime/RuntimeContext.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Runtime/RuntimeContext.cs index 1a7cb66e0..adaf9a5d4 100644 --- a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Runtime/RuntimeContext.cs +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Runtime/RuntimeContext.cs @@ -18,6 +18,8 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime public string ResolveAccountReference(string reference) { + if (string.IsNullOrWhiteSpace(reference) || string.Equals(reference, "0x0", StringComparison.OrdinalIgnoreCase)) return "0x0"; + if (TryResolveAccountReference(reference, out string address)) return address; throw new Exception($"Invalid account name or address: '{reference}'."); From 6f105e531f3d6b96e1562c90b9b8b2021103d52f Mon Sep 17 00:00:00 2001 From: pmmax Date: Fri, 21 Dec 2018 11:38:27 -0300 Subject: [PATCH 11/17] Added minor validations to AlgoMiner. Created integration tests for "terminate" function in all contracts. Updated the playground to support the "terminate" function for all contracts. Added the "reset" command to the playground. Updated playground docs. Updated playground sample scripts. --- .../AlgoFees.cs | 5 + .../AlgoMiner.cs | 5 + .../AlgoPool.cs | 5 + .../SmartContracts/src/AlgoMiner.sol | 16 +- .../SmartContracts/src/IAlgoMiner.sol | 3 +- .../src/bin/AlgoFees-sol-output.json | 2 +- .../src/bin/AlgoMiner-sol-output.json | 5789 +++++++++-------- .../SmartContracts/src/bin/AlgoMiner.bin | 2 +- .../SmartContracts/src/bin/AlgoMiner.json | 4 +- .../AlgoFeesTests.cs | 56 +- .../AlgoMinerTests.cs | 40 + .../AlgoPoolTests.cs | 38 + labs/algo-token-playground/README.md | 73 +- .../algo-token-playground/algofees-script.txt | 16 - .../AlgoFeesTerminateCommand.cs | 23 + .../AlgoMinerTerminateCommand.cs | 23 + .../AlgoPoolTerminateCommand.cs | 23 + .../ListEnvironmentCommand.cs | 2 +- .../Commands/System/ResetCommand.cs | 23 + .../Parsers/AlgoFeesParsers.cs | 6 + .../Parsers/AlgoMinerParsers.cs | 6 + .../Parsers/AlgoPoolParsers.cs | 6 + .../Parsers/EthNetworkParsers.cs | 4 - .../Parsers/SystemParsers.cs | 22 + .../REPL.cs | 1 + .../Runtime/RuntimeContext.cs | 10 +- .../terminate-script.txt | 29 + 27 files changed, 3403 insertions(+), 2829 deletions(-) create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesTerminateCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerTerminateCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoPoolContract/AlgoPoolTerminateCommand.cs rename labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/{EthNetwork => System}/ListEnvironmentCommand.cs (90%) create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/System/ResetCommand.cs create mode 100644 labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/SystemParsers.cs create mode 100644 labs/algo-token-playground/terminate-script.txt diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoFees.cs b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoFees.cs index 751870ed3..55797e885 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoFees.cs +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoFees.cs @@ -15,6 +15,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution private Function _registerMiner; private Function _unregisterMiner; private Function _mine; + private Function _terminate; private Function _addSystem; private Function _addCoreTeam; @@ -37,6 +38,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution _registerMiner = contractDescriptor.GetFunction("registerMiner"); _unregisterMiner = contractDescriptor.GetFunction("unregisterMiner"); _mine = contractDescriptor.GetFunction("mine"); + _terminate = contractDescriptor.GetFunction("terminate"); _addSystem = contractDescriptor.GetFunction("addSystem"); _addCoreTeam = contractDescriptor.GetFunction("addCoreTeam"); @@ -54,6 +56,9 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution public Task MineAsync() => InvokeAsync(_mine, 1500000); + public Task TerminateAsync() => + InvokeAsync(_terminate, 900000); + public Task AddSystemAsync(string account) => InvokeAsync(_addSystem, 900000, account); diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoMiner.cs b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoMiner.cs index f411a72ac..6aa9675a5 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoMiner.cs +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoMiner.cs @@ -22,6 +22,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution private Function _startMining; private Function _stopMining; private Function _mine; + private Function _terminate; private Function _addSystem; private Function _addCoreTeam; @@ -49,6 +50,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution _startMining = contractDescriptor.GetFunction("startMining"); _stopMining = contractDescriptor.GetFunction("stopMining"); _mine = contractDescriptor.GetFunction("mine"); + _terminate = contractDescriptor.GetFunction("terminate"); _addSystem = contractDescriptor.GetFunction("addSystem"); _addCoreTeam = contractDescriptor.GetFunction("addCoreTeam"); @@ -85,6 +87,9 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution public Task MineAsync() => InvokeAsync(_mine, 900000); + public Task TerminateAsync() => + InvokeAsync(_terminate, 900000); + public Task AddSystemAsync(string account) => InvokeAsync(_addSystem, 900000, account); diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoPool.cs b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoPool.cs index 7fbf9a3ca..1ac592575 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoPool.cs +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoPool.cs @@ -13,6 +13,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution public class AlgoPool : SmartContract { private Function _trasferToMiner; + private Function _terminate; public AlgoPool(Web3 web3, IGasPriceProvider gasPriceProvider) : base(web3, gasPriceProvider) { } public AlgoPool(string contractAddress, Web3 web3, IGasPriceProvider gasPriceProvider) : base(contractAddress, web3, gasPriceProvider) { } @@ -27,9 +28,13 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution protected override void Initialize(Contract contractDescriptor) { _trasferToMiner = contractDescriptor.GetFunction("trasferToMiner"); + _terminate = contractDescriptor.GetFunction("terminate"); } public Task TrasferToMinerAsync(string minerAddress) => InvokeAsync(_trasferToMiner, 900000, minerAddress); + + public Task TerminateAsync() => + InvokeAsync(_terminate, 900000); } } diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol index 80ea7a1f4..c41b5b855 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol @@ -46,6 +46,11 @@ contract AlgoMiner is AlgoCommon, ERC20TokenHolder, AlgoSystemRole, AlgoCoreTeam public { require(category >= 0 && category <= 5); + require(minerAccountAddress != address(0)); + + if(minerType == MinerType.PoolBased) { + require(referralAccountAddress != address(0)); + } _minerType = minerType; _category = category; @@ -150,18 +155,13 @@ contract AlgoMiner is AlgoCommon, ERC20TokenHolder, AlgoSystemRole, AlgoCoreTeam } uint256 minerTokens = _currentYearSupply / DAYS_PER_YEAR; + uint256 referralTokens = minerTokens * 10 / 100; require(minerTokens > 0); + require(referralTokens > 0); _token.safeTransfer(_miner, minerTokens); - - if(_referral != address(0)) { - uint256 referralTokens = minerTokens * 10 / 100; - - require(referralTokens > 0); - - _token.safeTransfer(_referral, referralTokens); - } + _token.safeTransfer(_referral, referralTokens); } function terminate() public onlyCoreTeam { diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol index 6e28d508e..4d737f9f5 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol @@ -4,6 +4,7 @@ contract IAlgoMiner { function isAlgoMiner() public pure returns (bool); function getMinerType() public view returns (uint8); function getCategory() public view returns (uint8); - function isMining() public view returns (bool); function getMiner() public view returns (address); + function getReferral() public view returns (address); + function isMining() public view returns (bool); } \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json index c3bf41b72..f2f99092c 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json @@ -2016,9 +2016,9 @@ } ], "contractDependencies": [ - 750, 86, 693, + 750, 815 ], "contractKind": "contract", diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json index 65fe094ae..6731ab628 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json @@ -522,13 +522,13 @@ "evm": { "bytecode": { "linkReferences": {}, - "object": "60806040523480156200001157600080fd5b5060405160a080620014c7833981016040908152815160208301519183015160608401516080909401516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790559294919262000087906401000000006200014c810204565b6200009b336401000000006200016a810204565b620000af3364010000000062000185810204565b60008460ff1610158015620000c8575060058460ff1611155b1515620000d457600080fd5b6005805486919060ff191660018381811115620000ed57fe5b0217905550506005805461ff00191661010060ff9590951694909402939093176201000060b060020a03191662010000600160a060020a03938416021790925560068054600160a060020a031916929091169190911790555062000233565b62000167600282640100000000620011be620001a082021704565b50565b62000167600382640100000000620011be620001a082021704565b62000167600482640100000000620011be620001a082021704565b600160a060020a0381161515620001b657600080fd5b620001cb8282640100000000620001fb810204565b15620001d657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200021357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61128480620002436000396000f30060806040526004361061017f5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630c08bf888114610184578063162f986d1461019b5780631777fb4b146101b057806319a74ab3146101d957806321b79d98146101ee578063231d4e2a1461020357806329d10b6e146102245780632e6b684914610245578063302c11ca14610266578063329b1c921461029757806334cdcf26146102ac578063363aa6c7146102cd5780633e6968b6146102e2578063427534a41461030e5780634969ae7014610323578063608d3d3d1461034e57806374be75921461036f57806380258e471461039057806381a24459146103a55780638329138f146103c657806399f4b251146103ed5780639e614ca014610402578063b2a32cd514610417578063be9524941461042c578063c6846ef814610441578063cdfd0f6414610468578063ce41607a1461047d578063d43acc7914610492578063da408679146104a7578063e9d61859146104bc575b600080fd5b34801561019057600080fd5b506101996104d1565b005b3480156101a757600080fd5b506101996104ef565b3480156101bc57600080fd5b506101c561055e565b604080519115158252519081900360200190f35b3480156101e557600080fd5b506101c5610563565b3480156101fa57600080fd5b5061019961059a565b34801561020f57600080fd5b50610199600160a060020a0360043516610630565b34801561023057600080fd5b50610199600160a060020a036004351661071c565b34801561025157600080fd5b50610199600160a060020a0360043516610739565b34801561027257600080fd5b5061027b610756565b60408051600160a060020a039092168252519081900360200190f35b3480156102a357600080fd5b5061027b61076b565b3480156102b857600080fd5b506101c5600160a060020a036004351661077a565b3480156102d957600080fd5b50610199610795565b3480156102ee57600080fd5b506102f7610846565b6040805161ffff9092168252519081900360200190f35b34801561031a57600080fd5b50610199610857565b34801561032f57600080fd5b506103386108c3565b6040805160ff9092168252519081900360200190f35b34801561035a57600080fd5b506101c5600160a060020a03600435166108d7565b34801561037b57600080fd5b50610199600160a060020a03600435166108ea565b34801561039c57600080fd5b50610338610907565b3480156103b157600080fd5b506101c5600160a060020a0360043516610915565b3480156103d257600080fd5b50610199600160a060020a0360043581169060243516610928565b3480156103f957600080fd5b506101996109db565b34801561040e57600080fd5b50610199610c2e565b34801561042357600080fd5b50610199610c9f565b34801561043857600080fd5b50610199610dfd565b34801561044d57600080fd5b50610456610e06565b60408051918252519081900360200190f35b34801561047457600080fd5b50610456610e0c565b34801561048957600080fd5b50610338610e12565b34801561049e57600080fd5b50610199610e35565b3480156104b357600080fd5b50610199610e3e565b3480156104c857600080fd5b50610199610ecf565b6104da336108d7565b15156104e557600080fd5b6104ed610ed8565b565b60005460a060020a900460ff161561050657600080fd5b61050f33610915565b151561051a57600080fd5b600160065460a060020a900460ff16600381111561053457fe5b1461053e57600080fd5b600680546002919060a060020a60ff02191660a060020a835b0217905550565b600190565b6000600160065460a060020a900460ff16600381111561057f57fe5b148015610595575060065460a860020a900460ff165b905090565b60005460a060020a900460ff16156105b157600080fd5b600554620100009004600160a060020a031633146105ce57600080fd5b600160065460a060020a900460ff1660038111156105e857fe5b146105f257600080fd5b60065460a860020a900460ff161561060957600080fd5b6006805475ff000000000000000000000000000000000000000000191660a860020a179055565b610639336108d7565b151561064457600080fd5b600060065460a060020a900460ff16600381111561065e57fe5b1461066857600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051610719928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b1580156106d457600080fd5b505af11580156106e8573d6000803e3d6000fd5b505050506040513d60208110156106fe57600080fd5b5051600154600160a060020a0316919063ffffffff610f9f16565b50565b61072533610915565b151561073057600080fd5b61071981611057565b610742336108d7565b151561074d57600080fd5b61071981611068565b600554620100009004600160a060020a031690565b600654600160a060020a031690565b600061078d60028363ffffffff61107916565b90505b919050565b60005460a060020a900460ff16156107ac57600080fd5b6107b533610915565b15156107c057600080fd5b600360065460a060020a900460ff1660038111156107da57fe5b14156107e557600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff00001916905560a060020a60ff021916740300000000000000000000000000000000000000001775ff00ffffffffffffffffffffffffffffffffffffffff19169055565b60065460b860020a900461ffff1690565b60005460a060020a900460ff161561086e57600080fd5b61087733610915565b151561088257600080fd5b600260065460a060020a900460ff16600381111561089c57fe5b146108a657600080fd5b600680546001919060a060020a60ff02191660a060020a83610557565b60055460009060ff16600181111561059557fe5b600061078d60038363ffffffff61107916565b6108f33361077a565b15156108fe57600080fd5b610719816110b0565b600554610100900460ff1690565b600061078d60048363ffffffff61107916565b60005460a060020a900460ff161561093f57600080fd5b61094833610915565b151561095357600080fd5b600360065460a060020a900460ff16600381111561096d57fe5b1461097757600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a039687160217905560a060020a60ff02191660a060020a1773ffffffffffffffffffffffffffffffffffffffff191691909216179055565b60008054819060a060020a900460ff16156109f557600080fd5b6109fe3361077a565b1515610a0957600080fd5b600060055460ff166001811115610a1c57fe5b14610a2657600080fd5b600160065460a060020a900460ff166003811115610a4057fe5b14610a4a57600080fd5b60065460a860020a900460ff161515610a6257600080fd5b60065460b860020a900461ffff161515610ad8576006805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610ba0565b60068054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610ba0576006805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600754600290046007555b60075461016d9004915060008211610bb757600080fd5b600554600154610be191600160a060020a039182169162010000909104168463ffffffff610f9f16565b600654600160a060020a031615610c2a57506064600a82020460008111610c0757600080fd5b600654600154610c2a91600160a060020a0391821691168363ffffffff610f9f16565b5050565b60005460a060020a900460ff1615610c4557600080fd5b610c4e336108d7565b1515610c5957600080fd5b600060065460a060020a900460ff166003811115610c7357fe5b1415610c7e57600080fd5b6006805475ffff000000000000000000000000000000000000000019169055565b600080548190819060a060020a900460ff1615610cbb57600080fd5b610cc4336108d7565b1515610ccf57600080fd5b600060065460a060020a900460ff166003811115610ce957fe5b14610cf357600080fd5b600060055460ff166001811115610d0657fe5b148015610d135750600754155b15610de257600554610d2c90610100900460ff166110c1565b92506064600a8402600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519390920486019450600160a060020a0316916370a08231916024808201926020929091908290030181600087803b158015610da057600080fd5b505af1158015610db4573d6000803e3d6000fd5b505050506040513d6020811015610dca57600080fd5b50519050818114610dda57600080fd5b600283046007555b50506006805460a060020a60ff02191660a060020a17905550565b6104ed33611173565b61016d81565b60075490565b600654760100000000000000000000000000000000000000000000900460ff1690565b6104ed33611184565b60005460a060020a900460ff1615610e5557600080fd5b600554620100009004600160a060020a03163314610e7257600080fd5b600160065460a060020a900460ff166003811115610e8c57fe5b14610e9657600080fd5b60065460a860020a900460ff161515610eae57600080fd5b6006805475ff00000000000000000000000000000000000000000019169055565b6104ed33611195565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610f3d57600080fd5b505af1158015610f51573d6000803e3d6000fd5b505050506040513d6020811015610f6757600080fd5b505190506000811115610f9757600054600154610f9791600160a060020a0391821691168363ffffffff610f9f16565b6107196111a6565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561101b57600080fd5b505af115801561102f573d6000803e3d6000fd5b505050506040513d602081101561104557600080fd5b5051151561105257600080fd5b505050565b61071960048263ffffffff6111be16565b61071960038263ffffffff6111be16565b6000600160a060020a038216151561109057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61071960028263ffffffff6111be16565b600060ff821615156110de575069152d02c7e14af6800000610790565b8160ff16600114156110fb575069d3c21bcecceda1000000610790565b8160ff166002141561111957506a01a784379d99db42000000610790565b8160ff166003141561113757506a027b46536c66c8e3000000610790565b8160ff166004141561115557506a034f086f3b33b684000000610790565b8160ff166005141561079057506a0422ca8b0a00a425000000610790565b61071960048263ffffffff61120c16565b61071960038263ffffffff61120c16565b61071960028263ffffffff61120c16565b6000805460a060020a60ff02191660a060020a179055565b600160a060020a03811615156111d357600080fd5b6111dd8282611079565b156111e757600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561122157600080fd5b61122b8282611079565b151561123657600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820d37bea8cf990d36f43cc5b4af261b636128105f981b5fa7014ca1bf22a0030880029", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0xA0 DUP1 PUSH3 0x14C7 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 SWAP1 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD SWAP2 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 SWAP1 SWAP5 ADD MLOAD PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP2 DUP3 AND DUP2 OR PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND OR SWAP1 SSTORE SWAP3 SWAP5 SWAP2 SWAP3 PUSH3 0x87 SWAP1 PUSH5 0x100000000 PUSH3 0x14C DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x9B CALLER PUSH5 0x100000000 PUSH3 0x16A DUP2 MUL DIV JUMP JUMPDEST PUSH3 0xAF CALLER PUSH5 0x100000000 PUSH3 0x185 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0xFF AND LT ISZERO DUP1 ISZERO PUSH3 0xC8 JUMPI POP PUSH1 0x5 DUP5 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH3 0xD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD DUP7 SWAP2 SWAP1 PUSH1 0xFF NOT AND PUSH1 0x1 DUP4 DUP2 DUP2 GT ISZERO PUSH3 0xED JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP POP PUSH1 0x5 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 PUSH1 0xFF SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 MUL SWAP4 SWAP1 SWAP4 OR PUSH3 0x10000 PUSH1 0xB0 PUSH1 0x2 EXP SUB NOT AND PUSH3 0x10000 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP4 DUP5 AND MUL OR SWAP1 SWAP3 SSTORE PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0x233 JUMP JUMPDEST PUSH3 0x167 PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH3 0x11BE PUSH3 0x1A0 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x167 PUSH1 0x3 DUP3 PUSH5 0x100000000 PUSH3 0x11BE PUSH3 0x1A0 DUP3 MUL OR DIV JUMP JUMPDEST PUSH3 0x167 PUSH1 0x4 DUP3 PUSH5 0x100000000 PUSH3 0x11BE PUSH3 0x1A0 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH3 0x1B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1CB DUP3 DUP3 PUSH5 0x100000000 PUSH3 0x1FB DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH3 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1284 DUP1 PUSH3 0x243 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x17F JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0xC08BF88 DUP2 EQ PUSH2 0x184 JUMPI DUP1 PUSH4 0x162F986D EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0x1777FB4B EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x19A74AB3 EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0x21B79D98 EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0x231D4E2A EQ PUSH2 0x203 JUMPI DUP1 PUSH4 0x29D10B6E EQ PUSH2 0x224 JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0x245 JUMPI DUP1 PUSH4 0x302C11CA EQ PUSH2 0x266 JUMPI DUP1 PUSH4 0x329B1C92 EQ PUSH2 0x297 JUMPI DUP1 PUSH4 0x34CDCF26 EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0x363AA6C7 EQ PUSH2 0x2CD JUMPI DUP1 PUSH4 0x3E6968B6 EQ PUSH2 0x2E2 JUMPI DUP1 PUSH4 0x427534A4 EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0x4969AE70 EQ PUSH2 0x323 JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x34E JUMPI DUP1 PUSH4 0x74BE7592 EQ PUSH2 0x36F JUMPI DUP1 PUSH4 0x80258E47 EQ PUSH2 0x390 JUMPI DUP1 PUSH4 0x81A24459 EQ PUSH2 0x3A5 JUMPI DUP1 PUSH4 0x8329138F EQ PUSH2 0x3C6 JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x3ED JUMPI DUP1 PUSH4 0x9E614CA0 EQ PUSH2 0x402 JUMPI DUP1 PUSH4 0xB2A32CD5 EQ PUSH2 0x417 JUMPI DUP1 PUSH4 0xBE952494 EQ PUSH2 0x42C JUMPI DUP1 PUSH4 0xC6846EF8 EQ PUSH2 0x441 JUMPI DUP1 PUSH4 0xCDFD0F64 EQ PUSH2 0x468 JUMPI DUP1 PUSH4 0xCE41607A EQ PUSH2 0x47D JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x492 JUMPI DUP1 PUSH4 0xDA408679 EQ PUSH2 0x4A7 JUMPI DUP1 PUSH4 0xE9D61859 EQ PUSH2 0x4BC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0x4D1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0x4EF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH2 0x55E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH2 0x563 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0x59A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x630 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x230 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x71C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x251 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x739 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27B PUSH2 0x756 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27B PUSH2 0x76B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x77A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0x795 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F7 PUSH2 0x846 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0xFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0x857 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x338 PUSH2 0x8C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x8D7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x8EA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x338 PUSH2 0x907 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x915 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH2 0x928 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0x9DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0xC2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x423 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0xC9F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0xDFD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x456 PUSH2 0xE06 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x474 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x456 PUSH2 0xE0C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x489 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x338 PUSH2 0xE12 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x49E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0xE35 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0xE3E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0xECF JUMP JUMPDEST PUSH2 0x4DA CALLER PUSH2 0x8D7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x4E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4ED PUSH2 0xED8 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x506 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x50F CALLER PUSH2 0x915 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x51A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x534 JUMPI INVALID JUMPDEST EQ PUSH2 0x53E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x2 SWAP2 SWAP1 PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 JUMPDEST MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x57F JUMPI INVALID JUMPDEST EQ DUP1 ISZERO PUSH2 0x595 JUMPI POP PUSH1 0x6 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x5B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0x5CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5E8 JUMPI INVALID JUMPDEST EQ PUSH2 0x5F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND PUSH1 0xA8 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x639 CALLER PUSH2 0x8D7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x644 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x65E JUMPI INVALID JUMPDEST EQ PUSH2 0x668 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x719 SWAP3 DUP5 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xF9F AND JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x725 CALLER PUSH2 0x915 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x730 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x719 DUP2 PUSH2 0x1057 JUMP JUMPDEST PUSH2 0x742 CALLER PUSH2 0x8D7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x74D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x719 DUP2 PUSH2 0x1068 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78D PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1079 AND JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x7AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7B5 CALLER PUSH2 0x915 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x7C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x7DA JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x7E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x5 DUP1 SLOAD PUSH22 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 NOT AND SWAP1 SSTORE PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH21 0x30000000000000000000000000000000000000000 OR PUSH22 0xFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x86E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x877 CALLER PUSH2 0x915 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x882 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x89C JUMPI INVALID JUMPDEST EQ PUSH2 0x8A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 SWAP2 SWAP1 PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 PUSH2 0x557 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x595 JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH2 0x78D PUSH1 0x3 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1079 AND JUMP JUMPDEST PUSH2 0x8F3 CALLER PUSH2 0x77A JUMP JUMPDEST ISZERO ISZERO PUSH2 0x8FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x719 DUP2 PUSH2 0x10B0 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78D PUSH1 0x4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1079 AND JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x93F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x948 CALLER PUSH2 0x915 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x953 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x96D JUMPI INVALID JUMPDEST EQ PUSH2 0x977 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x5 DUP1 SLOAD PUSH22 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 NOT AND PUSH3 0x10000 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP7 DUP8 AND MUL OR SWAP1 SSTORE PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x9F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9FE CALLER PUSH2 0x77A JUMP JUMPDEST ISZERO ISZERO PUSH2 0xA09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xA1C JUMPI INVALID JUMPDEST EQ PUSH2 0xA26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA40 JUMPI INVALID JUMPDEST EQ PUSH2 0xA4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0xA62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH2 0xFFFF AND ISZERO ISZERO PUSH2 0xAD8 JUMPI PUSH1 0x6 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP2 AND PUSH23 0x100000000000000000000000000000000000000000000 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH2 0xBA0 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH2 0xFFFF PUSH1 0xB8 PUSH1 0x2 EXP DUP1 DUP5 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD DUP2 AND DUP3 MUL PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE SWAP1 SWAP2 DIV AND PUSH2 0x16E EQ ISZERO PUSH2 0xBA0 JUMPI PUSH1 0x6 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH1 0x1 PUSH1 0xFF PUSH23 0x100000000000000000000000000000000000000000000 DUP1 DUP6 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD AND MUL PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH1 0x7 SLOAD PUSH1 0x2 SWAP1 DIV PUSH1 0x7 SSTORE JUMPDEST PUSH1 0x7 SLOAD PUSH2 0x16D SWAP1 DIV SWAP2 POP PUSH1 0x0 DUP3 GT PUSH2 0xBB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 SLOAD PUSH2 0xBE1 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 PUSH3 0x10000 SWAP1 SWAP2 DIV AND DUP5 PUSH4 0xFFFFFFFF PUSH2 0xF9F AND JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND ISZERO PUSH2 0xC2A JUMPI POP PUSH1 0x64 PUSH1 0xA DUP3 MUL DIV PUSH1 0x0 DUP2 GT PUSH2 0xC07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 SLOAD PUSH2 0xC2A SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xF9F AND JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xC45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC4E CALLER PUSH2 0x8D7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xC59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xC73 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xC7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH22 0xFFFF0000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 DUP2 SWAP1 PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xCBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCC4 CALLER PUSH2 0x8D7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xCCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xCE9 JUMPI INVALID JUMPDEST EQ PUSH2 0xCF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xD06 JUMPI INVALID JUMPDEST EQ DUP1 ISZERO PUSH2 0xD13 JUMPI POP PUSH1 0x7 SLOAD ISZERO JUMPDEST ISZERO PUSH2 0xDE2 JUMPI PUSH1 0x5 SLOAD PUSH2 0xD2C SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x10C1 JUMP JUMPDEST SWAP3 POP PUSH1 0x64 PUSH1 0xA DUP5 MUL PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP4 SWAP1 SWAP3 DIV DUP7 ADD SWAP5 POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDB4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP2 DUP2 EQ PUSH2 0xDDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 DUP4 DIV PUSH1 0x7 SSTORE JUMPDEST POP POP PUSH1 0x6 DUP1 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x4ED CALLER PUSH2 0x1173 JUMP JUMPDEST PUSH2 0x16D DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH23 0x100000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x4ED CALLER PUSH2 0x1184 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xE55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0xE72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xE8C JUMPI INVALID JUMPDEST EQ PUSH2 0xE96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0xEAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x4ED CALLER PUSH2 0x1195 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF51 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0xF97 JUMPI PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0xF97 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xF9F AND JUMP JUMPDEST PUSH2 0x719 PUSH2 0x11A6 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x101B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x102F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1045 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x1052 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x719 PUSH1 0x4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x11BE AND JUMP JUMPDEST PUSH2 0x719 PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x11BE AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x1090 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x719 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x11BE AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND ISZERO ISZERO PUSH2 0x10DE JUMPI POP PUSH10 0x152D02C7E14AF6800000 PUSH2 0x790 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x10FB JUMPI POP PUSH10 0xD3C21BCECCEDA1000000 PUSH2 0x790 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x1119 JUMPI POP PUSH11 0x1A784379D99DB42000000 PUSH2 0x790 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x1137 JUMPI POP PUSH11 0x27B46536C66C8E3000000 PUSH2 0x790 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x1155 JUMPI POP PUSH11 0x34F086F3B33B684000000 PUSH2 0x790 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x790 JUMPI POP PUSH11 0x422CA8B0A00A425000000 PUSH2 0x790 JUMP JUMPDEST PUSH2 0x719 PUSH1 0x4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x120C AND JUMP JUMPDEST PUSH2 0x719 PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x120C AND JUMP JUMPDEST PUSH2 0x719 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x120C AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x11D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11DD DUP3 DUP3 PUSH2 0x1079 JUMP JUMPDEST ISZERO PUSH2 0x11E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x1221 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x122B DUP3 DUP3 PUSH2 0x1079 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x1236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xd3 PUSH28 0xEA8CF990D36F43CC5B4AF261B636128105F981B5FA7014CA1BF22A00 ADDRESS DUP9 STOP 0x29 ", - "sourceMap": "620:5468:2:-;;;1311:490;8:9:-1;5:2;;;30:1;27;20:12;5:2;1311:490:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;156:8:7;:21;;167:10;-1:-1:-1;;;;;;156:21:7;;;;;-1:-1:-1;;;;;;188:19:7;;;;-1:-1:-1;636:29:5;;;;;-1:-1:-1;;;;;636:29:5;;;;;1311:490:2;;;;364:22:4;;:10;;;;:22;:::i;:::-;368:24:1;381:10;368:12;;;;:24;:::i;:::-;366:26:3;381:10;366:14;;;;:26;:::i;:::-;1624:1:2;1612:8;:13;;;;:30;;;;;1641:1;1629:8;:13;;;;1612:30;1604:39;;;;;;;;1656:10;:22;;1669:9;;1656:10;-1:-1:-1;;1656:22:2;;1669:9;1656:22;;;;;;;;;;;;-1:-1:-1;;1689:9:2;:20;;-1:-1:-1;;1689:20:2;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1720:28:2;;-1:-1:-1;;;;;1720:28:2;;;;;;;;1759:9;:34;;-1:-1:-1;;;;;;1759:34:2;;;;;;;;;;;-1:-1:-1;620:5468:2;;800:92:4;857:27;:14;876:7;857:18;;;;;;:27;:::i;:::-;800:92;:::o;824:96:1:-;883:29;:16;904:7;883:20;;;;;;:29;:::i;836:94:3:-;897:25;:12;914:7;897:16;;;;;;:25;:::i;244:167:8:-;-1:-1:-1;;;;;316:21:8;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:8;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:8;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:8;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:8;:11;:20;;;;;;;;;;;;;;;725:166::o;620:5468:2:-;;;;;;;" + "object": "60806040523480156200001157600080fd5b5060405160a080620014f7833981016040908152815160208301519183015160608401516080909401516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790559294919262000087906401000000006200018e810204565b6200009b33640100000000620001ac810204565b620000af33640100000000620001c7810204565b60008460ff1610158015620000c8575060058460ff1611155b1515620000d457600080fd5b600160a060020a0383161515620000ea57600080fd5b6000856001811115620000f957fe5b14156200011657600160a060020a03821615156200011657600080fd5b6005805486919060ff1916600183818111156200012f57fe5b0217905550506005805461ff00191661010060ff9590951694909402939093176201000060b060020a03191662010000600160a060020a03938416021790925560068054600160a060020a031916929091169190911790555062000275565b620001a9600282640100000000620011ac620001e282021704565b50565b620001a9600382640100000000620011ac620001e282021704565b620001a9600482640100000000620011ac620001e282021704565b600160a060020a0381161515620001f857600080fd5b6200020d82826401000000006200023d810204565b156200021857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200025557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61127280620002856000396000f30060806040526004361061017f5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630c08bf888114610184578063162f986d1461019b5780631777fb4b146101b057806319a74ab3146101d957806321b79d98146101ee578063231d4e2a1461020357806329d10b6e146102245780632e6b684914610245578063302c11ca14610266578063329b1c921461029757806334cdcf26146102ac578063363aa6c7146102cd5780633e6968b6146102e2578063427534a41461030e5780634969ae7014610323578063608d3d3d1461034e57806374be75921461036f57806380258e471461039057806381a24459146103a55780638329138f146103c657806399f4b251146103ed5780639e614ca014610402578063b2a32cd514610417578063be9524941461042c578063c6846ef814610441578063cdfd0f6414610468578063ce41607a1461047d578063d43acc7914610492578063da408679146104a7578063e9d61859146104bc575b600080fd5b34801561019057600080fd5b506101996104d1565b005b3480156101a757600080fd5b506101996104ef565b3480156101bc57600080fd5b506101c561055e565b604080519115158252519081900360200190f35b3480156101e557600080fd5b506101c5610563565b3480156101fa57600080fd5b5061019961059a565b34801561020f57600080fd5b50610199600160a060020a0360043516610630565b34801561023057600080fd5b50610199600160a060020a036004351661071c565b34801561025157600080fd5b50610199600160a060020a0360043516610739565b34801561027257600080fd5b5061027b610756565b60408051600160a060020a039092168252519081900360200190f35b3480156102a357600080fd5b5061027b61076b565b3480156102b857600080fd5b506101c5600160a060020a036004351661077a565b3480156102d957600080fd5b50610199610795565b3480156102ee57600080fd5b506102f7610846565b6040805161ffff9092168252519081900360200190f35b34801561031a57600080fd5b50610199610857565b34801561032f57600080fd5b506103386108c3565b6040805160ff9092168252519081900360200190f35b34801561035a57600080fd5b506101c5600160a060020a03600435166108d7565b34801561037b57600080fd5b50610199600160a060020a03600435166108ea565b34801561039c57600080fd5b50610338610907565b3480156103b157600080fd5b506101c5600160a060020a0360043516610915565b3480156103d257600080fd5b50610199600160a060020a0360043581169060243516610928565b3480156103f957600080fd5b506101996109db565b34801561040e57600080fd5b50610199610c1c565b34801561042357600080fd5b50610199610c8d565b34801561043857600080fd5b50610199610deb565b34801561044d57600080fd5b50610456610df4565b60408051918252519081900360200190f35b34801561047457600080fd5b50610456610dfa565b34801561048957600080fd5b50610338610e00565b34801561049e57600080fd5b50610199610e23565b3480156104b357600080fd5b50610199610e2c565b3480156104c857600080fd5b50610199610ebd565b6104da336108d7565b15156104e557600080fd5b6104ed610ec6565b565b60005460a060020a900460ff161561050657600080fd5b61050f33610915565b151561051a57600080fd5b600160065460a060020a900460ff16600381111561053457fe5b1461053e57600080fd5b600680546002919060a060020a60ff02191660a060020a835b0217905550565b600190565b6000600160065460a060020a900460ff16600381111561057f57fe5b148015610595575060065460a860020a900460ff165b905090565b60005460a060020a900460ff16156105b157600080fd5b600554620100009004600160a060020a031633146105ce57600080fd5b600160065460a060020a900460ff1660038111156105e857fe5b146105f257600080fd5b60065460a860020a900460ff161561060957600080fd5b6006805475ff000000000000000000000000000000000000000000191660a860020a179055565b610639336108d7565b151561064457600080fd5b600060065460a060020a900460ff16600381111561065e57fe5b1461066857600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051610719928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b1580156106d457600080fd5b505af11580156106e8573d6000803e3d6000fd5b505050506040513d60208110156106fe57600080fd5b5051600154600160a060020a0316919063ffffffff610f8d16565b50565b61072533610915565b151561073057600080fd5b61071981611045565b610742336108d7565b151561074d57600080fd5b61071981611056565b600554620100009004600160a060020a031690565b600654600160a060020a031690565b600061078d60028363ffffffff61106716565b90505b919050565b60005460a060020a900460ff16156107ac57600080fd5b6107b533610915565b15156107c057600080fd5b600360065460a060020a900460ff1660038111156107da57fe5b14156107e557600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff00001916905560a060020a60ff021916740300000000000000000000000000000000000000001775ff00ffffffffffffffffffffffffffffffffffffffff19169055565b60065460b860020a900461ffff1690565b60005460a060020a900460ff161561086e57600080fd5b61087733610915565b151561088257600080fd5b600260065460a060020a900460ff16600381111561089c57fe5b146108a657600080fd5b600680546001919060a060020a60ff02191660a060020a83610557565b60055460009060ff16600181111561059557fe5b600061078d60038363ffffffff61106716565b6108f33361077a565b15156108fe57600080fd5b6107198161109e565b600554610100900460ff1690565b600061078d60048363ffffffff61106716565b60005460a060020a900460ff161561093f57600080fd5b61094833610915565b151561095357600080fd5b600360065460a060020a900460ff16600381111561096d57fe5b1461097757600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a039687160217905560a060020a60ff02191660a060020a1773ffffffffffffffffffffffffffffffffffffffff191691909216179055565b60008054819060a060020a900460ff16156109f557600080fd5b6109fe3361077a565b1515610a0957600080fd5b600060055460ff166001811115610a1c57fe5b14610a2657600080fd5b600160065460a060020a900460ff166003811115610a4057fe5b14610a4a57600080fd5b60065460a860020a900460ff161515610a6257600080fd5b60065460b860020a900461ffff161515610ad8576006805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610ba0565b60068054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610ba0576006805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600754600290046007555b505060075461016d90046064600a82020460008211610bbe57600080fd5b60008111610bcb57600080fd5b600554600154610bf591600160a060020a039182169162010000909104168463ffffffff610f8d16565b600654600154610c1891600160a060020a0391821691168363ffffffff610f8d16565b5050565b60005460a060020a900460ff1615610c3357600080fd5b610c3c336108d7565b1515610c4757600080fd5b600060065460a060020a900460ff166003811115610c6157fe5b1415610c6c57600080fd5b6006805475ffff000000000000000000000000000000000000000019169055565b600080548190819060a060020a900460ff1615610ca957600080fd5b610cb2336108d7565b1515610cbd57600080fd5b600060065460a060020a900460ff166003811115610cd757fe5b14610ce157600080fd5b600060055460ff166001811115610cf457fe5b148015610d015750600754155b15610dd057600554610d1a90610100900460ff166110af565b92506064600a8402600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519390920486019450600160a060020a0316916370a08231916024808201926020929091908290030181600087803b158015610d8e57600080fd5b505af1158015610da2573d6000803e3d6000fd5b505050506040513d6020811015610db857600080fd5b50519050818114610dc857600080fd5b600283046007555b50506006805460a060020a60ff02191660a060020a17905550565b6104ed33611161565b61016d81565b60075490565b600654760100000000000000000000000000000000000000000000900460ff1690565b6104ed33611172565b60005460a060020a900460ff1615610e4357600080fd5b600554620100009004600160a060020a03163314610e6057600080fd5b600160065460a060020a900460ff166003811115610e7a57fe5b14610e8457600080fd5b60065460a860020a900460ff161515610e9c57600080fd5b6006805475ff00000000000000000000000000000000000000000019169055565b6104ed33611183565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610f2b57600080fd5b505af1158015610f3f573d6000803e3d6000fd5b505050506040513d6020811015610f5557600080fd5b505190506000811115610f8557600054600154610f8591600160a060020a0391821691168363ffffffff610f8d16565b610719611194565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561100957600080fd5b505af115801561101d573d6000803e3d6000fd5b505050506040513d602081101561103357600080fd5b5051151561104057600080fd5b505050565b61071960048263ffffffff6111ac16565b61071960038263ffffffff6111ac16565b6000600160a060020a038216151561107e57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61071960028263ffffffff6111ac16565b600060ff821615156110cc575069152d02c7e14af6800000610790565b8160ff16600114156110e9575069d3c21bcecceda1000000610790565b8160ff166002141561110757506a01a784379d99db42000000610790565b8160ff166003141561112557506a027b46536c66c8e3000000610790565b8160ff166004141561114357506a034f086f3b33b684000000610790565b8160ff166005141561079057506a0422ca8b0a00a425000000610790565b61071960048263ffffffff6111fa16565b61071960038263ffffffff6111fa16565b61071960028263ffffffff6111fa16565b6000805460a060020a60ff02191660a060020a179055565b600160a060020a03811615156111c157600080fd5b6111cb8282611067565b156111d557600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561120f57600080fd5b6112198282611067565b151561122457600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058205f527260d789022d74031e68eb390ff4f3057e6fce4f2adde7c12af38948fde60029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0xA0 DUP1 PUSH3 0x14F7 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 SWAP1 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD SWAP2 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 SWAP1 SWAP5 ADD MLOAD PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP2 DUP3 AND DUP2 OR PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND OR SWAP1 SSTORE SWAP3 SWAP5 SWAP2 SWAP3 PUSH3 0x87 SWAP1 PUSH5 0x100000000 PUSH3 0x18E DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x9B CALLER PUSH5 0x100000000 PUSH3 0x1AC DUP2 MUL DIV JUMP JUMPDEST PUSH3 0xAF CALLER PUSH5 0x100000000 PUSH3 0x1C7 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0xFF AND LT ISZERO DUP1 ISZERO PUSH3 0xC8 JUMPI POP PUSH1 0x5 DUP5 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH3 0xD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH3 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 DUP2 GT ISZERO PUSH3 0xF9 JUMPI INVALID JUMPDEST EQ ISZERO PUSH3 0x116 JUMPI PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x116 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD DUP7 SWAP2 SWAP1 PUSH1 0xFF NOT AND PUSH1 0x1 DUP4 DUP2 DUP2 GT ISZERO PUSH3 0x12F JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP POP PUSH1 0x5 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 PUSH1 0xFF SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 MUL SWAP4 SWAP1 SWAP4 OR PUSH3 0x10000 PUSH1 0xB0 PUSH1 0x2 EXP SUB NOT AND PUSH3 0x10000 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP4 DUP5 AND MUL OR SWAP1 SWAP3 SSTORE PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0x275 JUMP JUMPDEST PUSH3 0x1A9 PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH3 0x11AC PUSH3 0x1E2 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x1A9 PUSH1 0x3 DUP3 PUSH5 0x100000000 PUSH3 0x11AC PUSH3 0x1E2 DUP3 MUL OR DIV JUMP JUMPDEST PUSH3 0x1A9 PUSH1 0x4 DUP3 PUSH5 0x100000000 PUSH3 0x11AC PUSH3 0x1E2 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH3 0x1F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x20D DUP3 DUP3 PUSH5 0x100000000 PUSH3 0x23D DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH3 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x255 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1272 DUP1 PUSH3 0x285 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x17F JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0xC08BF88 DUP2 EQ PUSH2 0x184 JUMPI DUP1 PUSH4 0x162F986D EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0x1777FB4B EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x19A74AB3 EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0x21B79D98 EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0x231D4E2A EQ PUSH2 0x203 JUMPI DUP1 PUSH4 0x29D10B6E EQ PUSH2 0x224 JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0x245 JUMPI DUP1 PUSH4 0x302C11CA EQ PUSH2 0x266 JUMPI DUP1 PUSH4 0x329B1C92 EQ PUSH2 0x297 JUMPI DUP1 PUSH4 0x34CDCF26 EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0x363AA6C7 EQ PUSH2 0x2CD JUMPI DUP1 PUSH4 0x3E6968B6 EQ PUSH2 0x2E2 JUMPI DUP1 PUSH4 0x427534A4 EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0x4969AE70 EQ PUSH2 0x323 JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x34E JUMPI DUP1 PUSH4 0x74BE7592 EQ PUSH2 0x36F JUMPI DUP1 PUSH4 0x80258E47 EQ PUSH2 0x390 JUMPI DUP1 PUSH4 0x81A24459 EQ PUSH2 0x3A5 JUMPI DUP1 PUSH4 0x8329138F EQ PUSH2 0x3C6 JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x3ED JUMPI DUP1 PUSH4 0x9E614CA0 EQ PUSH2 0x402 JUMPI DUP1 PUSH4 0xB2A32CD5 EQ PUSH2 0x417 JUMPI DUP1 PUSH4 0xBE952494 EQ PUSH2 0x42C JUMPI DUP1 PUSH4 0xC6846EF8 EQ PUSH2 0x441 JUMPI DUP1 PUSH4 0xCDFD0F64 EQ PUSH2 0x468 JUMPI DUP1 PUSH4 0xCE41607A EQ PUSH2 0x47D JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x492 JUMPI DUP1 PUSH4 0xDA408679 EQ PUSH2 0x4A7 JUMPI DUP1 PUSH4 0xE9D61859 EQ PUSH2 0x4BC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0x4D1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0x4EF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH2 0x55E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH2 0x563 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0x59A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x630 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x230 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x71C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x251 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x739 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27B PUSH2 0x756 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27B PUSH2 0x76B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x77A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0x795 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F7 PUSH2 0x846 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0xFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0x857 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x338 PUSH2 0x8C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x8D7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x8EA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x338 PUSH2 0x907 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x915 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH2 0x928 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0x9DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0xC1C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x423 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0xC8D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0xDEB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x456 PUSH2 0xDF4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x474 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x456 PUSH2 0xDFA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x489 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x338 PUSH2 0xE00 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x49E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0xE23 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0xE2C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x4DA CALLER PUSH2 0x8D7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x4E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4ED PUSH2 0xEC6 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x506 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x50F CALLER PUSH2 0x915 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x51A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x534 JUMPI INVALID JUMPDEST EQ PUSH2 0x53E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x2 SWAP2 SWAP1 PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 JUMPDEST MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x57F JUMPI INVALID JUMPDEST EQ DUP1 ISZERO PUSH2 0x595 JUMPI POP PUSH1 0x6 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x5B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0x5CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5E8 JUMPI INVALID JUMPDEST EQ PUSH2 0x5F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND PUSH1 0xA8 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x639 CALLER PUSH2 0x8D7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x644 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x65E JUMPI INVALID JUMPDEST EQ PUSH2 0x668 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x719 SWAP3 DUP5 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xF8D AND JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x725 CALLER PUSH2 0x915 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x730 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x719 DUP2 PUSH2 0x1045 JUMP JUMPDEST PUSH2 0x742 CALLER PUSH2 0x8D7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x74D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x719 DUP2 PUSH2 0x1056 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78D PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1067 AND JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x7AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7B5 CALLER PUSH2 0x915 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x7C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x7DA JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x7E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x5 DUP1 SLOAD PUSH22 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 NOT AND SWAP1 SSTORE PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH21 0x30000000000000000000000000000000000000000 OR PUSH22 0xFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x86E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x877 CALLER PUSH2 0x915 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x882 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x89C JUMPI INVALID JUMPDEST EQ PUSH2 0x8A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 SWAP2 SWAP1 PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 PUSH2 0x557 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x595 JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH2 0x78D PUSH1 0x3 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1067 AND JUMP JUMPDEST PUSH2 0x8F3 CALLER PUSH2 0x77A JUMP JUMPDEST ISZERO ISZERO PUSH2 0x8FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x719 DUP2 PUSH2 0x109E JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78D PUSH1 0x4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1067 AND JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x93F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x948 CALLER PUSH2 0x915 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x953 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x96D JUMPI INVALID JUMPDEST EQ PUSH2 0x977 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x5 DUP1 SLOAD PUSH22 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 NOT AND PUSH3 0x10000 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP7 DUP8 AND MUL OR SWAP1 SSTORE PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x9F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9FE CALLER PUSH2 0x77A JUMP JUMPDEST ISZERO ISZERO PUSH2 0xA09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xA1C JUMPI INVALID JUMPDEST EQ PUSH2 0xA26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA40 JUMPI INVALID JUMPDEST EQ PUSH2 0xA4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0xA62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH2 0xFFFF AND ISZERO ISZERO PUSH2 0xAD8 JUMPI PUSH1 0x6 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP2 AND PUSH23 0x100000000000000000000000000000000000000000000 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH2 0xBA0 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH2 0xFFFF PUSH1 0xB8 PUSH1 0x2 EXP DUP1 DUP5 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD DUP2 AND DUP3 MUL PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE SWAP1 SWAP2 DIV AND PUSH2 0x16E EQ ISZERO PUSH2 0xBA0 JUMPI PUSH1 0x6 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH1 0x1 PUSH1 0xFF PUSH23 0x100000000000000000000000000000000000000000000 DUP1 DUP6 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD AND MUL PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH1 0x7 SLOAD PUSH1 0x2 SWAP1 DIV PUSH1 0x7 SSTORE JUMPDEST POP POP PUSH1 0x7 SLOAD PUSH2 0x16D SWAP1 DIV PUSH1 0x64 PUSH1 0xA DUP3 MUL DIV PUSH1 0x0 DUP3 GT PUSH2 0xBBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0xBCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 SLOAD PUSH2 0xBF5 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 PUSH3 0x10000 SWAP1 SWAP2 DIV AND DUP5 PUSH4 0xFFFFFFFF PUSH2 0xF8D AND JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 SLOAD PUSH2 0xC18 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xF8D AND JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xC33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC3C CALLER PUSH2 0x8D7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xC47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xC61 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xC6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH22 0xFFFF0000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 DUP2 SWAP1 PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xCA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCB2 CALLER PUSH2 0x8D7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xCBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xCD7 JUMPI INVALID JUMPDEST EQ PUSH2 0xCE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xCF4 JUMPI INVALID JUMPDEST EQ DUP1 ISZERO PUSH2 0xD01 JUMPI POP PUSH1 0x7 SLOAD ISZERO JUMPDEST ISZERO PUSH2 0xDD0 JUMPI PUSH1 0x5 SLOAD PUSH2 0xD1A SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x10AF JUMP JUMPDEST SWAP3 POP PUSH1 0x64 PUSH1 0xA DUP5 MUL PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP4 SWAP1 SWAP3 DIV DUP7 ADD SWAP5 POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDA2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP2 DUP2 EQ PUSH2 0xDC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 DUP4 DIV PUSH1 0x7 SSTORE JUMPDEST POP POP PUSH1 0x6 DUP1 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x4ED CALLER PUSH2 0x1161 JUMP JUMPDEST PUSH2 0x16D DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH23 0x100000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x4ED CALLER PUSH2 0x1172 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xE43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0xE60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xE7A JUMPI INVALID JUMPDEST EQ PUSH2 0xE84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0xE9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x4ED CALLER PUSH2 0x1183 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF3F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0xF85 JUMPI PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0xF85 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xF8D AND JUMP JUMPDEST PUSH2 0x719 PUSH2 0x1194 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1009 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x101D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1033 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x1040 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x719 PUSH1 0x4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x11AC AND JUMP JUMPDEST PUSH2 0x719 PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x11AC AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x107E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x719 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x11AC AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND ISZERO ISZERO PUSH2 0x10CC JUMPI POP PUSH10 0x152D02C7E14AF6800000 PUSH2 0x790 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x10E9 JUMPI POP PUSH10 0xD3C21BCECCEDA1000000 PUSH2 0x790 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x1107 JUMPI POP PUSH11 0x1A784379D99DB42000000 PUSH2 0x790 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x1125 JUMPI POP PUSH11 0x27B46536C66C8E3000000 PUSH2 0x790 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x1143 JUMPI POP PUSH11 0x34F086F3B33B684000000 PUSH2 0x790 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x790 JUMPI POP PUSH11 0x422CA8B0A00A425000000 PUSH2 0x790 JUMP JUMPDEST PUSH2 0x719 PUSH1 0x4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x11FA AND JUMP JUMPDEST PUSH2 0x719 PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x11FA AND JUMP JUMPDEST PUSH2 0x719 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x11FA AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x11C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11CB DUP3 DUP3 PUSH2 0x1067 JUMP JUMPDEST ISZERO PUSH2 0x11D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x120F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1219 DUP3 DUP3 PUSH2 0x1067 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x1224 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0x5f MSTORE PUSH19 0x60D789022D74031E68EB390FF4F3057E6FCE4F 0x2a 0xdd 0xe7 0xc1 0x2a RETURN DUP10 0x48 REVERT 0xe6 STOP 0x29 ", + "sourceMap": "620:5566:2:-;;;1311:664;8:9:-1;5:2;;;30:1;27;20:12;5:2;1311:664:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;156:8:7;:21;;167:10;-1:-1:-1;;;;;;156:21:7;;;;;-1:-1:-1;;;;;;188:19:7;;;;-1:-1:-1;636:29:5;;;;;-1:-1:-1;;;;;636:29:5;;;;;1311:664:2;;;;364:22:4;;:10;;;;:22;:::i;:::-;368:24:1;381:10;368:12;;;;:24;:::i;:::-;366:26:3;381:10;366:14;;;;:26;:::i;:::-;1624:1:2;1612:8;:13;;;;:30;;;;;1641:1;1629:8;:13;;;;1612:30;1604:39;;;;;;;;-1:-1:-1;;;;;1662:33:2;;;;1654:42;;;;;;1725:19;1712:9;:32;;;;;;;;;1709:109;;;-1:-1:-1;;;;;1769:36:2;;;;1761:45;;;;;;1830:10;:22;;1843:9;;1830:10;-1:-1:-1;;1830:22:2;;1843:9;1830:22;;;;;;;;;;;;-1:-1:-1;;1863:9:2;:20;;-1:-1:-1;;1863:20:2;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1894:28:2;;-1:-1:-1;;;;;1894:28:2;;;;;;;;1933:9;:34;;-1:-1:-1;;;;;;1933:34:2;;;;;;;;;;;-1:-1:-1;620:5566:2;;800:92:4;857:27;:14;876:7;857:18;;;;;;:27;:::i;:::-;800:92;:::o;824:96:1:-;883:29;:16;904:7;883:20;;;;;;:29;:::i;836:94:3:-;897:25;:12;914:7;897:16;;;;;;:25;:::i;244:167:8:-;-1:-1:-1;;;;;316:21:8;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:8;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:8;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:8;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:8;:11;:20;;;;;;;;;;;;;;;725:166::o;620:5566:2:-;;;;;;;" }, "gasEstimates": { "creation": { - "codeDepositCost": "948000", + "codeDepositCost": "944400", "executionCost": "infinite", "totalCost": "infinite" }, @@ -598,7 +598,7 @@ "terminate()": "0c08bf88" } }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"terminate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pauseMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isAlgoMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isMining\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"startMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newMinerAddress\",\"type\":\"address\"}],\"name\":\"migrateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getReferral\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSystem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopAndRemoveOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentDay\",\"outputs\":[{\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"resumeMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMinerType\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCategory\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSupervisor\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwnerAddress\",\"type\":\"address\"},{\"name\":\"newReferralAddress\",\"type\":\"address\"}],\"name\":\"resetMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"deactivateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"activateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DAYS_PER_YEAR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentYearSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentYear\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"minerType\",\"type\":\"uint8\"},{\"name\":\"category\",\"type\":\"uint8\"},{\"name\":\"minerAccountAddress\",\"type\":\"address\"},{\"name\":\"referralAccountAddress\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":\"AlgoMiner\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol\":{\"keccak256\":\"0x2314139702cc63c8daa379e521abea3be32730ba896f68f3f865749907e64539\",\"urls\":[\"bzzr://b945e0ec5a4ca8a52b5e816c5bb00807d0ca43c5363102821b36c8c4ee98a2d5\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":{\"keccak256\":\"0x33f0f5ea1227c09f23bb01dc90941de6aac68ccf624f8c8843b94f61b0042883\",\"urls\":[\"bzzr://bd3a3d0bbff65fc4367244d68a37a355179565074752d6ecd368a72ff9c5ac87\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol\":{\"keccak256\":\"0x20955eaf60f79f885c941d97e208320c9e0bc1f05b8121342f8187f9a39fd46b\",\"urls\":[\"bzzr://8e30e53aa0322307873f8c0a4fc3c58b7562a0fde92a0921a52bdef4e129ec4b\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol\":{\"keccak256\":\"0x6fffe504e6805d95ca42269cc995a3de9401a12bc037068b056c186ce8569d8d\",\"urls\":[\"bzzr://a0923a2d2b1e4992f552ce49638b19d6d8328950c1d5dc1395f0d625daf21c68\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol\":{\"keccak256\":\"0x71adbf7f060599239b7a981594e43dc8fbe8597fd2853b6fe9e70ff39883d73a\",\"urls\":[\"bzzr://70691c1638cdc0f744f8c5b5a94e4f857ba40ad053816cfbd15e13ed41a3bc66\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0xdc21d3ce2e847a83e62a95fc4e8a31305771c1c6549fba2102ae9a7caa09a1e5\",\"urls\":[\"bzzr://291aa93e18c12398d6d8031308b1a0231d253ec061a5449d0335bd476554383e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol\":{\"keccak256\":\"0x29a8fa3204dbd204355714601ce21d7d717a586a4de21009d8f2a3ca7981963f\",\"urls\":[\"bzzr://55d9b762620cef1e6f7b11a26d6cc123f5b608a59e0d36f9bc0a1e8ff0ff5c42\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"terminate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pauseMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isAlgoMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isMining\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"startMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newMinerAddress\",\"type\":\"address\"}],\"name\":\"migrateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getReferral\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSystem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopAndRemoveOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentDay\",\"outputs\":[{\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"resumeMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMinerType\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCategory\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSupervisor\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwnerAddress\",\"type\":\"address\"},{\"name\":\"newReferralAddress\",\"type\":\"address\"}],\"name\":\"resetMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"deactivateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"activateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DAYS_PER_YEAR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentYearSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentYear\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"minerType\",\"type\":\"uint8\"},{\"name\":\"category\",\"type\":\"uint8\"},{\"name\":\"minerAccountAddress\",\"type\":\"address\"},{\"name\":\"referralAccountAddress\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":\"AlgoMiner\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol\":{\"keccak256\":\"0x2314139702cc63c8daa379e521abea3be32730ba896f68f3f865749907e64539\",\"urls\":[\"bzzr://b945e0ec5a4ca8a52b5e816c5bb00807d0ca43c5363102821b36c8c4ee98a2d5\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":{\"keccak256\":\"0x6539396006d7e6026ab2400540be3063f410d784fb2da2cb173a19ffc582843d\",\"urls\":[\"bzzr://0a7fc440769cf939c984395489ca31b68e34822cabe58b6dd2e94466b5cf841c\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol\":{\"keccak256\":\"0x20955eaf60f79f885c941d97e208320c9e0bc1f05b8121342f8187f9a39fd46b\",\"urls\":[\"bzzr://8e30e53aa0322307873f8c0a4fc3c58b7562a0fde92a0921a52bdef4e129ec4b\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol\":{\"keccak256\":\"0x6fffe504e6805d95ca42269cc995a3de9401a12bc037068b056c186ce8569d8d\",\"urls\":[\"bzzr://a0923a2d2b1e4992f552ce49638b19d6d8328950c1d5dc1395f0d625daf21c68\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol\":{\"keccak256\":\"0x71adbf7f060599239b7a981594e43dc8fbe8597fd2853b6fe9e70ff39883d73a\",\"urls\":[\"bzzr://70691c1638cdc0f744f8c5b5a94e4f857ba40ad053816cfbd15e13ed41a3bc66\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0xdc21d3ce2e847a83e62a95fc4e8a31305771c1c6549fba2102ae9a7caa09a1e5\",\"urls\":[\"bzzr://291aa93e18c12398d6d8031308b1a0231d253ec061a5449d0335bd476554383e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol\":{\"keccak256\":\"0x29a8fa3204dbd204355714601ce21d7d717a586a4de21009d8f2a3ca7981963f\",\"urls\":[\"bzzr://55d9b762620cef1e6f7b11a26d6cc123f5b608a59e0d36f9bc0a1e8ff0ff5c42\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -2591,7 +2591,7 @@ "id": 100, "nodeType": "ImportDirective", "scope": 185, - "sourceUnit": 1162, + "sourceUnit": 1177, "src": "28:189:1", "symbolAliases": [], "unitAlias": "" @@ -2616,10 +2616,10 @@ "id": 101, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1161, + "referencedDeclaration": 1176, "src": "260:5:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$1161", + "typeIdentifier": "t_contract$_Roles_$1176", "typeString": "library Roles" } }, @@ -2630,10 +2630,10 @@ "id": 102, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1074, + "referencedDeclaration": 1089, "src": "270:10:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", "typeString": "struct Roles.Role" } } @@ -2648,7 +2648,7 @@ "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1074_storage", + "typeIdentifier": "t_struct$_Role_$1089_storage", "typeString": "struct Roles.Role" }, "typeName": { @@ -2656,10 +2656,10 @@ "id": 104, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1074, + "referencedDeclaration": 1089, "src": "289:10:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -2684,7 +2684,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1517, + "referencedDeclaration": 1532, "src": "381:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2792,7 +2792,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1517, + "referencedDeclaration": 1532, "src": "462:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2858,10 +2858,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, + "referencedDeclaration": 1535, "src": "443:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -2946,7 +2946,7 @@ "referencedDeclaration": 105, "src": "584:16:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1074_storage", + "typeIdentifier": "t_struct$_Role_$1089_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -2957,10 +2957,10 @@ "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 1160, + "referencedDeclaration": 1175, "src": "584:20:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1074_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1074_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1089_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1089_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, @@ -3220,7 +3220,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1517, + "referencedDeclaration": 1532, "src": "797:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -3347,7 +3347,7 @@ "referencedDeclaration": 105, "src": "883:16:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1074_storage", + "typeIdentifier": "t_struct$_Role_$1089_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -3358,10 +3358,10 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1106, + "referencedDeclaration": 1121, "src": "883:20:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1074_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1074_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1089_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1089_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -3479,7 +3479,7 @@ "referencedDeclaration": 105, "src": "990:16:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1074_storage", + "typeIdentifier": "t_struct$_Role_$1089_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -3490,10 +3490,10 @@ "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 1137, + "referencedDeclaration": 1152, "src": "990:23:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1074_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1074_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1089_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1089_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -3585,10 +3585,10 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol", "exportedSymbols": { "AlgoMiner": [ - 771 + 786 ] }, - "id": 772, + "id": 787, "nodeType": "SourceUnit", "nodes": [ { @@ -3606,8 +3606,8 @@ "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "id": 187, "nodeType": "ImportDirective", - "scope": 772, - "sourceUnit": 1359, + "scope": 787, + "sourceUnit": 1374, "src": "27:195:2", "symbolAliases": [], "unitAlias": "" @@ -3617,8 +3617,8 @@ "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "id": 188, "nodeType": "ImportDirective", - "scope": 772, - "sourceUnit": 1503, + "scope": 787, + "sourceUnit": 1518, "src": "224:198:2", "symbolAliases": [], "unitAlias": "" @@ -3628,8 +3628,8 @@ "file": "./IAlgoMiner.sol", "id": 189, "nodeType": "ImportDirective", - "scope": 772, - "sourceUnit": 1031, + "scope": 787, + "sourceUnit": 1046, "src": "426:26:2", "symbolAliases": [], "unitAlias": "" @@ -3639,7 +3639,7 @@ "file": "./AlgoCommon.sol", "id": 190, "nodeType": "ImportDirective", - "scope": 772, + "scope": 787, "sourceUnit": 98, "src": "454:26:2", "symbolAliases": [], @@ -3650,8 +3650,8 @@ "file": "./ERC20TokenHolder.sol", "id": 191, "nodeType": "ImportDirective", - "scope": 772, - "sourceUnit": 1003, + "scope": 787, + "sourceUnit": 1018, "src": "482:32:2", "symbolAliases": [], "unitAlias": "" @@ -3661,8 +3661,8 @@ "file": "./AlgoSystemRole.sol", "id": 192, "nodeType": "ImportDirective", - "scope": 772, - "sourceUnit": 946, + "scope": 787, + "sourceUnit": 961, "src": "516:30:2", "symbolAliases": [], "unitAlias": "" @@ -3672,7 +3672,7 @@ "file": "./AlgoCoreTeamRole.sol", "id": 193, "nodeType": "ImportDirective", - "scope": 772, + "scope": 787, "sourceUnit": 185, "src": "548:32:2", "symbolAliases": [], @@ -3683,8 +3683,8 @@ "file": "./AlgoSupervisorRole.sol", "id": 194, "nodeType": "ImportDirective", - "scope": 772, - "sourceUnit": 859, + "scope": 787, + "sourceUnit": 874, "src": "582:34:2", "symbolAliases": [], "unitAlias": "" @@ -3716,10 +3716,10 @@ "id": 197, "name": "ERC20TokenHolder", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1002, + "referencedDeclaration": 1017, "src": "654:16:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20TokenHolder_$1002", + "typeIdentifier": "t_contract$_ERC20TokenHolder_$1017", "typeString": "contract ERC20TokenHolder" } }, @@ -3734,10 +3734,10 @@ "id": 199, "name": "AlgoSystemRole", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 945, + "referencedDeclaration": 960, "src": "672:14:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoSystemRole_$945", + "typeIdentifier": "t_contract$_AlgoSystemRole_$960", "typeString": "contract AlgoSystemRole" } }, @@ -3770,10 +3770,10 @@ "id": 203, "name": "AlgoSupervisorRole", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 858, + "referencedDeclaration": 873, "src": "706:18:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoSupervisorRole_$858", + "typeIdentifier": "t_contract$_AlgoSupervisorRole_$873", "typeString": "contract AlgoSupervisorRole" } }, @@ -3788,10 +3788,10 @@ "id": 205, "name": "IAlgoMiner", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1030, + "referencedDeclaration": 1045, "src": "726:10:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$1030", + "typeIdentifier": "t_contract$_IAlgoMiner_$1045", "typeString": "contract IAlgoMiner" } }, @@ -3801,26 +3801,26 @@ } ], "contractDependencies": [ - 1002, 97, - 1030, 184, - 945, - 858, - 1067 + 873, + 960, + 1017, + 1045, + 1082 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 771, + "id": 786, "linearizedBaseContracts": [ - 771, - 1030, - 858, + 786, + 1045, + 873, 184, - 945, - 1002, - 1067, + 960, + 1017, + 1082, 97 ], "name": "AlgoMiner", @@ -3833,10 +3833,10 @@ "id": 207, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1502, + "referencedDeclaration": 1517, "src": "750:9:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1502", + "typeIdentifier": "t_contract$_SafeERC20_$1517", "typeString": "library SafeERC20" } }, @@ -3847,10 +3847,10 @@ "id": 208, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1358, + "referencedDeclaration": 1373, "src": "764:6:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" } } @@ -3860,7 +3860,7 @@ "id": 212, "name": "DAYS_PER_YEAR", "nodeType": "VariableDeclaration", - "scope": 771, + "scope": 786, "src": "779:43:2", "stateVariable": true, "storageLocation": "default", @@ -3957,7 +3957,7 @@ "id": 222, "name": "_minerType", "nodeType": "VariableDeclaration", - "scope": 771, + "scope": 786, "src": "1015:28:2", "stateVariable": true, "storageLocation": "default", @@ -3985,7 +3985,7 @@ "id": 224, "name": "_category", "nodeType": "VariableDeclaration", - "scope": 771, + "scope": 786, "src": "1050:23:2", "stateVariable": true, "storageLocation": "default", @@ -4011,7 +4011,7 @@ "id": 226, "name": "_miner", "nodeType": "VariableDeclaration", - "scope": 771, + "scope": 786, "src": "1080:22:2", "stateVariable": true, "storageLocation": "default", @@ -4037,7 +4037,7 @@ "id": 228, "name": "_referral", "nodeType": "VariableDeclaration", - "scope": 771, + "scope": 786, "src": "1109:25:2", "stateVariable": true, "storageLocation": "default", @@ -4063,7 +4063,7 @@ "id": 230, "name": "_state", "nodeType": "VariableDeclaration", - "scope": 771, + "scope": 786, "src": "1143:25:2", "stateVariable": true, "storageLocation": "default", @@ -4091,7 +4091,7 @@ "id": 232, "name": "_mining", "nodeType": "VariableDeclaration", - "scope": 771, + "scope": 786, "src": "1175:20:2", "stateVariable": true, "storageLocation": "default", @@ -4117,7 +4117,7 @@ "id": 234, "name": "_currentYear", "nodeType": "VariableDeclaration", - "scope": 771, + "scope": 786, "src": "1202:26:2", "stateVariable": true, "storageLocation": "default", @@ -4143,7 +4143,7 @@ "id": 236, "name": "_currentDay", "nodeType": "VariableDeclaration", - "scope": 771, + "scope": 786, "src": "1235:26:2", "stateVariable": true, "storageLocation": "default", @@ -4169,7 +4169,7 @@ "id": 238, "name": "_currentYearSupply", "nodeType": "VariableDeclaration", - "scope": 771, + "scope": 786, "src": "1268:34:2", "stateVariable": true, "storageLocation": "default", @@ -4192,9 +4192,9 @@ }, { "body": { - "id": 286, + "id": 308, "nodeType": "Block", - "src": "1583:218:2", + "src": "1583:392:2", "statements": [ { "expression": { @@ -4331,10 +4331,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, + "referencedDeclaration": 1535, "src": "1604:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -4362,19 +4362,357 @@ { "expression": { "argumentTypes": null, - "id": 272, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 271, + "name": "minerAccountAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 244, + "src": "1662:19:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 273, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1693:1:2", + "subdenomination": null, + "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": 272, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1685:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 274, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1685:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1662:33:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 270, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1535, + 1536 + ], + "referencedDeclaration": 1535, + "src": "1654:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1654:42:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 277, + "nodeType": "ExpressionStatement", + "src": "1654:42:2" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_MinerType_$215", + "typeString": "enum AlgoMiner.MinerType" + }, + "id": 281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 278, + "name": "minerType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 240, + "src": "1712:9:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerType_$215", + "typeString": "enum AlgoMiner.MinerType" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 279, + "name": "MinerType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 215, + "src": "1725:9:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerType_$215_$", + "typeString": "type(enum AlgoMiner.MinerType)" + } + }, + "id": 280, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "PoolBased", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1725:19:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerType_$215", + "typeString": "enum AlgoMiner.MinerType" + } + }, + "src": "1712:32:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 291, + "nodeType": "IfStatement", + "src": "1709:109:2", + "trueBody": { + "id": 290, + "nodeType": "Block", + "src": "1746:72:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 287, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 283, + "name": "referralAccountAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 246, + "src": "1769:22:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 285, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1803:1:2", + "subdenomination": null, + "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": 284, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1795:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 286, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1795:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1769:36:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 282, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1535, + 1536 + ], + "referencedDeclaration": 1535, + "src": "1761:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1761:45:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 289, + "nodeType": "ExpressionStatement", + "src": "1761:45:2" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 294, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 270, + "id": 292, "name": "_minerType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 222, - "src": "1656:10:2", + "src": "1830:10:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" @@ -4384,43 +4722,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 271, + "id": 293, "name": "minerType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 240, - "src": "1669:9:2", + "src": "1843:9:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" } }, - "src": "1656:22:2", + "src": "1830:22:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" } }, - "id": 273, + "id": 295, "nodeType": "ExpressionStatement", - "src": "1656:22:2" + "src": "1830:22:2" }, { "expression": { "argumentTypes": null, - "id": 276, + "id": 298, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 274, + "id": 296, "name": "_category", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 224, - "src": "1689:9:2", + "src": "1863:9:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4430,43 +4768,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 275, + "id": 297, "name": "category", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 242, - "src": "1701:8:2", + "src": "1875:8:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "1689:20:2", + "src": "1863:20:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 277, + "id": 299, "nodeType": "ExpressionStatement", - "src": "1689:20:2" + "src": "1863:20:2" }, { "expression": { "argumentTypes": null, - "id": 280, + "id": 302, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 278, + "id": 300, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 226, - "src": "1720:6:2", + "src": "1894:6:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4476,43 +4814,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 279, + "id": 301, "name": "minerAccountAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 244, - "src": "1729:19:2", + "src": "1903:19:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1720:28:2", + "src": "1894:28:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 281, + "id": 303, "nodeType": "ExpressionStatement", - "src": "1720:28:2" + "src": "1894:28:2" }, { "expression": { "argumentTypes": null, - "id": 284, + "id": 306, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 282, + "id": 304, "name": "_referral", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 228, - "src": "1759:9:2", + "src": "1933:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4522,31 +4860,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 283, + "id": 305, "name": "referralAccountAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 246, - "src": "1771:22:2", + "src": "1945:22:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1759:34:2", + "src": "1933:34:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 285, + "id": 307, "nodeType": "ExpressionStatement", - "src": "1759:34:2" + "src": "1933:34:2" } ] }, "documentation": null, - "id": 287, + "id": 309, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -4574,10 +4912,10 @@ "name": "ERC20TokenHolder", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1002, + "referencedDeclaration": 1017, "src": "1452:16:2", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20TokenHolder_$1002_$", + "typeIdentifier": "t_type$_t_contract$_ERC20TokenHolder_$1017_$", "typeString": "type(contract ERC20TokenHolder)" } }, @@ -4593,10 +4931,10 @@ "name": "AlgoSystemRole", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 945, + "referencedDeclaration": 960, "src": "1492:14:2", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AlgoSystemRole_$945_$", + "typeIdentifier": "t_type$_t_contract$_AlgoSystemRole_$960_$", "typeString": "type(contract AlgoSystemRole)" } }, @@ -4631,10 +4969,10 @@ "name": "AlgoSupervisorRole", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 858, + "referencedDeclaration": 873, "src": "1546:18:2", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AlgoSupervisorRole_$858_$", + "typeIdentifier": "t_type$_t_contract$_AlgoSupervisorRole_$873_$", "typeString": "type(contract AlgoSupervisorRole)" } }, @@ -4653,7 +4991,7 @@ "id": 240, "name": "minerType", "nodeType": "VariableDeclaration", - "scope": 287, + "scope": 309, "src": "1323:19:2", "stateVariable": false, "storageLocation": "default", @@ -4681,7 +5019,7 @@ "id": 242, "name": "category", "nodeType": "VariableDeclaration", - "scope": 287, + "scope": 309, "src": "1344:14:2", "stateVariable": false, "storageLocation": "default", @@ -4707,7 +5045,7 @@ "id": 244, "name": "minerAccountAddress", "nodeType": "VariableDeclaration", - "scope": 287, + "scope": 309, "src": "1360:27:2", "stateVariable": false, "storageLocation": "default", @@ -4733,7 +5071,7 @@ "id": 246, "name": "referralAccountAddress", "nodeType": "VariableDeclaration", - "scope": 287, + "scope": 309, "src": "1389:30:2", "stateVariable": false, "storageLocation": "default", @@ -4759,7 +5097,7 @@ "id": 248, "name": "tokenAddress", "nodeType": "VariableDeclaration", - "scope": 287, + "scope": 309, "src": "1421:20:2", "stateVariable": false, "storageLocation": "default", @@ -4790,17 +5128,17 @@ "parameters": [], "src": "1583:0:2" }, - "scope": 771, - "src": "1311:490:2", + "scope": 786, + "src": "1311:664:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 297, + "id": 319, "nodeType": "Block", - "src": "1830:60:2", + "src": "2004:60:2", "statements": [ { "expression": { @@ -4812,7 +5150,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 293, + "id": 315, "isConstant": false, "isLValue": false, "isPure": false, @@ -4821,18 +5159,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 290, + "id": 312, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1517, - "src": "1849:3:2", + "referencedDeclaration": 1532, + "src": "2023:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 291, + "id": 313, "isConstant": false, "isLValue": false, "isPure": false, @@ -4840,7 +5178,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1849:10:2", + "src": "2023:10:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4850,18 +5188,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 292, + "id": 314, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 226, - "src": "1863:6:2", + "src": "2037:6:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1849:20:2", + "src": "2023:20:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4875,21 +5213,21 @@ "typeString": "bool" } ], - "id": 289, + "id": 311, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, - "src": "1841:7:2", + "referencedDeclaration": 1535, + "src": "2015:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 294, + "id": 316, "isConstant": false, "isLValue": false, "isPure": false, @@ -4897,41 +5235,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1841:29:2", + "src": "2015:29:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 295, + "id": 317, "nodeType": "ExpressionStatement", - "src": "1841:29:2" + "src": "2015:29:2" }, { - "id": 296, + "id": 318, "nodeType": "PlaceholderStatement", - "src": "1881:1:2" + "src": "2055:1:2" } ] }, "documentation": null, - "id": 298, + "id": 320, "name": "onlyMiner", "nodeType": "ModifierDefinition", "parameters": { - "id": 288, + "id": 310, "nodeType": "ParameterList", "parameters": [], - "src": "1827:2:2" + "src": "2001:2:2" }, - "src": "1809:81:2", + "src": "1983:81:2", "visibility": "internal" }, { "body": { - "id": 364, + "id": 386, "nodeType": "Block", - "src": "1961:512:2", + "src": "2135:512:2", "statements": [ { "expression": { @@ -4943,19 +5281,19 @@ "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, - "id": 309, + "id": 331, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 306, + "id": 328, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "1980:6:2", + "src": "2154:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -4967,18 +5305,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 307, + "id": 329, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "1990:10:2", + "src": "2164:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 308, + "id": 330, "isConstant": false, "isLValue": false, "isPure": true, @@ -4986,13 +5324,13 @@ "memberName": "Deactivated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1990:22:2", + "src": "2164:22:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "1980:32:2", + "src": "2154:32:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5006,21 +5344,21 @@ "typeString": "bool" } ], - "id": 305, + "id": 327, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, - "src": "1972:7:2", + "referencedDeclaration": 1535, + "src": "2146:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 310, + "id": 332, "isConstant": false, "isLValue": false, "isPure": false, @@ -5028,15 +5366,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1972:41:2", + "src": "2146:41:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 311, + "id": 333, "nodeType": "ExpressionStatement", - "src": "1972:41:2" + "src": "2146:41:2" }, { "condition": { @@ -5045,7 +5383,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 319, + "id": 341, "isConstant": false, "isLValue": false, "isPure": false, @@ -5056,19 +5394,19 @@ "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" }, - "id": 315, + "id": 337, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 312, + "id": 334, "name": "_minerType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 222, - "src": "2029:10:2", + "src": "2203:10:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" @@ -5080,18 +5418,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 313, + "id": 335, "name": "MinerType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 215, - "src": "2043:9:2", + "src": "2217:9:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerType_$215_$", "typeString": "type(enum AlgoMiner.MinerType)" } }, - "id": 314, + "id": 336, "isConstant": false, "isLValue": false, "isPure": true, @@ -5099,13 +5437,13 @@ "memberName": "PoolBased", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2043:19:2", + "src": "2217:19:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" } }, - "src": "2029:33:2", + "src": "2203:33:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5119,19 +5457,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 318, + "id": 340, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 316, + "id": 338, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 238, - "src": "2066:18:2", + "src": "2240:18:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5142,14 +5480,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 317, + "id": 339, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2088:1:2", + "src": "2262:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5157,39 +5495,39 @@ }, "value": "0" }, - "src": "2066:23:2", + "src": "2240:23:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2029:60:2", + "src": "2203:60:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 358, + "id": 380, "nodeType": "IfStatement", - "src": "2026:398:2", + "src": "2200:398:2", "trueBody": { - "id": 357, + "id": 379, "nodeType": "Block", - "src": "2091:333:2", + "src": "2265:333:2", "statements": [ { "assignments": [ - 321 + 343 ], "declarations": [ { "constant": false, - "id": 321, + "id": 343, "name": "capacity", "nodeType": "VariableDeclaration", - "scope": 365, - "src": "2108:16:2", + "scope": 387, + "src": "2282:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5197,10 +5535,10 @@ "typeString": "uint256" }, "typeName": { - "id": 320, + "id": 342, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2108:7:2", + "src": "2282:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5210,18 +5548,18 @@ "visibility": "internal" } ], - "id": 325, + "id": 347, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 323, + "id": 345, "name": "_category", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 224, - "src": "2149:9:2", + "src": "2323:9:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5235,18 +5573,18 @@ "typeString": "uint8" } ], - "id": 322, + "id": 344, "name": "getCapacityByCategory", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, - "src": "2127:21:2", + "src": "2301:21:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint8_$returns$_t_uint256_$", "typeString": "function (uint8) pure returns (uint256)" } }, - "id": 324, + "id": 346, "isConstant": false, "isLValue": false, "isPure": false, @@ -5254,27 +5592,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2127:32:2", + "src": "2301:32:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2108:51:2" + "src": "2282:51:2" }, { "assignments": [ - 327 + 349 ], "declarations": [ { "constant": false, - "id": 327, + "id": 349, "name": "expectedBalance", "nodeType": "VariableDeclaration", - "scope": 365, - "src": "2174:23:2", + "scope": 387, + "src": "2348:23:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5282,10 +5620,10 @@ "typeString": "uint256" }, "typeName": { - "id": 326, + "id": 348, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2174:7:2", + "src": "2348:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5295,26 +5633,26 @@ "visibility": "internal" } ], - "id": 335, + "id": 357, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 334, + "id": 356, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 328, + "id": 350, "name": "capacity", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 321, - "src": "2200:8:2", + "referencedDeclaration": 343, + "src": "2374:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5328,7 +5666,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 333, + "id": 355, "isConstant": false, "isLValue": false, "isPure": false, @@ -5339,19 +5677,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 331, + "id": 353, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 329, + "id": 351, "name": "capacity", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 321, - "src": "2211:8:2", + "referencedDeclaration": 343, + "src": "2385:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5362,14 +5700,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "3130", - "id": 330, + "id": 352, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2222:2:2", + "src": "2396:2:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", @@ -5377,7 +5715,7 @@ }, "value": "10" }, - "src": "2211:13:2", + "src": "2385:13:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5388,14 +5726,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "313030", - "id": 332, + "id": 354, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2227:3:2", + "src": "2401:3:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_100_by_1", @@ -5403,33 +5741,33 @@ }, "value": "100" }, - "src": "2211:19:2", + "src": "2385:19:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2200:30:2", + "src": "2374:30:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2174:56:2" + "src": "2348:56:2" }, { "assignments": [ - 337 + 359 ], "declarations": [ { "constant": false, - "id": 337, + "id": 359, "name": "currentBalance", "nodeType": "VariableDeclaration", - "scope": 365, - "src": "2247:22:2", + "scope": 387, + "src": "2421:22:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5437,10 +5775,10 @@ "typeString": "uint256" }, "typeName": { - "id": 336, + "id": 358, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2247:7:2", + "src": "2421:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5450,7 +5788,7 @@ "visibility": "internal" } ], - "id": 344, + "id": 366, "initialValue": { "argumentTypes": null, "arguments": [ @@ -5459,14 +5797,14 @@ "arguments": [ { "argumentTypes": null, - "id": 341, + "id": 363, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1552, - "src": "2297:4:2", + "referencedDeclaration": 1567, + "src": "2471:4:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoMiner_$771", + "typeIdentifier": "t_contract$_AlgoMiner_$786", "typeString": "contract AlgoMiner" } } @@ -5474,24 +5812,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_AlgoMiner_$771", + "typeIdentifier": "t_contract$_AlgoMiner_$786", "typeString": "contract AlgoMiner" } ], - "id": 340, + "id": 362, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2289:7:2", + "src": "2463:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 342, + "id": 364, "isConstant": false, "isLValue": false, "isPure": false, @@ -5499,7 +5837,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2289:13:2", + "src": "2463:13:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5515,32 +5853,32 @@ ], "expression": { "argumentTypes": null, - "id": 338, + "id": 360, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 957, - "src": "2272:6:2", + "referencedDeclaration": 972, + "src": "2446:6:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" } }, - "id": 339, + "id": 361, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 1303, - "src": "2272:16:2", + "referencedDeclaration": 1318, + "src": "2446:16:2", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 343, + "id": 365, "isConstant": false, "isLValue": false, "isPure": false, @@ -5548,14 +5886,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2272:31:2", + "src": "2446:31:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2247:56:2" + "src": "2421:56:2" }, { "expression": { @@ -5567,19 +5905,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 348, + "id": 370, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 346, + "id": 368, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 337, - "src": "2328:14:2", + "referencedDeclaration": 359, + "src": "2502:14:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5589,18 +5927,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 347, + "id": 369, "name": "expectedBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 327, - "src": "2346:15:2", + "referencedDeclaration": 349, + "src": "2520:15:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2328:33:2", + "src": "2502:33:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5614,21 +5952,21 @@ "typeString": "bool" } ], - "id": 345, + "id": 367, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, - "src": "2320:7:2", + "referencedDeclaration": 1535, + "src": "2494:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 349, + "id": 371, "isConstant": false, "isLValue": false, "isPure": false, @@ -5636,32 +5974,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2320:42:2", + "src": "2494:42:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 350, + "id": 372, "nodeType": "ExpressionStatement", - "src": "2320:42:2" + "src": "2494:42:2" }, { "expression": { "argumentTypes": null, - "id": 355, + "id": 377, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 351, + "id": 373, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 238, - "src": "2379:18:2", + "src": "2553:18:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5675,19 +6013,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 354, + "id": 376, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 352, + "id": 374, "name": "capacity", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 321, - "src": "2400:8:2", + "referencedDeclaration": 343, + "src": "2574:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5698,14 +6036,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 353, + "id": 375, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2411:1:2", + "src": "2585:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -5713,21 +6051,21 @@ }, "value": "2" }, - "src": "2400:12:2", + "src": "2574:12:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2379:33:2", + "src": "2553:33:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 356, + "id": 378, "nodeType": "ExpressionStatement", - "src": "2379:33:2" + "src": "2553:33:2" } ] } @@ -5735,19 +6073,19 @@ { "expression": { "argumentTypes": null, - "id": 362, + "id": 384, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 359, + "id": 381, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "2436:6:2", + "src": "2610:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -5759,18 +6097,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 360, + "id": 382, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "2445:10:2", + "src": "2619:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 361, + "id": 383, "isConstant": false, "isLValue": false, "isPure": true, @@ -5778,95 +6116,95 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2445:20:2", + "src": "2619:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2436:29:2", + "src": "2610:29:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 363, + "id": 385, "nodeType": "ExpressionStatement", - "src": "2436:29:2" + "src": "2610:29:2" } ] }, "documentation": null, - "id": 365, + "id": 387, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 301, + "id": 323, "modifierName": { "argumentTypes": null, - "id": 300, + "id": 322, "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1058, - "src": "1934:13:2", + "referencedDeclaration": 1073, + "src": "2108:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1934:13:2" + "src": "2108:13:2" }, { "arguments": null, - "id": 303, + "id": 325, "modifierName": { "argumentTypes": null, - "id": 302, + "id": 324, "name": "onlyCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "1948:12:2", + "src": "2122:12:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1948:12:2" + "src": "2122:12:2" } ], "name": "activateMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 299, + "id": 321, "nodeType": "ParameterList", "parameters": [], - "src": "1924:2:2" + "src": "2098:2:2" }, "payable": false, "returnParameters": { - "id": 304, + "id": 326, "nodeType": "ParameterList", "parameters": [], - "src": "1961:0:2" + "src": "2135:0:2" }, - "scope": 771, - "src": "1902:571:2", + "scope": 786, + "src": "2076:571:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 388, + "id": 410, "nodeType": "Block", - "src": "2542:138:2", + "src": "2716:138:2", "statements": [ { "expression": { @@ -5878,19 +6216,19 @@ "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, - "id": 376, + "id": 398, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 373, + "id": 395, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "2561:6:2", + "src": "2735:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -5902,18 +6240,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 374, + "id": 396, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "2571:10:2", + "src": "2745:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 375, + "id": 397, "isConstant": false, "isLValue": false, "isPure": true, @@ -5921,13 +6259,13 @@ "memberName": "Deactivated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2571:22:2", + "src": "2745:22:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2561:32:2", + "src": "2735:32:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5941,21 +6279,21 @@ "typeString": "bool" } ], - "id": 372, + "id": 394, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, - "src": "2553:7:2", + "referencedDeclaration": 1535, + "src": "2727:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 377, + "id": 399, "isConstant": false, "isLValue": false, "isPure": false, @@ -5963,32 +6301,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2553:41:2", + "src": "2727:41:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 378, + "id": 400, "nodeType": "ExpressionStatement", - "src": "2553:41:2" + "src": "2727:41:2" }, { "expression": { "argumentTypes": null, - "id": 382, + "id": 404, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 379, + "id": 401, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "2615:6:2", + "src": "2789:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -6000,18 +6338,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 380, + "id": 402, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "2624:10:2", + "src": "2798:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 381, + "id": 403, "isConstant": false, "isLValue": false, "isPure": true, @@ -6019,38 +6357,38 @@ "memberName": "Deactivated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2624:22:2", + "src": "2798:22:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2615:31:2", + "src": "2789:31:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 383, + "id": 405, "nodeType": "ExpressionStatement", - "src": "2615:31:2" + "src": "2789:31:2" }, { "expression": { "argumentTypes": null, - "id": 386, + "id": 408, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 384, + "id": 406, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, - "src": "2657:7:2", + "src": "2831:7:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6061,14 +6399,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 385, + "id": 407, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2667:5:2", + "src": "2841:5:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6076,89 +6414,89 @@ }, "value": "false" }, - "src": "2657:15:2", + "src": "2831:15:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 387, + "id": 409, "nodeType": "ExpressionStatement", - "src": "2657:15:2" + "src": "2831:15:2" } ] }, "documentation": null, - "id": 389, + "id": 411, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 368, + "id": 390, "modifierName": { "argumentTypes": null, - "id": 367, + "id": 389, "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1058, - "src": "2515:13:2", + "referencedDeclaration": 1073, + "src": "2689:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2515:13:2" + "src": "2689:13:2" }, { "arguments": null, - "id": 370, + "id": 392, "modifierName": { "argumentTypes": null, - "id": 369, + "id": 391, "name": "onlyCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "2529:12:2", + "src": "2703:12:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2529:12:2" + "src": "2703:12:2" } ], "name": "deactivateMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 366, + "id": 388, "nodeType": "ParameterList", "parameters": [], - "src": "2505:2:2" + "src": "2679:2:2" }, "payable": false, "returnParameters": { - "id": 371, + "id": 393, "nodeType": "ParameterList", "parameters": [], - "src": "2542:0:2" + "src": "2716:0:2" }, - "scope": 771, - "src": "2481:199:2", + "scope": 786, + "src": "2655:199:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 415, + "id": 437, "nodeType": "Block", - "src": "2755:142:2", + "src": "2929:142:2", "statements": [ { "expression": { @@ -6170,19 +6508,19 @@ "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, - "id": 400, + "id": 422, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 397, + "id": 419, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "2774:6:2", + "src": "2948:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -6194,18 +6532,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 398, + "id": 420, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "2784:10:2", + "src": "2958:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 399, + "id": 421, "isConstant": false, "isLValue": false, "isPure": true, @@ -6213,13 +6551,13 @@ "memberName": "Deactivated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2784:22:2", + "src": "2958:22:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2774:32:2", + "src": "2948:32:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6233,21 +6571,21 @@ "typeString": "bool" } ], - "id": 396, + "id": 418, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, - "src": "2766:7:2", + "referencedDeclaration": 1535, + "src": "2940:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 401, + "id": 423, "isConstant": false, "isLValue": false, "isPure": false, @@ -6255,15 +6593,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2766:41:2", + "src": "2940:41:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 402, + "id": 424, "nodeType": "ExpressionStatement", - "src": "2766:41:2" + "src": "2940:41:2" }, { "expression": { @@ -6271,12 +6609,12 @@ "arguments": [ { "argumentTypes": null, - "id": 406, + "id": 428, "name": "newMinerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 391, - "src": "2840:15:2", + "referencedDeclaration": 413, + "src": "3014:15:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6290,14 +6628,14 @@ "arguments": [ { "argumentTypes": null, - "id": 410, + "id": 432, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1552, - "src": "2882:4:2", + "referencedDeclaration": 1567, + "src": "3056:4:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoMiner_$771", + "typeIdentifier": "t_contract$_AlgoMiner_$786", "typeString": "contract AlgoMiner" } } @@ -6305,24 +6643,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_AlgoMiner_$771", + "typeIdentifier": "t_contract$_AlgoMiner_$786", "typeString": "contract AlgoMiner" } ], - "id": 409, + "id": 431, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2874:7:2", + "src": "3048:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 411, + "id": 433, "isConstant": false, "isLValue": false, "isPure": false, @@ -6330,7 +6668,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2874:13:2", + "src": "3048:13:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6346,32 +6684,32 @@ ], "expression": { "argumentTypes": null, - "id": 407, + "id": 429, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 957, - "src": "2857:6:2", + "referencedDeclaration": 972, + "src": "3031:6:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" } }, - "id": 408, + "id": 430, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 1303, - "src": "2857:16:2", + "referencedDeclaration": 1318, + "src": "3031:16:2", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 412, + "id": 434, "isConstant": false, "isLValue": false, "isPure": false, @@ -6379,7 +6717,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2857:31:2", + "src": "3031:31:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6399,32 +6737,32 @@ ], "expression": { "argumentTypes": null, - "id": 403, + "id": 425, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 957, - "src": "2820:6:2", + "referencedDeclaration": 972, + "src": "2994:6:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" } }, - "id": 405, + "id": 427, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1383, - "src": "2820:19:2", + "referencedDeclaration": 1398, + "src": "2994:19:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1358_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1358_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1373_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1373_$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 413, + "id": 435, "isConstant": false, "isLValue": false, "isPure": false, @@ -6432,57 +6770,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2820:69:2", + "src": "2994:69:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 414, + "id": 436, "nodeType": "ExpressionStatement", - "src": "2820:69:2" + "src": "2994:69:2" } ] }, "documentation": null, - "id": 416, + "id": 438, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 394, + "id": 416, "modifierName": { "argumentTypes": null, - "id": 393, + "id": 415, "name": "onlyCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "2742:12:2", + "src": "2916:12:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2742:12:2" + "src": "2916:12:2" } ], "name": "migrateMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 392, + "id": 414, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 391, + "id": 413, "name": "newMinerAddress", "nodeType": "VariableDeclaration", - "scope": 416, - "src": "2710:23:2", + "scope": 438, + "src": "2884:23:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6490,10 +6828,10 @@ "typeString": "address" }, "typeName": { - "id": 390, + "id": 412, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2710:7:2", + "src": "2884:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6503,26 +6841,26 @@ "visibility": "internal" } ], - "src": "2709:25:2" + "src": "2883:25:2" }, "payable": false, "returnParameters": { - "id": 395, + "id": 417, "nodeType": "ParameterList", "parameters": [], - "src": "2755:0:2" + "src": "2929:0:2" }, - "scope": 771, - "src": "2688:209:2", + "scope": 786, + "src": "2862:209:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 435, + "id": 457, "nodeType": "Block", - "src": "2964:108:2", + "src": "3138:108:2", "statements": [ { "expression": { @@ -6534,19 +6872,19 @@ "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, - "id": 427, + "id": 449, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 424, + "id": 446, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "2983:6:2", + "src": "3157:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -6558,18 +6896,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 425, + "id": 447, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "2993:10:2", + "src": "3167:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 426, + "id": 448, "isConstant": false, "isLValue": false, "isPure": true, @@ -6577,13 +6915,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2993:20:2", + "src": "3167:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2983:30:2", + "src": "3157:30:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6597,21 +6935,21 @@ "typeString": "bool" } ], - "id": 423, + "id": 445, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, - "src": "2975:7:2", + "referencedDeclaration": 1535, + "src": "3149:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 428, + "id": 450, "isConstant": false, "isLValue": false, "isPure": false, @@ -6619,32 +6957,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2975:39:2", + "src": "3149:39:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 429, + "id": 451, "nodeType": "ExpressionStatement", - "src": "2975:39:2" + "src": "3149:39:2" }, { "expression": { "argumentTypes": null, - "id": 433, + "id": 455, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 430, + "id": 452, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "3035:6:2", + "src": "3209:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -6656,18 +6994,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 431, + "id": 453, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "3044:10:2", + "src": "3218:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 432, + "id": 454, "isConstant": false, "isLValue": false, "isPure": true, @@ -6675,95 +7013,95 @@ "memberName": "Suspended", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3044:20:2", + "src": "3218:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3035:29:2", + "src": "3209:29:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 434, + "id": 456, "nodeType": "ExpressionStatement", - "src": "3035:29:2" + "src": "3209:29:2" } ] }, "documentation": null, - "id": 436, + "id": 458, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 419, + "id": 441, "modifierName": { "argumentTypes": null, - "id": 418, + "id": 440, "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1058, - "src": "2935:13:2", + "referencedDeclaration": 1073, + "src": "3109:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2935:13:2" + "src": "3109:13:2" }, { "arguments": null, - "id": 421, + "id": 443, "modifierName": { "argumentTypes": null, - "id": 420, + "id": 442, "name": "onlySupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 799, - "src": "2949:14:2", + "referencedDeclaration": 814, + "src": "3123:14:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2949:14:2" + "src": "3123:14:2" } ], "name": "pauseMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 417, + "id": 439, "nodeType": "ParameterList", "parameters": [], - "src": "2925:2:2" + "src": "3099:2:2" }, "payable": false, "returnParameters": { - "id": 422, + "id": 444, "nodeType": "ParameterList", "parameters": [], - "src": "2964:0:2" + "src": "3138:0:2" }, - "scope": 771, - "src": "2905:167:2", + "scope": 786, + "src": "3079:167:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 455, + "id": 477, "nodeType": "Block", - "src": "3140:100:2", + "src": "3314:100:2", "statements": [ { "expression": { @@ -6775,19 +7113,19 @@ "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, - "id": 447, + "id": 469, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 444, + "id": 466, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "3159:6:2", + "src": "3333:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -6799,18 +7137,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 445, + "id": 467, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "3169:10:2", + "src": "3343:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 446, + "id": 468, "isConstant": false, "isLValue": false, "isPure": true, @@ -6818,13 +7156,13 @@ "memberName": "Suspended", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3169:20:2", + "src": "3343:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3159:30:2", + "src": "3333:30:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6838,21 +7176,21 @@ "typeString": "bool" } ], - "id": 443, + "id": 465, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, - "src": "3151:7:2", + "referencedDeclaration": 1535, + "src": "3325:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 448, + "id": 470, "isConstant": false, "isLValue": false, "isPure": false, @@ -6860,32 +7198,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3151:39:2", + "src": "3325:39:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 449, + "id": 471, "nodeType": "ExpressionStatement", - "src": "3151:39:2" + "src": "3325:39:2" }, { "expression": { "argumentTypes": null, - "id": 453, + "id": 475, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 450, + "id": 472, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "3203:6:2", + "src": "3377:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -6897,18 +7235,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 451, + "id": 473, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "3212:10:2", + "src": "3386:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 452, + "id": 474, "isConstant": false, "isLValue": false, "isPure": true, @@ -6916,95 +7254,95 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3212:20:2", + "src": "3386:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3203:29:2", + "src": "3377:29:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 454, + "id": 476, "nodeType": "ExpressionStatement", - "src": "3203:29:2" + "src": "3377:29:2" } ] }, "documentation": null, - "id": 456, + "id": 478, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 439, + "id": 461, "modifierName": { "argumentTypes": null, - "id": 438, + "id": 460, "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1058, - "src": "3111:13:2", + "referencedDeclaration": 1073, + "src": "3285:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3111:13:2" + "src": "3285:13:2" }, { "arguments": null, - "id": 441, + "id": 463, "modifierName": { "argumentTypes": null, - "id": 440, + "id": 462, "name": "onlySupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 799, - "src": "3125:14:2", + "referencedDeclaration": 814, + "src": "3299:14:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3125:14:2" + "src": "3299:14:2" } ], "name": "resumeMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 437, + "id": 459, "nodeType": "ParameterList", "parameters": [], - "src": "3101:2:2" + "src": "3275:2:2" }, "payable": false, "returnParameters": { - "id": 442, + "id": 464, "nodeType": "ParameterList", "parameters": [], - "src": "3140:0:2" + "src": "3314:0:2" }, - "scope": 771, - "src": "3080:160:2", + "scope": 786, + "src": "3254:160:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 491, + "id": 513, "nodeType": "Block", - "src": "3318:193:2", + "src": "3492:193:2", "statements": [ { "expression": { @@ -7016,19 +7354,19 @@ "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, - "id": 467, + "id": 489, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 464, + "id": 486, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "3337:6:2", + "src": "3511:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -7040,18 +7378,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 465, + "id": 487, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "3347:10:2", + "src": "3521:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 466, + "id": 488, "isConstant": false, "isLValue": false, "isPure": true, @@ -7059,13 +7397,13 @@ "memberName": "Stopped", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3347:18:2", + "src": "3521:18:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3337:28:2", + "src": "3511:28:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7079,21 +7417,21 @@ "typeString": "bool" } ], - "id": 463, + "id": 485, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, - "src": "3329:7:2", + "referencedDeclaration": 1535, + "src": "3503:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 468, + "id": 490, "isConstant": false, "isLValue": false, "isPure": false, @@ -7101,32 +7439,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3329:37:2", + "src": "3503:37:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 469, + "id": 491, "nodeType": "ExpressionStatement", - "src": "3329:37:2" + "src": "3503:37:2" }, { "expression": { "argumentTypes": null, - "id": 473, + "id": 495, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 470, + "id": 492, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "3387:6:2", + "src": "3561:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -7138,18 +7476,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 471, + "id": 493, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "3396:10:2", + "src": "3570:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 472, + "id": 494, "isConstant": false, "isLValue": false, "isPure": true, @@ -7157,38 +7495,38 @@ "memberName": "Stopped", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3396:18:2", + "src": "3570:18:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3387:27:2", + "src": "3561:27:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 474, + "id": 496, "nodeType": "ExpressionStatement", - "src": "3387:27:2" + "src": "3561:27:2" }, { "expression": { "argumentTypes": null, - "id": 477, + "id": 499, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 475, + "id": 497, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, - "src": "3425:7:2", + "src": "3599:7:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7199,14 +7537,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 476, + "id": 498, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3435:5:2", + "src": "3609:5:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -7214,32 +7552,32 @@ }, "value": "false" }, - "src": "3425:15:2", + "src": "3599:15:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 478, + "id": 500, "nodeType": "ExpressionStatement", - "src": "3425:15:2" + "src": "3599:15:2" }, { "expression": { "argumentTypes": null, - "id": 483, + "id": 505, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 479, + "id": 501, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 226, - "src": "3451:6:2", + "src": "3625:6:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7253,14 +7591,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 481, + "id": 503, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3468:1:2", + "src": "3642:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7276,20 +7614,20 @@ "typeString": "int_const 0" } ], - "id": 480, + "id": 502, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3460:7:2", + "src": "3634:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 482, + "id": 504, "isConstant": false, "isLValue": false, "isPure": true, @@ -7297,38 +7635,38 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3460:10:2", + "src": "3634:10:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3451:19:2", + "src": "3625:19:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 484, + "id": 506, "nodeType": "ExpressionStatement", - "src": "3451:19:2" + "src": "3625:19:2" }, { "expression": { "argumentTypes": null, - "id": 489, + "id": 511, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 485, + "id": 507, "name": "_referral", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 228, - "src": "3481:9:2", + "src": "3655:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7342,14 +7680,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 487, + "id": 509, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3501:1:2", + "src": "3675:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7365,20 +7703,20 @@ "typeString": "int_const 0" } ], - "id": 486, + "id": 508, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3493:7:2", + "src": "3667:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 488, + "id": 510, "isConstant": false, "isLValue": false, "isPure": true, @@ -7386,95 +7724,95 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3493:10:2", + "src": "3667:10:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3481:22:2", + "src": "3655:22:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 490, + "id": 512, "nodeType": "ExpressionStatement", - "src": "3481:22:2" + "src": "3655:22:2" } ] }, "documentation": null, - "id": 492, + "id": 514, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 459, + "id": 481, "modifierName": { "argumentTypes": null, - "id": 458, + "id": 480, "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1058, - "src": "3289:13:2", + "referencedDeclaration": 1073, + "src": "3463:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3289:13:2" + "src": "3463:13:2" }, { "arguments": null, - "id": 461, + "id": 483, "modifierName": { "argumentTypes": null, - "id": 460, + "id": 482, "name": "onlySupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 799, - "src": "3303:14:2", + "referencedDeclaration": 814, + "src": "3477:14:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3303:14:2" + "src": "3477:14:2" } ], "name": "stopAndRemoveOwnership", "nodeType": "FunctionDefinition", "parameters": { - "id": 457, + "id": 479, "nodeType": "ParameterList", "parameters": [], - "src": "3279:2:2" + "src": "3453:2:2" }, "payable": false, "returnParameters": { - "id": 462, + "id": 484, "nodeType": "ParameterList", "parameters": [], - "src": "3318:0:2" + "src": "3492:0:2" }, - "scope": 771, - "src": "3248:263:2", + "scope": 786, + "src": "3422:263:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 523, + "id": 545, "nodeType": "Block", - "src": "3628:174:2", + "src": "3802:174:2", "statements": [ { "expression": { @@ -7486,19 +7824,19 @@ "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, - "id": 507, + "id": 529, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 504, + "id": 526, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "3647:6:2", + "src": "3821:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -7510,18 +7848,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 505, + "id": 527, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "3657:10:2", + "src": "3831:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 506, + "id": 528, "isConstant": false, "isLValue": false, "isPure": true, @@ -7529,13 +7867,13 @@ "memberName": "Stopped", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3657:18:2", + "src": "3831:18:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3647:28:2", + "src": "3821:28:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7549,21 +7887,21 @@ "typeString": "bool" } ], - "id": 503, + "id": 525, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, - "src": "3639:7:2", + "referencedDeclaration": 1535, + "src": "3813:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 508, + "id": 530, "isConstant": false, "isLValue": false, "isPure": false, @@ -7571,32 +7909,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3639:37:2", + "src": "3813:37:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 509, + "id": 531, "nodeType": "ExpressionStatement", - "src": "3639:37:2" + "src": "3813:37:2" }, { "expression": { "argumentTypes": null, - "id": 513, + "id": 535, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 510, + "id": 532, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "3689:6:2", + "src": "3863:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -7608,18 +7946,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 511, + "id": 533, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "3698:10:2", + "src": "3872:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 512, + "id": 534, "isConstant": false, "isLValue": false, "isPure": true, @@ -7627,38 +7965,38 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3698:20:2", + "src": "3872:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3689:29:2", + "src": "3863:29:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 514, + "id": 536, "nodeType": "ExpressionStatement", - "src": "3689:29:2" + "src": "3863:29:2" }, { "expression": { "argumentTypes": null, - "id": 517, + "id": 539, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 515, + "id": 537, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 226, - "src": "3729:6:2", + "src": "3903:6:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7668,43 +8006,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 516, + "id": 538, "name": "newOwnerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 494, - "src": "3738:15:2", + "referencedDeclaration": 516, + "src": "3912:15:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3729:24:2", + "src": "3903:24:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 518, + "id": 540, "nodeType": "ExpressionStatement", - "src": "3729:24:2" + "src": "3903:24:2" }, { "expression": { "argumentTypes": null, - "id": 521, + "id": 543, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 519, + "id": 541, "name": "_referral", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 228, - "src": "3764:9:2", + "src": "3938:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7714,87 +8052,87 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 520, + "id": 542, "name": "newReferralAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 496, - "src": "3776:18:2", + "referencedDeclaration": 518, + "src": "3950:18:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3764:30:2", + "src": "3938:30:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 522, + "id": 544, "nodeType": "ExpressionStatement", - "src": "3764:30:2" + "src": "3938:30:2" } ] }, "documentation": null, - "id": 524, + "id": 546, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 499, + "id": 521, "modifierName": { "argumentTypes": null, - "id": 498, + "id": 520, "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1058, - "src": "3599:13:2", + "referencedDeclaration": 1073, + "src": "3773:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3599:13:2" + "src": "3773:13:2" }, { "arguments": null, - "id": 501, + "id": 523, "modifierName": { "argumentTypes": null, - "id": 500, + "id": 522, "name": "onlySupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 799, - "src": "3613:14:2", + "referencedDeclaration": 814, + "src": "3787:14:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3613:14:2" + "src": "3787:14:2" } ], "name": "resetMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 497, + "id": 519, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 494, + "id": 516, "name": "newOwnerAddress", "nodeType": "VariableDeclaration", - "scope": 524, - "src": "3539:23:2", + "scope": 546, + "src": "3713:23:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7802,10 +8140,10 @@ "typeString": "address" }, "typeName": { - "id": 493, + "id": 515, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3539:7:2", + "src": "3713:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7816,11 +8154,11 @@ }, { "constant": false, - "id": 496, + "id": 518, "name": "newReferralAddress", "nodeType": "VariableDeclaration", - "scope": 524, - "src": "3564:26:2", + "scope": 546, + "src": "3738:26:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7828,10 +8166,10 @@ "typeString": "address" }, "typeName": { - "id": 495, + "id": 517, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3564:7:2", + "src": "3738:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7841,26 +8179,26 @@ "visibility": "internal" } ], - "src": "3538:53:2" + "src": "3712:53:2" }, "payable": false, "returnParameters": { - "id": 502, + "id": 524, "nodeType": "ParameterList", "parameters": [], - "src": "3628:0:2" + "src": "3802:0:2" }, - "scope": 771, - "src": "3519:283:2", + "scope": 786, + "src": "3693:283:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 547, + "id": 569, "nodeType": "Block", - "src": "3864:121:2", + "src": "4038:121:2", "statements": [ { "expression": { @@ -7872,19 +8210,19 @@ "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, - "id": 535, + "id": 557, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 532, + "id": 554, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "3883:6:2", + "src": "4057:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -7896,18 +8234,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 533, + "id": 555, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "3893:10:2", + "src": "4067:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 534, + "id": 556, "isConstant": false, "isLValue": false, "isPure": true, @@ -7915,13 +8253,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3893:20:2", + "src": "4067:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3883:30:2", + "src": "4057:30:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7935,21 +8273,21 @@ "typeString": "bool" } ], - "id": 531, + "id": 553, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, - "src": "3875:7:2", + "referencedDeclaration": 1535, + "src": "4049:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 536, + "id": 558, "isConstant": false, "isLValue": false, "isPure": false, @@ -7957,15 +8295,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3875:39:2", + "src": "4049:39:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 537, + "id": 559, "nodeType": "ExpressionStatement", - "src": "3875:39:2" + "src": "4049:39:2" }, { "expression": { @@ -7973,7 +8311,7 @@ "arguments": [ { "argumentTypes": null, - "id": 540, + "id": 562, "isConstant": false, "isLValue": false, "isPure": false, @@ -7981,15 +8319,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "3933:8:2", + "src": "4107:8:2", "subExpression": { "argumentTypes": null, - "id": 539, + "id": 561, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, - "src": "3934:7:2", + "src": "4108:7:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8008,21 +8346,21 @@ "typeString": "bool" } ], - "id": 538, + "id": 560, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, - "src": "3925:7:2", + "referencedDeclaration": 1535, + "src": "4099:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 541, + "id": 563, "isConstant": false, "isLValue": false, "isPure": false, @@ -8030,32 +8368,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3925:17:2", + "src": "4099:17:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 542, + "id": 564, "nodeType": "ExpressionStatement", - "src": "3925:17:2" + "src": "4099:17:2" }, { "expression": { "argumentTypes": null, - "id": 545, + "id": 567, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 543, + "id": 565, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, - "src": "3963:7:2", + "src": "4137:7:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8066,14 +8404,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 544, + "id": 566, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3973:4:2", + "src": "4147:4:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -8081,89 +8419,89 @@ }, "value": "true" }, - "src": "3963:14:2", + "src": "4137:14:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 546, + "id": 568, "nodeType": "ExpressionStatement", - "src": "3963:14:2" + "src": "4137:14:2" } ] }, "documentation": null, - "id": 548, + "id": 570, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 527, + "id": 549, "modifierName": { "argumentTypes": null, - "id": 526, + "id": 548, "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1058, - "src": "3840:13:2", + "referencedDeclaration": 1073, + "src": "4014:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3840:13:2" + "src": "4014:13:2" }, { "arguments": null, - "id": 529, + "id": 551, "modifierName": { "argumentTypes": null, - "id": 528, + "id": 550, "name": "onlyMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 298, - "src": "3854:9:2", + "referencedDeclaration": 320, + "src": "4028:9:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3854:9:2" + "src": "4028:9:2" } ], "name": "startMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 525, + "id": 547, "nodeType": "ParameterList", "parameters": [], - "src": "3830:2:2" + "src": "4004:2:2" }, "payable": false, "returnParameters": { - "id": 530, + "id": 552, "nodeType": "ParameterList", "parameters": [], - "src": "3864:0:2" + "src": "4038:0:2" }, - "scope": 771, - "src": "3810:175:2", + "scope": 786, + "src": "3984:175:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 570, + "id": 592, "nodeType": "Block", - "src": "4046:121:2", + "src": "4220:121:2", "statements": [ { "expression": { @@ -8175,19 +8513,19 @@ "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, - "id": 559, + "id": 581, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 556, + "id": 578, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "4065:6:2", + "src": "4239:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -8199,18 +8537,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 557, + "id": 579, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "4075:10:2", + "src": "4249:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 558, + "id": 580, "isConstant": false, "isLValue": false, "isPure": true, @@ -8218,13 +8556,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4075:20:2", + "src": "4249:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "4065:30:2", + "src": "4239:30:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8238,21 +8576,21 @@ "typeString": "bool" } ], - "id": 555, + "id": 577, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, - "src": "4057:7:2", + "referencedDeclaration": 1535, + "src": "4231:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 560, + "id": 582, "isConstant": false, "isLValue": false, "isPure": false, @@ -8260,15 +8598,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4057:39:2", + "src": "4231:39:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 561, + "id": 583, "nodeType": "ExpressionStatement", - "src": "4057:39:2" + "src": "4231:39:2" }, { "expression": { @@ -8276,12 +8614,12 @@ "arguments": [ { "argumentTypes": null, - "id": 563, + "id": 585, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, - "src": "4115:7:2", + "src": "4289:7:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8295,21 +8633,21 @@ "typeString": "bool" } ], - "id": 562, + "id": 584, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, - "src": "4107:7:2", + "referencedDeclaration": 1535, + "src": "4281:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 564, + "id": 586, "isConstant": false, "isLValue": false, "isPure": false, @@ -8317,32 +8655,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4107:16:2", + "src": "4281:16:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 565, + "id": 587, "nodeType": "ExpressionStatement", - "src": "4107:16:2" + "src": "4281:16:2" }, { "expression": { "argumentTypes": null, - "id": 568, + "id": 590, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 566, + "id": 588, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, - "src": "4144:7:2", + "src": "4318:7:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8353,14 +8691,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 567, + "id": 589, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "4154:5:2", + "src": "4328:5:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -8368,89 +8706,89 @@ }, "value": "false" }, - "src": "4144:15:2", + "src": "4318:15:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 569, + "id": 591, "nodeType": "ExpressionStatement", - "src": "4144:15:2" + "src": "4318:15:2" } ] }, "documentation": null, - "id": 571, + "id": 593, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 551, + "id": 573, "modifierName": { "argumentTypes": null, - "id": 550, + "id": 572, "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1058, - "src": "4022:13:2", + "referencedDeclaration": 1073, + "src": "4196:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4022:13:2" + "src": "4196:13:2" }, { "arguments": null, - "id": 553, + "id": 575, "modifierName": { "argumentTypes": null, - "id": 552, + "id": 574, "name": "onlyMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 298, - "src": "4036:9:2", + "referencedDeclaration": 320, + "src": "4210:9:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4036:9:2" + "src": "4210:9:2" } ], "name": "stopMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 549, + "id": 571, "nodeType": "ParameterList", "parameters": [], - "src": "4012:2:2" + "src": "4186:2:2" }, "payable": false, "returnParameters": { - "id": 554, + "id": 576, "nodeType": "ParameterList", "parameters": [], - "src": "4046:0:2" + "src": "4220:0:2" }, - "scope": 771, - "src": "3993:174:2", + "scope": 786, + "src": "4167:174:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 681, + "id": 696, "nodeType": "Block", - "src": "4223:876:2", + "src": "4397:800:2", "statements": [ { "expression": { @@ -8462,19 +8800,19 @@ "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" }, - "id": 582, + "id": 604, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 579, + "id": 601, "name": "_minerType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 222, - "src": "4242:10:2", + "src": "4416:10:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" @@ -8486,18 +8824,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 580, + "id": 602, "name": "MinerType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 215, - "src": "4256:9:2", + "src": "4430:9:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerType_$215_$", "typeString": "type(enum AlgoMiner.MinerType)" } }, - "id": 581, + "id": 603, "isConstant": false, "isLValue": false, "isPure": true, @@ -8505,13 +8843,13 @@ "memberName": "PoolBased", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4256:19:2", + "src": "4430:19:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" } }, - "src": "4242:33:2", + "src": "4416:33:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8525,21 +8863,21 @@ "typeString": "bool" } ], - "id": 578, + "id": 600, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, - "src": "4234:7:2", + "referencedDeclaration": 1535, + "src": "4408:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 583, + "id": 605, "isConstant": false, "isLValue": false, "isPure": false, @@ -8547,15 +8885,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4234:42:2", + "src": "4408:42:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 584, + "id": 606, "nodeType": "ExpressionStatement", - "src": "4234:42:2" + "src": "4408:42:2" }, { "expression": { @@ -8567,19 +8905,19 @@ "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, - "id": 589, + "id": 611, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 586, + "id": 608, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "4295:6:2", + "src": "4469:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -8591,18 +8929,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 587, + "id": 609, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "4305:10:2", + "src": "4479:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 588, + "id": 610, "isConstant": false, "isLValue": false, "isPure": true, @@ -8610,13 +8948,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4305:20:2", + "src": "4479:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "4295:30:2", + "src": "4469:30:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8630,21 +8968,21 @@ "typeString": "bool" } ], - "id": 585, + "id": 607, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, - "src": "4287:7:2", + "referencedDeclaration": 1535, + "src": "4461:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 590, + "id": 612, "isConstant": false, "isLValue": false, "isPure": false, @@ -8652,15 +8990,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4287:39:2", + "src": "4461:39:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 591, + "id": 613, "nodeType": "ExpressionStatement", - "src": "4287:39:2" + "src": "4461:39:2" }, { "expression": { @@ -8668,12 +9006,12 @@ "arguments": [ { "argumentTypes": null, - "id": 593, + "id": 615, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, - "src": "4345:7:2", + "src": "4519:7:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8687,21 +9025,21 @@ "typeString": "bool" } ], - "id": 592, + "id": 614, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, - "src": "4337:7:2", + "referencedDeclaration": 1535, + "src": "4511:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 594, + "id": 616, "isConstant": false, "isLValue": false, "isPure": false, @@ -8709,15 +9047,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4337:16:2", + "src": "4511:16:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 595, + "id": 617, "nodeType": "ExpressionStatement", - "src": "4337:16:2" + "src": "4511:16:2" }, { "condition": { @@ -8726,19 +9064,19 @@ "typeIdentifier": "t_uint16", "typeString": "uint16" }, - "id": 598, + "id": 620, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 596, + "id": 618, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 236, - "src": "4369:11:2", + "src": "4543:11:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -8749,14 +9087,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 597, + "id": 619, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4384:1:2", + "src": "4558:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -8764,21 +9102,21 @@ }, "value": "0" }, - "src": "4369:16:2", + "src": "4543:16:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 632, + "id": 654, "nodeType": "Block", - "src": "4466:238:2", + "src": "4640:238:2", "statements": [ { "expression": { "argumentTypes": null, - "id": 609, + "id": 631, "isConstant": false, "isLValue": false, "isPure": false, @@ -8786,15 +9124,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4481:13:2", + "src": "4655:13:2", "subExpression": { "argumentTypes": null, - "id": 608, + "id": 630, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 236, - "src": "4481:11:2", + "src": "4655:11:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -8805,9 +9143,9 @@ "typeString": "uint16" } }, - "id": 610, + "id": 632, "nodeType": "ExpressionStatement", - "src": "4481:13:2" + "src": "4655:13:2" }, { "condition": { @@ -8816,19 +9154,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 616, + "id": 638, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 611, + "id": 633, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 236, - "src": "4512:11:2", + "src": "4686:11:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -8845,19 +9183,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 614, + "id": 636, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 612, + "id": 634, "name": "DAYS_PER_YEAR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 212, - "src": "4528:13:2", + "src": "4702:13:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8868,14 +9206,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 613, + "id": 635, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4544:1:2", + "src": "4718:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -8883,45 +9221,45 @@ }, "value": "1" }, - "src": "4528:17:2", + "src": "4702:17:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 615, + "id": 637, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "4527:19:2", + "src": "4701:19:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4512:34:2", + "src": "4686:34:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 631, + "id": 653, "nodeType": "IfStatement", - "src": "4509:184:2", + "src": "4683:184:2", "trueBody": { - "id": 630, + "id": 652, "nodeType": "Block", - "src": "4548:145:2", + "src": "4722:145:2", "statements": [ { "expression": { "argumentTypes": null, - "id": 618, + "id": 640, "isConstant": false, "isLValue": false, "isPure": false, @@ -8929,15 +9267,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4567:14:2", + "src": "4741:14:2", "subExpression": { "argumentTypes": null, - "id": 617, + "id": 639, "name": "_currentYear", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 234, - "src": "4567:12:2", + "src": "4741:12:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -8948,26 +9286,26 @@ "typeString": "uint8" } }, - "id": 619, + "id": 641, "nodeType": "ExpressionStatement", - "src": "4567:14:2" + "src": "4741:14:2" }, { "expression": { "argumentTypes": null, - "id": 622, + "id": 644, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 620, + "id": 642, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 236, - "src": "4600:11:2", + "src": "4774:11:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -8978,14 +9316,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 621, + "id": 643, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4614:1:2", + "src": "4788:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -8993,32 +9331,32 @@ }, "value": "1" }, - "src": "4600:15:2", + "src": "4774:15:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 623, + "id": 645, "nodeType": "ExpressionStatement", - "src": "4600:15:2" + "src": "4774:15:2" }, { "expression": { "argumentTypes": null, - "id": 628, + "id": 650, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 624, + "id": 646, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 238, - "src": "4634:18:2", + "src": "4808:18:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9032,19 +9370,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 627, + "id": 649, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 625, + "id": 647, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 238, - "src": "4655:18:2", + "src": "4829:18:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9055,14 +9393,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 626, + "id": 648, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4676:1:2", + "src": "4850:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -9070,51 +9408,51 @@ }, "value": "2" }, - "src": "4655:22:2", + "src": "4829:22:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4634:43:2", + "src": "4808:43:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 629, + "id": 651, "nodeType": "ExpressionStatement", - "src": "4634:43:2" + "src": "4808:43:2" } ] } } ] }, - "id": 633, + "id": 655, "nodeType": "IfStatement", - "src": "4366:338:2", + "src": "4540:338:2", "trueBody": { - "id": 607, + "id": 629, "nodeType": "Block", - "src": "4387:73:2", + "src": "4561:73:2", "statements": [ { "expression": { "argumentTypes": null, - "id": 601, + "id": 623, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 599, + "id": 621, "name": "_currentYear", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 234, - "src": "4402:12:2", + "src": "4576:12:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -9125,14 +9463,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 600, + "id": 622, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4417:1:2", + "src": "4591:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -9140,32 +9478,32 @@ }, "value": "1" }, - "src": "4402:16:2", + "src": "4576:16:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 602, + "id": 624, "nodeType": "ExpressionStatement", - "src": "4402:16:2" + "src": "4576:16:2" }, { "expression": { "argumentTypes": null, - "id": 605, + "id": 627, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 603, + "id": 625, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 236, - "src": "4433:11:2", + "src": "4607:11:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -9176,14 +9514,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 604, + "id": 626, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4447:1:2", + "src": "4621:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -9191,31 +9529,31 @@ }, "value": "1" }, - "src": "4433:15:2", + "src": "4607:15:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 606, + "id": 628, "nodeType": "ExpressionStatement", - "src": "4433:15:2" + "src": "4607:15:2" } ] } }, { "assignments": [ - 635 + 657 ], "declarations": [ { "constant": false, - "id": 635, + "id": 657, "name": "minerTokens", "nodeType": "VariableDeclaration", - "scope": 682, - "src": "4716:19:2", + "scope": 697, + "src": "4890:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9223,10 +9561,10 @@ "typeString": "uint256" }, "typeName": { - "id": 634, + "id": 656, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4716:7:2", + "src": "4890:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9236,26 +9574,26 @@ "visibility": "internal" } ], - "id": 639, + "id": 661, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 638, + "id": 660, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 636, + "id": 658, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 238, - "src": "4738:18:2", + "src": "4912:18:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9265,25 +9603,148 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 637, + "id": 659, "name": "DAYS_PER_YEAR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 212, - "src": "4759:13:2", + "src": "4933:13:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4738:34:2", + "src": "4912:34:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "4716:56:2" + "src": "4890:56:2" + }, + { + "assignments": [ + 663 + ], + "declarations": [ + { + "constant": false, + "id": 663, + "name": "referralTokens", + "nodeType": "VariableDeclaration", + "scope": 697, + "src": "4957:22:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 662, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4957:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 669, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 668, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 664, + "name": "minerTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 657, + "src": "4982:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 665, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4996:2:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "4982:16:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "313030", + "id": 667, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5001:3:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + }, + "value": "100" + }, + "src": "4982:22:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4957:47:2" }, { "expression": { @@ -9295,19 +9756,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 643, + "id": 673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 641, + "id": 671, "name": "minerTokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 635, - "src": "4793:11:2", + "referencedDeclaration": 657, + "src": "5025:11:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9318,14 +9779,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 642, + "id": 672, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4807:1:2", + "src": "5039:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9333,7 +9794,7 @@ }, "value": "0" }, - "src": "4793:15:2", + "src": "5025:15:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9347,21 +9808,21 @@ "typeString": "bool" } ], - "id": 640, + "id": 670, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, - "src": "4785:7:2", + "referencedDeclaration": 1535, + "src": "5017:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 644, + "id": 674, "isConstant": false, "isLValue": false, "isPure": false, @@ -9369,15 +9830,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4785:24:2", + "src": "5017:24:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 645, + "id": 675, "nodeType": "ExpressionStatement", - "src": "4785:24:2" + "src": "5017:24:2" }, { "expression": { @@ -9385,12 +9846,106 @@ "arguments": [ { "argumentTypes": null, - "id": 649, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 679, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 677, + "name": "referralTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 663, + "src": "5060:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 678, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5077:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5060:18:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 676, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1535, + 1536 + ], + "referencedDeclaration": 1535, + "src": "5052:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5052:27:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 681, + "nodeType": "ExpressionStatement", + "src": "5052:27:2" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 685, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 226, - "src": "4842:6:2", + "src": "5112:6:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9398,12 +9953,12 @@ }, { "argumentTypes": null, - "id": 650, + "id": 686, "name": "minerTokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 635, - "src": "4850:11:2", + "referencedDeclaration": 657, + "src": "5120:11:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9423,32 +9978,32 @@ ], "expression": { "argumentTypes": null, - "id": 646, + "id": 682, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 957, - "src": "4822:6:2", + "referencedDeclaration": 972, + "src": "5092:6:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" } }, - "id": 648, + "id": 684, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1383, - "src": "4822:19:2", + "referencedDeclaration": 1398, + "src": "5092:19:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1358_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1358_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1373_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1373_$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 651, + "id": 687, "isConstant": false, "isLValue": false, "isPure": false, @@ -9456,494 +10011,176 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4822:40:2", + "src": "5092:40:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 652, + "id": 688, "nodeType": "ExpressionStatement", - "src": "4822:40:2" + "src": "5092:40:2" }, { - "condition": { + "expression": { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 657, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 653, - "name": "_referral", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 228, - "src": "4878:9:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "arguments": [ + { + "argumentTypes": null, + "id": 692, + "name": "_referral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 228, + "src": "5163:9:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 693, + "name": "referralTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 663, + "src": "5174:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ + ], + "expression": { + "argumentTypes": [ { - "argumentTypes": null, - "hexValue": "30", - "id": 655, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4899:1:2", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 654, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4891:7:2", + "argumentTypes": null, + "id": 689, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 972, + "src": "5143:6:2", "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" + "typeIdentifier": "t_contract$_IERC20_$1373", + "typeString": "contract IERC20" + } }, - "id": 656, + "id": 691, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "typeConversion", + "isPure": false, "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4891:10:2", + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1398, + "src": "5143:19:2", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1373_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1373_$", + "typeString": "function (contract IERC20,address,uint256)" } }, - "src": "4878:23:2", + "id": 694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5143:46:2", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "falseBody": null, - "id": 680, - "nodeType": "IfStatement", - "src": "4875:217:2", - "trueBody": { - "id": 679, - "nodeType": "Block", - "src": "4903:189:2", - "statements": [ - { - "assignments": [ - 659 - ], - "declarations": [ - { - "constant": false, - "id": 659, - "name": "referralTokens", - "nodeType": "VariableDeclaration", - "scope": 682, - "src": "4918:22:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 658, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4918:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 665, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 664, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 662, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 660, - "name": "minerTokens", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 635, - "src": "4943:11:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "hexValue": "3130", - "id": 661, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4957:2:2", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - }, - "src": "4943:16:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "hexValue": "313030", - "id": 663, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4962:3:2", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_100_by_1", - "typeString": "int_const 100" - }, - "value": "100" - }, - "src": "4943:22:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4918:47:2" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 669, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 667, - "name": "referralTokens", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 659, - "src": "4994:14:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 668, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5011:1:2", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4994:18:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 666, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1520, - 1521 - ], - "referencedDeclaration": 1520, - "src": "4986:7:2", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 670, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4986:27:2", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 671, - "nodeType": "ExpressionStatement", - "src": "4986:27:2" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 675, - "name": "_referral", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 228, - "src": "5054:9:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 676, - "name": "referralTokens", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 659, - "src": "5065:14:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 672, - "name": "_token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 957, - "src": "5034:6:2", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", - "typeString": "contract IERC20" - } - }, - "id": 674, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "safeTransfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 1383, - "src": "5034:19:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1358_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1358_$", - "typeString": "function (contract IERC20,address,uint256)" - } - }, - "id": 677, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5034:46:2", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 678, - "nodeType": "ExpressionStatement", - "src": "5034:46:2" - } - ] - } + "id": 695, + "nodeType": "ExpressionStatement", + "src": "5143:46:2" } ] }, "documentation": null, - "id": 682, + "id": 697, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 574, + "id": 596, "modifierName": { "argumentTypes": null, - "id": 573, + "id": 595, "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1058, - "src": "4198:13:2", + "referencedDeclaration": 1073, + "src": "4372:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4198:13:2" + "src": "4372:13:2" }, { "arguments": null, - "id": 576, + "id": 598, "modifierName": { "argumentTypes": null, - "id": 575, + "id": 597, "name": "onlySystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 886, - "src": "4212:10:2", + "referencedDeclaration": 901, + "src": "4386:10:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4212:10:2" + "src": "4386:10:2" } ], "name": "mine", "nodeType": "FunctionDefinition", "parameters": { - "id": 572, + "id": 594, "nodeType": "ParameterList", "parameters": [], - "src": "4188:2:2" + "src": "4362:2:2" }, "payable": false, "returnParameters": { - "id": 577, + "id": 599, "nodeType": "ParameterList", "parameters": [], - "src": "4223:0:2" + "src": "4397:0:2" }, - "scope": 771, - "src": "4175:924:2", + "scope": 786, + "src": "4349:848:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 690, + "id": 705, "nodeType": "Block", - "src": "5148:31:2", + "src": "5246:31:2", "statements": [ { "expression": { @@ -9951,20 +10188,20 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 687, + "id": 702, "name": "_terminate", "nodeType": "Identifier", "overloadedDeclarations": [ - 1001 + 1016 ], - "referencedDeclaration": 1001, - "src": "5159:10:2", + "referencedDeclaration": 1016, + "src": "5257:10:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 688, + "id": 703, "isConstant": false, "isLValue": false, "isPure": false, @@ -9972,83 +10209,83 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5159:12:2", + "src": "5257:12:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 689, + "id": 704, "nodeType": "ExpressionStatement", - "src": "5159:12:2" + "src": "5257:12:2" } ] }, "documentation": null, - "id": 691, + "id": 706, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 685, + "id": 700, "modifierName": { "argumentTypes": null, - "id": 684, + "id": 699, "name": "onlyCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "5135:12:2", + "src": "5233:12:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "5135:12:2" + "src": "5233:12:2" } ], "name": "terminate", "nodeType": "FunctionDefinition", "parameters": { - "id": 683, + "id": 698, "nodeType": "ParameterList", "parameters": [], - "src": "5125:2:2" + "src": "5223:2:2" }, "payable": false, "returnParameters": { - "id": 686, + "id": 701, "nodeType": "ParameterList", "parameters": [], - "src": "5148:0:2" + "src": "5246:0:2" }, - "scope": 771, - "src": "5107:72:2", + "scope": 786, + "src": "5205:72:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 698, + "id": 713, "nodeType": "Block", - "src": "5237:30:2", + "src": "5335:30:2", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 696, + "id": 711, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "5255:4:2", + "src": "5353:4:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -10056,15 +10293,15 @@ }, "value": "true" }, - "functionReturnParameters": 695, - "id": 697, + "functionReturnParameters": 710, + "id": 712, "nodeType": "Return", - "src": "5248:11:2" + "src": "5346:11:2" } ] }, "documentation": null, - "id": 699, + "id": 714, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -10072,23 +10309,23 @@ "name": "isAlgoMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 692, + "id": 707, "nodeType": "ParameterList", "parameters": [], - "src": "5207:2:2" + "src": "5305:2:2" }, "payable": false, "returnParameters": { - "id": 695, + "id": 710, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 694, + "id": 709, "name": "", "nodeType": "VariableDeclaration", - "scope": 699, - "src": "5231:4:2", + "scope": 714, + "src": "5329:4:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10096,10 +10333,10 @@ "typeString": "bool" }, "typeName": { - "id": 693, + "id": 708, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "5231:4:2", + "src": "5329:4:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10109,19 +10346,19 @@ "visibility": "internal" } ], - "src": "5230:6:2" + "src": "5328:6:2" }, - "scope": 771, - "src": "5187:80:2", + "scope": 786, + "src": "5285:80:2", "stateMutability": "pure", - "superFunction": 1009, + "superFunction": 1024, "visibility": "public" }, { "body": { - "id": 708, + "id": 723, "nodeType": "Block", - "src": "5327:43:2", + "src": "5425:43:2", "statements": [ { "expression": { @@ -10129,12 +10366,12 @@ "arguments": [ { "argumentTypes": null, - "id": 705, + "id": 720, "name": "_minerType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 222, - "src": "5351:10:2", + "src": "5449:10:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" @@ -10148,20 +10385,20 @@ "typeString": "enum AlgoMiner.MinerType" } ], - "id": 704, + "id": 719, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "5345:5:2", + "src": "5443:5:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)" }, "typeName": "uint8" }, - "id": 706, + "id": 721, "isConstant": false, "isLValue": false, "isPure": false, @@ -10169,21 +10406,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5345:17:2", + "src": "5443:17:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "functionReturnParameters": 703, - "id": 707, + "functionReturnParameters": 718, + "id": 722, "nodeType": "Return", - "src": "5338:24:2" + "src": "5436:24:2" } ] }, "documentation": null, - "id": 709, + "id": 724, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -10191,23 +10428,23 @@ "name": "getMinerType", "nodeType": "FunctionDefinition", "parameters": { - "id": 700, + "id": 715, "nodeType": "ParameterList", "parameters": [], - "src": "5296:2:2" + "src": "5394:2:2" }, "payable": false, "returnParameters": { - "id": 703, + "id": 718, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 702, + "id": 717, "name": "", "nodeType": "VariableDeclaration", - "scope": 709, - "src": "5320:5:2", + "scope": 724, + "src": "5418:5:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10215,10 +10452,10 @@ "typeString": "uint8" }, "typeName": { - "id": 701, + "id": 716, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "5320:5:2", + "src": "5418:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -10228,43 +10465,43 @@ "visibility": "internal" } ], - "src": "5319:7:2" + "src": "5417:7:2" }, - "scope": 771, - "src": "5275:95:2", + "scope": 786, + "src": "5373:95:2", "stateMutability": "view", - "superFunction": 1014, + "superFunction": 1029, "visibility": "public" }, { "body": { - "id": 716, + "id": 731, "nodeType": "Block", - "src": "5429:35:2", + "src": "5527:35:2", "statements": [ { "expression": { "argumentTypes": null, - "id": 714, + "id": 729, "name": "_category", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 224, - "src": "5447:9:2", + "src": "5545:9:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "functionReturnParameters": 713, - "id": 715, + "functionReturnParameters": 728, + "id": 730, "nodeType": "Return", - "src": "5440:16:2" + "src": "5538:16:2" } ] }, "documentation": null, - "id": 717, + "id": 732, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -10272,23 +10509,23 @@ "name": "getCategory", "nodeType": "FunctionDefinition", "parameters": { - "id": 710, + "id": 725, "nodeType": "ParameterList", "parameters": [], - "src": "5398:2:2" + "src": "5496:2:2" }, "payable": false, "returnParameters": { - "id": 713, + "id": 728, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 712, + "id": 727, "name": "", "nodeType": "VariableDeclaration", - "scope": 717, - "src": "5422:5:2", + "scope": 732, + "src": "5520:5:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10296,10 +10533,10 @@ "typeString": "uint8" }, "typeName": { - "id": 711, + "id": 726, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "5422:5:2", + "src": "5520:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -10309,43 +10546,43 @@ "visibility": "internal" } ], - "src": "5421:7:2" + "src": "5519:7:2" }, - "scope": 771, - "src": "5378:86:2", + "scope": 786, + "src": "5476:86:2", "stateMutability": "view", - "superFunction": 1019, + "superFunction": 1034, "visibility": "public" }, { "body": { - "id": 724, + "id": 739, "nodeType": "Block", - "src": "5522:32:2", + "src": "5620:32:2", "statements": [ { "expression": { "argumentTypes": null, - "id": 722, + "id": 737, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 226, - "src": "5540:6:2", + "src": "5638:6:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "functionReturnParameters": 721, - "id": 723, + "functionReturnParameters": 736, + "id": 738, "nodeType": "Return", - "src": "5533:13:2" + "src": "5631:13:2" } ] }, "documentation": null, - "id": 725, + "id": 740, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -10353,23 +10590,23 @@ "name": "getMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 718, + "id": 733, "nodeType": "ParameterList", "parameters": [], - "src": "5489:2:2" + "src": "5587:2:2" }, "payable": false, "returnParameters": { - "id": 721, + "id": 736, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 720, + "id": 735, "name": "", "nodeType": "VariableDeclaration", - "scope": 725, - "src": "5513:7:2", + "scope": 740, + "src": "5611:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10377,10 +10614,10 @@ "typeString": "address" }, "typeName": { - "id": 719, + "id": 734, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5513:7:2", + "src": "5611:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10390,43 +10627,43 @@ "visibility": "internal" } ], - "src": "5512:9:2" + "src": "5610:9:2" }, - "scope": 771, - "src": "5472:82:2", + "scope": 786, + "src": "5570:82:2", "stateMutability": "view", - "superFunction": 1029, + "superFunction": 1044, "visibility": "public" }, { "body": { - "id": 732, + "id": 747, "nodeType": "Block", - "src": "5615:35:2", + "src": "5713:35:2", "statements": [ { "expression": { "argumentTypes": null, - "id": 730, + "id": 745, "name": "_referral", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 228, - "src": "5633:9:2", + "src": "5731:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "functionReturnParameters": 729, - "id": 731, + "functionReturnParameters": 744, + "id": 746, "nodeType": "Return", - "src": "5626:16:2" + "src": "5724:16:2" } ] }, "documentation": null, - "id": 733, + "id": 748, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -10434,23 +10671,23 @@ "name": "getReferral", "nodeType": "FunctionDefinition", "parameters": { - "id": 726, + "id": 741, "nodeType": "ParameterList", "parameters": [], - "src": "5582:2:2" + "src": "5680:2:2" }, "payable": false, "returnParameters": { - "id": 729, + "id": 744, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 728, + "id": 743, "name": "", "nodeType": "VariableDeclaration", - "scope": 733, - "src": "5606:7:2", + "scope": 748, + "src": "5704:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10458,10 +10695,10 @@ "typeString": "address" }, "typeName": { - "id": 727, + "id": 742, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5606:7:2", + "src": "5704:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10471,19 +10708,19 @@ "visibility": "internal" } ], - "src": "5605:9:2" + "src": "5703:9:2" }, - "scope": 771, - "src": "5562:88:2", + "scope": 786, + "src": "5660:88:2", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 745, + "id": 760, "nodeType": "Block", - "src": "5705:67:2", + "src": "5803:67:2", "statements": [ { "expression": { @@ -10492,7 +10729,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 743, + "id": 758, "isConstant": false, "isLValue": false, "isPure": false, @@ -10503,19 +10740,19 @@ "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, - "id": 741, + "id": 756, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 738, + "id": 753, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "5723:6:2", + "src": "5821:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -10527,18 +10764,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 739, + "id": 754, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "5733:10:2", + "src": "5831:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 740, + "id": 755, "isConstant": false, "isLValue": false, "isPure": true, @@ -10546,13 +10783,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "5733:20:2", + "src": "5831:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "5723:30:2", + "src": "5821:30:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10562,32 +10799,32 @@ "operator": "&&", "rightExpression": { "argumentTypes": null, - "id": 742, + "id": 757, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, - "src": "5757:7:2", + "src": "5855:7:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "5723:41:2", + "src": "5821:41:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 737, - "id": 744, + "functionReturnParameters": 752, + "id": 759, "nodeType": "Return", - "src": "5716:48:2" + "src": "5814:48:2" } ] }, "documentation": null, - "id": 746, + "id": 761, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -10595,23 +10832,23 @@ "name": "isMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 734, + "id": 749, "nodeType": "ParameterList", "parameters": [], - "src": "5675:2:2" + "src": "5773:2:2" }, "payable": false, "returnParameters": { - "id": 737, + "id": 752, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 736, + "id": 751, "name": "", "nodeType": "VariableDeclaration", - "scope": 746, - "src": "5699:4:2", + "scope": 761, + "src": "5797:4:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10619,10 +10856,10 @@ "typeString": "bool" }, "typeName": { - "id": 735, + "id": 750, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "5699:4:2", + "src": "5797:4:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10632,43 +10869,43 @@ "visibility": "internal" } ], - "src": "5698:6:2" + "src": "5796:6:2" }, - "scope": 771, - "src": "5658:114:2", + "scope": 786, + "src": "5756:114:2", "stateMutability": "view", - "superFunction": 1024, + "superFunction": 1039, "visibility": "public" }, { "body": { - "id": 753, + "id": 768, "nodeType": "Block", - "src": "5834:38:2", + "src": "5932:38:2", "statements": [ { "expression": { "argumentTypes": null, - "id": 751, + "id": 766, "name": "_currentYear", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 234, - "src": "5852:12:2", + "src": "5950:12:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "functionReturnParameters": 750, - "id": 752, + "functionReturnParameters": 765, + "id": 767, "nodeType": "Return", - "src": "5845:19:2" + "src": "5943:19:2" } ] }, "documentation": null, - "id": 754, + "id": 769, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -10676,23 +10913,23 @@ "name": "getCurrentYear", "nodeType": "FunctionDefinition", "parameters": { - "id": 747, + "id": 762, "nodeType": "ParameterList", "parameters": [], - "src": "5803:2:2" + "src": "5901:2:2" }, "payable": false, "returnParameters": { - "id": 750, + "id": 765, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 749, + "id": 764, "name": "", "nodeType": "VariableDeclaration", - "scope": 754, - "src": "5827:5:2", + "scope": 769, + "src": "5925:5:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10700,10 +10937,10 @@ "typeString": "uint8" }, "typeName": { - "id": 748, + "id": 763, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "5827:5:2", + "src": "5925:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -10713,43 +10950,43 @@ "visibility": "internal" } ], - "src": "5826:7:2" + "src": "5924:7:2" }, - "scope": 771, - "src": "5780:92:2", + "scope": 786, + "src": "5878:92:2", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 761, + "id": 776, "nodeType": "Block", - "src": "5934:37:2", + "src": "6032:37:2", "statements": [ { "expression": { "argumentTypes": null, - "id": 759, + "id": 774, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 236, - "src": "5952:11:2", + "src": "6050:11:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "functionReturnParameters": 758, - "id": 760, + "functionReturnParameters": 773, + "id": 775, "nodeType": "Return", - "src": "5945:18:2" + "src": "6043:18:2" } ] }, "documentation": null, - "id": 762, + "id": 777, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -10757,23 +10994,23 @@ "name": "getCurrentDay", "nodeType": "FunctionDefinition", "parameters": { - "id": 755, + "id": 770, "nodeType": "ParameterList", "parameters": [], - "src": "5902:2:2" + "src": "6000:2:2" }, "payable": false, "returnParameters": { - "id": 758, + "id": 773, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 757, + "id": 772, "name": "", "nodeType": "VariableDeclaration", - "scope": 762, - "src": "5926:6:2", + "scope": 777, + "src": "6024:6:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10781,10 +11018,10 @@ "typeString": "uint16" }, "typeName": { - "id": 756, + "id": 771, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "5926:6:2", + "src": "6024:6:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -10794,43 +11031,43 @@ "visibility": "internal" } ], - "src": "5925:8:2" + "src": "6023:8:2" }, - "scope": 771, - "src": "5880:91:2", + "scope": 786, + "src": "5978:91:2", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 769, + "id": 784, "nodeType": "Block", - "src": "6041:44:2", + "src": "6139:44:2", "statements": [ { "expression": { "argumentTypes": null, - "id": 767, + "id": 782, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 238, - "src": "6059:18:2", + "src": "6157:18:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 766, - "id": 768, + "functionReturnParameters": 781, + "id": 783, "nodeType": "Return", - "src": "6052:25:2" + "src": "6150:25:2" } ] }, "documentation": null, - "id": 770, + "id": 785, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -10838,23 +11075,23 @@ "name": "getCurrentYearSupply", "nodeType": "FunctionDefinition", "parameters": { - "id": 763, + "id": 778, "nodeType": "ParameterList", "parameters": [], - "src": "6008:2:2" + "src": "6106:2:2" }, "payable": false, "returnParameters": { - "id": 766, + "id": 781, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 765, + "id": 780, "name": "", "nodeType": "VariableDeclaration", - "scope": 770, - "src": "6032:7:2", + "scope": 785, + "src": "6130:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10862,10 +11099,10 @@ "typeString": "uint256" }, "typeName": { - "id": 764, + "id": 779, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6032:7:2", + "src": "6130:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10875,20 +11112,20 @@ "visibility": "internal" } ], - "src": "6031:9:2" + "src": "6129:9:2" }, - "scope": 771, - "src": "5979:106:2", + "scope": 786, + "src": "6077:106:2", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 772, - "src": "620:5468:2" + "scope": 787, + "src": "620:5566:2" } ], - "src": "0:6090:2" + "src": "0:6188:2" }, "id": 2 }, @@ -10897,14 +11134,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol", "exportedSymbols": { "AlgoSupervisorRole": [ - 858 + 873 ] }, - "id": 859, + "id": 874, "nodeType": "SourceUnit", "nodes": [ { - "id": 773, + "id": 788, "literals": [ "solidity", "^", @@ -10917,10 +11154,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", - "id": 774, + "id": 789, "nodeType": "ImportDirective", - "scope": 859, - "sourceUnit": 1162, + "scope": 874, + "sourceUnit": 1177, "src": "28:189:3", "symbolAliases": [], "unitAlias": "" @@ -10931,24 +11168,24 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 858, + "id": 873, "linearizedBaseContracts": [ - 858 + 873 ], "name": "AlgoSupervisorRole", "nodeType": "ContractDefinition", "nodes": [ { - "id": 777, + "id": 792, "libraryName": { "contractScope": null, - "id": 775, + "id": 790, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1161, + "referencedDeclaration": 1176, "src": "262:5:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$1161", + "typeIdentifier": "t_contract$_Roles_$1176", "typeString": "library Roles" } }, @@ -10956,39 +11193,39 @@ "src": "256:27:3", "typeName": { "contractScope": null, - "id": 776, + "id": 791, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1074, + "referencedDeclaration": 1089, "src": "272:10:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", "typeString": "struct Roles.Role" } } }, { "constant": false, - "id": 779, + "id": 794, "name": "_supervisors", "nodeType": "VariableDeclaration", - "scope": 858, + "scope": 873, "src": "291:31:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1074_storage", + "typeIdentifier": "t_struct$_Role_$1089_storage", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 778, + "id": 793, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1074, + "referencedDeclaration": 1089, "src": "291:10:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -10997,7 +11234,7 @@ }, { "body": { - "id": 787, + "id": 802, "nodeType": "Block", "src": "355:45:3", "statements": [ @@ -11009,18 +11246,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 783, + "id": 798, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1517, + "referencedDeclaration": 1532, "src": "381:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 784, + "id": 799, "isConstant": false, "isLValue": false, "isPure": false, @@ -11042,18 +11279,18 @@ "typeString": "address" } ], - "id": 782, + "id": 797, "name": "_addSupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 845, + "referencedDeclaration": 860, "src": "366:14:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 785, + "id": 800, "isConstant": false, "isLValue": false, "isPure": false, @@ -11067,14 +11304,14 @@ "typeString": "tuple()" } }, - "id": 786, + "id": 801, "nodeType": "ExpressionStatement", "src": "366:26:3" } ] }, "documentation": null, - "id": 788, + "id": 803, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -11082,19 +11319,19 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 780, + "id": 795, "nodeType": "ParameterList", "parameters": [], "src": "343:2:3" }, "payable": false, "returnParameters": { - "id": 781, + "id": 796, "nodeType": "ParameterList", "parameters": [], "src": "355:0:3" }, - "scope": 858, + "scope": 873, "src": "331:69:3", "stateMutability": "nonpayable", "superFunction": null, @@ -11102,7 +11339,7 @@ }, { "body": { - "id": 798, + "id": 813, "nodeType": "Block", "src": "434:64:3", "statements": [ @@ -11117,18 +11354,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 792, + "id": 807, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1517, + "referencedDeclaration": 1532, "src": "466:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 793, + "id": 808, "isConstant": false, "isLValue": false, "isPure": false, @@ -11150,18 +11387,18 @@ "typeString": "address" } ], - "id": 791, + "id": 806, "name": "isSupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 812, + "referencedDeclaration": 827, "src": "453:12:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)" } }, - "id": 794, + "id": 809, "isConstant": false, "isLValue": false, "isPure": false, @@ -11183,21 +11420,21 @@ "typeString": "bool" } ], - "id": 790, + "id": 805, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, + "referencedDeclaration": 1535, "src": "445:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 795, + "id": 810, "isConstant": false, "isLValue": false, "isPure": false, @@ -11211,23 +11448,23 @@ "typeString": "tuple()" } }, - "id": 796, + "id": 811, "nodeType": "ExpressionStatement", "src": "445:33:3" }, { - "id": 797, + "id": 812, "nodeType": "PlaceholderStatement", "src": "489:1:3" } ] }, "documentation": null, - "id": 799, + "id": 814, "name": "onlySupervisor", "nodeType": "ModifierDefinition", "parameters": { - "id": 789, + "id": 804, "nodeType": "ParameterList", "parameters": [], "src": "431:2:3" @@ -11237,7 +11474,7 @@ }, { "body": { - "id": 811, + "id": 826, "nodeType": "Block", "src": "572:51:3", "statements": [ @@ -11247,11 +11484,11 @@ "arguments": [ { "argumentTypes": null, - "id": 808, + "id": 823, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 801, + "referencedDeclaration": 816, "src": "607:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11268,32 +11505,32 @@ ], "expression": { "argumentTypes": null, - "id": 806, + "id": 821, "name": "_supervisors", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 779, + "referencedDeclaration": 794, "src": "590:12:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1074_storage", + "typeIdentifier": "t_struct$_Role_$1089_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 807, + "id": 822, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 1160, + "referencedDeclaration": 1175, "src": "590:16:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1074_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1074_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1089_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1089_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 809, + "id": 824, "isConstant": false, "isLValue": false, "isPure": false, @@ -11307,15 +11544,15 @@ "typeString": "bool" } }, - "functionReturnParameters": 805, - "id": 810, + "functionReturnParameters": 820, + "id": 825, "nodeType": "Return", "src": "583:32:3" } ] }, "documentation": null, - "id": 812, + "id": 827, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -11323,15 +11560,15 @@ "name": "isSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 802, + "id": 817, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 801, + "id": 816, "name": "account", "nodeType": "VariableDeclaration", - "scope": 812, + "scope": 827, "src": "528:15:3", "stateVariable": false, "storageLocation": "default", @@ -11340,7 +11577,7 @@ "typeString": "address" }, "typeName": { - "id": 800, + "id": 815, "name": "address", "nodeType": "ElementaryTypeName", "src": "528:7:3", @@ -11357,15 +11594,15 @@ }, "payable": false, "returnParameters": { - "id": 805, + "id": 820, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 804, + "id": 819, "name": "", "nodeType": "VariableDeclaration", - "scope": 812, + "scope": 827, "src": "566:4:3", "stateVariable": false, "storageLocation": "default", @@ -11374,7 +11611,7 @@ "typeString": "bool" }, "typeName": { - "id": 803, + "id": 818, "name": "bool", "nodeType": "ElementaryTypeName", "src": "566:4:3", @@ -11389,7 +11626,7 @@ ], "src": "565:6:3" }, - "scope": 858, + "scope": 873, "src": "506:117:3", "stateMutability": "view", "superFunction": null, @@ -11397,7 +11634,7 @@ }, { "body": { - "id": 823, + "id": 838, "nodeType": "Block", "src": "693:42:3", "statements": [ @@ -11407,11 +11644,11 @@ "arguments": [ { "argumentTypes": null, - "id": 820, + "id": 835, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 814, + "referencedDeclaration": 829, "src": "719:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11426,18 +11663,18 @@ "typeString": "address" } ], - "id": 819, + "id": 834, "name": "_addSupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 845, + "referencedDeclaration": 860, "src": "704:14:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 821, + "id": 836, "isConstant": false, "isLValue": false, "isPure": false, @@ -11451,28 +11688,28 @@ "typeString": "tuple()" } }, - "id": 822, + "id": 837, "nodeType": "ExpressionStatement", "src": "704:23:3" } ] }, "documentation": null, - "id": 824, + "id": 839, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 817, + "id": 832, "modifierName": { "argumentTypes": null, - "id": 816, + "id": 831, "name": "onlySupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 799, + "referencedDeclaration": 814, "src": "678:14:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -11486,15 +11723,15 @@ "name": "addSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 815, + "id": 830, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 814, + "id": 829, "name": "account", "nodeType": "VariableDeclaration", - "scope": 824, + "scope": 839, "src": "654:15:3", "stateVariable": false, "storageLocation": "default", @@ -11503,7 +11740,7 @@ "typeString": "address" }, "typeName": { - "id": 813, + "id": 828, "name": "address", "nodeType": "ElementaryTypeName", "src": "654:7:3", @@ -11520,12 +11757,12 @@ }, "payable": false, "returnParameters": { - "id": 818, + "id": 833, "nodeType": "ParameterList", "parameters": [], "src": "693:0:3" }, - "scope": 858, + "scope": 873, "src": "631:104:3", "stateMutability": "nonpayable", "superFunction": null, @@ -11533,7 +11770,7 @@ }, { "body": { - "id": 832, + "id": 847, "nodeType": "Block", "src": "780:48:3", "statements": [ @@ -11545,18 +11782,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 828, + "id": 843, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1517, + "referencedDeclaration": 1532, "src": "809:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 829, + "id": 844, "isConstant": false, "isLValue": false, "isPure": false, @@ -11578,18 +11815,18 @@ "typeString": "address" } ], - "id": 827, + "id": 842, "name": "_removeSupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 857, + "referencedDeclaration": 872, "src": "791:17:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 830, + "id": 845, "isConstant": false, "isLValue": false, "isPure": false, @@ -11603,14 +11840,14 @@ "typeString": "tuple()" } }, - "id": 831, + "id": 846, "nodeType": "ExpressionStatement", "src": "791:29:3" } ] }, "documentation": null, - "id": 833, + "id": 848, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -11618,19 +11855,19 @@ "name": "renounceSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 825, + "id": 840, "nodeType": "ParameterList", "parameters": [], "src": "770:2:3" }, "payable": false, "returnParameters": { - "id": 826, + "id": 841, "nodeType": "ParameterList", "parameters": [], "src": "780:0:3" }, - "scope": 858, + "scope": 873, "src": "743:85:3", "stateMutability": "nonpayable", "superFunction": null, @@ -11638,7 +11875,7 @@ }, { "body": { - "id": 844, + "id": 859, "nodeType": "Block", "src": "886:44:3", "statements": [ @@ -11648,11 +11885,11 @@ "arguments": [ { "argumentTypes": null, - "id": 841, + "id": 856, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 835, + "referencedDeclaration": 850, "src": "914:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11669,32 +11906,32 @@ ], "expression": { "argumentTypes": null, - "id": 838, + "id": 853, "name": "_supervisors", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 779, + "referencedDeclaration": 794, "src": "897:12:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1074_storage", + "typeIdentifier": "t_struct$_Role_$1089_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 840, + "id": 855, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1106, + "referencedDeclaration": 1121, "src": "897:16:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1074_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1074_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1089_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1089_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 842, + "id": 857, "isConstant": false, "isLValue": false, "isPure": false, @@ -11708,14 +11945,14 @@ "typeString": "tuple()" } }, - "id": 843, + "id": 858, "nodeType": "ExpressionStatement", "src": "897:25:3" } ] }, "documentation": null, - "id": 845, + "id": 860, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -11723,15 +11960,15 @@ "name": "_addSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 836, + "id": 851, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 835, + "id": 850, "name": "account", "nodeType": "VariableDeclaration", - "scope": 845, + "scope": 860, "src": "860:15:3", "stateVariable": false, "storageLocation": "default", @@ -11740,7 +11977,7 @@ "typeString": "address" }, "typeName": { - "id": 834, + "id": 849, "name": "address", "nodeType": "ElementaryTypeName", "src": "860:7:3", @@ -11757,12 +11994,12 @@ }, "payable": false, "returnParameters": { - "id": 837, + "id": 852, "nodeType": "ParameterList", "parameters": [], "src": "886:0:3" }, - "scope": 858, + "scope": 873, "src": "836:94:3", "stateMutability": "nonpayable", "superFunction": null, @@ -11770,7 +12007,7 @@ }, { "body": { - "id": 856, + "id": 871, "nodeType": "Block", "src": "991:47:3", "statements": [ @@ -11780,11 +12017,11 @@ "arguments": [ { "argumentTypes": null, - "id": 853, + "id": 868, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 847, + "referencedDeclaration": 862, "src": "1022:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11801,32 +12038,32 @@ ], "expression": { "argumentTypes": null, - "id": 850, + "id": 865, "name": "_supervisors", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 779, + "referencedDeclaration": 794, "src": "1002:12:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1074_storage", + "typeIdentifier": "t_struct$_Role_$1089_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 852, + "id": 867, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 1137, + "referencedDeclaration": 1152, "src": "1002:19:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1074_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1074_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1089_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1089_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 854, + "id": 869, "isConstant": false, "isLValue": false, "isPure": false, @@ -11840,14 +12077,14 @@ "typeString": "tuple()" } }, - "id": 855, + "id": 870, "nodeType": "ExpressionStatement", "src": "1002:28:3" } ] }, "documentation": null, - "id": 857, + "id": 872, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -11855,15 +12092,15 @@ "name": "_removeSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 848, + "id": 863, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 847, + "id": 862, "name": "account", "nodeType": "VariableDeclaration", - "scope": 857, + "scope": 872, "src": "965:15:3", "stateVariable": false, "storageLocation": "default", @@ -11872,7 +12109,7 @@ "typeString": "address" }, "typeName": { - "id": 846, + "id": 861, "name": "address", "nodeType": "ElementaryTypeName", "src": "965:7:3", @@ -11889,19 +12126,19 @@ }, "payable": false, "returnParameters": { - "id": 849, + "id": 864, "nodeType": "ParameterList", "parameters": [], "src": "991:0:3" }, - "scope": 858, + "scope": 873, "src": "938:100:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 859, + "scope": 874, "src": "221:820:3" } ], @@ -11914,14 +12151,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol", "exportedSymbols": { "AlgoSystemRole": [ - 945 + 960 ] }, - "id": 946, + "id": 961, "nodeType": "SourceUnit", "nodes": [ { - "id": 860, + "id": 875, "literals": [ "solidity", "^", @@ -11934,10 +12171,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", - "id": 861, + "id": 876, "nodeType": "ImportDirective", - "scope": 946, - "sourceUnit": 1162, + "scope": 961, + "sourceUnit": 1177, "src": "28:189:4", "symbolAliases": [], "unitAlias": "" @@ -11948,24 +12185,24 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 945, + "id": 960, "linearizedBaseContracts": [ - 945 + 960 ], "name": "AlgoSystemRole", "nodeType": "ContractDefinition", "nodes": [ { - "id": 864, + "id": 879, "libraryName": { "contractScope": null, - "id": 862, + "id": 877, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1161, + "referencedDeclaration": 1176, "src": "258:5:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$1161", + "typeIdentifier": "t_contract$_Roles_$1176", "typeString": "library Roles" } }, @@ -11973,39 +12210,39 @@ "src": "252:27:4", "typeName": { "contractScope": null, - "id": 863, + "id": 878, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1074, + "referencedDeclaration": 1089, "src": "268:10:4", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", "typeString": "struct Roles.Role" } } }, { "constant": false, - "id": 866, + "id": 881, "name": "_systemMembers", "nodeType": "VariableDeclaration", - "scope": 945, + "scope": 960, "src": "287:33:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1074_storage", + "typeIdentifier": "t_struct$_Role_$1089_storage", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 865, + "id": 880, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1074, + "referencedDeclaration": 1089, "src": "287:10:4", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -12014,7 +12251,7 @@ }, { "body": { - "id": 874, + "id": 889, "nodeType": "Block", "src": "353:41:4", "statements": [ @@ -12026,18 +12263,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 870, + "id": 885, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1517, + "referencedDeclaration": 1532, "src": "375:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 871, + "id": 886, "isConstant": false, "isLValue": false, "isPure": false, @@ -12059,18 +12296,18 @@ "typeString": "address" } ], - "id": 869, + "id": 884, "name": "_addSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 932, + "referencedDeclaration": 947, "src": "364:10:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 872, + "id": 887, "isConstant": false, "isLValue": false, "isPure": false, @@ -12084,14 +12321,14 @@ "typeString": "tuple()" } }, - "id": 873, + "id": 888, "nodeType": "ExpressionStatement", "src": "364:22:4" } ] }, "documentation": null, - "id": 875, + "id": 890, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -12099,19 +12336,19 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 867, + "id": 882, "nodeType": "ParameterList", "parameters": [], "src": "341:2:4" }, "payable": false, "returnParameters": { - "id": 868, + "id": 883, "nodeType": "ParameterList", "parameters": [], "src": "353:0:4" }, - "scope": 945, + "scope": 960, "src": "329:65:4", "stateMutability": "nonpayable", "superFunction": null, @@ -12119,7 +12356,7 @@ }, { "body": { - "id": 885, + "id": 900, "nodeType": "Block", "src": "424:60:4", "statements": [ @@ -12134,18 +12371,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 879, + "id": 894, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1517, + "referencedDeclaration": 1532, "src": "452:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 880, + "id": 895, "isConstant": false, "isLValue": false, "isPure": false, @@ -12167,18 +12404,18 @@ "typeString": "address" } ], - "id": 878, + "id": 893, "name": "isSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 899, + "referencedDeclaration": 914, "src": "443:8:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)" } }, - "id": 881, + "id": 896, "isConstant": false, "isLValue": false, "isPure": false, @@ -12200,21 +12437,21 @@ "typeString": "bool" } ], - "id": 877, + "id": 892, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, + "referencedDeclaration": 1535, "src": "435:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 882, + "id": 897, "isConstant": false, "isLValue": false, "isPure": false, @@ -12228,23 +12465,23 @@ "typeString": "tuple()" } }, - "id": 883, + "id": 898, "nodeType": "ExpressionStatement", "src": "435:29:4" }, { - "id": 884, + "id": 899, "nodeType": "PlaceholderStatement", "src": "475:1:4" } ] }, "documentation": null, - "id": 886, + "id": 901, "name": "onlySystem", "nodeType": "ModifierDefinition", "parameters": { - "id": 876, + "id": 891, "nodeType": "ParameterList", "parameters": [], "src": "421:2:4" @@ -12254,7 +12491,7 @@ }, { "body": { - "id": 898, + "id": 913, "nodeType": "Block", "src": "554:53:4", "statements": [ @@ -12264,11 +12501,11 @@ "arguments": [ { "argumentTypes": null, - "id": 895, + "id": 910, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 888, + "referencedDeclaration": 903, "src": "591:7:4", "typeDescriptions": { "typeIdentifier": "t_address", @@ -12285,32 +12522,32 @@ ], "expression": { "argumentTypes": null, - "id": 893, + "id": 908, "name": "_systemMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 866, + "referencedDeclaration": 881, "src": "572:14:4", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1074_storage", + "typeIdentifier": "t_struct$_Role_$1089_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 894, + "id": 909, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 1160, + "referencedDeclaration": 1175, "src": "572:18:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1074_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1074_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1089_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1089_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 896, + "id": 911, "isConstant": false, "isLValue": false, "isPure": false, @@ -12324,15 +12561,15 @@ "typeString": "bool" } }, - "functionReturnParameters": 892, - "id": 897, + "functionReturnParameters": 907, + "id": 912, "nodeType": "Return", "src": "565:34:4" } ] }, "documentation": null, - "id": 899, + "id": 914, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -12340,15 +12577,15 @@ "name": "isSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 889, + "id": 904, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 888, + "id": 903, "name": "account", "nodeType": "VariableDeclaration", - "scope": 899, + "scope": 914, "src": "510:15:4", "stateVariable": false, "storageLocation": "default", @@ -12357,7 +12594,7 @@ "typeString": "address" }, "typeName": { - "id": 887, + "id": 902, "name": "address", "nodeType": "ElementaryTypeName", "src": "510:7:4", @@ -12374,15 +12611,15 @@ }, "payable": false, "returnParameters": { - "id": 892, + "id": 907, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 891, + "id": 906, "name": "", "nodeType": "VariableDeclaration", - "scope": 899, + "scope": 914, "src": "548:4:4", "stateVariable": false, "storageLocation": "default", @@ -12391,7 +12628,7 @@ "typeString": "bool" }, "typeName": { - "id": 890, + "id": 905, "name": "bool", "nodeType": "ElementaryTypeName", "src": "548:4:4", @@ -12406,7 +12643,7 @@ ], "src": "547:6:4" }, - "scope": 945, + "scope": 960, "src": "492:115:4", "stateMutability": "view", "superFunction": null, @@ -12414,7 +12651,7 @@ }, { "body": { - "id": 910, + "id": 925, "nodeType": "Block", "src": "669:38:4", "statements": [ @@ -12424,11 +12661,11 @@ "arguments": [ { "argumentTypes": null, - "id": 907, + "id": 922, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 901, + "referencedDeclaration": 916, "src": "691:7:4", "typeDescriptions": { "typeIdentifier": "t_address", @@ -12443,18 +12680,18 @@ "typeString": "address" } ], - "id": 906, + "id": 921, "name": "_addSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 932, + "referencedDeclaration": 947, "src": "680:10:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 908, + "id": 923, "isConstant": false, "isLValue": false, "isPure": false, @@ -12468,28 +12705,28 @@ "typeString": "tuple()" } }, - "id": 909, + "id": 924, "nodeType": "ExpressionStatement", "src": "680:19:4" } ] }, "documentation": null, - "id": 911, + "id": 926, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 904, + "id": 919, "modifierName": { "argumentTypes": null, - "id": 903, + "id": 918, "name": "onlySystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 886, + "referencedDeclaration": 901, "src": "658:10:4", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -12503,15 +12740,15 @@ "name": "addSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 902, + "id": 917, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 901, + "id": 916, "name": "account", "nodeType": "VariableDeclaration", - "scope": 911, + "scope": 926, "src": "634:15:4", "stateVariable": false, "storageLocation": "default", @@ -12520,7 +12757,7 @@ "typeString": "address" }, "typeName": { - "id": 900, + "id": 915, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:4", @@ -12537,12 +12774,12 @@ }, "payable": false, "returnParameters": { - "id": 905, + "id": 920, "nodeType": "ParameterList", "parameters": [], "src": "669:0:4" }, - "scope": 945, + "scope": 960, "src": "615:92:4", "stateMutability": "nonpayable", "superFunction": null, @@ -12550,7 +12787,7 @@ }, { "body": { - "id": 919, + "id": 934, "nodeType": "Block", "src": "748:44:4", "statements": [ @@ -12562,18 +12799,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 915, + "id": 930, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1517, + "referencedDeclaration": 1532, "src": "773:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 916, + "id": 931, "isConstant": false, "isLValue": false, "isPure": false, @@ -12595,18 +12832,18 @@ "typeString": "address" } ], - "id": 914, + "id": 929, "name": "_removeSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 944, + "referencedDeclaration": 959, "src": "759:13:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 917, + "id": 932, "isConstant": false, "isLValue": false, "isPure": false, @@ -12620,14 +12857,14 @@ "typeString": "tuple()" } }, - "id": 918, + "id": 933, "nodeType": "ExpressionStatement", "src": "759:25:4" } ] }, "documentation": null, - "id": 920, + "id": 935, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -12635,19 +12872,19 @@ "name": "renounceSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 912, + "id": 927, "nodeType": "ParameterList", "parameters": [], "src": "738:2:4" }, "payable": false, "returnParameters": { - "id": 913, + "id": 928, "nodeType": "ParameterList", "parameters": [], "src": "748:0:4" }, - "scope": 945, + "scope": 960, "src": "715:77:4", "stateMutability": "nonpayable", "superFunction": null, @@ -12655,7 +12892,7 @@ }, { "body": { - "id": 931, + "id": 946, "nodeType": "Block", "src": "846:46:4", "statements": [ @@ -12665,11 +12902,11 @@ "arguments": [ { "argumentTypes": null, - "id": 928, + "id": 943, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 922, + "referencedDeclaration": 937, "src": "876:7:4", "typeDescriptions": { "typeIdentifier": "t_address", @@ -12686,32 +12923,32 @@ ], "expression": { "argumentTypes": null, - "id": 925, + "id": 940, "name": "_systemMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 866, + "referencedDeclaration": 881, "src": "857:14:4", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1074_storage", + "typeIdentifier": "t_struct$_Role_$1089_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 927, + "id": 942, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1106, + "referencedDeclaration": 1121, "src": "857:18:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1074_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1074_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1089_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1089_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 929, + "id": 944, "isConstant": false, "isLValue": false, "isPure": false, @@ -12725,14 +12962,14 @@ "typeString": "tuple()" } }, - "id": 930, + "id": 945, "nodeType": "ExpressionStatement", "src": "857:27:4" } ] }, "documentation": null, - "id": 932, + "id": 947, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -12740,15 +12977,15 @@ "name": "_addSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 923, + "id": 938, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 922, + "id": 937, "name": "account", "nodeType": "VariableDeclaration", - "scope": 932, + "scope": 947, "src": "820:15:4", "stateVariable": false, "storageLocation": "default", @@ -12757,7 +12994,7 @@ "typeString": "address" }, "typeName": { - "id": 921, + "id": 936, "name": "address", "nodeType": "ElementaryTypeName", "src": "820:7:4", @@ -12774,12 +13011,12 @@ }, "payable": false, "returnParameters": { - "id": 924, + "id": 939, "nodeType": "ParameterList", "parameters": [], "src": "846:0:4" }, - "scope": 945, + "scope": 960, "src": "800:92:4", "stateMutability": "nonpayable", "superFunction": null, @@ -12787,7 +13024,7 @@ }, { "body": { - "id": 943, + "id": 958, "nodeType": "Block", "src": "949:49:4", "statements": [ @@ -12797,11 +13034,11 @@ "arguments": [ { "argumentTypes": null, - "id": 940, + "id": 955, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 934, + "referencedDeclaration": 949, "src": "982:7:4", "typeDescriptions": { "typeIdentifier": "t_address", @@ -12818,32 +13055,32 @@ ], "expression": { "argumentTypes": null, - "id": 937, + "id": 952, "name": "_systemMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 866, + "referencedDeclaration": 881, "src": "960:14:4", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1074_storage", + "typeIdentifier": "t_struct$_Role_$1089_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 939, + "id": 954, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 1137, + "referencedDeclaration": 1152, "src": "960:21:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1074_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1074_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1089_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1089_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 941, + "id": 956, "isConstant": false, "isLValue": false, "isPure": false, @@ -12857,14 +13094,14 @@ "typeString": "tuple()" } }, - "id": 942, + "id": 957, "nodeType": "ExpressionStatement", "src": "960:30:4" } ] }, "documentation": null, - "id": 944, + "id": 959, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -12872,15 +13109,15 @@ "name": "_removeSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 935, + "id": 950, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 934, + "id": 949, "name": "account", "nodeType": "VariableDeclaration", - "scope": 944, + "scope": 959, "src": "923:15:4", "stateVariable": false, "storageLocation": "default", @@ -12889,7 +13126,7 @@ "typeString": "address" }, "typeName": { - "id": 933, + "id": 948, "name": "address", "nodeType": "ElementaryTypeName", "src": "923:7:4", @@ -12906,19 +13143,19 @@ }, "payable": false, "returnParameters": { - "id": 936, + "id": 951, "nodeType": "ParameterList", "parameters": [], "src": "949:0:4" }, - "scope": 945, + "scope": 960, "src": "900:98:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 946, + "scope": 961, "src": "221:780:4" } ], @@ -12931,14 +13168,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol", "exportedSymbols": { "ERC20TokenHolder": [ - 1002 + 1017 ] }, - "id": 1003, + "id": 1018, "nodeType": "SourceUnit", "nodes": [ { - "id": 947, + "id": 962, "literals": [ "solidity", "0.4", @@ -12950,10 +13187,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "id": 948, + "id": 963, "nodeType": "ImportDirective", - "scope": 1003, - "sourceUnit": 1359, + "scope": 1018, + "sourceUnit": 1374, "src": "27:195:5", "symbolAliases": [], "unitAlias": "" @@ -12961,10 +13198,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", - "id": 949, + "id": 964, "nodeType": "ImportDirective", - "scope": 1003, - "sourceUnit": 1503, + "scope": 1018, + "sourceUnit": 1518, "src": "224:198:5", "symbolAliases": [], "unitAlias": "" @@ -12972,10 +13209,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", "file": "./Terminable.sol", - "id": 950, + "id": 965, "nodeType": "ImportDirective", - "scope": 1003, - "sourceUnit": 1068, + "scope": 1018, + "sourceUnit": 1083, "src": "426:26:5", "symbolAliases": [], "unitAlias": "" @@ -12986,46 +13223,46 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 951, + "id": 966, "name": "Terminable", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1067, + "referencedDeclaration": 1082, "src": "485:10:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_Terminable_$1067", + "typeIdentifier": "t_contract$_Terminable_$1082", "typeString": "contract Terminable" } }, - "id": 952, + "id": 967, "nodeType": "InheritanceSpecifier", "src": "485:10:5" } ], "contractDependencies": [ - 1067 + 1082 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 1002, + "id": 1017, "linearizedBaseContracts": [ - 1002, - 1067 + 1017, + 1082 ], "name": "ERC20TokenHolder", "nodeType": "ContractDefinition", "nodes": [ { - "id": 955, + "id": 970, "libraryName": { "contractScope": null, - "id": 953, + "id": 968, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1502, + "referencedDeclaration": 1517, "src": "509:9:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1502", + "typeIdentifier": "t_contract$_SafeERC20_$1517", "typeString": "library SafeERC20" } }, @@ -13033,39 +13270,39 @@ "src": "503:27:5", "typeName": { "contractScope": null, - "id": 954, + "id": 969, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1358, + "referencedDeclaration": 1373, "src": "523:6:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" } } }, { "constant": false, - "id": 957, + "id": 972, "name": "_token", "nodeType": "VariableDeclaration", - "scope": 1002, + "scope": 1017, "src": "538:22:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 956, + "id": 971, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1358, + "referencedDeclaration": 1373, "src": "538:6:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" } }, @@ -13074,28 +13311,28 @@ }, { "body": { - "id": 970, + "id": 985, "nodeType": "Block", "src": "625:48:5", "statements": [ { "expression": { "argumentTypes": null, - "id": 968, + "id": 983, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 964, + "id": 979, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 957, + "referencedDeclaration": 972, "src": "636:6:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" } }, @@ -13106,11 +13343,11 @@ "arguments": [ { "argumentTypes": null, - "id": 966, + "id": 981, "name": "tokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 959, + "referencedDeclaration": 974, "src": "652:12:5", "typeDescriptions": { "typeIdentifier": "t_address", @@ -13125,18 +13362,18 @@ "typeString": "address" } ], - "id": 965, + "id": 980, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, + "referencedDeclaration": 1373, "src": "645:6:5", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$1358_$", + "typeIdentifier": "t_type$_t_contract$_IERC20_$1373_$", "typeString": "type(contract IERC20)" } }, - "id": 967, + "id": 982, "isConstant": false, "isLValue": false, "isPure": false, @@ -13146,41 +13383,41 @@ "nodeType": "FunctionCall", "src": "645:20:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" } }, "src": "636:29:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" } }, - "id": 969, + "id": 984, "nodeType": "ExpressionStatement", "src": "636:29:5" } ] }, "documentation": null, - "id": 971, + "id": 986, "implemented": true, "isConstructor": true, "isDeclaredConst": false, "modifiers": [ { "arguments": [], - "id": 962, + "id": 977, "modifierName": { "argumentTypes": null, - "id": 961, + "id": 976, "name": "Terminable", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1067, + "referencedDeclaration": 1082, "src": "603:10:5", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Terminable_$1067_$", + "typeIdentifier": "t_type$_t_contract$_Terminable_$1082_$", "typeString": "type(contract Terminable)" } }, @@ -13191,15 +13428,15 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 960, + "id": 975, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 959, + "id": 974, "name": "tokenAddress", "nodeType": "VariableDeclaration", - "scope": 971, + "scope": 986, "src": "581:20:5", "stateVariable": false, "storageLocation": "default", @@ -13208,7 +13445,7 @@ "typeString": "address" }, "typeName": { - "id": 958, + "id": 973, "name": "address", "nodeType": "ElementaryTypeName", "src": "581:7:5", @@ -13225,12 +13462,12 @@ }, "payable": false, "returnParameters": { - "id": 963, + "id": 978, "nodeType": "ParameterList", "parameters": [], "src": "625:0:5" }, - "scope": 1002, + "scope": 1017, "src": "569:104:5", "stateMutability": "nonpayable", "superFunction": null, @@ -13238,21 +13475,21 @@ }, { "body": { - "id": 1000, + "id": 1015, "nodeType": "Block", "src": "712:214:5", "statements": [ { "assignments": [ - 975 + 990 ], "declarations": [ { "constant": false, - "id": 975, + "id": 990, "name": "currentBalance", "nodeType": "VariableDeclaration", - "scope": 1001, + "scope": 1016, "src": "723:22:5", "stateVariable": false, "storageLocation": "default", @@ -13261,7 +13498,7 @@ "typeString": "uint256" }, "typeName": { - "id": 974, + "id": 989, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "723:7:5", @@ -13274,7 +13511,7 @@ "visibility": "internal" } ], - "id": 982, + "id": 997, "initialValue": { "argumentTypes": null, "arguments": [ @@ -13283,14 +13520,14 @@ "arguments": [ { "argumentTypes": null, - "id": 979, + "id": 994, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1546, + "referencedDeclaration": 1561, "src": "773:4:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20TokenHolder_$1002", + "typeIdentifier": "t_contract$_ERC20TokenHolder_$1017", "typeString": "contract ERC20TokenHolder" } } @@ -13298,11 +13535,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ERC20TokenHolder_$1002", + "typeIdentifier": "t_contract$_ERC20TokenHolder_$1017", "typeString": "contract ERC20TokenHolder" } ], - "id": 978, + "id": 993, "isConstant": false, "isLValue": false, "isPure": true, @@ -13315,7 +13552,7 @@ }, "typeName": "address" }, - "id": 980, + "id": 995, "isConstant": false, "isLValue": false, "isPure": false, @@ -13339,32 +13576,32 @@ ], "expression": { "argumentTypes": null, - "id": 976, + "id": 991, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 957, + "referencedDeclaration": 972, "src": "748:6:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" } }, - "id": 977, + "id": 992, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 1303, + "referencedDeclaration": 1318, "src": "748:16:5", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 981, + "id": 996, "isConstant": false, "isLValue": false, "isPure": false, @@ -13388,18 +13625,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 985, + "id": 1000, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 983, + "id": 998, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 975, + "referencedDeclaration": 990, "src": "793:14:5", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13411,7 +13648,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 984, + "id": 999, "isConstant": false, "isLValue": false, "isPure": true, @@ -13433,11 +13670,11 @@ } }, "falseBody": null, - "id": 994, + "id": 1009, "nodeType": "IfStatement", "src": "790:95:5", "trueBody": { - "id": 993, + "id": 1008, "nodeType": "Block", "src": "813:72:5", "statements": [ @@ -13447,11 +13684,11 @@ "arguments": [ { "argumentTypes": null, - "id": 989, + "id": 1004, "name": "_creator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1034, + "referencedDeclaration": 1049, "src": "848:8:5", "typeDescriptions": { "typeIdentifier": "t_address", @@ -13460,11 +13697,11 @@ }, { "argumentTypes": null, - "id": 990, + "id": 1005, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 975, + "referencedDeclaration": 990, "src": "858:14:5", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13485,32 +13722,32 @@ ], "expression": { "argumentTypes": null, - "id": 986, + "id": 1001, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 957, + "referencedDeclaration": 972, "src": "828:6:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" } }, - "id": 988, + "id": 1003, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1383, + "referencedDeclaration": 1398, "src": "828:19:5", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1358_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1358_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1373_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1373_$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 991, + "id": 1006, "isConstant": false, "isLValue": false, "isPure": false, @@ -13524,7 +13761,7 @@ "typeString": "tuple()" } }, - "id": 992, + "id": 1007, "nodeType": "ExpressionStatement", "src": "828:45:5" } @@ -13539,32 +13776,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 995, + "id": 1010, "name": "Terminable", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1067, + "referencedDeclaration": 1082, "src": "895:10:5", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Terminable_$1067_$", + "typeIdentifier": "t_type$_t_contract$_Terminable_$1082_$", "typeString": "type(contract Terminable)" } }, - "id": 997, + "id": 1012, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "_terminate", "nodeType": "MemberAccess", - "referencedDeclaration": 1066, + "referencedDeclaration": 1081, "src": "895:21:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 998, + "id": 1013, "isConstant": false, "isLValue": false, "isPure": false, @@ -13578,14 +13815,14 @@ "typeString": "tuple()" } }, - "id": 999, + "id": 1014, "nodeType": "ExpressionStatement", "src": "895:23:5" } ] }, "documentation": null, - "id": 1001, + "id": 1016, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -13593,26 +13830,26 @@ "name": "_terminate", "nodeType": "FunctionDefinition", "parameters": { - "id": 972, + "id": 987, "nodeType": "ParameterList", "parameters": [], "src": "700:2:5" }, "payable": false, "returnParameters": { - "id": 973, + "id": 988, "nodeType": "ParameterList", "parameters": [], "src": "712:0:5" }, - "scope": 1002, + "scope": 1017, "src": "681:245:5", "stateMutability": "nonpayable", - "superFunction": 1066, + "superFunction": 1081, "visibility": "internal" } ], - "scope": 1003, + "scope": 1018, "src": "456:473:5" } ], @@ -13625,14 +13862,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", "exportedSymbols": { "IAlgoMiner": [ - 1030 + 1045 ] }, - "id": 1031, + "id": 1046, "nodeType": "SourceUnit", "nodes": [ { - "id": 1004, + "id": 1019, "literals": [ "solidity", "0.4", @@ -13647,9 +13884,9 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 1030, + "id": 1045, "linearizedBaseContracts": [ - 1030 + 1045 ], "name": "IAlgoMiner", "nodeType": "ContractDefinition", @@ -13657,7 +13894,7 @@ { "body": null, "documentation": null, - "id": 1009, + "id": 1024, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -13665,22 +13902,22 @@ "name": "isAlgoMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1005, + "id": 1020, "nodeType": "ParameterList", "parameters": [], "src": "74:2:6" }, "payable": false, "returnParameters": { - "id": 1008, + "id": 1023, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1007, + "id": 1022, "name": "", "nodeType": "VariableDeclaration", - "scope": 1009, + "scope": 1024, "src": "98:4:6", "stateVariable": false, "storageLocation": "default", @@ -13689,7 +13926,7 @@ "typeString": "bool" }, "typeName": { - "id": 1006, + "id": 1021, "name": "bool", "nodeType": "ElementaryTypeName", "src": "98:4:6", @@ -13704,7 +13941,7 @@ ], "src": "97:6:6" }, - "scope": 1030, + "scope": 1045, "src": "54:50:6", "stateMutability": "pure", "superFunction": null, @@ -13713,7 +13950,7 @@ { "body": null, "documentation": null, - "id": 1014, + "id": 1029, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -13721,22 +13958,22 @@ "name": "getMinerType", "nodeType": "FunctionDefinition", "parameters": { - "id": 1010, + "id": 1025, "nodeType": "ParameterList", "parameters": [], "src": "131:2:6" }, "payable": false, "returnParameters": { - "id": 1013, + "id": 1028, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1012, + "id": 1027, "name": "", "nodeType": "VariableDeclaration", - "scope": 1014, + "scope": 1029, "src": "155:5:6", "stateVariable": false, "storageLocation": "default", @@ -13745,7 +13982,7 @@ "typeString": "uint8" }, "typeName": { - "id": 1011, + "id": 1026, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "155:5:6", @@ -13760,7 +13997,7 @@ ], "src": "154:7:6" }, - "scope": 1030, + "scope": 1045, "src": "110:52:6", "stateMutability": "view", "superFunction": null, @@ -13769,7 +14006,7 @@ { "body": null, "documentation": null, - "id": 1019, + "id": 1034, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -13777,22 +14014,22 @@ "name": "getCategory", "nodeType": "FunctionDefinition", "parameters": { - "id": 1015, + "id": 1030, "nodeType": "ParameterList", "parameters": [], "src": "188:2:6" }, "payable": false, "returnParameters": { - "id": 1018, + "id": 1033, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1017, + "id": 1032, "name": "", "nodeType": "VariableDeclaration", - "scope": 1019, + "scope": 1034, "src": "212:5:6", "stateVariable": false, "storageLocation": "default", @@ -13801,7 +14038,7 @@ "typeString": "uint8" }, "typeName": { - "id": 1016, + "id": 1031, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "212:5:6", @@ -13816,7 +14053,7 @@ ], "src": "211:7:6" }, - "scope": 1030, + "scope": 1045, "src": "168:51:6", "stateMutability": "view", "superFunction": null, @@ -13825,7 +14062,7 @@ { "body": null, "documentation": null, - "id": 1024, + "id": 1039, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -13833,22 +14070,22 @@ "name": "isMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 1020, + "id": 1035, "nodeType": "ParameterList", "parameters": [], "src": "242:2:6" }, "payable": false, "returnParameters": { - "id": 1023, + "id": 1038, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1022, + "id": 1037, "name": "", "nodeType": "VariableDeclaration", - "scope": 1024, + "scope": 1039, "src": "266:4:6", "stateVariable": false, "storageLocation": "default", @@ -13857,7 +14094,7 @@ "typeString": "bool" }, "typeName": { - "id": 1021, + "id": 1036, "name": "bool", "nodeType": "ElementaryTypeName", "src": "266:4:6", @@ -13872,7 +14109,7 @@ ], "src": "265:6:6" }, - "scope": 1030, + "scope": 1045, "src": "225:47:6", "stateMutability": "view", "superFunction": null, @@ -13881,7 +14118,7 @@ { "body": null, "documentation": null, - "id": 1029, + "id": 1044, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -13889,22 +14126,22 @@ "name": "getMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1025, + "id": 1040, "nodeType": "ParameterList", "parameters": [], "src": "295:2:6" }, "payable": false, "returnParameters": { - "id": 1028, + "id": 1043, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1027, + "id": 1042, "name": "", "nodeType": "VariableDeclaration", - "scope": 1029, + "scope": 1044, "src": "319:7:6", "stateVariable": false, "storageLocation": "default", @@ -13913,7 +14150,7 @@ "typeString": "address" }, "typeName": { - "id": 1026, + "id": 1041, "name": "address", "nodeType": "ElementaryTypeName", "src": "319:7:6", @@ -13928,14 +14165,14 @@ ], "src": "318:9:6" }, - "scope": 1030, + "scope": 1045, "src": "278:50:6", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1031, + "scope": 1046, "src": "27:304:6" } ], @@ -13948,14 +14185,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", "exportedSymbols": { "Terminable": [ - 1067 + 1082 ] }, - "id": 1068, + "id": 1083, "nodeType": "SourceUnit", "nodes": [ { - "id": 1032, + "id": 1047, "literals": [ "solidity", "0.4", @@ -13970,19 +14207,19 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 1067, + "id": 1082, "linearizedBaseContracts": [ - 1067 + 1082 ], "name": "Terminable", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 1034, + "id": 1049, "name": "_creator", "nodeType": "VariableDeclaration", - "scope": 1067, + "scope": 1082, "src": "56:25:7", "stateVariable": true, "storageLocation": "default", @@ -13991,7 +14228,7 @@ "typeString": "address" }, "typeName": { - "id": 1033, + "id": 1048, "name": "address", "nodeType": "ElementaryTypeName", "src": "56:7:7", @@ -14005,10 +14242,10 @@ }, { "constant": false, - "id": 1036, + "id": 1051, "name": "_terminated", "nodeType": "VariableDeclaration", - "scope": 1067, + "scope": 1082, "src": "88:25:7", "stateVariable": true, "storageLocation": "default", @@ -14017,7 +14254,7 @@ "typeString": "bool" }, "typeName": { - "id": 1035, + "id": 1050, "name": "bool", "nodeType": "ElementaryTypeName", "src": "88:4:7", @@ -14031,25 +14268,25 @@ }, { "body": { - "id": 1048, + "id": 1063, "nodeType": "Block", "src": "145:70:7", "statements": [ { "expression": { "argumentTypes": null, - "id": 1042, + "id": 1057, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1039, + "id": 1054, "name": "_creator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1034, + "referencedDeclaration": 1049, "src": "156:8:7", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14062,18 +14299,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1040, + "id": 1055, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1517, + "referencedDeclaration": 1532, "src": "167:3:7", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1041, + "id": 1056, "isConstant": false, "isLValue": false, "isPure": false, @@ -14093,25 +14330,25 @@ "typeString": "address" } }, - "id": 1043, + "id": 1058, "nodeType": "ExpressionStatement", "src": "156:21:7" }, { "expression": { "argumentTypes": null, - "id": 1046, + "id": 1061, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1044, + "id": 1059, "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, + "referencedDeclaration": 1051, "src": "188:11:7", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -14123,7 +14360,7 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 1045, + "id": 1060, "isConstant": false, "isLValue": false, "isPure": true, @@ -14144,14 +14381,14 @@ "typeString": "bool" } }, - "id": 1047, + "id": 1062, "nodeType": "ExpressionStatement", "src": "188:19:7" } ] }, "documentation": null, - "id": 1049, + "id": 1064, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -14159,19 +14396,19 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1037, + "id": 1052, "nodeType": "ParameterList", "parameters": [], "src": "133:2:7" }, "payable": false, "returnParameters": { - "id": 1038, + "id": 1053, "nodeType": "ParameterList", "parameters": [], "src": "145:0:7" }, - "scope": 1067, + "scope": 1082, "src": "122:93:7", "stateMutability": "nonpayable", "superFunction": null, @@ -14179,7 +14416,7 @@ }, { "body": { - "id": 1057, + "id": 1072, "nodeType": "Block", "src": "248:52:7", "statements": [ @@ -14189,7 +14426,7 @@ "arguments": [ { "argumentTypes": null, - "id": 1053, + "id": 1068, "isConstant": false, "isLValue": false, "isPure": false, @@ -14200,11 +14437,11 @@ "src": "267:12:7", "subExpression": { "argumentTypes": null, - "id": 1052, + "id": 1067, "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, + "referencedDeclaration": 1051, "src": "268:11:7", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -14224,21 +14461,21 @@ "typeString": "bool" } ], - "id": 1051, + "id": 1066, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, + "referencedDeclaration": 1535, "src": "259:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1054, + "id": 1069, "isConstant": false, "isLValue": false, "isPure": false, @@ -14252,23 +14489,23 @@ "typeString": "tuple()" } }, - "id": 1055, + "id": 1070, "nodeType": "ExpressionStatement", "src": "259:21:7" }, { - "id": 1056, + "id": 1071, "nodeType": "PlaceholderStatement", "src": "291:1:7" } ] }, "documentation": null, - "id": 1058, + "id": 1073, "name": "notTerminated", "nodeType": "ModifierDefinition", "parameters": { - "id": 1050, + "id": 1065, "nodeType": "ParameterList", "parameters": [], "src": "245:2:7" @@ -14278,25 +14515,25 @@ }, { "body": { - "id": 1065, + "id": 1080, "nodeType": "Block", "src": "339:37:7", "statements": [ { "expression": { "argumentTypes": null, - "id": 1063, + "id": 1078, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1061, + "id": 1076, "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, + "referencedDeclaration": 1051, "src": "350:11:7", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -14308,7 +14545,7 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 1062, + "id": 1077, "isConstant": false, "isLValue": false, "isPure": true, @@ -14329,14 +14566,14 @@ "typeString": "bool" } }, - "id": 1064, + "id": 1079, "nodeType": "ExpressionStatement", "src": "350:18:7" } ] }, "documentation": null, - "id": 1066, + "id": 1081, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -14344,26 +14581,26 @@ "name": "_terminate", "nodeType": "FunctionDefinition", "parameters": { - "id": 1059, + "id": 1074, "nodeType": "ParameterList", "parameters": [], "src": "327:2:7" }, "payable": false, "returnParameters": { - "id": 1060, + "id": 1075, "nodeType": "ParameterList", "parameters": [], "src": "339:0:7" }, - "scope": 1067, + "scope": 1082, "src": "308:68:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 1068, + "scope": 1083, "src": "27:352:7" } ], @@ -14376,14 +14613,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "exportedSymbols": { "Roles": [ - 1161 + 1176 ] }, - "id": 1162, + "id": 1177, "nodeType": "SourceUnit", "nodes": [ { - "id": 1069, + "id": 1084, "literals": [ "solidity", "^", @@ -14399,23 +14636,23 @@ "contractKind": "library", "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", "fullyImplemented": true, - "id": 1161, + "id": 1176, "linearizedBaseContracts": [ - 1161 + 1176 ], "name": "Roles", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "Roles.Role", - "id": 1074, + "id": 1089, "members": [ { "constant": false, - "id": 1073, + "id": 1088, "name": "bearer", "nodeType": "VariableDeclaration", - "scope": 1074, + "scope": 1089, "src": "145:32:8", "stateVariable": false, "storageLocation": "default", @@ -14424,9 +14661,9 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 1072, + "id": 1087, "keyType": { - "id": 1070, + "id": 1085, "name": "address", "nodeType": "ElementaryTypeName", "src": "154:7:8", @@ -14442,7 +14679,7 @@ "typeString": "mapping(address => bool)" }, "valueType": { - "id": 1071, + "id": 1086, "name": "bool", "nodeType": "ElementaryTypeName", "src": "165:4:8", @@ -14458,13 +14695,13 @@ ], "name": "Role", "nodeType": "StructDefinition", - "scope": 1161, + "scope": 1176, "src": "127:55:8", "visibility": "public" }, { "body": { - "id": 1105, + "id": 1120, "nodeType": "Block", "src": "302:109:8", "statements": [ @@ -14478,18 +14715,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1086, + "id": 1101, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1082, + "id": 1097, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1078, + "referencedDeclaration": 1093, "src": "316:7:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14504,7 +14741,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1084, + "id": 1099, "isConstant": false, "isLValue": false, "isPure": true, @@ -14527,7 +14764,7 @@ "typeString": "int_const 0" } ], - "id": 1083, + "id": 1098, "isConstant": false, "isLValue": false, "isPure": true, @@ -14540,7 +14777,7 @@ }, "typeName": "address" }, - "id": 1085, + "id": 1100, "isConstant": false, "isLValue": false, "isPure": true, @@ -14568,21 +14805,21 @@ "typeString": "bool" } ], - "id": 1081, + "id": 1096, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, + "referencedDeclaration": 1535, "src": "308:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1087, + "id": 1102, "isConstant": false, "isLValue": false, "isPure": false, @@ -14596,7 +14833,7 @@ "typeString": "tuple()" } }, - "id": 1088, + "id": 1103, "nodeType": "ExpressionStatement", "src": "308:30:8" }, @@ -14606,7 +14843,7 @@ "arguments": [ { "argumentTypes": null, - "id": 1094, + "id": 1109, "isConstant": false, "isLValue": false, "isPure": false, @@ -14620,24 +14857,24 @@ "arguments": [ { "argumentTypes": null, - "id": 1091, + "id": 1106, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1076, + "referencedDeclaration": 1091, "src": "357:4:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, { "argumentTypes": null, - "id": 1092, + "id": 1107, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1078, + "referencedDeclaration": 1093, "src": "363:7:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14648,7 +14885,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", "typeString": "struct Roles.Role storage pointer" }, { @@ -14656,18 +14893,18 @@ "typeString": "address" } ], - "id": 1090, + "id": 1105, "name": "has", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1160, + "referencedDeclaration": 1175, "src": "353:3:8", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1074_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1089_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 1093, + "id": 1108, "isConstant": false, "isLValue": false, "isPure": false, @@ -14694,21 +14931,21 @@ "typeString": "bool" } ], - "id": 1089, + "id": 1104, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, + "referencedDeclaration": 1535, "src": "344:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1095, + "id": 1110, "isConstant": false, "isLValue": false, "isPure": false, @@ -14722,14 +14959,14 @@ "typeString": "tuple()" } }, - "id": 1096, + "id": 1111, "nodeType": "ExpressionStatement", "src": "344:28:8" }, { "expression": { "argumentTypes": null, - "id": 1103, + "id": 1118, "isConstant": false, "isLValue": false, "isPure": false, @@ -14740,39 +14977,39 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1097, + "id": 1112, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1076, + "referencedDeclaration": 1091, "src": "379:4:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 1100, + "id": 1115, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 1073, + "referencedDeclaration": 1088, "src": "379:11:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 1101, + "id": 1116, "indexExpression": { "argumentTypes": null, - "id": 1099, + "id": 1114, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1078, + "referencedDeclaration": 1093, "src": "391:7:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14795,7 +15032,7 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 1102, + "id": 1117, "isConstant": false, "isLValue": false, "isPure": true, @@ -14816,14 +15053,14 @@ "typeString": "bool" } }, - "id": 1104, + "id": 1119, "nodeType": "ExpressionStatement", "src": "379:27:8" } ] }, "documentation": "@dev give an account access to this role", - "id": 1106, + "id": 1121, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -14831,31 +15068,31 @@ "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 1079, + "id": 1094, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1076, + "id": 1091, "name": "role", "nodeType": "VariableDeclaration", - "scope": 1106, + "scope": 1121, "src": "257:17:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 1075, + "id": 1090, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1074, + "referencedDeclaration": 1089, "src": "257:4:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -14864,10 +15101,10 @@ }, { "constant": false, - "id": 1078, + "id": 1093, "name": "account", "nodeType": "VariableDeclaration", - "scope": 1106, + "scope": 1121, "src": "276:15:8", "stateVariable": false, "storageLocation": "default", @@ -14876,7 +15113,7 @@ "typeString": "address" }, "typeName": { - "id": 1077, + "id": 1092, "name": "address", "nodeType": "ElementaryTypeName", "src": "276:7:8", @@ -14893,12 +15130,12 @@ }, "payable": false, "returnParameters": { - "id": 1080, + "id": 1095, "nodeType": "ParameterList", "parameters": [], "src": "302:0:8" }, - "scope": 1161, + "scope": 1176, "src": "244:167:8", "stateMutability": "nonpayable", "superFunction": null, @@ -14906,7 +15143,7 @@ }, { "body": { - "id": 1136, + "id": 1151, "nodeType": "Block", "src": "538:109:8", "statements": [ @@ -14920,18 +15157,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1118, + "id": 1133, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1114, + "id": 1129, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, + "referencedDeclaration": 1125, "src": "552:7:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14946,7 +15183,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1116, + "id": 1131, "isConstant": false, "isLValue": false, "isPure": true, @@ -14969,7 +15206,7 @@ "typeString": "int_const 0" } ], - "id": 1115, + "id": 1130, "isConstant": false, "isLValue": false, "isPure": true, @@ -14982,7 +15219,7 @@ }, "typeName": "address" }, - "id": 1117, + "id": 1132, "isConstant": false, "isLValue": false, "isPure": true, @@ -15010,21 +15247,21 @@ "typeString": "bool" } ], - "id": 1113, + "id": 1128, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, + "referencedDeclaration": 1535, "src": "544:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1119, + "id": 1134, "isConstant": false, "isLValue": false, "isPure": false, @@ -15038,7 +15275,7 @@ "typeString": "tuple()" } }, - "id": 1120, + "id": 1135, "nodeType": "ExpressionStatement", "src": "544:30:8" }, @@ -15051,24 +15288,24 @@ "arguments": [ { "argumentTypes": null, - "id": 1123, + "id": 1138, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1108, + "referencedDeclaration": 1123, "src": "592:4:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, { "argumentTypes": null, - "id": 1124, + "id": 1139, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, + "referencedDeclaration": 1125, "src": "598:7:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -15079,7 +15316,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", "typeString": "struct Roles.Role storage pointer" }, { @@ -15087,18 +15324,18 @@ "typeString": "address" } ], - "id": 1122, + "id": 1137, "name": "has", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1160, + "referencedDeclaration": 1175, "src": "588:3:8", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1074_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1089_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 1125, + "id": 1140, "isConstant": false, "isLValue": false, "isPure": false, @@ -15120,21 +15357,21 @@ "typeString": "bool" } ], - "id": 1121, + "id": 1136, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, + "referencedDeclaration": 1535, "src": "580:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1126, + "id": 1141, "isConstant": false, "isLValue": false, "isPure": false, @@ -15148,14 +15385,14 @@ "typeString": "tuple()" } }, - "id": 1127, + "id": 1142, "nodeType": "ExpressionStatement", "src": "580:27:8" }, { "expression": { "argumentTypes": null, - "id": 1134, + "id": 1149, "isConstant": false, "isLValue": false, "isPure": false, @@ -15166,39 +15403,39 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1128, + "id": 1143, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1108, + "referencedDeclaration": 1123, "src": "614:4:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 1131, + "id": 1146, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 1073, + "referencedDeclaration": 1088, "src": "614:11:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 1132, + "id": 1147, "indexExpression": { "argumentTypes": null, - "id": 1130, + "id": 1145, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, + "referencedDeclaration": 1125, "src": "626:7:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -15221,7 +15458,7 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 1133, + "id": 1148, "isConstant": false, "isLValue": false, "isPure": true, @@ -15242,14 +15479,14 @@ "typeString": "bool" } }, - "id": 1135, + "id": 1150, "nodeType": "ExpressionStatement", "src": "614:28:8" } ] }, "documentation": "@dev remove an account's access to this role", - "id": 1137, + "id": 1152, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -15257,31 +15494,31 @@ "name": "remove", "nodeType": "FunctionDefinition", "parameters": { - "id": 1111, + "id": 1126, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1108, + "id": 1123, "name": "role", "nodeType": "VariableDeclaration", - "scope": 1137, + "scope": 1152, "src": "493:17:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 1107, + "id": 1122, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1074, + "referencedDeclaration": 1089, "src": "493:4:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -15290,10 +15527,10 @@ }, { "constant": false, - "id": 1110, + "id": 1125, "name": "account", "nodeType": "VariableDeclaration", - "scope": 1137, + "scope": 1152, "src": "512:15:8", "stateVariable": false, "storageLocation": "default", @@ -15302,7 +15539,7 @@ "typeString": "address" }, "typeName": { - "id": 1109, + "id": 1124, "name": "address", "nodeType": "ElementaryTypeName", "src": "512:7:8", @@ -15319,12 +15556,12 @@ }, "payable": false, "returnParameters": { - "id": 1112, + "id": 1127, "nodeType": "ParameterList", "parameters": [], "src": "538:0:8" }, - "scope": 1161, + "scope": 1176, "src": "477:170:8", "stateMutability": "nonpayable", "superFunction": null, @@ -15332,7 +15569,7 @@ }, { "body": { - "id": 1159, + "id": 1174, "nodeType": "Block", "src": "817:74:8", "statements": [ @@ -15346,18 +15583,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1151, + "id": 1166, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1147, + "id": 1162, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1141, + "referencedDeclaration": 1156, "src": "831:7:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -15372,7 +15609,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1149, + "id": 1164, "isConstant": false, "isLValue": false, "isPure": true, @@ -15395,7 +15632,7 @@ "typeString": "int_const 0" } ], - "id": 1148, + "id": 1163, "isConstant": false, "isLValue": false, "isPure": true, @@ -15408,7 +15645,7 @@ }, "typeName": "address" }, - "id": 1150, + "id": 1165, "isConstant": false, "isLValue": false, "isPure": true, @@ -15436,21 +15673,21 @@ "typeString": "bool" } ], - "id": 1146, + "id": 1161, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, + "referencedDeclaration": 1535, "src": "823:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1152, + "id": 1167, "isConstant": false, "isLValue": false, "isPure": false, @@ -15464,7 +15701,7 @@ "typeString": "tuple()" } }, - "id": 1153, + "id": 1168, "nodeType": "ExpressionStatement", "src": "823:30:8" }, @@ -15475,39 +15712,39 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1154, + "id": 1169, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1139, + "referencedDeclaration": 1154, "src": "866:4:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 1155, + "id": 1170, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 1073, + "referencedDeclaration": 1088, "src": "866:11:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 1157, + "id": 1172, "indexExpression": { "argumentTypes": null, - "id": 1156, + "id": 1171, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1141, + "referencedDeclaration": 1156, "src": "878:7:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -15525,15 +15762,15 @@ "typeString": "bool" } }, - "functionReturnParameters": 1145, - "id": 1158, + "functionReturnParameters": 1160, + "id": 1173, "nodeType": "Return", "src": "859:27:8" } ] }, "documentation": "@dev check if an account has this role\n@return bool", - "id": 1160, + "id": 1175, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -15541,31 +15778,31 @@ "name": "has", "nodeType": "FunctionDefinition", "parameters": { - "id": 1142, + "id": 1157, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1139, + "id": 1154, "name": "role", "nodeType": "VariableDeclaration", - "scope": 1160, + "scope": 1175, "src": "738:17:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 1138, + "id": 1153, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1074, + "referencedDeclaration": 1089, "src": "738:4:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1074_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -15574,10 +15811,10 @@ }, { "constant": false, - "id": 1141, + "id": 1156, "name": "account", "nodeType": "VariableDeclaration", - "scope": 1160, + "scope": 1175, "src": "757:15:8", "stateVariable": false, "storageLocation": "default", @@ -15586,7 +15823,7 @@ "typeString": "address" }, "typeName": { - "id": 1140, + "id": 1155, "name": "address", "nodeType": "ElementaryTypeName", "src": "757:7:8", @@ -15603,15 +15840,15 @@ }, "payable": false, "returnParameters": { - "id": 1145, + "id": 1160, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1144, + "id": 1159, "name": "", "nodeType": "VariableDeclaration", - "scope": 1160, + "scope": 1175, "src": "809:4:8", "stateVariable": false, "storageLocation": "default", @@ -15620,7 +15857,7 @@ "typeString": "bool" }, "typeName": { - "id": 1143, + "id": 1158, "name": "bool", "nodeType": "ElementaryTypeName", "src": "809:4:8", @@ -15635,14 +15872,14 @@ ], "src": "808:6:8" }, - "scope": 1161, + "scope": 1176, "src": "725:166:8", "stateMutability": "view", "superFunction": null, "visibility": "internal" } ], - "scope": 1162, + "scope": 1177, "src": "109:784:8" } ], @@ -15655,14 +15892,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "exportedSymbols": { "SafeMath": [ - 1289 + 1304 ] }, - "id": 1290, + "id": 1305, "nodeType": "SourceUnit", "nodes": [ { - "id": 1163, + "id": 1178, "literals": [ "solidity", "^", @@ -15678,16 +15915,16 @@ "contractKind": "library", "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", "fullyImplemented": true, - "id": 1289, + "id": 1304, "linearizedBaseContracts": [ - 1289 + 1304 ], "name": "SafeMath", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1195, + "id": 1210, "nodeType": "Block", "src": "271:314:9", "statements": [ @@ -15698,18 +15935,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1174, + "id": 1189, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1172, + "id": 1187, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1165, + "referencedDeclaration": 1180, "src": "486:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15721,7 +15958,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1173, + "id": 1188, "isConstant": false, "isLValue": false, "isPure": true, @@ -15743,11 +15980,11 @@ } }, "falseBody": null, - "id": 1178, + "id": 1193, "nodeType": "IfStatement", "src": "482:35:9", "trueBody": { - "id": 1177, + "id": 1192, "nodeType": "Block", "src": "494:23:9", "statements": [ @@ -15755,7 +15992,7 @@ "expression": { "argumentTypes": null, "hexValue": "30", - "id": 1175, + "id": 1190, "isConstant": false, "isLValue": false, "isPure": true, @@ -15770,8 +16007,8 @@ }, "value": "0" }, - "functionReturnParameters": 1171, - "id": 1176, + "functionReturnParameters": 1186, + "id": 1191, "nodeType": "Return", "src": "502:8:9" } @@ -15780,15 +16017,15 @@ }, { "assignments": [ - 1180 + 1195 ], "declarations": [ { "constant": false, - "id": 1180, + "id": 1195, "name": "c", "nodeType": "VariableDeclaration", - "scope": 1196, + "scope": 1211, "src": "523:9:9", "stateVariable": false, "storageLocation": "default", @@ -15797,7 +16034,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1179, + "id": 1194, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "523:7:9", @@ -15810,25 +16047,25 @@ "visibility": "internal" } ], - "id": 1184, + "id": 1199, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1183, + "id": 1198, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1181, + "id": 1196, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1165, + "referencedDeclaration": 1180, "src": "535:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15839,11 +16076,11 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 1182, + "id": 1197, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1167, + "referencedDeclaration": 1182, "src": "539:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15869,7 +16106,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1190, + "id": 1205, "isConstant": false, "isLValue": false, "isPure": false, @@ -15880,18 +16117,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1188, + "id": 1203, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1186, + "id": 1201, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1180, + "referencedDeclaration": 1195, "src": "554:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15902,11 +16139,11 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 1187, + "id": 1202, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1165, + "referencedDeclaration": 1180, "src": "558:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15923,11 +16160,11 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1189, + "id": 1204, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1167, + "referencedDeclaration": 1182, "src": "563:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15948,21 +16185,21 @@ "typeString": "bool" } ], - "id": 1185, + "id": 1200, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, + "referencedDeclaration": 1535, "src": "546:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1191, + "id": 1206, "isConstant": false, "isLValue": false, "isPure": false, @@ -15976,33 +16213,33 @@ "typeString": "tuple()" } }, - "id": 1192, + "id": 1207, "nodeType": "ExpressionStatement", "src": "546:19:9" }, { "expression": { "argumentTypes": null, - "id": 1193, + "id": 1208, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1180, + "referencedDeclaration": 1195, "src": "579:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1171, - "id": 1194, + "functionReturnParameters": 1186, + "id": 1209, "nodeType": "Return", "src": "572:8:9" } ] }, "documentation": "@dev Multiplies two numbers, reverts on overflow.", - "id": 1196, + "id": 1211, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -16010,15 +16247,15 @@ "name": "mul", "nodeType": "FunctionDefinition", "parameters": { - "id": 1168, + "id": 1183, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1165, + "id": 1180, "name": "a", "nodeType": "VariableDeclaration", - "scope": 1196, + "scope": 1211, "src": "217:9:9", "stateVariable": false, "storageLocation": "default", @@ -16027,7 +16264,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1164, + "id": 1179, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "217:7:9", @@ -16041,10 +16278,10 @@ }, { "constant": false, - "id": 1167, + "id": 1182, "name": "b", "nodeType": "VariableDeclaration", - "scope": 1196, + "scope": 1211, "src": "228:9:9", "stateVariable": false, "storageLocation": "default", @@ -16053,7 +16290,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1166, + "id": 1181, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "228:7:9", @@ -16070,15 +16307,15 @@ }, "payable": false, "returnParameters": { - "id": 1171, + "id": 1186, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1170, + "id": 1185, "name": "", "nodeType": "VariableDeclaration", - "scope": 1196, + "scope": 1211, "src": "262:7:9", "stateVariable": false, "storageLocation": "default", @@ -16087,7 +16324,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1169, + "id": 1184, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "262:7:9", @@ -16102,7 +16339,7 @@ ], "src": "261:9:9" }, - "scope": 1289, + "scope": 1304, "src": "204:381:9", "stateMutability": "pure", "superFunction": null, @@ -16110,7 +16347,7 @@ }, { "body": { - "id": 1219, + "id": 1234, "nodeType": "Block", "src": "762:203:9", "statements": [ @@ -16124,18 +16361,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1208, + "id": 1223, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1206, + "id": 1221, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1200, + "referencedDeclaration": 1215, "src": "776:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16147,7 +16384,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1207, + "id": 1222, "isConstant": false, "isLValue": false, "isPure": true, @@ -16176,21 +16413,21 @@ "typeString": "bool" } ], - "id": 1205, + "id": 1220, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, + "referencedDeclaration": 1535, "src": "768:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1209, + "id": 1224, "isConstant": false, "isLValue": false, "isPure": false, @@ -16204,21 +16441,21 @@ "typeString": "tuple()" } }, - "id": 1210, + "id": 1225, "nodeType": "ExpressionStatement", "src": "768:14:9" }, { "assignments": [ - 1212 + 1227 ], "declarations": [ { "constant": false, - "id": 1212, + "id": 1227, "name": "c", "nodeType": "VariableDeclaration", - "scope": 1220, + "scope": 1235, "src": "846:9:9", "stateVariable": false, "storageLocation": "default", @@ -16227,7 +16464,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1211, + "id": 1226, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "846:7:9", @@ -16240,25 +16477,25 @@ "visibility": "internal" } ], - "id": 1216, + "id": 1231, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1215, + "id": 1230, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1213, + "id": 1228, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1198, + "referencedDeclaration": 1213, "src": "858:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16269,11 +16506,11 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 1214, + "id": 1229, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1200, + "referencedDeclaration": 1215, "src": "862:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16292,26 +16529,26 @@ { "expression": { "argumentTypes": null, - "id": 1217, + "id": 1232, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1212, + "referencedDeclaration": 1227, "src": "959:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1204, - "id": 1218, + "functionReturnParameters": 1219, + "id": 1233, "nodeType": "Return", "src": "952:8:9" } ] }, "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", - "id": 1220, + "id": 1235, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -16319,15 +16556,15 @@ "name": "div", "nodeType": "FunctionDefinition", "parameters": { - "id": 1201, + "id": 1216, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1198, + "id": 1213, "name": "a", "nodeType": "VariableDeclaration", - "scope": 1220, + "scope": 1235, "src": "708:9:9", "stateVariable": false, "storageLocation": "default", @@ -16336,7 +16573,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1197, + "id": 1212, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "708:7:9", @@ -16350,10 +16587,10 @@ }, { "constant": false, - "id": 1200, + "id": 1215, "name": "b", "nodeType": "VariableDeclaration", - "scope": 1220, + "scope": 1235, "src": "719:9:9", "stateVariable": false, "storageLocation": "default", @@ -16362,7 +16599,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1199, + "id": 1214, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "719:7:9", @@ -16379,15 +16616,15 @@ }, "payable": false, "returnParameters": { - "id": 1204, + "id": 1219, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1203, + "id": 1218, "name": "", "nodeType": "VariableDeclaration", - "scope": 1220, + "scope": 1235, "src": "753:7:9", "stateVariable": false, "storageLocation": "default", @@ -16396,7 +16633,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1202, + "id": 1217, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "753:7:9", @@ -16411,7 +16648,7 @@ ], "src": "752:9:9" }, - "scope": 1289, + "scope": 1304, "src": "695:270:9", "stateMutability": "pure", "superFunction": null, @@ -16419,7 +16656,7 @@ }, { "body": { - "id": 1243, + "id": 1258, "nodeType": "Block", "src": "1145:64:9", "statements": [ @@ -16433,18 +16670,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1232, + "id": 1247, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1230, + "id": 1245, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1224, + "referencedDeclaration": 1239, "src": "1159:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16455,11 +16692,11 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 1231, + "id": 1246, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1222, + "referencedDeclaration": 1237, "src": "1164:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16480,21 +16717,21 @@ "typeString": "bool" } ], - "id": 1229, + "id": 1244, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, + "referencedDeclaration": 1535, "src": "1151:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1233, + "id": 1248, "isConstant": false, "isLValue": false, "isPure": false, @@ -16508,21 +16745,21 @@ "typeString": "tuple()" } }, - "id": 1234, + "id": 1249, "nodeType": "ExpressionStatement", "src": "1151:15:9" }, { "assignments": [ - 1236 + 1251 ], "declarations": [ { "constant": false, - "id": 1236, + "id": 1251, "name": "c", "nodeType": "VariableDeclaration", - "scope": 1244, + "scope": 1259, "src": "1172:9:9", "stateVariable": false, "storageLocation": "default", @@ -16531,7 +16768,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1235, + "id": 1250, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1172:7:9", @@ -16544,25 +16781,25 @@ "visibility": "internal" } ], - "id": 1240, + "id": 1255, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1239, + "id": 1254, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1237, + "id": 1252, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1222, + "referencedDeclaration": 1237, "src": "1184:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16573,11 +16810,11 @@ "operator": "-", "rightExpression": { "argumentTypes": null, - "id": 1238, + "id": 1253, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1224, + "referencedDeclaration": 1239, "src": "1188:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16596,26 +16833,26 @@ { "expression": { "argumentTypes": null, - "id": 1241, + "id": 1256, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1236, + "referencedDeclaration": 1251, "src": "1203:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1228, - "id": 1242, + "functionReturnParameters": 1243, + "id": 1257, "nodeType": "Return", "src": "1196:8:9" } ] }, "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", - "id": 1244, + "id": 1259, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -16623,15 +16860,15 @@ "name": "sub", "nodeType": "FunctionDefinition", "parameters": { - "id": 1225, + "id": 1240, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1222, + "id": 1237, "name": "a", "nodeType": "VariableDeclaration", - "scope": 1244, + "scope": 1259, "src": "1091:9:9", "stateVariable": false, "storageLocation": "default", @@ -16640,7 +16877,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1221, + "id": 1236, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1091:7:9", @@ -16654,10 +16891,10 @@ }, { "constant": false, - "id": 1224, + "id": 1239, "name": "b", "nodeType": "VariableDeclaration", - "scope": 1244, + "scope": 1259, "src": "1102:9:9", "stateVariable": false, "storageLocation": "default", @@ -16666,7 +16903,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1223, + "id": 1238, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1102:7:9", @@ -16683,15 +16920,15 @@ }, "payable": false, "returnParameters": { - "id": 1228, + "id": 1243, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1227, + "id": 1242, "name": "", "nodeType": "VariableDeclaration", - "scope": 1244, + "scope": 1259, "src": "1136:7:9", "stateVariable": false, "storageLocation": "default", @@ -16700,7 +16937,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1226, + "id": 1241, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1136:7:9", @@ -16715,7 +16952,7 @@ ], "src": "1135:9:9" }, - "scope": 1289, + "scope": 1304, "src": "1078:131:9", "stateMutability": "pure", "superFunction": null, @@ -16723,21 +16960,21 @@ }, { "body": { - "id": 1267, + "id": 1282, "nodeType": "Block", "src": "1339:64:9", "statements": [ { "assignments": [ - 1254 + 1269 ], "declarations": [ { "constant": false, - "id": 1254, + "id": 1269, "name": "c", "nodeType": "VariableDeclaration", - "scope": 1268, + "scope": 1283, "src": "1345:9:9", "stateVariable": false, "storageLocation": "default", @@ -16746,7 +16983,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1253, + "id": 1268, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1345:7:9", @@ -16759,25 +16996,25 @@ "visibility": "internal" } ], - "id": 1258, + "id": 1273, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1257, + "id": 1272, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1255, + "id": 1270, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1246, + "referencedDeclaration": 1261, "src": "1357:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16788,11 +17025,11 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 1256, + "id": 1271, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1248, + "referencedDeclaration": 1263, "src": "1361:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16818,18 +17055,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1262, + "id": 1277, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1260, + "id": 1275, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1254, + "referencedDeclaration": 1269, "src": "1376:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16840,11 +17077,11 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 1261, + "id": 1276, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1246, + "referencedDeclaration": 1261, "src": "1381:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16865,21 +17102,21 @@ "typeString": "bool" } ], - "id": 1259, + "id": 1274, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, + "referencedDeclaration": 1535, "src": "1368:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1263, + "id": 1278, "isConstant": false, "isLValue": false, "isPure": false, @@ -16893,33 +17130,33 @@ "typeString": "tuple()" } }, - "id": 1264, + "id": 1279, "nodeType": "ExpressionStatement", "src": "1368:15:9" }, { "expression": { "argumentTypes": null, - "id": 1265, + "id": 1280, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1254, + "referencedDeclaration": 1269, "src": "1397:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1252, - "id": 1266, + "functionReturnParameters": 1267, + "id": 1281, "nodeType": "Return", "src": "1390:8:9" } ] }, "documentation": "@dev Adds two numbers, reverts on overflow.", - "id": 1268, + "id": 1283, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -16927,15 +17164,15 @@ "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 1249, + "id": 1264, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1246, + "id": 1261, "name": "a", "nodeType": "VariableDeclaration", - "scope": 1268, + "scope": 1283, "src": "1285:9:9", "stateVariable": false, "storageLocation": "default", @@ -16944,7 +17181,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1245, + "id": 1260, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1285:7:9", @@ -16958,10 +17195,10 @@ }, { "constant": false, - "id": 1248, + "id": 1263, "name": "b", "nodeType": "VariableDeclaration", - "scope": 1268, + "scope": 1283, "src": "1296:9:9", "stateVariable": false, "storageLocation": "default", @@ -16970,7 +17207,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1247, + "id": 1262, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1296:7:9", @@ -16987,15 +17224,15 @@ }, "payable": false, "returnParameters": { - "id": 1252, + "id": 1267, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1251, + "id": 1266, "name": "", "nodeType": "VariableDeclaration", - "scope": 1268, + "scope": 1283, "src": "1330:7:9", "stateVariable": false, "storageLocation": "default", @@ -17004,7 +17241,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1250, + "id": 1265, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1330:7:9", @@ -17019,7 +17256,7 @@ ], "src": "1329:9:9" }, - "scope": 1289, + "scope": 1304, "src": "1272:131:9", "stateMutability": "pure", "superFunction": null, @@ -17027,7 +17264,7 @@ }, { "body": { - "id": 1287, + "id": 1302, "nodeType": "Block", "src": "1602:44:9", "statements": [ @@ -17041,18 +17278,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1280, + "id": 1295, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1278, + "id": 1293, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1272, + "referencedDeclaration": 1287, "src": "1616:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -17064,7 +17301,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1279, + "id": 1294, "isConstant": false, "isLValue": false, "isPure": true, @@ -17093,21 +17330,21 @@ "typeString": "bool" } ], - "id": 1277, + "id": 1292, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, + "referencedDeclaration": 1535, "src": "1608:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1281, + "id": 1296, "isConstant": false, "isLValue": false, "isPure": false, @@ -17121,7 +17358,7 @@ "typeString": "tuple()" } }, - "id": 1282, + "id": 1297, "nodeType": "ExpressionStatement", "src": "1608:15:9" }, @@ -17132,18 +17369,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1285, + "id": 1300, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1283, + "id": 1298, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1270, + "referencedDeclaration": 1285, "src": "1636:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -17154,11 +17391,11 @@ "operator": "%", "rightExpression": { "argumentTypes": null, - "id": 1284, + "id": 1299, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1272, + "referencedDeclaration": 1287, "src": "1640:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -17171,15 +17408,15 @@ "typeString": "uint256" } }, - "functionReturnParameters": 1276, - "id": 1286, + "functionReturnParameters": 1291, + "id": 1301, "nodeType": "Return", "src": "1629:12:9" } ] }, "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", - "id": 1288, + "id": 1303, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -17187,15 +17424,15 @@ "name": "mod", "nodeType": "FunctionDefinition", "parameters": { - "id": 1273, + "id": 1288, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1270, + "id": 1285, "name": "a", "nodeType": "VariableDeclaration", - "scope": 1288, + "scope": 1303, "src": "1548:9:9", "stateVariable": false, "storageLocation": "default", @@ -17204,7 +17441,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1269, + "id": 1284, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1548:7:9", @@ -17218,10 +17455,10 @@ }, { "constant": false, - "id": 1272, + "id": 1287, "name": "b", "nodeType": "VariableDeclaration", - "scope": 1288, + "scope": 1303, "src": "1559:9:9", "stateVariable": false, "storageLocation": "default", @@ -17230,7 +17467,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1271, + "id": 1286, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1559:7:9", @@ -17247,15 +17484,15 @@ }, "payable": false, "returnParameters": { - "id": 1276, + "id": 1291, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1275, + "id": 1290, "name": "", "nodeType": "VariableDeclaration", - "scope": 1288, + "scope": 1303, "src": "1593:7:9", "stateVariable": false, "storageLocation": "default", @@ -17264,7 +17501,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1274, + "id": 1289, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1593:7:9", @@ -17279,14 +17516,14 @@ ], "src": "1592:9:9" }, - "scope": 1289, + "scope": 1304, "src": "1535:111:9", "stateMutability": "pure", "superFunction": null, "visibility": "internal" } ], - "scope": 1290, + "scope": 1305, "src": "117:1531:9" } ], @@ -17299,14 +17536,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "exportedSymbols": { "IERC20": [ - 1358 + 1373 ] }, - "id": 1359, + "id": 1374, "nodeType": "SourceUnit", "nodes": [ { - "id": 1291, + "id": 1306, "literals": [ "solidity", "^", @@ -17322,9 +17559,9 @@ "contractKind": "interface", "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", "fullyImplemented": false, - "id": 1358, + "id": 1373, "linearizedBaseContracts": [ - 1358 + 1373 ], "name": "IERC20", "nodeType": "ContractDefinition", @@ -17332,7 +17569,7 @@ { "body": null, "documentation": null, - "id": 1296, + "id": 1311, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -17340,22 +17577,22 @@ "name": "totalSupply", "nodeType": "FunctionDefinition", "parameters": { - "id": 1292, + "id": 1307, "nodeType": "ParameterList", "parameters": [], "src": "156:2:10" }, "payable": false, "returnParameters": { - "id": 1295, + "id": 1310, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1294, + "id": 1309, "name": "", "nodeType": "VariableDeclaration", - "scope": 1296, + "scope": 1311, "src": "182:7:10", "stateVariable": false, "storageLocation": "default", @@ -17364,7 +17601,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1293, + "id": 1308, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "182:7:10", @@ -17379,7 +17616,7 @@ ], "src": "181:9:10" }, - "scope": 1358, + "scope": 1373, "src": "136:55:10", "stateMutability": "view", "superFunction": null, @@ -17388,7 +17625,7 @@ { "body": null, "documentation": null, - "id": 1303, + "id": 1318, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -17396,15 +17633,15 @@ "name": "balanceOf", "nodeType": "FunctionDefinition", "parameters": { - "id": 1299, + "id": 1314, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1298, + "id": 1313, "name": "who", "nodeType": "VariableDeclaration", - "scope": 1303, + "scope": 1318, "src": "214:11:10", "stateVariable": false, "storageLocation": "default", @@ -17413,7 +17650,7 @@ "typeString": "address" }, "typeName": { - "id": 1297, + "id": 1312, "name": "address", "nodeType": "ElementaryTypeName", "src": "214:7:10", @@ -17430,15 +17667,15 @@ }, "payable": false, "returnParameters": { - "id": 1302, + "id": 1317, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1301, + "id": 1316, "name": "", "nodeType": "VariableDeclaration", - "scope": 1303, + "scope": 1318, "src": "250:7:10", "stateVariable": false, "storageLocation": "default", @@ -17447,7 +17684,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1300, + "id": 1315, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "250:7:10", @@ -17462,7 +17699,7 @@ ], "src": "249:9:10" }, - "scope": 1358, + "scope": 1373, "src": "195:64:10", "stateMutability": "view", "superFunction": null, @@ -17471,7 +17708,7 @@ { "body": null, "documentation": null, - "id": 1312, + "id": 1327, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -17479,15 +17716,15 @@ "name": "allowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1308, + "id": 1323, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1305, + "id": 1320, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1312, + "scope": 1327, "src": "282:13:10", "stateVariable": false, "storageLocation": "default", @@ -17496,7 +17733,7 @@ "typeString": "address" }, "typeName": { - "id": 1304, + "id": 1319, "name": "address", "nodeType": "ElementaryTypeName", "src": "282:7:10", @@ -17510,10 +17747,10 @@ }, { "constant": false, - "id": 1307, + "id": 1322, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1312, + "scope": 1327, "src": "297:15:10", "stateVariable": false, "storageLocation": "default", @@ -17522,7 +17759,7 @@ "typeString": "address" }, "typeName": { - "id": 1306, + "id": 1321, "name": "address", "nodeType": "ElementaryTypeName", "src": "297:7:10", @@ -17539,15 +17776,15 @@ }, "payable": false, "returnParameters": { - "id": 1311, + "id": 1326, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1310, + "id": 1325, "name": "", "nodeType": "VariableDeclaration", - "scope": 1312, + "scope": 1327, "src": "341:7:10", "stateVariable": false, "storageLocation": "default", @@ -17556,7 +17793,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1309, + "id": 1324, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "341:7:10", @@ -17571,7 +17808,7 @@ ], "src": "340:9:10" }, - "scope": 1358, + "scope": 1373, "src": "263:87:10", "stateMutability": "view", "superFunction": null, @@ -17580,7 +17817,7 @@ { "body": null, "documentation": null, - "id": 1321, + "id": 1336, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -17588,15 +17825,15 @@ "name": "transfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 1317, + "id": 1332, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1314, + "id": 1329, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1321, + "scope": 1336, "src": "372:10:10", "stateVariable": false, "storageLocation": "default", @@ -17605,7 +17842,7 @@ "typeString": "address" }, "typeName": { - "id": 1313, + "id": 1328, "name": "address", "nodeType": "ElementaryTypeName", "src": "372:7:10", @@ -17619,10 +17856,10 @@ }, { "constant": false, - "id": 1316, + "id": 1331, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1321, + "scope": 1336, "src": "384:13:10", "stateVariable": false, "storageLocation": "default", @@ -17631,7 +17868,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1315, + "id": 1330, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "384:7:10", @@ -17648,15 +17885,15 @@ }, "payable": false, "returnParameters": { - "id": 1320, + "id": 1335, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1319, + "id": 1334, "name": "", "nodeType": "VariableDeclaration", - "scope": 1321, + "scope": 1336, "src": "417:4:10", "stateVariable": false, "storageLocation": "default", @@ -17665,7 +17902,7 @@ "typeString": "bool" }, "typeName": { - "id": 1318, + "id": 1333, "name": "bool", "nodeType": "ElementaryTypeName", "src": "417:4:10", @@ -17680,7 +17917,7 @@ ], "src": "416:6:10" }, - "scope": 1358, + "scope": 1373, "src": "354:69:10", "stateMutability": "nonpayable", "superFunction": null, @@ -17689,7 +17926,7 @@ { "body": null, "documentation": null, - "id": 1330, + "id": 1345, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -17697,15 +17934,15 @@ "name": "approve", "nodeType": "FunctionDefinition", "parameters": { - "id": 1326, + "id": 1341, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1323, + "id": 1338, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1330, + "scope": 1345, "src": "444:15:10", "stateVariable": false, "storageLocation": "default", @@ -17714,7 +17951,7 @@ "typeString": "address" }, "typeName": { - "id": 1322, + "id": 1337, "name": "address", "nodeType": "ElementaryTypeName", "src": "444:7:10", @@ -17728,10 +17965,10 @@ }, { "constant": false, - "id": 1325, + "id": 1340, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1330, + "scope": 1345, "src": "461:13:10", "stateVariable": false, "storageLocation": "default", @@ -17740,7 +17977,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1324, + "id": 1339, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "461:7:10", @@ -17757,15 +17994,15 @@ }, "payable": false, "returnParameters": { - "id": 1329, + "id": 1344, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1328, + "id": 1343, "name": "", "nodeType": "VariableDeclaration", - "scope": 1330, + "scope": 1345, "src": "498:4:10", "stateVariable": false, "storageLocation": "default", @@ -17774,7 +18011,7 @@ "typeString": "bool" }, "typeName": { - "id": 1327, + "id": 1342, "name": "bool", "nodeType": "ElementaryTypeName", "src": "498:4:10", @@ -17789,7 +18026,7 @@ ], "src": "497:6:10" }, - "scope": 1358, + "scope": 1373, "src": "427:77:10", "stateMutability": "nonpayable", "superFunction": null, @@ -17798,7 +18035,7 @@ { "body": null, "documentation": null, - "id": 1341, + "id": 1356, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -17806,15 +18043,15 @@ "name": "transferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 1337, + "id": 1352, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1332, + "id": 1347, "name": "from", "nodeType": "VariableDeclaration", - "scope": 1341, + "scope": 1356, "src": "530:12:10", "stateVariable": false, "storageLocation": "default", @@ -17823,7 +18060,7 @@ "typeString": "address" }, "typeName": { - "id": 1331, + "id": 1346, "name": "address", "nodeType": "ElementaryTypeName", "src": "530:7:10", @@ -17837,10 +18074,10 @@ }, { "constant": false, - "id": 1334, + "id": 1349, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1341, + "scope": 1356, "src": "544:10:10", "stateVariable": false, "storageLocation": "default", @@ -17849,7 +18086,7 @@ "typeString": "address" }, "typeName": { - "id": 1333, + "id": 1348, "name": "address", "nodeType": "ElementaryTypeName", "src": "544:7:10", @@ -17863,10 +18100,10 @@ }, { "constant": false, - "id": 1336, + "id": 1351, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1341, + "scope": 1356, "src": "556:13:10", "stateVariable": false, "storageLocation": "default", @@ -17875,7 +18112,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1335, + "id": 1350, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "556:7:10", @@ -17892,15 +18129,15 @@ }, "payable": false, "returnParameters": { - "id": 1340, + "id": 1355, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1339, + "id": 1354, "name": "", "nodeType": "VariableDeclaration", - "scope": 1341, + "scope": 1356, "src": "593:4:10", "stateVariable": false, "storageLocation": "default", @@ -17909,7 +18146,7 @@ "typeString": "bool" }, "typeName": { - "id": 1338, + "id": 1353, "name": "bool", "nodeType": "ElementaryTypeName", "src": "593:4:10", @@ -17924,7 +18161,7 @@ ], "src": "592:6:10" }, - "scope": 1358, + "scope": 1373, "src": "508:91:10", "stateMutability": "nonpayable", "superFunction": null, @@ -17933,20 +18170,20 @@ { "anonymous": false, "documentation": null, - "id": 1349, + "id": 1364, "name": "Transfer", "nodeType": "EventDefinition", "parameters": { - "id": 1348, + "id": 1363, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1343, + "id": 1358, "indexed": true, "name": "from", "nodeType": "VariableDeclaration", - "scope": 1349, + "scope": 1364, "src": "623:20:10", "stateVariable": false, "storageLocation": "default", @@ -17955,7 +18192,7 @@ "typeString": "address" }, "typeName": { - "id": 1342, + "id": 1357, "name": "address", "nodeType": "ElementaryTypeName", "src": "623:7:10", @@ -17969,11 +18206,11 @@ }, { "constant": false, - "id": 1345, + "id": 1360, "indexed": true, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1349, + "scope": 1364, "src": "649:18:10", "stateVariable": false, "storageLocation": "default", @@ -17982,7 +18219,7 @@ "typeString": "address" }, "typeName": { - "id": 1344, + "id": 1359, "name": "address", "nodeType": "ElementaryTypeName", "src": "649:7:10", @@ -17996,11 +18233,11 @@ }, { "constant": false, - "id": 1347, + "id": 1362, "indexed": false, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1349, + "scope": 1364, "src": "673:13:10", "stateVariable": false, "storageLocation": "default", @@ -18009,7 +18246,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1346, + "id": 1361, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "673:7:10", @@ -18029,20 +18266,20 @@ { "anonymous": false, "documentation": null, - "id": 1357, + "id": 1372, "name": "Approval", "nodeType": "EventDefinition", "parameters": { - "id": 1356, + "id": 1371, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1351, + "id": 1366, "indexed": true, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1357, + "scope": 1372, "src": "715:21:10", "stateVariable": false, "storageLocation": "default", @@ -18051,7 +18288,7 @@ "typeString": "address" }, "typeName": { - "id": 1350, + "id": 1365, "name": "address", "nodeType": "ElementaryTypeName", "src": "715:7:10", @@ -18065,11 +18302,11 @@ }, { "constant": false, - "id": 1353, + "id": 1368, "indexed": true, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1357, + "scope": 1372, "src": "742:23:10", "stateVariable": false, "storageLocation": "default", @@ -18078,7 +18315,7 @@ "typeString": "address" }, "typeName": { - "id": 1352, + "id": 1367, "name": "address", "nodeType": "ElementaryTypeName", "src": "742:7:10", @@ -18092,11 +18329,11 @@ }, { "constant": false, - "id": 1355, + "id": 1370, "indexed": false, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1357, + "scope": 1372, "src": "771:13:10", "stateVariable": false, "storageLocation": "default", @@ -18105,7 +18342,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1354, + "id": 1369, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "771:7:10", @@ -18123,7 +18360,7 @@ "src": "695:94:10" } ], - "scope": 1359, + "scope": 1374, "src": "115:676:10" } ], @@ -18136,14 +18373,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "exportedSymbols": { "SafeERC20": [ - 1502 + 1517 ] }, - "id": 1503, + "id": 1518, "nodeType": "SourceUnit", "nodes": [ { - "id": 1360, + "id": 1375, "literals": [ "solidity", "^", @@ -18156,10 +18393,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "./IERC20.sol", - "id": 1361, + "id": 1376, "nodeType": "ImportDirective", - "scope": 1503, - "sourceUnit": 1359, + "scope": 1518, + "sourceUnit": 1374, "src": "26:22:11", "symbolAliases": [], "unitAlias": "" @@ -18167,10 +18404,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "file": "../../math/SafeMath.sol", - "id": 1362, + "id": 1377, "nodeType": "ImportDirective", - "scope": 1503, - "sourceUnit": 1290, + "scope": 1518, + "sourceUnit": 1305, "src": "49:33:11", "symbolAliases": [], "unitAlias": "" @@ -18181,31 +18418,31 @@ "contractKind": "library", "documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.", "fullyImplemented": true, - "id": 1502, + "id": 1517, "linearizedBaseContracts": [ - 1502 + 1517 ], "name": "SafeERC20", "nodeType": "ContractDefinition", "nodes": [ { - "id": 1365, + "id": 1380, "libraryName": { "contractScope": null, - "id": 1363, + "id": 1378, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1289, + "referencedDeclaration": 1304, "src": "382:8:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$1289", + "typeIdentifier": "t_contract$_SafeMath_$1304", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", "src": "376:27:11", "typeName": { - "id": 1364, + "id": 1379, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "395:7:11", @@ -18217,7 +18454,7 @@ }, { "body": { - "id": 1382, + "id": 1397, "nodeType": "Block", "src": "501:45:11", "statements": [ @@ -18230,11 +18467,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1377, + "id": 1392, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1369, + "referencedDeclaration": 1384, "src": "530:2:11", "typeDescriptions": { "typeIdentifier": "t_address", @@ -18243,11 +18480,11 @@ }, { "argumentTypes": null, - "id": 1378, + "id": 1393, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1371, + "referencedDeclaration": 1386, "src": "534:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -18268,32 +18505,32 @@ ], "expression": { "argumentTypes": null, - "id": 1375, + "id": 1390, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1367, + "referencedDeclaration": 1382, "src": "515:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" } }, - "id": 1376, + "id": 1391, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1321, + "referencedDeclaration": 1336, "src": "515:14:11", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1379, + "id": 1394, "isConstant": false, "isLValue": false, "isPure": false, @@ -18315,21 +18552,21 @@ "typeString": "bool" } ], - "id": 1374, + "id": 1389, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, + "referencedDeclaration": 1535, "src": "507:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1380, + "id": 1395, "isConstant": false, "isLValue": false, "isPure": false, @@ -18343,14 +18580,14 @@ "typeString": "tuple()" } }, - "id": 1381, + "id": 1396, "nodeType": "ExpressionStatement", "src": "507:34:11" } ] }, "documentation": null, - "id": 1383, + "id": 1398, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -18358,31 +18595,31 @@ "name": "safeTransfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 1372, + "id": 1387, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1367, + "id": 1382, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1383, + "scope": 1398, "src": "434:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1366, + "id": 1381, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1358, + "referencedDeclaration": 1373, "src": "434:6:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" } }, @@ -18391,10 +18628,10 @@ }, { "constant": false, - "id": 1369, + "id": 1384, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1383, + "scope": 1398, "src": "452:10:11", "stateVariable": false, "storageLocation": "default", @@ -18403,7 +18640,7 @@ "typeString": "address" }, "typeName": { - "id": 1368, + "id": 1383, "name": "address", "nodeType": "ElementaryTypeName", "src": "452:7:11", @@ -18417,10 +18654,10 @@ }, { "constant": false, - "id": 1371, + "id": 1386, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1383, + "scope": 1398, "src": "468:13:11", "stateVariable": false, "storageLocation": "default", @@ -18429,7 +18666,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1370, + "id": 1385, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "468:7:11", @@ -18446,12 +18683,12 @@ }, "payable": false, "returnParameters": { - "id": 1373, + "id": 1388, "nodeType": "ParameterList", "parameters": [], "src": "501:0:11" }, - "scope": 1502, + "scope": 1517, "src": "407:139:11", "stateMutability": "nonpayable", "superFunction": null, @@ -18459,7 +18696,7 @@ }, { "body": { - "id": 1403, + "id": 1418, "nodeType": "Block", "src": "666:55:11", "statements": [ @@ -18472,11 +18709,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1397, + "id": 1412, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1387, + "referencedDeclaration": 1402, "src": "699:4:11", "typeDescriptions": { "typeIdentifier": "t_address", @@ -18485,11 +18722,11 @@ }, { "argumentTypes": null, - "id": 1398, + "id": 1413, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1389, + "referencedDeclaration": 1404, "src": "705:2:11", "typeDescriptions": { "typeIdentifier": "t_address", @@ -18498,11 +18735,11 @@ }, { "argumentTypes": null, - "id": 1399, + "id": 1414, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1391, + "referencedDeclaration": 1406, "src": "709:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -18527,32 +18764,32 @@ ], "expression": { "argumentTypes": null, - "id": 1395, + "id": 1410, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1385, + "referencedDeclaration": 1400, "src": "680:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" } }, - "id": 1396, + "id": 1411, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", - "referencedDeclaration": 1341, + "referencedDeclaration": 1356, "src": "680:18:11", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)" } }, - "id": 1400, + "id": 1415, "isConstant": false, "isLValue": false, "isPure": false, @@ -18574,21 +18811,21 @@ "typeString": "bool" } ], - "id": 1394, + "id": 1409, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, + "referencedDeclaration": 1535, "src": "672:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1401, + "id": 1416, "isConstant": false, "isLValue": false, "isPure": false, @@ -18602,14 +18839,14 @@ "typeString": "tuple()" } }, - "id": 1402, + "id": 1417, "nodeType": "ExpressionStatement", "src": "672:44:11" } ] }, "documentation": null, - "id": 1404, + "id": 1419, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -18617,31 +18854,31 @@ "name": "safeTransferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 1392, + "id": 1407, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1385, + "id": 1400, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1404, + "scope": 1419, "src": "581:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1384, + "id": 1399, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1358, + "referencedDeclaration": 1373, "src": "581:6:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" } }, @@ -18650,10 +18887,10 @@ }, { "constant": false, - "id": 1387, + "id": 1402, "name": "from", "nodeType": "VariableDeclaration", - "scope": 1404, + "scope": 1419, "src": "599:12:11", "stateVariable": false, "storageLocation": "default", @@ -18662,7 +18899,7 @@ "typeString": "address" }, "typeName": { - "id": 1386, + "id": 1401, "name": "address", "nodeType": "ElementaryTypeName", "src": "599:7:11", @@ -18676,10 +18913,10 @@ }, { "constant": false, - "id": 1389, + "id": 1404, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1404, + "scope": 1419, "src": "617:10:11", "stateVariable": false, "storageLocation": "default", @@ -18688,7 +18925,7 @@ "typeString": "address" }, "typeName": { - "id": 1388, + "id": 1403, "name": "address", "nodeType": "ElementaryTypeName", "src": "617:7:11", @@ -18702,10 +18939,10 @@ }, { "constant": false, - "id": 1391, + "id": 1406, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1404, + "scope": 1419, "src": "633:13:11", "stateVariable": false, "storageLocation": "default", @@ -18714,7 +18951,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1390, + "id": 1405, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "633:7:11", @@ -18731,12 +18968,12 @@ }, "payable": false, "returnParameters": { - "id": 1393, + "id": 1408, "nodeType": "ParameterList", "parameters": [], "src": "666:0:11" }, - "scope": 1502, + "scope": 1517, "src": "550:171:11", "stateMutability": "nonpayable", "superFunction": null, @@ -18744,7 +18981,7 @@ }, { "body": { - "id": 1438, + "id": 1453, "nodeType": "Block", "src": "823:330:11", "statements": [ @@ -18758,7 +18995,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1427, + "id": 1442, "isConstant": false, "isLValue": false, "isPure": false, @@ -18772,18 +19009,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1416, + "id": 1431, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1414, + "id": 1429, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1410, + "referencedDeclaration": 1425, "src": "1045:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -18795,7 +19032,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1415, + "id": 1430, "isConstant": false, "isLValue": false, "isPure": true, @@ -18817,7 +19054,7 @@ } } ], - "id": 1417, + "id": 1432, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -18841,7 +19078,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1425, + "id": 1440, "isConstant": false, "isLValue": false, "isPure": false, @@ -18853,18 +19090,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1420, + "id": 1435, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1517, + "referencedDeclaration": 1532, "src": "1077:3:11", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1421, + "id": 1436, "isConstant": false, "isLValue": false, "isPure": false, @@ -18880,11 +19117,11 @@ }, { "argumentTypes": null, - "id": 1422, + "id": 1437, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1408, + "referencedDeclaration": 1423, "src": "1089:7:11", "typeDescriptions": { "typeIdentifier": "t_address", @@ -18905,32 +19142,32 @@ ], "expression": { "argumentTypes": null, - "id": 1418, + "id": 1433, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1406, + "referencedDeclaration": 1421, "src": "1061:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" } }, - "id": 1419, + "id": 1434, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 1312, + "referencedDeclaration": 1327, "src": "1061:15:11", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1423, + "id": 1438, "isConstant": false, "isLValue": false, "isPure": false, @@ -18949,7 +19186,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1424, + "id": 1439, "isConstant": false, "isLValue": false, "isPure": true, @@ -18971,7 +19208,7 @@ } } ], - "id": 1426, + "id": 1441, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -18998,21 +19235,21 @@ "typeString": "bool" } ], - "id": 1413, + "id": 1428, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, + "referencedDeclaration": 1535, "src": "1036:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1428, + "id": 1443, "isConstant": false, "isLValue": false, "isPure": false, @@ -19026,7 +19263,7 @@ "typeString": "tuple()" } }, - "id": 1429, + "id": 1444, "nodeType": "ExpressionStatement", "src": "1036:68:11" }, @@ -19039,11 +19276,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1433, + "id": 1448, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1408, + "referencedDeclaration": 1423, "src": "1132:7:11", "typeDescriptions": { "typeIdentifier": "t_address", @@ -19052,11 +19289,11 @@ }, { "argumentTypes": null, - "id": 1434, + "id": 1449, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1410, + "referencedDeclaration": 1425, "src": "1141:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -19077,32 +19314,32 @@ ], "expression": { "argumentTypes": null, - "id": 1431, + "id": 1446, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1406, + "referencedDeclaration": 1421, "src": "1118:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" } }, - "id": 1432, + "id": 1447, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 1330, + "referencedDeclaration": 1345, "src": "1118:13:11", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1435, + "id": 1450, "isConstant": false, "isLValue": false, "isPure": false, @@ -19124,21 +19361,21 @@ "typeString": "bool" } ], - "id": 1430, + "id": 1445, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, + "referencedDeclaration": 1535, "src": "1110:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1436, + "id": 1451, "isConstant": false, "isLValue": false, "isPure": false, @@ -19152,14 +19389,14 @@ "typeString": "tuple()" } }, - "id": 1437, + "id": 1452, "nodeType": "ExpressionStatement", "src": "1110:38:11" } ] }, "documentation": null, - "id": 1439, + "id": 1454, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -19167,31 +19404,31 @@ "name": "safeApprove", "nodeType": "FunctionDefinition", "parameters": { - "id": 1411, + "id": 1426, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1406, + "id": 1421, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1439, + "scope": 1454, "src": "751:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1405, + "id": 1420, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1358, + "referencedDeclaration": 1373, "src": "751:6:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" } }, @@ -19200,10 +19437,10 @@ }, { "constant": false, - "id": 1408, + "id": 1423, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1439, + "scope": 1454, "src": "769:15:11", "stateVariable": false, "storageLocation": "default", @@ -19212,7 +19449,7 @@ "typeString": "address" }, "typeName": { - "id": 1407, + "id": 1422, "name": "address", "nodeType": "ElementaryTypeName", "src": "769:7:11", @@ -19226,10 +19463,10 @@ }, { "constant": false, - "id": 1410, + "id": 1425, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1439, + "scope": 1454, "src": "790:13:11", "stateVariable": false, "storageLocation": "default", @@ -19238,7 +19475,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1409, + "id": 1424, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "790:7:11", @@ -19255,12 +19492,12 @@ }, "payable": false, "returnParameters": { - "id": 1412, + "id": 1427, "nodeType": "ParameterList", "parameters": [], "src": "823:0:11" }, - "scope": 1502, + "scope": 1517, "src": "725:428:11", "stateMutability": "nonpayable", "superFunction": null, @@ -19268,21 +19505,21 @@ }, { "body": { - "id": 1469, + "id": 1484, "nodeType": "Block", "src": "1265:135:11", "statements": [ { "assignments": [ - 1449 + 1464 ], "declarations": [ { "constant": false, - "id": 1449, + "id": 1464, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 1470, + "scope": 1485, "src": "1271:20:11", "stateVariable": false, "storageLocation": "default", @@ -19291,7 +19528,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1448, + "id": 1463, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1271:7:11", @@ -19304,17 +19541,17 @@ "visibility": "internal" } ], - "id": 1460, + "id": 1475, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1458, + "id": 1473, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1445, + "referencedDeclaration": 1460, "src": "1338:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -19337,14 +19574,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1453, + "id": 1468, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1540, + "referencedDeclaration": 1555, "src": "1318:4:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1502", + "typeIdentifier": "t_contract$_SafeERC20_$1517", "typeString": "library SafeERC20" } } @@ -19352,11 +19589,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$1502", + "typeIdentifier": "t_contract$_SafeERC20_$1517", "typeString": "library SafeERC20" } ], - "id": 1452, + "id": 1467, "isConstant": false, "isLValue": false, "isPure": true, @@ -19369,7 +19606,7 @@ }, "typeName": "address" }, - "id": 1454, + "id": 1469, "isConstant": false, "isLValue": false, "isPure": false, @@ -19385,11 +19622,11 @@ }, { "argumentTypes": null, - "id": 1455, + "id": 1470, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1443, + "referencedDeclaration": 1458, "src": "1325:7:11", "typeDescriptions": { "typeIdentifier": "t_address", @@ -19410,32 +19647,32 @@ ], "expression": { "argumentTypes": null, - "id": 1450, + "id": 1465, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1441, + "referencedDeclaration": 1456, "src": "1294:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" } }, - "id": 1451, + "id": 1466, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 1312, + "referencedDeclaration": 1327, "src": "1294:15:11", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1456, + "id": 1471, "isConstant": false, "isLValue": false, "isPure": false, @@ -19449,21 +19686,21 @@ "typeString": "uint256" } }, - "id": 1457, + "id": 1472, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1268, + "referencedDeclaration": 1283, "src": "1294:43:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1459, + "id": 1474, "isConstant": false, "isLValue": false, "isPure": false, @@ -19489,11 +19726,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1464, + "id": 1479, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1443, + "referencedDeclaration": 1458, "src": "1372:7:11", "typeDescriptions": { "typeIdentifier": "t_address", @@ -19502,11 +19739,11 @@ }, { "argumentTypes": null, - "id": 1465, + "id": 1480, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1449, + "referencedDeclaration": 1464, "src": "1381:12:11", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -19527,32 +19764,32 @@ ], "expression": { "argumentTypes": null, - "id": 1462, + "id": 1477, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1441, + "referencedDeclaration": 1456, "src": "1358:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" } }, - "id": 1463, + "id": 1478, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 1330, + "referencedDeclaration": 1345, "src": "1358:13:11", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1466, + "id": 1481, "isConstant": false, "isLValue": false, "isPure": false, @@ -19574,21 +19811,21 @@ "typeString": "bool" } ], - "id": 1461, + "id": 1476, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, + "referencedDeclaration": 1535, "src": "1350:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1467, + "id": 1482, "isConstant": false, "isLValue": false, "isPure": false, @@ -19602,14 +19839,14 @@ "typeString": "tuple()" } }, - "id": 1468, + "id": 1483, "nodeType": "ExpressionStatement", "src": "1350:45:11" } ] }, "documentation": null, - "id": 1470, + "id": 1485, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -19617,31 +19854,31 @@ "name": "safeIncreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1446, + "id": 1461, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1441, + "id": 1456, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1470, + "scope": 1485, "src": "1193:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1440, + "id": 1455, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1358, + "referencedDeclaration": 1373, "src": "1193:6:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" } }, @@ -19650,10 +19887,10 @@ }, { "constant": false, - "id": 1443, + "id": 1458, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1470, + "scope": 1485, "src": "1211:15:11", "stateVariable": false, "storageLocation": "default", @@ -19662,7 +19899,7 @@ "typeString": "address" }, "typeName": { - "id": 1442, + "id": 1457, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:11", @@ -19676,10 +19913,10 @@ }, { "constant": false, - "id": 1445, + "id": 1460, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1470, + "scope": 1485, "src": "1232:13:11", "stateVariable": false, "storageLocation": "default", @@ -19688,7 +19925,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1444, + "id": 1459, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1232:7:11", @@ -19705,12 +19942,12 @@ }, "payable": false, "returnParameters": { - "id": 1447, + "id": 1462, "nodeType": "ParameterList", "parameters": [], "src": "1265:0:11" }, - "scope": 1502, + "scope": 1517, "src": "1157:243:11", "stateMutability": "nonpayable", "superFunction": null, @@ -19718,21 +19955,21 @@ }, { "body": { - "id": 1500, + "id": 1515, "nodeType": "Block", "src": "1512:135:11", "statements": [ { "assignments": [ - 1480 + 1495 ], "declarations": [ { "constant": false, - "id": 1480, + "id": 1495, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 1501, + "scope": 1516, "src": "1518:20:11", "stateVariable": false, "storageLocation": "default", @@ -19741,7 +19978,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1479, + "id": 1494, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1518:7:11", @@ -19754,17 +19991,17 @@ "visibility": "internal" } ], - "id": 1491, + "id": 1506, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1489, + "id": 1504, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1476, + "referencedDeclaration": 1491, "src": "1585:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -19787,14 +20024,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1484, + "id": 1499, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1540, + "referencedDeclaration": 1555, "src": "1565:4:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1502", + "typeIdentifier": "t_contract$_SafeERC20_$1517", "typeString": "library SafeERC20" } } @@ -19802,11 +20039,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$1502", + "typeIdentifier": "t_contract$_SafeERC20_$1517", "typeString": "library SafeERC20" } ], - "id": 1483, + "id": 1498, "isConstant": false, "isLValue": false, "isPure": true, @@ -19819,7 +20056,7 @@ }, "typeName": "address" }, - "id": 1485, + "id": 1500, "isConstant": false, "isLValue": false, "isPure": false, @@ -19835,11 +20072,11 @@ }, { "argumentTypes": null, - "id": 1486, + "id": 1501, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1474, + "referencedDeclaration": 1489, "src": "1572:7:11", "typeDescriptions": { "typeIdentifier": "t_address", @@ -19860,32 +20097,32 @@ ], "expression": { "argumentTypes": null, - "id": 1481, + "id": 1496, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1472, + "referencedDeclaration": 1487, "src": "1541:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" } }, - "id": 1482, + "id": 1497, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 1312, + "referencedDeclaration": 1327, "src": "1541:15:11", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1487, + "id": 1502, "isConstant": false, "isLValue": false, "isPure": false, @@ -19899,21 +20136,21 @@ "typeString": "uint256" } }, - "id": 1488, + "id": 1503, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 1244, + "referencedDeclaration": 1259, "src": "1541:43:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1490, + "id": 1505, "isConstant": false, "isLValue": false, "isPure": false, @@ -19939,11 +20176,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1495, + "id": 1510, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1474, + "referencedDeclaration": 1489, "src": "1619:7:11", "typeDescriptions": { "typeIdentifier": "t_address", @@ -19952,11 +20189,11 @@ }, { "argumentTypes": null, - "id": 1496, + "id": 1511, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1480, + "referencedDeclaration": 1495, "src": "1628:12:11", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -19977,32 +20214,32 @@ ], "expression": { "argumentTypes": null, - "id": 1493, + "id": 1508, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1472, + "referencedDeclaration": 1487, "src": "1605:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" } }, - "id": 1494, + "id": 1509, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 1330, + "referencedDeclaration": 1345, "src": "1605:13:11", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1497, + "id": 1512, "isConstant": false, "isLValue": false, "isPure": false, @@ -20024,21 +20261,21 @@ "typeString": "bool" } ], - "id": 1492, + "id": 1507, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1520, - 1521 + 1535, + 1536 ], - "referencedDeclaration": 1520, + "referencedDeclaration": 1535, "src": "1597:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1498, + "id": 1513, "isConstant": false, "isLValue": false, "isPure": false, @@ -20052,14 +20289,14 @@ "typeString": "tuple()" } }, - "id": 1499, + "id": 1514, "nodeType": "ExpressionStatement", "src": "1597:45:11" } ] }, "documentation": null, - "id": 1501, + "id": 1516, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -20067,31 +20304,31 @@ "name": "safeDecreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1477, + "id": 1492, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1472, + "id": 1487, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1501, + "scope": 1516, "src": "1440:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1471, + "id": 1486, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1358, + "referencedDeclaration": 1373, "src": "1440:6:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1358", + "typeIdentifier": "t_contract$_IERC20_$1373", "typeString": "contract IERC20" } }, @@ -20100,10 +20337,10 @@ }, { "constant": false, - "id": 1474, + "id": 1489, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1501, + "scope": 1516, "src": "1458:15:11", "stateVariable": false, "storageLocation": "default", @@ -20112,7 +20349,7 @@ "typeString": "address" }, "typeName": { - "id": 1473, + "id": 1488, "name": "address", "nodeType": "ElementaryTypeName", "src": "1458:7:11", @@ -20126,10 +20363,10 @@ }, { "constant": false, - "id": 1476, + "id": 1491, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1501, + "scope": 1516, "src": "1479:13:11", "stateVariable": false, "storageLocation": "default", @@ -20138,7 +20375,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1475, + "id": 1490, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1479:7:11", @@ -20155,19 +20392,19 @@ }, "payable": false, "returnParameters": { - "id": 1478, + "id": 1493, "nodeType": "ParameterList", "parameters": [], "src": "1512:0:11" }, - "scope": 1502, + "scope": 1517, "src": "1404:243:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 1503, + "scope": 1518, "src": "353:1296:11" } ], diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin index b6225eb89..1b1c9971d 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b5060405160a080620014c7833981016040908152815160208301519183015160608401516080909401516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790559294919262000087906401000000006200014c810204565b6200009b336401000000006200016a810204565b620000af3364010000000062000185810204565b60008460ff1610158015620000c8575060058460ff1611155b1515620000d457600080fd5b6005805486919060ff191660018381811115620000ed57fe5b0217905550506005805461ff00191661010060ff9590951694909402939093176201000060b060020a03191662010000600160a060020a03938416021790925560068054600160a060020a031916929091169190911790555062000233565b62000167600282640100000000620011be620001a082021704565b50565b62000167600382640100000000620011be620001a082021704565b62000167600482640100000000620011be620001a082021704565b600160a060020a0381161515620001b657600080fd5b620001cb8282640100000000620001fb810204565b15620001d657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200021357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61128480620002436000396000f30060806040526004361061017f5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630c08bf888114610184578063162f986d1461019b5780631777fb4b146101b057806319a74ab3146101d957806321b79d98146101ee578063231d4e2a1461020357806329d10b6e146102245780632e6b684914610245578063302c11ca14610266578063329b1c921461029757806334cdcf26146102ac578063363aa6c7146102cd5780633e6968b6146102e2578063427534a41461030e5780634969ae7014610323578063608d3d3d1461034e57806374be75921461036f57806380258e471461039057806381a24459146103a55780638329138f146103c657806399f4b251146103ed5780639e614ca014610402578063b2a32cd514610417578063be9524941461042c578063c6846ef814610441578063cdfd0f6414610468578063ce41607a1461047d578063d43acc7914610492578063da408679146104a7578063e9d61859146104bc575b600080fd5b34801561019057600080fd5b506101996104d1565b005b3480156101a757600080fd5b506101996104ef565b3480156101bc57600080fd5b506101c561055e565b604080519115158252519081900360200190f35b3480156101e557600080fd5b506101c5610563565b3480156101fa57600080fd5b5061019961059a565b34801561020f57600080fd5b50610199600160a060020a0360043516610630565b34801561023057600080fd5b50610199600160a060020a036004351661071c565b34801561025157600080fd5b50610199600160a060020a0360043516610739565b34801561027257600080fd5b5061027b610756565b60408051600160a060020a039092168252519081900360200190f35b3480156102a357600080fd5b5061027b61076b565b3480156102b857600080fd5b506101c5600160a060020a036004351661077a565b3480156102d957600080fd5b50610199610795565b3480156102ee57600080fd5b506102f7610846565b6040805161ffff9092168252519081900360200190f35b34801561031a57600080fd5b50610199610857565b34801561032f57600080fd5b506103386108c3565b6040805160ff9092168252519081900360200190f35b34801561035a57600080fd5b506101c5600160a060020a03600435166108d7565b34801561037b57600080fd5b50610199600160a060020a03600435166108ea565b34801561039c57600080fd5b50610338610907565b3480156103b157600080fd5b506101c5600160a060020a0360043516610915565b3480156103d257600080fd5b50610199600160a060020a0360043581169060243516610928565b3480156103f957600080fd5b506101996109db565b34801561040e57600080fd5b50610199610c2e565b34801561042357600080fd5b50610199610c9f565b34801561043857600080fd5b50610199610dfd565b34801561044d57600080fd5b50610456610e06565b60408051918252519081900360200190f35b34801561047457600080fd5b50610456610e0c565b34801561048957600080fd5b50610338610e12565b34801561049e57600080fd5b50610199610e35565b3480156104b357600080fd5b50610199610e3e565b3480156104c857600080fd5b50610199610ecf565b6104da336108d7565b15156104e557600080fd5b6104ed610ed8565b565b60005460a060020a900460ff161561050657600080fd5b61050f33610915565b151561051a57600080fd5b600160065460a060020a900460ff16600381111561053457fe5b1461053e57600080fd5b600680546002919060a060020a60ff02191660a060020a835b0217905550565b600190565b6000600160065460a060020a900460ff16600381111561057f57fe5b148015610595575060065460a860020a900460ff165b905090565b60005460a060020a900460ff16156105b157600080fd5b600554620100009004600160a060020a031633146105ce57600080fd5b600160065460a060020a900460ff1660038111156105e857fe5b146105f257600080fd5b60065460a860020a900460ff161561060957600080fd5b6006805475ff000000000000000000000000000000000000000000191660a860020a179055565b610639336108d7565b151561064457600080fd5b600060065460a060020a900460ff16600381111561065e57fe5b1461066857600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051610719928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b1580156106d457600080fd5b505af11580156106e8573d6000803e3d6000fd5b505050506040513d60208110156106fe57600080fd5b5051600154600160a060020a0316919063ffffffff610f9f16565b50565b61072533610915565b151561073057600080fd5b61071981611057565b610742336108d7565b151561074d57600080fd5b61071981611068565b600554620100009004600160a060020a031690565b600654600160a060020a031690565b600061078d60028363ffffffff61107916565b90505b919050565b60005460a060020a900460ff16156107ac57600080fd5b6107b533610915565b15156107c057600080fd5b600360065460a060020a900460ff1660038111156107da57fe5b14156107e557600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff00001916905560a060020a60ff021916740300000000000000000000000000000000000000001775ff00ffffffffffffffffffffffffffffffffffffffff19169055565b60065460b860020a900461ffff1690565b60005460a060020a900460ff161561086e57600080fd5b61087733610915565b151561088257600080fd5b600260065460a060020a900460ff16600381111561089c57fe5b146108a657600080fd5b600680546001919060a060020a60ff02191660a060020a83610557565b60055460009060ff16600181111561059557fe5b600061078d60038363ffffffff61107916565b6108f33361077a565b15156108fe57600080fd5b610719816110b0565b600554610100900460ff1690565b600061078d60048363ffffffff61107916565b60005460a060020a900460ff161561093f57600080fd5b61094833610915565b151561095357600080fd5b600360065460a060020a900460ff16600381111561096d57fe5b1461097757600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a039687160217905560a060020a60ff02191660a060020a1773ffffffffffffffffffffffffffffffffffffffff191691909216179055565b60008054819060a060020a900460ff16156109f557600080fd5b6109fe3361077a565b1515610a0957600080fd5b600060055460ff166001811115610a1c57fe5b14610a2657600080fd5b600160065460a060020a900460ff166003811115610a4057fe5b14610a4a57600080fd5b60065460a860020a900460ff161515610a6257600080fd5b60065460b860020a900461ffff161515610ad8576006805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610ba0565b60068054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610ba0576006805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600754600290046007555b60075461016d9004915060008211610bb757600080fd5b600554600154610be191600160a060020a039182169162010000909104168463ffffffff610f9f16565b600654600160a060020a031615610c2a57506064600a82020460008111610c0757600080fd5b600654600154610c2a91600160a060020a0391821691168363ffffffff610f9f16565b5050565b60005460a060020a900460ff1615610c4557600080fd5b610c4e336108d7565b1515610c5957600080fd5b600060065460a060020a900460ff166003811115610c7357fe5b1415610c7e57600080fd5b6006805475ffff000000000000000000000000000000000000000019169055565b600080548190819060a060020a900460ff1615610cbb57600080fd5b610cc4336108d7565b1515610ccf57600080fd5b600060065460a060020a900460ff166003811115610ce957fe5b14610cf357600080fd5b600060055460ff166001811115610d0657fe5b148015610d135750600754155b15610de257600554610d2c90610100900460ff166110c1565b92506064600a8402600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519390920486019450600160a060020a0316916370a08231916024808201926020929091908290030181600087803b158015610da057600080fd5b505af1158015610db4573d6000803e3d6000fd5b505050506040513d6020811015610dca57600080fd5b50519050818114610dda57600080fd5b600283046007555b50506006805460a060020a60ff02191660a060020a17905550565b6104ed33611173565b61016d81565b60075490565b600654760100000000000000000000000000000000000000000000900460ff1690565b6104ed33611184565b60005460a060020a900460ff1615610e5557600080fd5b600554620100009004600160a060020a03163314610e7257600080fd5b600160065460a060020a900460ff166003811115610e8c57fe5b14610e9657600080fd5b60065460a860020a900460ff161515610eae57600080fd5b6006805475ff00000000000000000000000000000000000000000019169055565b6104ed33611195565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610f3d57600080fd5b505af1158015610f51573d6000803e3d6000fd5b505050506040513d6020811015610f6757600080fd5b505190506000811115610f9757600054600154610f9791600160a060020a0391821691168363ffffffff610f9f16565b6107196111a6565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561101b57600080fd5b505af115801561102f573d6000803e3d6000fd5b505050506040513d602081101561104557600080fd5b5051151561105257600080fd5b505050565b61071960048263ffffffff6111be16565b61071960038263ffffffff6111be16565b6000600160a060020a038216151561109057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61071960028263ffffffff6111be16565b600060ff821615156110de575069152d02c7e14af6800000610790565b8160ff16600114156110fb575069d3c21bcecceda1000000610790565b8160ff166002141561111957506a01a784379d99db42000000610790565b8160ff166003141561113757506a027b46536c66c8e3000000610790565b8160ff166004141561115557506a034f086f3b33b684000000610790565b8160ff166005141561079057506a0422ca8b0a00a425000000610790565b61071960048263ffffffff61120c16565b61071960038263ffffffff61120c16565b61071960028263ffffffff61120c16565b6000805460a060020a60ff02191660a060020a179055565b600160a060020a03811615156111d357600080fd5b6111dd8282611079565b156111e757600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561122157600080fd5b61122b8282611079565b151561123657600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820d37bea8cf990d36f43cc5b4af261b636128105f981b5fa7014ca1bf22a0030880029 \ No newline at end of file +60806040523480156200001157600080fd5b5060405160a080620014f7833981016040908152815160208301519183015160608401516080909401516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790559294919262000087906401000000006200018e810204565b6200009b33640100000000620001ac810204565b620000af33640100000000620001c7810204565b60008460ff1610158015620000c8575060058460ff1611155b1515620000d457600080fd5b600160a060020a0383161515620000ea57600080fd5b6000856001811115620000f957fe5b14156200011657600160a060020a03821615156200011657600080fd5b6005805486919060ff1916600183818111156200012f57fe5b0217905550506005805461ff00191661010060ff9590951694909402939093176201000060b060020a03191662010000600160a060020a03938416021790925560068054600160a060020a031916929091169190911790555062000275565b620001a9600282640100000000620011ac620001e282021704565b50565b620001a9600382640100000000620011ac620001e282021704565b620001a9600482640100000000620011ac620001e282021704565b600160a060020a0381161515620001f857600080fd5b6200020d82826401000000006200023d810204565b156200021857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200025557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61127280620002856000396000f30060806040526004361061017f5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630c08bf888114610184578063162f986d1461019b5780631777fb4b146101b057806319a74ab3146101d957806321b79d98146101ee578063231d4e2a1461020357806329d10b6e146102245780632e6b684914610245578063302c11ca14610266578063329b1c921461029757806334cdcf26146102ac578063363aa6c7146102cd5780633e6968b6146102e2578063427534a41461030e5780634969ae7014610323578063608d3d3d1461034e57806374be75921461036f57806380258e471461039057806381a24459146103a55780638329138f146103c657806399f4b251146103ed5780639e614ca014610402578063b2a32cd514610417578063be9524941461042c578063c6846ef814610441578063cdfd0f6414610468578063ce41607a1461047d578063d43acc7914610492578063da408679146104a7578063e9d61859146104bc575b600080fd5b34801561019057600080fd5b506101996104d1565b005b3480156101a757600080fd5b506101996104ef565b3480156101bc57600080fd5b506101c561055e565b604080519115158252519081900360200190f35b3480156101e557600080fd5b506101c5610563565b3480156101fa57600080fd5b5061019961059a565b34801561020f57600080fd5b50610199600160a060020a0360043516610630565b34801561023057600080fd5b50610199600160a060020a036004351661071c565b34801561025157600080fd5b50610199600160a060020a0360043516610739565b34801561027257600080fd5b5061027b610756565b60408051600160a060020a039092168252519081900360200190f35b3480156102a357600080fd5b5061027b61076b565b3480156102b857600080fd5b506101c5600160a060020a036004351661077a565b3480156102d957600080fd5b50610199610795565b3480156102ee57600080fd5b506102f7610846565b6040805161ffff9092168252519081900360200190f35b34801561031a57600080fd5b50610199610857565b34801561032f57600080fd5b506103386108c3565b6040805160ff9092168252519081900360200190f35b34801561035a57600080fd5b506101c5600160a060020a03600435166108d7565b34801561037b57600080fd5b50610199600160a060020a03600435166108ea565b34801561039c57600080fd5b50610338610907565b3480156103b157600080fd5b506101c5600160a060020a0360043516610915565b3480156103d257600080fd5b50610199600160a060020a0360043581169060243516610928565b3480156103f957600080fd5b506101996109db565b34801561040e57600080fd5b50610199610c1c565b34801561042357600080fd5b50610199610c8d565b34801561043857600080fd5b50610199610deb565b34801561044d57600080fd5b50610456610df4565b60408051918252519081900360200190f35b34801561047457600080fd5b50610456610dfa565b34801561048957600080fd5b50610338610e00565b34801561049e57600080fd5b50610199610e23565b3480156104b357600080fd5b50610199610e2c565b3480156104c857600080fd5b50610199610ebd565b6104da336108d7565b15156104e557600080fd5b6104ed610ec6565b565b60005460a060020a900460ff161561050657600080fd5b61050f33610915565b151561051a57600080fd5b600160065460a060020a900460ff16600381111561053457fe5b1461053e57600080fd5b600680546002919060a060020a60ff02191660a060020a835b0217905550565b600190565b6000600160065460a060020a900460ff16600381111561057f57fe5b148015610595575060065460a860020a900460ff165b905090565b60005460a060020a900460ff16156105b157600080fd5b600554620100009004600160a060020a031633146105ce57600080fd5b600160065460a060020a900460ff1660038111156105e857fe5b146105f257600080fd5b60065460a860020a900460ff161561060957600080fd5b6006805475ff000000000000000000000000000000000000000000191660a860020a179055565b610639336108d7565b151561064457600080fd5b600060065460a060020a900460ff16600381111561065e57fe5b1461066857600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051610719928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b1580156106d457600080fd5b505af11580156106e8573d6000803e3d6000fd5b505050506040513d60208110156106fe57600080fd5b5051600154600160a060020a0316919063ffffffff610f8d16565b50565b61072533610915565b151561073057600080fd5b61071981611045565b610742336108d7565b151561074d57600080fd5b61071981611056565b600554620100009004600160a060020a031690565b600654600160a060020a031690565b600061078d60028363ffffffff61106716565b90505b919050565b60005460a060020a900460ff16156107ac57600080fd5b6107b533610915565b15156107c057600080fd5b600360065460a060020a900460ff1660038111156107da57fe5b14156107e557600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff00001916905560a060020a60ff021916740300000000000000000000000000000000000000001775ff00ffffffffffffffffffffffffffffffffffffffff19169055565b60065460b860020a900461ffff1690565b60005460a060020a900460ff161561086e57600080fd5b61087733610915565b151561088257600080fd5b600260065460a060020a900460ff16600381111561089c57fe5b146108a657600080fd5b600680546001919060a060020a60ff02191660a060020a83610557565b60055460009060ff16600181111561059557fe5b600061078d60038363ffffffff61106716565b6108f33361077a565b15156108fe57600080fd5b6107198161109e565b600554610100900460ff1690565b600061078d60048363ffffffff61106716565b60005460a060020a900460ff161561093f57600080fd5b61094833610915565b151561095357600080fd5b600360065460a060020a900460ff16600381111561096d57fe5b1461097757600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a039687160217905560a060020a60ff02191660a060020a1773ffffffffffffffffffffffffffffffffffffffff191691909216179055565b60008054819060a060020a900460ff16156109f557600080fd5b6109fe3361077a565b1515610a0957600080fd5b600060055460ff166001811115610a1c57fe5b14610a2657600080fd5b600160065460a060020a900460ff166003811115610a4057fe5b14610a4a57600080fd5b60065460a860020a900460ff161515610a6257600080fd5b60065460b860020a900461ffff161515610ad8576006805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610ba0565b60068054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610ba0576006805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600754600290046007555b505060075461016d90046064600a82020460008211610bbe57600080fd5b60008111610bcb57600080fd5b600554600154610bf591600160a060020a039182169162010000909104168463ffffffff610f8d16565b600654600154610c1891600160a060020a0391821691168363ffffffff610f8d16565b5050565b60005460a060020a900460ff1615610c3357600080fd5b610c3c336108d7565b1515610c4757600080fd5b600060065460a060020a900460ff166003811115610c6157fe5b1415610c6c57600080fd5b6006805475ffff000000000000000000000000000000000000000019169055565b600080548190819060a060020a900460ff1615610ca957600080fd5b610cb2336108d7565b1515610cbd57600080fd5b600060065460a060020a900460ff166003811115610cd757fe5b14610ce157600080fd5b600060055460ff166001811115610cf457fe5b148015610d015750600754155b15610dd057600554610d1a90610100900460ff166110af565b92506064600a8402600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519390920486019450600160a060020a0316916370a08231916024808201926020929091908290030181600087803b158015610d8e57600080fd5b505af1158015610da2573d6000803e3d6000fd5b505050506040513d6020811015610db857600080fd5b50519050818114610dc857600080fd5b600283046007555b50506006805460a060020a60ff02191660a060020a17905550565b6104ed33611161565b61016d81565b60075490565b600654760100000000000000000000000000000000000000000000900460ff1690565b6104ed33611172565b60005460a060020a900460ff1615610e4357600080fd5b600554620100009004600160a060020a03163314610e6057600080fd5b600160065460a060020a900460ff166003811115610e7a57fe5b14610e8457600080fd5b60065460a860020a900460ff161515610e9c57600080fd5b6006805475ff00000000000000000000000000000000000000000019169055565b6104ed33611183565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610f2b57600080fd5b505af1158015610f3f573d6000803e3d6000fd5b505050506040513d6020811015610f5557600080fd5b505190506000811115610f8557600054600154610f8591600160a060020a0391821691168363ffffffff610f8d16565b610719611194565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561100957600080fd5b505af115801561101d573d6000803e3d6000fd5b505050506040513d602081101561103357600080fd5b5051151561104057600080fd5b505050565b61071960048263ffffffff6111ac16565b61071960038263ffffffff6111ac16565b6000600160a060020a038216151561107e57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61071960028263ffffffff6111ac16565b600060ff821615156110cc575069152d02c7e14af6800000610790565b8160ff16600114156110e9575069d3c21bcecceda1000000610790565b8160ff166002141561110757506a01a784379d99db42000000610790565b8160ff166003141561112557506a027b46536c66c8e3000000610790565b8160ff166004141561114357506a034f086f3b33b684000000610790565b8160ff166005141561079057506a0422ca8b0a00a425000000610790565b61071960048263ffffffff6111fa16565b61071960038263ffffffff6111fa16565b61071960028263ffffffff6111fa16565b6000805460a060020a60ff02191660a060020a179055565b600160a060020a03811615156111c157600080fd5b6111cb8282611067565b156111d557600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561120f57600080fd5b6112198282611067565b151561122457600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058205f527260d789022d74031e68eb390ff4f3057e6fce4f2adde7c12af38948fde60029 \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json index c1eec1c76..dd71448e2 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json @@ -407,7 +407,7 @@ "type": "constructor" } ], - "bytecode": "60806040523480156200001157600080fd5b5060405160a080620014c7833981016040908152815160208301519183015160608401516080909401516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790559294919262000087906401000000006200014c810204565b6200009b336401000000006200016a810204565b620000af3364010000000062000185810204565b60008460ff1610158015620000c8575060058460ff1611155b1515620000d457600080fd5b6005805486919060ff191660018381811115620000ed57fe5b0217905550506005805461ff00191661010060ff9590951694909402939093176201000060b060020a03191662010000600160a060020a03938416021790925560068054600160a060020a031916929091169190911790555062000233565b62000167600282640100000000620011be620001a082021704565b50565b62000167600382640100000000620011be620001a082021704565b62000167600482640100000000620011be620001a082021704565b600160a060020a0381161515620001b657600080fd5b620001cb8282640100000000620001fb810204565b15620001d657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200021357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61128480620002436000396000f30060806040526004361061017f5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630c08bf888114610184578063162f986d1461019b5780631777fb4b146101b057806319a74ab3146101d957806321b79d98146101ee578063231d4e2a1461020357806329d10b6e146102245780632e6b684914610245578063302c11ca14610266578063329b1c921461029757806334cdcf26146102ac578063363aa6c7146102cd5780633e6968b6146102e2578063427534a41461030e5780634969ae7014610323578063608d3d3d1461034e57806374be75921461036f57806380258e471461039057806381a24459146103a55780638329138f146103c657806399f4b251146103ed5780639e614ca014610402578063b2a32cd514610417578063be9524941461042c578063c6846ef814610441578063cdfd0f6414610468578063ce41607a1461047d578063d43acc7914610492578063da408679146104a7578063e9d61859146104bc575b600080fd5b34801561019057600080fd5b506101996104d1565b005b3480156101a757600080fd5b506101996104ef565b3480156101bc57600080fd5b506101c561055e565b604080519115158252519081900360200190f35b3480156101e557600080fd5b506101c5610563565b3480156101fa57600080fd5b5061019961059a565b34801561020f57600080fd5b50610199600160a060020a0360043516610630565b34801561023057600080fd5b50610199600160a060020a036004351661071c565b34801561025157600080fd5b50610199600160a060020a0360043516610739565b34801561027257600080fd5b5061027b610756565b60408051600160a060020a039092168252519081900360200190f35b3480156102a357600080fd5b5061027b61076b565b3480156102b857600080fd5b506101c5600160a060020a036004351661077a565b3480156102d957600080fd5b50610199610795565b3480156102ee57600080fd5b506102f7610846565b6040805161ffff9092168252519081900360200190f35b34801561031a57600080fd5b50610199610857565b34801561032f57600080fd5b506103386108c3565b6040805160ff9092168252519081900360200190f35b34801561035a57600080fd5b506101c5600160a060020a03600435166108d7565b34801561037b57600080fd5b50610199600160a060020a03600435166108ea565b34801561039c57600080fd5b50610338610907565b3480156103b157600080fd5b506101c5600160a060020a0360043516610915565b3480156103d257600080fd5b50610199600160a060020a0360043581169060243516610928565b3480156103f957600080fd5b506101996109db565b34801561040e57600080fd5b50610199610c2e565b34801561042357600080fd5b50610199610c9f565b34801561043857600080fd5b50610199610dfd565b34801561044d57600080fd5b50610456610e06565b60408051918252519081900360200190f35b34801561047457600080fd5b50610456610e0c565b34801561048957600080fd5b50610338610e12565b34801561049e57600080fd5b50610199610e35565b3480156104b357600080fd5b50610199610e3e565b3480156104c857600080fd5b50610199610ecf565b6104da336108d7565b15156104e557600080fd5b6104ed610ed8565b565b60005460a060020a900460ff161561050657600080fd5b61050f33610915565b151561051a57600080fd5b600160065460a060020a900460ff16600381111561053457fe5b1461053e57600080fd5b600680546002919060a060020a60ff02191660a060020a835b0217905550565b600190565b6000600160065460a060020a900460ff16600381111561057f57fe5b148015610595575060065460a860020a900460ff165b905090565b60005460a060020a900460ff16156105b157600080fd5b600554620100009004600160a060020a031633146105ce57600080fd5b600160065460a060020a900460ff1660038111156105e857fe5b146105f257600080fd5b60065460a860020a900460ff161561060957600080fd5b6006805475ff000000000000000000000000000000000000000000191660a860020a179055565b610639336108d7565b151561064457600080fd5b600060065460a060020a900460ff16600381111561065e57fe5b1461066857600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051610719928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b1580156106d457600080fd5b505af11580156106e8573d6000803e3d6000fd5b505050506040513d60208110156106fe57600080fd5b5051600154600160a060020a0316919063ffffffff610f9f16565b50565b61072533610915565b151561073057600080fd5b61071981611057565b610742336108d7565b151561074d57600080fd5b61071981611068565b600554620100009004600160a060020a031690565b600654600160a060020a031690565b600061078d60028363ffffffff61107916565b90505b919050565b60005460a060020a900460ff16156107ac57600080fd5b6107b533610915565b15156107c057600080fd5b600360065460a060020a900460ff1660038111156107da57fe5b14156107e557600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff00001916905560a060020a60ff021916740300000000000000000000000000000000000000001775ff00ffffffffffffffffffffffffffffffffffffffff19169055565b60065460b860020a900461ffff1690565b60005460a060020a900460ff161561086e57600080fd5b61087733610915565b151561088257600080fd5b600260065460a060020a900460ff16600381111561089c57fe5b146108a657600080fd5b600680546001919060a060020a60ff02191660a060020a83610557565b60055460009060ff16600181111561059557fe5b600061078d60038363ffffffff61107916565b6108f33361077a565b15156108fe57600080fd5b610719816110b0565b600554610100900460ff1690565b600061078d60048363ffffffff61107916565b60005460a060020a900460ff161561093f57600080fd5b61094833610915565b151561095357600080fd5b600360065460a060020a900460ff16600381111561096d57fe5b1461097757600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a039687160217905560a060020a60ff02191660a060020a1773ffffffffffffffffffffffffffffffffffffffff191691909216179055565b60008054819060a060020a900460ff16156109f557600080fd5b6109fe3361077a565b1515610a0957600080fd5b600060055460ff166001811115610a1c57fe5b14610a2657600080fd5b600160065460a060020a900460ff166003811115610a4057fe5b14610a4a57600080fd5b60065460a860020a900460ff161515610a6257600080fd5b60065460b860020a900461ffff161515610ad8576006805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610ba0565b60068054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610ba0576006805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600754600290046007555b60075461016d9004915060008211610bb757600080fd5b600554600154610be191600160a060020a039182169162010000909104168463ffffffff610f9f16565b600654600160a060020a031615610c2a57506064600a82020460008111610c0757600080fd5b600654600154610c2a91600160a060020a0391821691168363ffffffff610f9f16565b5050565b60005460a060020a900460ff1615610c4557600080fd5b610c4e336108d7565b1515610c5957600080fd5b600060065460a060020a900460ff166003811115610c7357fe5b1415610c7e57600080fd5b6006805475ffff000000000000000000000000000000000000000019169055565b600080548190819060a060020a900460ff1615610cbb57600080fd5b610cc4336108d7565b1515610ccf57600080fd5b600060065460a060020a900460ff166003811115610ce957fe5b14610cf357600080fd5b600060055460ff166001811115610d0657fe5b148015610d135750600754155b15610de257600554610d2c90610100900460ff166110c1565b92506064600a8402600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519390920486019450600160a060020a0316916370a08231916024808201926020929091908290030181600087803b158015610da057600080fd5b505af1158015610db4573d6000803e3d6000fd5b505050506040513d6020811015610dca57600080fd5b50519050818114610dda57600080fd5b600283046007555b50506006805460a060020a60ff02191660a060020a17905550565b6104ed33611173565b61016d81565b60075490565b600654760100000000000000000000000000000000000000000000900460ff1690565b6104ed33611184565b60005460a060020a900460ff1615610e5557600080fd5b600554620100009004600160a060020a03163314610e7257600080fd5b600160065460a060020a900460ff166003811115610e8c57fe5b14610e9657600080fd5b60065460a860020a900460ff161515610eae57600080fd5b6006805475ff00000000000000000000000000000000000000000019169055565b6104ed33611195565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610f3d57600080fd5b505af1158015610f51573d6000803e3d6000fd5b505050506040513d6020811015610f6757600080fd5b505190506000811115610f9757600054600154610f9791600160a060020a0391821691168363ffffffff610f9f16565b6107196111a6565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561101b57600080fd5b505af115801561102f573d6000803e3d6000fd5b505050506040513d602081101561104557600080fd5b5051151561105257600080fd5b505050565b61071960048263ffffffff6111be16565b61071960038263ffffffff6111be16565b6000600160a060020a038216151561109057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61071960028263ffffffff6111be16565b600060ff821615156110de575069152d02c7e14af6800000610790565b8160ff16600114156110fb575069d3c21bcecceda1000000610790565b8160ff166002141561111957506a01a784379d99db42000000610790565b8160ff166003141561113757506a027b46536c66c8e3000000610790565b8160ff166004141561115557506a034f086f3b33b684000000610790565b8160ff166005141561079057506a0422ca8b0a00a425000000610790565b61071960048263ffffffff61120c16565b61071960038263ffffffff61120c16565b61071960028263ffffffff61120c16565b6000805460a060020a60ff02191660a060020a179055565b600160a060020a03811615156111d357600080fd5b6111dd8282611079565b156111e757600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561122157600080fd5b61122b8282611079565b151561123657600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820d37bea8cf990d36f43cc5b4af261b636128105f981b5fa7014ca1bf22a0030880029", + "bytecode": "60806040523480156200001157600080fd5b5060405160a080620014f7833981016040908152815160208301519183015160608401516080909401516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790559294919262000087906401000000006200018e810204565b6200009b33640100000000620001ac810204565b620000af33640100000000620001c7810204565b60008460ff1610158015620000c8575060058460ff1611155b1515620000d457600080fd5b600160a060020a0383161515620000ea57600080fd5b6000856001811115620000f957fe5b14156200011657600160a060020a03821615156200011657600080fd5b6005805486919060ff1916600183818111156200012f57fe5b0217905550506005805461ff00191661010060ff9590951694909402939093176201000060b060020a03191662010000600160a060020a03938416021790925560068054600160a060020a031916929091169190911790555062000275565b620001a9600282640100000000620011ac620001e282021704565b50565b620001a9600382640100000000620011ac620001e282021704565b620001a9600482640100000000620011ac620001e282021704565b600160a060020a0381161515620001f857600080fd5b6200020d82826401000000006200023d810204565b156200021857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200025557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61127280620002856000396000f30060806040526004361061017f5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630c08bf888114610184578063162f986d1461019b5780631777fb4b146101b057806319a74ab3146101d957806321b79d98146101ee578063231d4e2a1461020357806329d10b6e146102245780632e6b684914610245578063302c11ca14610266578063329b1c921461029757806334cdcf26146102ac578063363aa6c7146102cd5780633e6968b6146102e2578063427534a41461030e5780634969ae7014610323578063608d3d3d1461034e57806374be75921461036f57806380258e471461039057806381a24459146103a55780638329138f146103c657806399f4b251146103ed5780639e614ca014610402578063b2a32cd514610417578063be9524941461042c578063c6846ef814610441578063cdfd0f6414610468578063ce41607a1461047d578063d43acc7914610492578063da408679146104a7578063e9d61859146104bc575b600080fd5b34801561019057600080fd5b506101996104d1565b005b3480156101a757600080fd5b506101996104ef565b3480156101bc57600080fd5b506101c561055e565b604080519115158252519081900360200190f35b3480156101e557600080fd5b506101c5610563565b3480156101fa57600080fd5b5061019961059a565b34801561020f57600080fd5b50610199600160a060020a0360043516610630565b34801561023057600080fd5b50610199600160a060020a036004351661071c565b34801561025157600080fd5b50610199600160a060020a0360043516610739565b34801561027257600080fd5b5061027b610756565b60408051600160a060020a039092168252519081900360200190f35b3480156102a357600080fd5b5061027b61076b565b3480156102b857600080fd5b506101c5600160a060020a036004351661077a565b3480156102d957600080fd5b50610199610795565b3480156102ee57600080fd5b506102f7610846565b6040805161ffff9092168252519081900360200190f35b34801561031a57600080fd5b50610199610857565b34801561032f57600080fd5b506103386108c3565b6040805160ff9092168252519081900360200190f35b34801561035a57600080fd5b506101c5600160a060020a03600435166108d7565b34801561037b57600080fd5b50610199600160a060020a03600435166108ea565b34801561039c57600080fd5b50610338610907565b3480156103b157600080fd5b506101c5600160a060020a0360043516610915565b3480156103d257600080fd5b50610199600160a060020a0360043581169060243516610928565b3480156103f957600080fd5b506101996109db565b34801561040e57600080fd5b50610199610c1c565b34801561042357600080fd5b50610199610c8d565b34801561043857600080fd5b50610199610deb565b34801561044d57600080fd5b50610456610df4565b60408051918252519081900360200190f35b34801561047457600080fd5b50610456610dfa565b34801561048957600080fd5b50610338610e00565b34801561049e57600080fd5b50610199610e23565b3480156104b357600080fd5b50610199610e2c565b3480156104c857600080fd5b50610199610ebd565b6104da336108d7565b15156104e557600080fd5b6104ed610ec6565b565b60005460a060020a900460ff161561050657600080fd5b61050f33610915565b151561051a57600080fd5b600160065460a060020a900460ff16600381111561053457fe5b1461053e57600080fd5b600680546002919060a060020a60ff02191660a060020a835b0217905550565b600190565b6000600160065460a060020a900460ff16600381111561057f57fe5b148015610595575060065460a860020a900460ff165b905090565b60005460a060020a900460ff16156105b157600080fd5b600554620100009004600160a060020a031633146105ce57600080fd5b600160065460a060020a900460ff1660038111156105e857fe5b146105f257600080fd5b60065460a860020a900460ff161561060957600080fd5b6006805475ff000000000000000000000000000000000000000000191660a860020a179055565b610639336108d7565b151561064457600080fd5b600060065460a060020a900460ff16600381111561065e57fe5b1461066857600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051610719928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b1580156106d457600080fd5b505af11580156106e8573d6000803e3d6000fd5b505050506040513d60208110156106fe57600080fd5b5051600154600160a060020a0316919063ffffffff610f8d16565b50565b61072533610915565b151561073057600080fd5b61071981611045565b610742336108d7565b151561074d57600080fd5b61071981611056565b600554620100009004600160a060020a031690565b600654600160a060020a031690565b600061078d60028363ffffffff61106716565b90505b919050565b60005460a060020a900460ff16156107ac57600080fd5b6107b533610915565b15156107c057600080fd5b600360065460a060020a900460ff1660038111156107da57fe5b14156107e557600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff00001916905560a060020a60ff021916740300000000000000000000000000000000000000001775ff00ffffffffffffffffffffffffffffffffffffffff19169055565b60065460b860020a900461ffff1690565b60005460a060020a900460ff161561086e57600080fd5b61087733610915565b151561088257600080fd5b600260065460a060020a900460ff16600381111561089c57fe5b146108a657600080fd5b600680546001919060a060020a60ff02191660a060020a83610557565b60055460009060ff16600181111561059557fe5b600061078d60038363ffffffff61106716565b6108f33361077a565b15156108fe57600080fd5b6107198161109e565b600554610100900460ff1690565b600061078d60048363ffffffff61106716565b60005460a060020a900460ff161561093f57600080fd5b61094833610915565b151561095357600080fd5b600360065460a060020a900460ff16600381111561096d57fe5b1461097757600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a039687160217905560a060020a60ff02191660a060020a1773ffffffffffffffffffffffffffffffffffffffff191691909216179055565b60008054819060a060020a900460ff16156109f557600080fd5b6109fe3361077a565b1515610a0957600080fd5b600060055460ff166001811115610a1c57fe5b14610a2657600080fd5b600160065460a060020a900460ff166003811115610a4057fe5b14610a4a57600080fd5b60065460a860020a900460ff161515610a6257600080fd5b60065460b860020a900461ffff161515610ad8576006805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610ba0565b60068054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610ba0576006805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600754600290046007555b505060075461016d90046064600a82020460008211610bbe57600080fd5b60008111610bcb57600080fd5b600554600154610bf591600160a060020a039182169162010000909104168463ffffffff610f8d16565b600654600154610c1891600160a060020a0391821691168363ffffffff610f8d16565b5050565b60005460a060020a900460ff1615610c3357600080fd5b610c3c336108d7565b1515610c4757600080fd5b600060065460a060020a900460ff166003811115610c6157fe5b1415610c6c57600080fd5b6006805475ffff000000000000000000000000000000000000000019169055565b600080548190819060a060020a900460ff1615610ca957600080fd5b610cb2336108d7565b1515610cbd57600080fd5b600060065460a060020a900460ff166003811115610cd757fe5b14610ce157600080fd5b600060055460ff166001811115610cf457fe5b148015610d015750600754155b15610dd057600554610d1a90610100900460ff166110af565b92506064600a8402600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519390920486019450600160a060020a0316916370a08231916024808201926020929091908290030181600087803b158015610d8e57600080fd5b505af1158015610da2573d6000803e3d6000fd5b505050506040513d6020811015610db857600080fd5b50519050818114610dc857600080fd5b600283046007555b50506006805460a060020a60ff02191660a060020a17905550565b6104ed33611161565b61016d81565b60075490565b600654760100000000000000000000000000000000000000000000900460ff1690565b6104ed33611172565b60005460a060020a900460ff1615610e4357600080fd5b600554620100009004600160a060020a03163314610e6057600080fd5b600160065460a060020a900460ff166003811115610e7a57fe5b14610e8457600080fd5b60065460a860020a900460ff161515610e9c57600080fd5b6006805475ff00000000000000000000000000000000000000000019169055565b6104ed33611183565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610f2b57600080fd5b505af1158015610f3f573d6000803e3d6000fd5b505050506040513d6020811015610f5557600080fd5b505190506000811115610f8557600054600154610f8591600160a060020a0391821691168363ffffffff610f8d16565b610719611194565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561100957600080fd5b505af115801561101d573d6000803e3d6000fd5b505050506040513d602081101561103357600080fd5b5051151561104057600080fd5b505050565b61071960048263ffffffff6111ac16565b61071960038263ffffffff6111ac16565b6000600160a060020a038216151561107e57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61071960028263ffffffff6111ac16565b600060ff821615156110cc575069152d02c7e14af6800000610790565b8160ff16600114156110e9575069d3c21bcecceda1000000610790565b8160ff166002141561110757506a01a784379d99db42000000610790565b8160ff166003141561112557506a027b46536c66c8e3000000610790565b8160ff166004141561114357506a034f086f3b33b684000000610790565b8160ff166005141561079057506a0422ca8b0a00a425000000610790565b61071960048263ffffffff6111fa16565b61071960038263ffffffff6111fa16565b61071960028263ffffffff6111fa16565b6000805460a060020a60ff02191660a060020a179055565b600160a060020a03811615156111c157600080fd5b6111cb8282611067565b156111d557600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561120f57600080fd5b6112198282611067565b151561122457600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058205f527260d789022d74031e68eb390ff4f3057e6fce4f2adde7c12af38948fde60029", "functionHashes": { "DAYS_PER_YEAR()": "c6846ef8", "activateMiner()": "b2a32cd5", @@ -442,7 +442,7 @@ }, "gasEstimates": { "creation": { - "codeDepositCost": "948000", + "codeDepositCost": "944400", "executionCost": "infinite", "totalCost": "infinite" }, diff --git a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoFeesTests.cs b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoFeesTests.cs index dc87e1df0..56bbafc40 100644 --- a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoFeesTests.cs +++ b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoFeesTests.cs @@ -117,16 +117,6 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests var token = new AlgoTokenV1(EthNetwork.Instance.GetWeb3(tokenOwnerAccount), EthNetwork.Instance.GasPriceProvider); await token.DeployAsync(); - // Create the pools to transfer the proper number of tokens to the miners... - var pool1 = new AlgoPool(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); - await pool1.DeployAsync(0, token.ContractAddress); - var pool2 = new AlgoPool(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); - await pool2.DeployAsync(1, token.ContractAddress); - - // Transfer some tokens to the pools... - await token.TransferAsync(pool1.ContractAddress, 100.MAlgo()); - await token.TransferAsync(pool2.ContractAddress, 100.MAlgo()); - // Create a fees... var fees1 = new AlgoFees(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); await fees1.DeployAsync(token.ContractAddress); @@ -149,13 +139,9 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests referralAccounts[i] = EthAccountFactory.Create(); await EthNetwork.Instance.RefillAsync(minerAccounts[i]); - // Create the miner... + // Create the miner as "NonPoolBased" so it can be activated... miners[i] = new AlgoMiner(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); - await miners[i].DeployAsync(0, i, minerAccounts[i].Address, referralAccounts[i].Address, token.ContractAddress); - - // Transfer some tokens to the miner so it can be activated... - await pool1.TrasferToMinerAsync(miners[i].ContractAddress); - await pool2.TrasferToMinerAsync(miners[i].ContractAddress); + await miners[i].DeployAsync(1, i, minerAccounts[i].Address, referralAccounts[i].Address, token.ContractAddress); // Activate the miner... await miners[i].ActivateMinerAsync(); @@ -191,5 +177,43 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests Assert.Equal(40.Algo(), balance4); Assert.Equal(50.Algo(), balance5); } + + [Fact] + public async Task TerminateTest() + { + EthNetwork.UseGanacheTestNet(); + + var prefundedAccount = new Account(EthNetwork.Instance.PrefundedPrivateKey); + + var tokenOwnerAccount = EthAccountFactory.Create(); + var coreTeamAccount = EthAccountFactory.Create(); + + await EthNetwork.Instance.RefillAsync(tokenOwnerAccount); + await EthNetwork.Instance.RefillAsync(coreTeamAccount); + + // Create the ERC20 token... + var token = new AlgoTokenV1(EthNetwork.Instance.GetWeb3(tokenOwnerAccount), EthNetwork.Instance.GasPriceProvider); + await token.DeployAsync(); + + // Store the current balance of the token owner... + var tokenOwnerAccountBalance = await token.BalanceOfAsync(tokenOwnerAccount.Address); + + // Create a fees... + var fees1 = new AlgoFees(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); + await fees1.DeployAsync(token.ContractAddress); + + // Transfer some tokens to the fees... + await token.TransferAsync(fees1.ContractAddress, 100.Algo()); + + // Ensure the receiver got the tokens... + Assert.Equal(100.Algo(), await token.BalanceOfAsync(fees1.ContractAddress)); + + // Terminate the contract. + await fees1.TerminateAsync(); + + // Ensure the contract returned all the tokens... + Assert.Equal(0, await token.BalanceOfAsync(fees1.ContractAddress)); + Assert.Equal(100.Algo(), await token.BalanceOfAsync(coreTeamAccount.Address)); + } } } diff --git a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoMinerTests.cs b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoMinerTests.cs index 08b622946..223858c99 100644 --- a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoMinerTests.cs +++ b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoMinerTests.cs @@ -111,5 +111,45 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests Assert.Equal(expectedMinerBalance, await token.BalanceOfAsync(minerAccount.Address)); Assert.Equal(expectedReferralBalance, await token.BalanceOfAsync(referralAccount.Address)); } + + [Fact] + public async Task TerminateTest() + { + EthNetwork.UseGanacheTestNet(); + + var prefundedAccount = new Account(EthNetwork.Instance.PrefundedPrivateKey); + + var tokenOwnerAccount = EthAccountFactory.Create(); + var coreTeamAccount = EthAccountFactory.Create(); + var minerAccount = EthAccountFactory.Create(); + var referralAccount = EthAccountFactory.Create(); + + await EthNetwork.Instance.RefillAsync(tokenOwnerAccount); + await EthNetwork.Instance.RefillAsync(coreTeamAccount); + + // Create the ERC20 token... + var token = new AlgoTokenV1(EthNetwork.Instance.GetWeb3(tokenOwnerAccount), EthNetwork.Instance.GasPriceProvider); + await token.DeployAsync(); + + // Store the current balance of the token owner... + var tokenOwnerAccountBalance = await token.BalanceOfAsync(tokenOwnerAccount.Address); + + // Create a miner... + var miner1 = new AlgoMiner(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); + await miner1.DeployAsync(0, 2, minerAccount.Address, referralAccount.Address, token.ContractAddress); + + // Transfer some tokens to the miner... + await token.TransferAsync(miner1.ContractAddress, 100.Algo()); + + // Ensure the receiver got the tokens... + Assert.Equal(100.Algo(), await token.BalanceOfAsync(miner1.ContractAddress)); + + // Terminate the contract. + await miner1.TerminateAsync(); + + // Ensure the contract returned all the tokens... + Assert.Equal(0, await token.BalanceOfAsync(miner1.ContractAddress)); + Assert.Equal(100.Algo(), await token.BalanceOfAsync(coreTeamAccount.Address)); + } } } diff --git a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoPoolTests.cs b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoPoolTests.cs index b80e7c0dd..608366c24 100644 --- a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoPoolTests.cs +++ b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoPoolTests.cs @@ -123,5 +123,43 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests Assert.Equal(4.MAlgo() * 10 / 100, await token.BalanceOfAsync(miners[4].ContractAddress)); Assert.Equal(5.MAlgo() * 10 / 100, await token.BalanceOfAsync(miners[5].ContractAddress)); } + + [Fact] + public async Task TerminateTest() + { + EthNetwork.UseGanacheTestNet(); + + var prefundedAccount = new Account(EthNetwork.Instance.PrefundedPrivateKey); + + var tokenOwnerAccount = EthAccountFactory.Create(); + var coreTeamAccount = EthAccountFactory.Create(); + + await EthNetwork.Instance.RefillAsync(tokenOwnerAccount); + await EthNetwork.Instance.RefillAsync(coreTeamAccount); + + // Create the ERC20 token... + var token = new AlgoTokenV1(EthNetwork.Instance.GetWeb3(tokenOwnerAccount), EthNetwork.Instance.GasPriceProvider); + await token.DeployAsync(); + + // Store the current balance of the token owner... + var tokenOwnerAccountBalance = await token.BalanceOfAsync(tokenOwnerAccount.Address); + + // Create a pool... + var pool1 = new AlgoPool(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider); + await pool1.DeployAsync(0, token.ContractAddress); + + // Transfer some tokens to the pool... + await token.TransferAsync(pool1.ContractAddress, 100.Algo()); + + // Ensure the receiver got the tokens... + Assert.Equal(100.Algo(), await token.BalanceOfAsync(pool1.ContractAddress)); + + // Terminate the contract. + await pool1.TerminateAsync(); + + // Ensure the contract returned all the tokens... + Assert.Equal(0, await token.BalanceOfAsync(pool1.ContractAddress)); + Assert.Equal(100.Algo(), await token.BalanceOfAsync(coreTeamAccount.Address)); + } } } diff --git a/labs/algo-token-playground/README.md b/labs/algo-token-playground/README.md index dc2ff3370..48c75a8b1 100644 --- a/labs/algo-token-playground/README.md +++ b/labs/algo-token-playground/README.md @@ -200,7 +200,7 @@ The following commands are supported for the `AlgoPool` contract: `deploy-algopool [-n ]` Creates a new instance of the `AlgoPool` contract. -* `poolType`: the type of pool (uint8: 0 = PoolType, 1 = ReferralPool) +* `poolType`: the type of pool (uint8: 0 = MinerPool, 1 = ReferralPool) * `tokenAddress`: the address of the AlgoToken contract >Example: `deploy-algopool 0 token -n dev_pool` @@ -214,6 +214,14 @@ Transfer tokens from the AlgoPool balance to the AlgoMiner balance. The amount o >Example: `dev_pool.algopool-trasfertominer miner_1` +#### algopool-terminate + +`.algopool-terminate` + +Terminates the contract and return its balance to the creator. + +>Example: `dev_pool.algopool-terminate` + ### AlgoMiner The following commands are supported for the `AlgoMiner` contract: @@ -314,6 +322,14 @@ This operation is executed by the system to request a payment from the AlgoMiner >Example: `miner_1.algominer-mine` +#### algominer-terminate + +`.algominer-terminate` + +Terminates the contract and return its balance to the creator. + +>Example: `miner_1.algominer-terminate` + #### algominer-addsystem `.algominer-addsystem ` @@ -341,6 +357,61 @@ Adds the specified account to the "Supervisor" role. >Example: `miner_1.algominer-addsupervisor 0x862f8938949e4A1aA82Cd427d87E4fc76940e7a1` +### AlgoFees + +The following commands are supported for the `AlgoFees` contract: + +#### deploy-algofees + +`deploy-algofees [-n ]` + +Creates a new instance of the `AlgoFees` contract. +* `tokenAddress`: the address of the AlgoToken contract + +>Example: `deploy-algofees token -n fees1` + +#### algofees-registerminer + +`.algofees-registerminer ` + +Registers a miner with the AlgoFees. +* `minerAddress`: the address of the AlgoMiner contract + +>Example: `fees1.algofees-registerminer miner_0` + +#### algofees-unregisterminer + +`.algofees-unregisterminer ` + +Unregisters a miner from the AlgoFees. +* `minerAddress`: the address of the AlgoMiner contract + +>Example: `fees1.algofees-unregisterminer miner_0` + +#### algofees-mine + +`.algofees-mine` + +This operation is executed by the system to request a payment from the AlgoFees to registered miners. The amount to pay is computed using the rules specified in the "Smart Contracts Requirements / Specifications" document. + +>Example: `fees1.algofees-mine` + +#### algominer-terminate + +`.algofees-terminate` + +Terminates the contract and return its balance to the creator. + +>Example: `algofees.algofees-terminate` + +### System commands + +#### reset + +Resets the current playground instance, removing all aliases created. + +>Example: `reset` + ### Notes * Reserved chars: the following chars are reserved chars and cannot be used in identifiers or strings not enclosed in quotes: "space" ":" "/" "-" "." "," diff --git a/labs/algo-token-playground/algofees-script.txt b/labs/algo-token-playground/algofees-script.txt index 6763e8f6e..732121402 100644 --- a/labs/algo-token-playground/algofees-script.txt +++ b/labs/algo-token-playground/algofees-script.txt @@ -24,22 +24,6 @@ deploy-algominer 1 2 miner_2_account ref_2_account token -n miner_2 deploy-algominer 1 3 miner_3_account ref_3_account token -n miner_3 deploy-algominer 1 4 miner_4_account ref_4_account token -n miner_4 deploy-algominer 1 5 miner_5_account ref_5_account token -n miner_5 -deploy-algopool 0 token -n dev_pool -deploy-algopool 1 token -n ref_pool -token.algotoken-transfer dev_pool 100m -token.algotoken-transfer ref_pool 100m -dev_pool.algopool-trasfertominer miner_0 -ref_pool.algopool-trasfertominer miner_0 -dev_pool.algopool-trasfertominer miner_1 -ref_pool.algopool-trasfertominer miner_1 -dev_pool.algopool-trasfertominer miner_2 -ref_pool.algopool-trasfertominer miner_2 -dev_pool.algopool-trasfertominer miner_3 -ref_pool.algopool-trasfertominer miner_3 -dev_pool.algopool-trasfertominer miner_4 -ref_pool.algopool-trasfertominer miner_4 -dev_pool.algopool-trasfertominer miner_5 -ref_pool.algopool-trasfertominer miner_5 miner_0.algominer-activateminer miner_1.algominer-activateminer miner_2.algominer-activateminer diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesTerminateCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesTerminateCommand.cs new file mode 100644 index 000000000..c5ae0f464 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoFeesContract/AlgoFeesTerminateCommand.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenDistribution; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoFeesContract +{ + public class AlgoFeesTerminateCommand : EthInvokeTransactionalFunctionCommand + { + protected override async Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3) + { + var algoFees = new AlgoFees(contractAddress, web3, context.GasPriceProvider); + + return await algoFees.TerminateAsync(); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerTerminateCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerTerminateCommand.cs new file mode 100644 index 000000000..b1efd4602 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerTerminateCommand.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenDistribution; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoMinerContract +{ + public class AlgoMinerTerminateCommand : EthInvokeTransactionalFunctionCommand + { + protected override async Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3) + { + var algoMiner = new AlgoMiner(contractAddress, web3, context.GasPriceProvider); + + return await algoMiner.TerminateAsync(); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoPoolContract/AlgoPoolTerminateCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoPoolContract/AlgoPoolTerminateCommand.cs new file mode 100644 index 000000000..c75efbd37 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoPoolContract/AlgoPoolTerminateCommand.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenDistribution; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoPoolContract +{ + public class AlgoPoolTerminateCommand : EthInvokeTransactionalFunctionCommand + { + protected override async Task ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3) + { + var algoPool = new AlgoPool(contractAddress, web3, context.GasPriceProvider); + + return await algoPool.TerminateAsync(); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/EthNetwork/ListEnvironmentCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/System/ListEnvironmentCommand.cs similarity index 90% rename from labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/EthNetwork/ListEnvironmentCommand.cs rename to labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/System/ListEnvironmentCommand.cs index b269fccfd..c63db111f 100644 --- a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/EthNetwork/ListEnvironmentCommand.cs +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/System/ListEnvironmentCommand.cs @@ -7,7 +7,7 @@ using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; using AdvancedAlgos.AlgoToken.Framework.Ethereum; using Nethereum.Util; -namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.EthNetwork +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.System { public class ListEnvironmentCommand : ICommand { diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/System/ResetCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/System/ResetCommand.cs new file mode 100644 index 000000000..1c3722ec1 --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/System/ResetCommand.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime; +using AdvancedAlgos.AlgoToken.Framework.Ethereum; +using Nethereum.Util; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.System +{ + public class ResetCommand : ICommand + { + public Task ExecuteAsync(RuntimeContext context) + { + context.Reset(); + + Console.WriteLine("Done."); + + return Task.CompletedTask; + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoFeesParsers.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoFeesParsers.cs index 297204777..937a68fa4 100644 --- a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoFeesParsers.cs +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoFeesParsers.cs @@ -40,6 +40,12 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Parsers { ContractReference = contractReference }).Register(); + + (from contractReference in CommonParsers.Invoke("algofees-terminate") + select new AlgoFeesTerminateCommand + { + ContractReference = contractReference + }).Register(); } } } diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoMinerParsers.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoMinerParsers.cs index 1b857c43b..582d714a8 100644 --- a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoMinerParsers.cs +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoMinerParsers.cs @@ -93,6 +93,12 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Parsers ContractReference = contractReference, }).Register(); + (from contractReference in CommonParsers.Invoke("algominer-terminate") + select new AlgoMinerTerminateCommand + { + ContractReference = contractReference + }).Register(); + (from contractReference in CommonParsers.Invoke("algominer-addsystem") from account in CommonParsers.StringValue select new AlgoMinerAddSystemCommand diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoPoolParsers.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoPoolParsers.cs index 487b903ba..30d00ca8c 100644 --- a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoPoolParsers.cs +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoPoolParsers.cs @@ -28,6 +28,12 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Parsers ContractReference = contractReference, MinerAddress = minerAddress }).Register(); + + (from contractReference in CommonParsers.Invoke("algopool-terminate") + select new AlgoPoolTerminateCommand + { + ContractReference = contractReference + }).Register(); } } } diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/EthNetworkParsers.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/EthNetworkParsers.cs index 822ea6f46..3021a0fd9 100644 --- a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/EthNetworkParsers.cs +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/EthNetworkParsers.cs @@ -23,10 +23,6 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Parsers { GasPrice = gasPrice }).Register(); - - (from command in CommonParsers.Token("list-env") - select new ListEnvironmentCommand() - ).Register(); } } } diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/SystemParsers.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/SystemParsers.cs new file mode 100644 index 000000000..72f6bfb8c --- /dev/null +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/SystemParsers.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Text; +using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.System; +using Sprache; + +namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Parsers +{ + public static class SystemParsers + { + public static void Register() + { + (from command in CommonParsers.Token("reset") + select new ResetCommand() + ).Register(); + + (from command in CommonParsers.Token("list-env") + select new ListEnvironmentCommand() + ).Register(); + } + } +} diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/REPL.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/REPL.cs index f1a593477..a4f253be0 100644 --- a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/REPL.cs +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/REPL.cs @@ -20,6 +20,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground static REPL() { + SystemParsers.Register(); EthNetworkParsers.Register(); EthTransactionsParsers.Register(); AccountManagementParsers.Register(); diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Runtime/RuntimeContext.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Runtime/RuntimeContext.cs index adaf9a5d4..cca9d97a7 100644 --- a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Runtime/RuntimeContext.cs +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Runtime/RuntimeContext.cs @@ -12,10 +12,16 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime public string EthNetworkUrl { get; set; } = LOCAL_NETWORK_URL; public EthAccountDescriptor CurrentAccount { get; set; } - public Dictionary Accounts { get; } = new Dictionary(StringComparer.OrdinalIgnoreCase); - public Dictionary Contracts { get; } = new Dictionary(StringComparer.OrdinalIgnoreCase); + public Dictionary Accounts { get; private set; } = new Dictionary(StringComparer.OrdinalIgnoreCase); + public Dictionary Contracts { get; private set; } = new Dictionary(StringComparer.OrdinalIgnoreCase); public StaticGasPriceProvider GasPriceProvider { get; } = new StaticGasPriceProvider(); + public void Reset() + { + Accounts = new Dictionary(StringComparer.OrdinalIgnoreCase); + Contracts = new Dictionary(StringComparer.OrdinalIgnoreCase); + } + public string ResolveAccountReference(string reference) { if (string.IsNullOrWhiteSpace(reference) || string.Equals(reference, "0x0", StringComparison.OrdinalIgnoreCase)) return "0x0"; diff --git a/labs/algo-token-playground/terminate-script.txt b/labs/algo-token-playground/terminate-script.txt new file mode 100644 index 000000000..83d82ea65 --- /dev/null +++ b/labs/algo-token-playground/terminate-script.txt @@ -0,0 +1,29 @@ +new-account -n miner_1_account +new-account -n ref_1_account +import-account 0936af475d2701538aad321f87e0a51f2b297634653393e8cab7290a674009a5 -n prefunded + +deploy-algotoken -n token + +token.algotoken-balanceof prefunded +deploy-algopool 0 token -n dev_pool +token.algotoken-transfer dev_pool 100m +token.algotoken-balanceof dev_pool +dev_pool.algopool-terminate +token.algotoken-balanceof dev_pool +token.algotoken-balanceof prefunded + +token.algotoken-balanceof prefunded +deploy-algofees token -n fees1 +token.algotoken-transfer fees1 100m +token.algotoken-balanceof fees1 +fees1.algofees-terminate +token.algotoken-balanceof fees1 +token.algotoken-balanceof prefunded + +token.algotoken-balanceof prefunded +deploy-algominer 0 2 miner_1_account ref_1_account token -n miner_1 +token.algotoken-transfer miner_1 100m +token.algotoken-balanceof miner_1 +miner_1.algominer-terminate +token.algotoken-balanceof miner_1 +token.algotoken-balanceof prefunded From 063f32a78cc6318b296edbf2ab9f01f9f9b43e43 Mon Sep 17 00:00:00 2001 From: pmmax Date: Thu, 3 Jan 2019 15:44:52 -0300 Subject: [PATCH 12/17] Fixed issue #7 "Algopool "trasferToMiner" function spelling" --- .../AlgoPool.cs | 8 +- .../SmartContracts/src/AlgoPool.sol | 2 +- .../src/bin/AlgoPool-sol-output.json | 2069 +++++++++-------- .../SmartContracts/src/bin/AlgoPool.abi | 2 +- .../SmartContracts/src/bin/AlgoPool.bin | 2 +- .../SmartContracts/src/bin/AlgoPool.json | 34 +- .../AlgoMinerTests.cs | 4 +- .../AlgoPoolTests.cs | 4 +- labs/algo-token-playground/README.md | 6 +- .../pool-based-algominer-script.txt | 4 +- ...d.cs => AlgoPoolTransferToMinerCommand.cs} | 4 +- .../Parsers/AlgoPoolParsers.cs | 4 +- 12 files changed, 1107 insertions(+), 1036 deletions(-) rename labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoPoolContract/{AlgoPoolTrasferToMinerCommand.cs => AlgoPoolTransferToMinerCommand.cs} (79%) diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoPool.cs b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoPool.cs index 1ac592575..1446d9f58 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoPool.cs +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoPool.cs @@ -12,7 +12,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution { public class AlgoPool : SmartContract { - private Function _trasferToMiner; + private Function _transferToMiner; private Function _terminate; public AlgoPool(Web3 web3, IGasPriceProvider gasPriceProvider) : base(web3, gasPriceProvider) { } @@ -27,12 +27,12 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution protected override void Initialize(Contract contractDescriptor) { - _trasferToMiner = contractDescriptor.GetFunction("trasferToMiner"); + _transferToMiner = contractDescriptor.GetFunction("transferToMiner"); _terminate = contractDescriptor.GetFunction("terminate"); } - public Task TrasferToMinerAsync(string minerAddress) => - InvokeAsync(_trasferToMiner, 900000, minerAddress); + public Task TransferToMinerAsync(string minerAddress) => + InvokeAsync(_transferToMiner, 900000, minerAddress); public Task TerminateAsync() => InvokeAsync(_terminate, 900000); diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol index 4e56cb1f7..8b4ffcc9c 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol @@ -26,7 +26,7 @@ contract AlgoPool is AlgoCommon, ERC20TokenHolder, AlgoCoreTeamRole { _poolType = poolType; } - function trasferToMiner(address minerAddress) public notTerminated onlyCoreTeam { + function transferToMiner(address minerAddress) public notTerminated onlyCoreTeam { require(!_fundedMiners[minerAddress]); IAlgoMiner algoMiner = IAlgoMiner(minerAddress); diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json index 0fb87aba4..037fd2a45 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json @@ -118,20 +118,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "constant": false, - "inputs": [ - { - "name": "minerAddress", - "type": "address" - } - ], - "name": "trasferToMiner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { "constant": false, "inputs": [ @@ -174,6 +160,20 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "constant": false, + "inputs": [ + { + "name": "minerAddress", + "type": "address" + } + ], + "name": "transferToMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -196,9 +196,9 @@ "evm": { "bytecode": { "linkReferences": {}, - "object": "608060405234801561001057600080fd5b506040516040806107f28339810160405280516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561006f90640100000000610093810204565b6003805483919060ff19166001838181111561008757fe5b0217905550505061013c565b6100ab6002826401000000006105e16100ae82021704565b50565b600160a060020a03811615156100c357600080fd5b6100d68282640100000000610105810204565b156100e057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561011c57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106a78061014b6000396000f3006080604052600436106100535763ffffffff60e060020a6000350416630c08bf8881146100585780632296f4c71461006f5780632e6b684914610090578063608d3d3d146100b1578063d43acc79146100e6575b600080fd5b34801561006457600080fd5b5061006d6100fb565b005b34801561007b57600080fd5b5061006d600160a060020a0360043516610119565b34801561009c57600080fd5b5061006d600160a060020a03600435166102f5565b3480156100bd57600080fd5b506100d2600160a060020a0360043516610315565b604080519115158252519081900360200190f35b3480156100f257600080fd5b5061006d610330565b61010433610315565b151561010f57600080fd5b610117610339565b565b600080548190819074010000000000000000000000000000000000000000900460ff161561014657600080fd5b61014f33610315565b151561015a57600080fd5b600160a060020a03841660009081526004602052604090205460ff161561018057600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156101c157600080fd5b505af11580156101d5573d6000803e3d6000fd5b505050506040513d60208110156101eb57600080fd5b505115156101f857600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561023657600080fd5b505af115801561024a573d6000803e3d6000fd5b505050506040513d602081101561026057600080fd5b50519150600060ff83161080159061027c575060058260ff1611155b151561028757600080fd5b61029082610400565b9050600160035460ff1660018111156102a557fe5b14156102b5576064600a82020490505b600160a060020a038085166000908152600460205260409020805460ff19166001908117909155546102ef9116858363ffffffff6104b216565b50505050565b6102fe33610315565b151561030957600080fd5b61031281610551565b50565b600061032860028363ffffffff61056216565b90505b919050565b61011733610599565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561039e57600080fd5b505af11580156103b2573d6000803e3d6000fd5b505050506040513d60208110156103c857600080fd5b5051905060008111156103f8576000546001546103f891600160a060020a0391821691168363ffffffff6104b216565b6103126105aa565b600060ff8216151561041d575069152d02c7e14af680000061032b565b8160ff166001141561043a575069d3c21bcecceda100000061032b565b8160ff166002141561045857506a01a784379d99db4200000061032b565b8160ff166003141561047657506a027b46536c66c8e300000061032b565b8160ff166004141561049457506a034f086f3b33b68400000061032b565b8160ff166005141561032b57506a0422ca8b0a00a42500000061032b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561051557600080fd5b505af1158015610529573d6000803e3d6000fd5b505050506040513d602081101561053f57600080fd5b5051151561054c57600080fd5b505050565b61031260028263ffffffff6105e116565b6000600160a060020a038216151561057957600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61031260028263ffffffff61062f16565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a03811615156105f657600080fd5b6106008282610562565b1561060a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561064457600080fd5b61064e8282610562565b151561065957600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058208317cc38f72fdbf4d19029db12a6c784275ab5dfd7521863b2c79aee26e6effb0029", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 PUSH2 0x7F2 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP2 DUP3 AND DUP2 OR PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND OR SWAP1 SSTORE PUSH2 0x6F SWAP1 PUSH5 0x100000000 PUSH2 0x93 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD DUP4 SWAP2 SWAP1 PUSH1 0xFF NOT AND PUSH1 0x1 DUP4 DUP2 DUP2 GT ISZERO PUSH2 0x87 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP POP POP PUSH2 0x13C JUMP JUMPDEST PUSH2 0xAB PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH2 0x5E1 PUSH2 0xAE DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 DUP3 DUP3 PUSH5 0x100000000 PUSH2 0x105 DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH2 0xE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x11C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x6A7 DUP1 PUSH2 0x14B PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x53 JUMPI PUSH4 0xFFFFFFFF PUSH1 0xE0 PUSH1 0x2 EXP PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0xC08BF88 DUP2 EQ PUSH2 0x58 JUMPI DUP1 PUSH4 0x2296F4C7 EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0x90 JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0xB1 JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0xE6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D PUSH2 0xFB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x2F5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x315 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D PUSH2 0x330 JUMP JUMPDEST PUSH2 0x104 CALLER PUSH2 0x315 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x10F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x117 PUSH2 0x339 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 DUP2 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x146 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F CALLER PUSH2 0x315 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x15A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x180 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 SWAP3 POP DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x1F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP PUSH1 0x0 PUSH1 0xFF DUP4 AND LT DUP1 ISZERO SWAP1 PUSH2 0x27C JUMPI POP PUSH1 0x5 DUP3 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0x287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x290 DUP3 PUSH2 0x400 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x3 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x2A5 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x2B5 JUMPI PUSH1 0x64 PUSH1 0xA DUP3 MUL DIV SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x2EF SWAP2 AND DUP6 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x4B2 AND JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x2FE CALLER PUSH2 0x315 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x309 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x312 DUP2 PUSH2 0x551 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x328 PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x562 AND JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x117 CALLER PUSH2 0x599 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0x3F8 JUMPI PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0x3F8 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0x4B2 AND JUMP JUMPDEST PUSH2 0x312 PUSH2 0x5AA JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND ISZERO ISZERO PUSH2 0x41D JUMPI POP PUSH10 0x152D02C7E14AF6800000 PUSH2 0x32B JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x43A JUMPI POP PUSH10 0xD3C21BCECCEDA1000000 PUSH2 0x32B JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x458 JUMPI POP PUSH11 0x1A784379D99DB42000000 PUSH2 0x32B JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x476 JUMPI POP PUSH11 0x27B46536C66C8E3000000 PUSH2 0x32B JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x494 JUMPI POP PUSH11 0x34F086F3B33B684000000 PUSH2 0x32B JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x32B JUMPI POP PUSH11 0x422CA8B0A00A425000000 PUSH2 0x32B JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x515 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x529 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x53F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x54C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x312 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x5E1 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x312 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x62F AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x5F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x600 DUP3 DUP3 PUSH2 0x562 JUMP JUMPDEST ISZERO PUSH2 0x60A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x644 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64E DUP3 DUP3 PUSH2 0x562 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x659 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 DUP4 OR 0xcc CODESIZE 0xf7 0x2f 0xdb DELEGATECALL 0xd1 SWAP1 0x29 0xdb SLT 0xa6 0xc7 DUP5 0x27 GAS 0xb5 0xdf 0xd7 MSTORE XOR PUSH4 0xB2C79AEE 0x26 0xe6 0xef CREATE2 STOP 0x29 ", - "sourceMap": "552:1250:2:-;;;814:176;8:9:-1;5:2;;;30:1;27;20:12;5:2;814:176:2;;;;;;;;;;;;;;;;;;;156:8:5;:21;;167:10;-1:-1:-1;;;;;;156:21:5;;;;;-1:-1:-1;;;;;;188:19:5;;;;-1:-1:-1;636:29:3;;;;;-1:-1:-1;;;;;636:29:3;;;;;368:24:1;;:12;;;;:24;:::i;:::-;962:9:2;:20;;974:8;;962:9;-1:-1:-1;;962:20:2;;974:8;962:20;;;;;;;;;;;;;814:176;;552:1250;;824:96:1;883:29;:16;904:7;883:20;;;;;;:29;:::i;:::-;824:96;:::o;244:167:6:-;-1:-1:-1;;;;;316:21:6;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:6;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:6;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:6;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:6;:11;:20;;;;;;;;;;;;;;;725:166::o;552:1250:2:-;;;;;;;" + "object": "608060405234801561001057600080fd5b506040516040806107f28339810160405280516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561006f90640100000000610093810204565b6003805483919060ff19166001838181111561008757fe5b0217905550505061013c565b6100ab6002826401000000006105e16100ae82021704565b50565b600160a060020a03811615156100c357600080fd5b6100d68282640100000000610105810204565b156100e057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561011c57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106a78061014b6000396000f3006080604052600436106100535763ffffffff60e060020a6000350416630c08bf8881146100585780632e6b68491461006f578063608d3d3d14610090578063d43acc79146100c5578063fe4028bb146100da575b600080fd5b34801561006457600080fd5b5061006d6100fb565b005b34801561007b57600080fd5b5061006d600160a060020a0360043516610119565b34801561009c57600080fd5b506100b1600160a060020a0360043516610139565b604080519115158252519081900360200190f35b3480156100d157600080fd5b5061006d610154565b3480156100e657600080fd5b5061006d600160a060020a036004351661015d565b61010433610139565b151561010f57600080fd5b610117610339565b565b61012233610139565b151561012d57600080fd5b61013681610400565b50565b600061014c60028363ffffffff61041116565b90505b919050565b61011733610448565b600080548190819074010000000000000000000000000000000000000000900460ff161561018a57600080fd5b61019333610139565b151561019e57600080fd5b600160a060020a03841660009081526004602052604090205460ff16156101c457600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561020557600080fd5b505af1158015610219573d6000803e3d6000fd5b505050506040513d602081101561022f57600080fd5b5051151561023c57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561027a57600080fd5b505af115801561028e573d6000803e3d6000fd5b505050506040513d60208110156102a457600080fd5b50519150600060ff8316108015906102c0575060058260ff1611155b15156102cb57600080fd5b6102d482610459565b9050600160035460ff1660018111156102e957fe5b14156102f9576064600a82020490505b600160a060020a038085166000908152600460205260409020805460ff19166001908117909155546103339116858363ffffffff61050b16565b50505050565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561039e57600080fd5b505af11580156103b2573d6000803e3d6000fd5b505050506040513d60208110156103c857600080fd5b5051905060008111156103f8576000546001546103f891600160a060020a0391821691168363ffffffff61050b16565b6101366105aa565b61013660028263ffffffff6105e116565b6000600160a060020a038216151561042857600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61013660028263ffffffff61062f16565b600060ff82161515610476575069152d02c7e14af680000061014f565b8160ff1660011415610493575069d3c21bcecceda100000061014f565b8160ff16600214156104b157506a01a784379d99db4200000061014f565b8160ff16600314156104cf57506a027b46536c66c8e300000061014f565b8160ff16600414156104ed57506a034f086f3b33b68400000061014f565b8160ff166005141561014f57506a0422ca8b0a00a42500000061014f565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561056e57600080fd5b505af1158015610582573d6000803e3d6000fd5b505050506040513d602081101561059857600080fd5b505115156105a557600080fd5b505050565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a03811615156105f657600080fd5b6106008282610411565b1561060a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561064457600080fd5b61064e8282610411565b151561065957600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820308aff6f9dcaa30d375fb4263114be30ddb9e7b07df39a8a98ba43cf3e23cf7e0029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 PUSH2 0x7F2 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP2 DUP3 AND DUP2 OR PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND OR SWAP1 SSTORE PUSH2 0x6F SWAP1 PUSH5 0x100000000 PUSH2 0x93 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD DUP4 SWAP2 SWAP1 PUSH1 0xFF NOT AND PUSH1 0x1 DUP4 DUP2 DUP2 GT ISZERO PUSH2 0x87 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP POP POP PUSH2 0x13C JUMP JUMPDEST PUSH2 0xAB PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH2 0x5E1 PUSH2 0xAE DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 DUP3 DUP3 PUSH5 0x100000000 PUSH2 0x105 DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH2 0xE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x11C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x6A7 DUP1 PUSH2 0x14B PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x53 JUMPI PUSH4 0xFFFFFFFF PUSH1 0xE0 PUSH1 0x2 EXP PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0xC08BF88 DUP2 EQ PUSH2 0x58 JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x90 JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0xC5 JUMPI DUP1 PUSH4 0xFE4028BB EQ PUSH2 0xDA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D PUSH2 0xFB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB1 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x139 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D PUSH2 0x154 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x15D JUMP JUMPDEST PUSH2 0x104 CALLER PUSH2 0x139 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x10F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x117 PUSH2 0x339 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x122 CALLER PUSH2 0x139 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x12D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x136 DUP2 PUSH2 0x400 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14C PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x411 AND JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x117 CALLER PUSH2 0x448 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 DUP2 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x18A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x193 CALLER PUSH2 0x139 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 SWAP3 POP DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x219 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x22F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x23C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x28E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP PUSH1 0x0 PUSH1 0xFF DUP4 AND LT DUP1 ISZERO SWAP1 PUSH2 0x2C0 JUMPI POP PUSH1 0x5 DUP3 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2D4 DUP3 PUSH2 0x459 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x3 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x2E9 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x2F9 JUMPI PUSH1 0x64 PUSH1 0xA DUP3 MUL DIV SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x333 SWAP2 AND DUP6 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x50B AND JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0x3F8 JUMPI PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0x3F8 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0x50B AND JUMP JUMPDEST PUSH2 0x136 PUSH2 0x5AA JUMP JUMPDEST PUSH2 0x136 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x5E1 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x136 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x62F AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND ISZERO ISZERO PUSH2 0x476 JUMPI POP PUSH10 0x152D02C7E14AF6800000 PUSH2 0x14F JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x493 JUMPI POP PUSH10 0xD3C21BCECCEDA1000000 PUSH2 0x14F JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x4B1 JUMPI POP PUSH11 0x1A784379D99DB42000000 PUSH2 0x14F JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x4CF JUMPI POP PUSH11 0x27B46536C66C8E3000000 PUSH2 0x14F JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x4ED JUMPI POP PUSH11 0x34F086F3B33B684000000 PUSH2 0x14F JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x14F JUMPI POP PUSH11 0x422CA8B0A00A425000000 PUSH2 0x14F JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x56E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x582 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x598 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x5A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x5F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x600 DUP3 DUP3 PUSH2 0x411 JUMP JUMPDEST ISZERO PUSH2 0x60A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x644 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64E DUP3 DUP3 PUSH2 0x411 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x659 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 ADDRESS DUP11 SELFDESTRUCT PUSH16 0x9DCAA30D375FB4263114BE30DDB9E7B0 PUSH30 0xF39A8A98BA43CF3E23CF7E00290000000000000000000000000000000000 ", + "sourceMap": "552:1251:2:-;;;814:176;8:9:-1;5:2;;;30:1;27;20:12;5:2;814:176:2;;;;;;;;;;;;;;;;;;;156:8:5;:21;;167:10;-1:-1:-1;;;;;;156:21:5;;;;;-1:-1:-1;;;;;;188:19:5;;;;-1:-1:-1;636:29:3;;;;;-1:-1:-1;;;;;636:29:3;;;;;368:24:1;;:12;;;;:24;:::i;:::-;962:9:2;:20;;974:8;;962:9;-1:-1:-1;;962:20:2;;974:8;962:20;;;;;;;;;;;;;814:176;;552:1251;;824:96:1;883:29;:16;904:7;883:20;;;;;;:29;:::i;:::-;824:96;:::o;244:167:6:-;-1:-1:-1;;;;;316:21:6;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:6;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:6;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:6;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:6;:11;:20;;;;;;;;;;;;;;;725:166::o;552:1251:2:-;;;;;;;" }, "gasEstimates": { "creation": { @@ -211,7 +211,7 @@ "isCoreTeam(address)": "infinite", "renounceCoreTeam()": "infinite", "terminate()": "infinite", - "trasferToMiner(address)": "infinite" + "transferToMiner(address)": "infinite" } }, "methodIdentifiers": { @@ -219,10 +219,10 @@ "isCoreTeam(address)": "608d3d3d", "renounceCoreTeam()": "d43acc79", "terminate()": "0c08bf88", - "trasferToMiner(address)": "2296f4c7" + "transferToMiner(address)": "fe4028bb" } }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"terminate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"trasferToMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"poolType\",\"type\":\"uint8\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":\"AlgoPool\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol\":{\"keccak256\":\"0x2314139702cc63c8daa379e521abea3be32730ba896f68f3f865749907e64539\",\"urls\":[\"bzzr://b945e0ec5a4ca8a52b5e816c5bb00807d0ca43c5363102821b36c8c4ee98a2d5\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":{\"keccak256\":\"0x46653d14027337c1d08f502ae1b0d45f3fccf84c0c8d8ec9ab7b5443d627be60\",\"urls\":[\"bzzr://f1b02198c082a8f940590db1e5704f9cac3058f509b035e7d1e45b8e2dc9a632\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol\":{\"keccak256\":\"0x71adbf7f060599239b7a981594e43dc8fbe8597fd2853b6fe9e70ff39883d73a\",\"urls\":[\"bzzr://70691c1638cdc0f744f8c5b5a94e4f857ba40ad053816cfbd15e13ed41a3bc66\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0xdc21d3ce2e847a83e62a95fc4e8a31305771c1c6549fba2102ae9a7caa09a1e5\",\"urls\":[\"bzzr://291aa93e18c12398d6d8031308b1a0231d253ec061a5449d0335bd476554383e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol\":{\"keccak256\":\"0x29a8fa3204dbd204355714601ce21d7d717a586a4de21009d8f2a3ca7981963f\",\"urls\":[\"bzzr://55d9b762620cef1e6f7b11a26d6cc123f5b608a59e0d36f9bc0a1e8ff0ff5c42\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"terminate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"transferToMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"poolType\",\"type\":\"uint8\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":\"AlgoPool\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol\":{\"keccak256\":\"0x2314139702cc63c8daa379e521abea3be32730ba896f68f3f865749907e64539\",\"urls\":[\"bzzr://b945e0ec5a4ca8a52b5e816c5bb00807d0ca43c5363102821b36c8c4ee98a2d5\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":{\"keccak256\":\"0x179545317a5a90b291e06fe2b272fe9a130a477c23e3b697d0c68c3242056541\",\"urls\":[\"bzzr://4c635d92bb64d5df527aaaa1b16ec83bfbbdbe4b2f2b4759fa806d27478be2a3\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol\":{\"keccak256\":\"0x71adbf7f060599239b7a981594e43dc8fbe8597fd2853b6fe9e70ff39883d73a\",\"urls\":[\"bzzr://70691c1638cdc0f744f8c5b5a94e4f857ba40ad053816cfbd15e13ed41a3bc66\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0x1b1359f75f7d5a943ab06caea36824f0a6448c5ffa1a32ed7e26cee81cf3683a\",\"urls\":[\"bzzr://26177d59d0c84fa4e632538fbd44802f219e6501b0828533badcf80701cea0f5\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol\":{\"keccak256\":\"0x29a8fa3204dbd204355714601ce21d7d717a586a4de21009d8f2a3ca7981963f\",\"urls\":[\"bzzr://55d9b762620cef1e6f7b11a26d6cc123f5b608a59e0d36f9bc0a1e8ff0ff5c42\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -307,6 +307,20 @@ "stateMutability": "view", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "getReferral", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [], @@ -351,6 +365,7 @@ "getCategory()": "80258e47", "getMiner()": "302c11ca", "getMinerType()": "4969ae70", + "getReferral()": "329b1c92", "isAlgoMiner()": "1777fb4b", "isMining()": "19a74ab3" } @@ -2065,7 +2080,7 @@ "id": 100, "nodeType": "ImportDirective", "scope": 185, - "sourceUnit": 532, + "sourceUnit": 537, "src": "28:189:1", "symbolAliases": [], "unitAlias": "" @@ -2090,10 +2105,10 @@ "id": 101, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 531, + "referencedDeclaration": 536, "src": "260:5:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$531", + "typeIdentifier": "t_contract$_Roles_$536", "typeString": "library Roles" } }, @@ -2104,10 +2119,10 @@ "id": 102, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 444, + "referencedDeclaration": 449, "src": "270:10:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeIdentifier": "t_struct$_Role_$449_storage_ptr", "typeString": "struct Roles.Role" } } @@ -2122,7 +2137,7 @@ "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$444_storage", + "typeIdentifier": "t_struct$_Role_$449_storage", "typeString": "struct Roles.Role" }, "typeName": { @@ -2130,10 +2145,10 @@ "id": 104, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 444, + "referencedDeclaration": 449, "src": "289:10:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeIdentifier": "t_struct$_Role_$449_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -2158,7 +2173,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 887, + "referencedDeclaration": 892, "src": "381:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2266,7 +2281,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 887, + "referencedDeclaration": 892, "src": "462:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2332,10 +2347,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 890, - 891 + 895, + 896 ], - "referencedDeclaration": 890, + "referencedDeclaration": 895, "src": "443:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -2420,7 +2435,7 @@ "referencedDeclaration": 105, "src": "584:16:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$444_storage", + "typeIdentifier": "t_struct$_Role_$449_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -2431,10 +2446,10 @@ "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 530, + "referencedDeclaration": 535, "src": "584:20:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$444_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$444_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$449_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$449_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, @@ -2694,7 +2709,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 887, + "referencedDeclaration": 892, "src": "797:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2821,7 +2836,7 @@ "referencedDeclaration": 105, "src": "883:16:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$444_storage", + "typeIdentifier": "t_struct$_Role_$449_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -2832,10 +2847,10 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 476, + "referencedDeclaration": 481, "src": "883:20:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$444_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$444_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$449_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$449_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -2953,7 +2968,7 @@ "referencedDeclaration": 105, "src": "990:16:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$444_storage", + "typeIdentifier": "t_struct$_Role_$449_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -2964,10 +2979,10 @@ "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 507, + "referencedDeclaration": 512, "src": "990:23:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$444_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$444_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$449_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$449_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -3081,7 +3096,7 @@ "id": 187, "nodeType": "ImportDirective", "scope": 316, - "sourceUnit": 729, + "sourceUnit": 734, "src": "27:195:2", "symbolAliases": [], "unitAlias": "" @@ -3092,7 +3107,7 @@ "id": 188, "nodeType": "ImportDirective", "scope": 316, - "sourceUnit": 873, + "sourceUnit": 878, "src": "224:198:2", "symbolAliases": [], "unitAlias": "" @@ -3103,7 +3118,7 @@ "id": 189, "nodeType": "ImportDirective", "scope": 316, - "sourceUnit": 401, + "sourceUnit": 406, "src": "426:26:2", "symbolAliases": [], "unitAlias": "" @@ -3200,9 +3215,9 @@ ], "contractDependencies": [ 97, - 372, 184, - 437 + 372, + 442 ], "contractKind": "contract", "documentation": null, @@ -3212,7 +3227,7 @@ 315, 184, 372, - 437, + 442, 97 ], "name": "AlgoPool", @@ -3225,10 +3240,10 @@ "id": 199, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 872, + "referencedDeclaration": 877, "src": "633:9:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$872", + "typeIdentifier": "t_contract$_SafeERC20_$877", "typeString": "library SafeERC20" } }, @@ -3239,10 +3254,10 @@ "id": 200, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 728, + "referencedDeclaration": 733, "src": "647:6:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$728", + "typeIdentifier": "t_contract$_IERC20_$733", "typeString": "contract IERC20" } } @@ -3534,7 +3549,7 @@ "body": { "id": 304, "nodeType": "Block", - "src": "1078:641:2", + "src": "1079:641:2", "statements": [ { "expression": { @@ -3550,7 +3565,7 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1097:28:2", + "src": "1098:28:2", "subExpression": { "argumentTypes": null, "baseExpression": { @@ -3560,7 +3575,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 210, - "src": "1098:13:2", + "src": "1099:13:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" @@ -3574,7 +3589,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 229, - "src": "1112:12:2", + "src": "1113:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3585,7 +3600,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1098:27:2", + "src": "1099:27:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3608,11 +3623,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 890, - 891 + 895, + 896 ], - "referencedDeclaration": 890, - "src": "1089:7:2", + "referencedDeclaration": 895, + "src": "1090:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -3626,7 +3641,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1089:37:2", + "src": "1090:37:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -3634,7 +3649,7 @@ }, "id": 242, "nodeType": "ExpressionStatement", - "src": "1089:37:2" + "src": "1090:37:2" }, { "assignments": [ @@ -3647,11 +3662,11 @@ "name": "algoMiner", "nodeType": "VariableDeclaration", "scope": 305, - "src": "1139:20:2", + "src": "1140:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$400", + "typeIdentifier": "t_contract$_IAlgoMiner_$405", "typeString": "contract IAlgoMiner" }, "typeName": { @@ -3659,10 +3674,10 @@ "id": 243, "name": "IAlgoMiner", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 400, - "src": "1139:10:2", + "referencedDeclaration": 405, + "src": "1140:10:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$400", + "typeIdentifier": "t_contract$_IAlgoMiner_$405", "typeString": "contract IAlgoMiner" } }, @@ -3681,7 +3696,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 229, - "src": "1173:12:2", + "src": "1174:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3699,10 +3714,10 @@ "name": "IAlgoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 400, - "src": "1162:10:2", + "referencedDeclaration": 405, + "src": "1163:10:2", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$400_$", + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$405_$", "typeString": "type(contract IAlgoMiner)" } }, @@ -3714,14 +3729,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1162:24:2", + "src": "1163:24:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$400", + "typeIdentifier": "t_contract$_IAlgoMiner_$405", "typeString": "contract IAlgoMiner" } }, "nodeType": "VariableDeclarationStatement", - "src": "1139:47:2" + "src": "1140:47:2" }, { "expression": { @@ -3739,9 +3754,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 244, - "src": "1215:9:2", + "src": "1216:9:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$400", + "typeIdentifier": "t_contract$_IAlgoMiner_$405", "typeString": "contract IAlgoMiner" } }, @@ -3753,7 +3768,7 @@ "memberName": "isAlgoMiner", "nodeType": "MemberAccess", "referencedDeclaration": 379, - "src": "1215:21:2", + "src": "1216:21:2", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$__$returns$_t_bool_$", "typeString": "function () pure external returns (bool)" @@ -3767,7 +3782,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1215:23:2", + "src": "1216:23:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3785,11 +3800,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 890, - 891 + 895, + 896 ], - "referencedDeclaration": 890, - "src": "1207:7:2", + "referencedDeclaration": 895, + "src": "1208:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -3803,7 +3818,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1207:32:2", + "src": "1208:32:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -3811,7 +3826,7 @@ }, "id": 254, "nodeType": "ExpressionStatement", - "src": "1207:32:2" + "src": "1208:32:2" }, { "assignments": [ @@ -3824,7 +3839,7 @@ "name": "minerCategory", "nodeType": "VariableDeclaration", "scope": 305, - "src": "1260:19:2", + "src": "1261:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3835,7 +3850,7 @@ "id": 255, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1260:5:2", + "src": "1261:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3858,9 +3873,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 244, - "src": "1282:9:2", + "src": "1283:9:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$400", + "typeIdentifier": "t_contract$_IAlgoMiner_$405", "typeString": "contract IAlgoMiner" } }, @@ -3872,7 +3887,7 @@ "memberName": "getCategory", "nodeType": "MemberAccess", "referencedDeclaration": 389, - "src": "1282:21:2", + "src": "1283:21:2", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" @@ -3886,14 +3901,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1282:23:2", + "src": "1283:23:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", - "src": "1260:45:2" + "src": "1261:45:2" }, { "expression": { @@ -3928,7 +3943,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 256, - "src": "1326:13:2", + "src": "1327:13:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3946,7 +3961,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1343:1:2", + "src": "1344:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3954,7 +3969,7 @@ }, "value": "0" }, - "src": "1326:18:2", + "src": "1327:18:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3980,7 +3995,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 256, - "src": "1348:13:2", + "src": "1349:13:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3998,7 +4013,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1365:1:2", + "src": "1366:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -4006,13 +4021,13 @@ }, "value": "5" }, - "src": "1348:18:2", + "src": "1349:18:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1326:40:2", + "src": "1327:40:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4030,11 +4045,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 890, - 891 + 895, + 896 ], - "referencedDeclaration": 890, - "src": "1318:7:2", + "referencedDeclaration": 895, + "src": "1319:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -4048,7 +4063,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1318:49:2", + "src": "1319:49:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -4056,7 +4071,7 @@ }, "id": 270, "nodeType": "ExpressionStatement", - "src": "1318:49:2" + "src": "1319:49:2" }, { "assignments": [ @@ -4069,7 +4084,7 @@ "name": "value", "nodeType": "VariableDeclaration", "scope": 305, - "src": "1380:13:2", + "src": "1381:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4080,7 +4095,7 @@ "id": 271, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1380:7:2", + "src": "1381:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4101,7 +4116,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 256, - "src": "1418:13:2", + "src": "1419:13:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4120,7 +4135,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, - "src": "1396:21:2", + "src": "1397:21:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint8_$returns$_t_uint256_$", "typeString": "function (uint8) pure returns (uint256)" @@ -4134,14 +4149,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1396:36:2", + "src": "1397:36:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1380:52:2" + "src": "1381:52:2" }, { "condition": { @@ -4162,7 +4177,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 206, - "src": "1527:9:2", + "src": "1528:9:2", "typeDescriptions": { "typeIdentifier": "t_enum$_PoolType_$204", "typeString": "enum AlgoPool.PoolType" @@ -4179,7 +4194,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 204, - "src": "1540:8:2", + "src": "1541:8:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_PoolType_$204_$", "typeString": "type(enum AlgoPool.PoolType)" @@ -4193,13 +4208,13 @@ "memberName": "ReferralPool", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1540:21:2", + "src": "1541:21:2", "typeDescriptions": { "typeIdentifier": "t_enum$_PoolType_$204", "typeString": "enum AlgoPool.PoolType" } }, - "src": "1527:34:2", + "src": "1528:34:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4208,11 +4223,11 @@ "falseBody": null, "id": 290, "nodeType": "IfStatement", - "src": "1524:90:2", + "src": "1525:90:2", "trueBody": { "id": 289, "nodeType": "Block", - "src": "1563:51:2", + "src": "1564:51:2", "statements": [ { "expression": { @@ -4229,7 +4244,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 272, - "src": "1578:5:2", + "src": "1579:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4266,7 +4281,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 272, - "src": "1586:5:2", + "src": "1587:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4284,7 +4299,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1594:2:2", + "src": "1595:2:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", @@ -4292,7 +4307,7 @@ }, "value": "10" }, - "src": "1586:10:2", + "src": "1587:10:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4310,7 +4325,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1599:3:2", + "src": "1600:3:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_100_by_1", @@ -4318,13 +4333,13 @@ }, "value": "100" }, - "src": "1586:16:2", + "src": "1587:16:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1578:24:2", + "src": "1579:24:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4332,7 +4347,7 @@ }, "id": 288, "nodeType": "ExpressionStatement", - "src": "1578:24:2" + "src": "1579:24:2" } ] } @@ -4354,7 +4369,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 210, - "src": "1626:13:2", + "src": "1627:13:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" @@ -4368,7 +4383,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 229, - "src": "1640:12:2", + "src": "1641:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4379,7 +4394,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1626:27:2", + "src": "1627:27:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4397,7 +4412,7 @@ "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1656:4:2", + "src": "1657:4:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4405,7 +4420,7 @@ }, "value": "true" }, - "src": "1626:34:2", + "src": "1627:34:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4413,7 +4428,7 @@ }, "id": 296, "nodeType": "ExpressionStatement", - "src": "1626:34:2" + "src": "1627:34:2" }, { "expression": { @@ -4426,7 +4441,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 229, - "src": "1691:12:2", + "src": "1692:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4439,7 +4454,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 272, - "src": "1705:5:2", + "src": "1706:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4464,9 +4479,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 327, - "src": "1671:6:2", + "src": "1672:6:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$728", + "typeIdentifier": "t_contract$_IERC20_$733", "typeString": "contract IERC20" } }, @@ -4477,10 +4492,10 @@ "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 753, - "src": "1671:19:2", + "referencedDeclaration": 758, + "src": "1672:19:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$728_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$728_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$733_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$733_$", "typeString": "function (contract IERC20,address,uint256)" } }, @@ -4492,7 +4507,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1671:40:2", + "src": "1672:40:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -4500,7 +4515,7 @@ }, "id": 303, "nodeType": "ExpressionStatement", - "src": "1671:40:2" + "src": "1672:40:2" } ] }, @@ -4519,15 +4534,15 @@ "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 428, - "src": "1051:13:2", + "referencedDeclaration": 433, + "src": "1052:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1051:13:2" + "src": "1052:13:2" }, { "arguments": null, @@ -4539,17 +4554,17 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "1065:12:2", + "src": "1066:12:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1065:12:2" + "src": "1066:12:2" } ], - "name": "trasferToMiner", + "name": "transferToMiner", "nodeType": "FunctionDefinition", "parameters": { "id": 230, @@ -4561,7 +4576,7 @@ "name": "minerAddress", "nodeType": "VariableDeclaration", "scope": 305, - "src": "1022:20:2", + "src": "1023:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4572,7 +4587,7 @@ "id": 228, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1022:7:2", + "src": "1023:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4582,17 +4597,17 @@ "visibility": "internal" } ], - "src": "1021:22:2" + "src": "1022:22:2" }, "payable": false, "returnParameters": { "id": 235, "nodeType": "ParameterList", "parameters": [], - "src": "1078:0:2" + "src": "1079:0:2" }, "scope": 315, - "src": "998:721:2", + "src": "998:722:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -4601,7 +4616,7 @@ "body": { "id": 313, "nodeType": "Block", - "src": "1768:31:2", + "src": "1769:31:2", "statements": [ { "expression": { @@ -4616,7 +4631,7 @@ 371 ], "referencedDeclaration": 371, - "src": "1779:10:2", + "src": "1780:10:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" @@ -4630,7 +4645,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1779:12:2", + "src": "1780:12:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -4638,7 +4653,7 @@ }, "id": 312, "nodeType": "ExpressionStatement", - "src": "1779:12:2" + "src": "1780:12:2" } ] }, @@ -4658,14 +4673,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "1755:12:2", + "src": "1756:12:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1755:12:2" + "src": "1756:12:2" } ], "name": "terminate", @@ -4674,27 +4689,27 @@ "id": 306, "nodeType": "ParameterList", "parameters": [], - "src": "1745:2:2" + "src": "1746:2:2" }, "payable": false, "returnParameters": { "id": 309, "nodeType": "ParameterList", "parameters": [], - "src": "1768:0:2" + "src": "1769:0:2" }, "scope": 315, - "src": "1727:72:2", + "src": "1728:72:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], "scope": 316, - "src": "552:1250:2" + "src": "552:1251:2" } ], - "src": "0:1804:2" + "src": "0:1805:2" }, "id": 2 }, @@ -4725,7 +4740,7 @@ "id": 318, "nodeType": "ImportDirective", "scope": 373, - "sourceUnit": 729, + "sourceUnit": 734, "src": "27:195:3", "symbolAliases": [], "unitAlias": "" @@ -4736,7 +4751,7 @@ "id": 319, "nodeType": "ImportDirective", "scope": 373, - "sourceUnit": 873, + "sourceUnit": 878, "src": "224:198:3", "symbolAliases": [], "unitAlias": "" @@ -4747,7 +4762,7 @@ "id": 320, "nodeType": "ImportDirective", "scope": 373, - "sourceUnit": 438, + "sourceUnit": 443, "src": "426:26:3", "symbolAliases": [], "unitAlias": "" @@ -4761,10 +4776,10 @@ "id": 321, "name": "Terminable", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 437, + "referencedDeclaration": 442, "src": "485:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_Terminable_$437", + "typeIdentifier": "t_contract$_Terminable_$442", "typeString": "contract Terminable" } }, @@ -4774,7 +4789,7 @@ } ], "contractDependencies": [ - 437 + 442 ], "contractKind": "contract", "documentation": null, @@ -4782,7 +4797,7 @@ "id": 372, "linearizedBaseContracts": [ 372, - 437 + 442 ], "name": "ERC20TokenHolder", "nodeType": "ContractDefinition", @@ -4794,10 +4809,10 @@ "id": 323, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 872, + "referencedDeclaration": 877, "src": "509:9:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$872", + "typeIdentifier": "t_contract$_SafeERC20_$877", "typeString": "library SafeERC20" } }, @@ -4808,10 +4823,10 @@ "id": 324, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 728, + "referencedDeclaration": 733, "src": "523:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$728", + "typeIdentifier": "t_contract$_IERC20_$733", "typeString": "contract IERC20" } } @@ -4826,7 +4841,7 @@ "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$728", + "typeIdentifier": "t_contract$_IERC20_$733", "typeString": "contract IERC20" }, "typeName": { @@ -4834,10 +4849,10 @@ "id": 326, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 728, + "referencedDeclaration": 733, "src": "538:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$728", + "typeIdentifier": "t_contract$_IERC20_$733", "typeString": "contract IERC20" } }, @@ -4867,7 +4882,7 @@ "referencedDeclaration": 327, "src": "636:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$728", + "typeIdentifier": "t_contract$_IERC20_$733", "typeString": "contract IERC20" } }, @@ -4901,10 +4916,10 @@ "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 728, + "referencedDeclaration": 733, "src": "645:6:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$728_$", + "typeIdentifier": "t_type$_t_contract$_IERC20_$733_$", "typeString": "type(contract IERC20)" } }, @@ -4918,13 +4933,13 @@ "nodeType": "FunctionCall", "src": "645:20:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$728", + "typeIdentifier": "t_contract$_IERC20_$733", "typeString": "contract IERC20" } }, "src": "636:29:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$728", + "typeIdentifier": "t_contract$_IERC20_$733", "typeString": "contract IERC20" } }, @@ -4949,10 +4964,10 @@ "name": "Terminable", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 437, + "referencedDeclaration": 442, "src": "603:10:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Terminable_$437_$", + "typeIdentifier": "t_type$_t_contract$_Terminable_$442_$", "typeString": "type(contract Terminable)" } }, @@ -5059,7 +5074,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 916, + "referencedDeclaration": 921, "src": "773:4:3", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20TokenHolder_$372", @@ -5118,7 +5133,7 @@ "referencedDeclaration": 327, "src": "748:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$728", + "typeIdentifier": "t_contract$_IERC20_$733", "typeString": "contract IERC20" } }, @@ -5129,7 +5144,7 @@ "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 673, + "referencedDeclaration": 678, "src": "748:16:3", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", @@ -5223,7 +5238,7 @@ "name": "_creator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 404, + "referencedDeclaration": 409, "src": "848:8:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5264,7 +5279,7 @@ "referencedDeclaration": 327, "src": "828:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$728", + "typeIdentifier": "t_contract$_IERC20_$733", "typeString": "contract IERC20" } }, @@ -5275,10 +5290,10 @@ "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 753, + "referencedDeclaration": 758, "src": "828:19:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$728_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$728_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$733_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$733_$", "typeString": "function (contract IERC20,address,uint256)" } }, @@ -5315,10 +5330,10 @@ "name": "Terminable", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 437, + "referencedDeclaration": 442, "src": "895:10:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Terminable_$437_$", + "typeIdentifier": "t_type$_t_contract$_Terminable_$442_$", "typeString": "type(contract Terminable)" } }, @@ -5329,7 +5344,7 @@ "lValueRequested": false, "memberName": "_terminate", "nodeType": "MemberAccess", - "referencedDeclaration": 436, + "referencedDeclaration": 441, "src": "895:21:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", @@ -5380,7 +5395,7 @@ "scope": 372, "src": "681:245:3", "stateMutability": "nonpayable", - "superFunction": 436, + "superFunction": 441, "visibility": "internal" } ], @@ -5397,10 +5412,10 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", "exportedSymbols": { "IAlgoMiner": [ - 400 + 405 ] }, - "id": 401, + "id": 406, "nodeType": "SourceUnit", "nodes": [ { @@ -5419,9 +5434,9 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 400, + "id": 405, "linearizedBaseContracts": [ - 400 + 405 ], "name": "IAlgoMiner", "nodeType": "ContractDefinition", @@ -5476,7 +5491,7 @@ ], "src": "97:6:4" }, - "scope": 400, + "scope": 405, "src": "54:50:4", "stateMutability": "pure", "superFunction": null, @@ -5532,7 +5547,7 @@ ], "src": "154:7:4" }, - "scope": 400, + "scope": 405, "src": "110:52:4", "stateMutability": "view", "superFunction": null, @@ -5588,7 +5603,7 @@ ], "src": "211:7:4" }, - "scope": 400, + "scope": 405, "src": "168:51:4", "stateMutability": "view", "superFunction": null, @@ -5602,7 +5617,7 @@ "isConstructor": false, "isDeclaredConst": true, "modifiers": [], - "name": "isMining", + "name": "getMiner", "nodeType": "FunctionDefinition", "parameters": { "id": 390, @@ -5621,31 +5636,31 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 394, - "src": "266:4:4", + "src": "266:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { "id": 391, - "name": "bool", + "name": "address", "nodeType": "ElementaryTypeName", - "src": "266:4:4", + "src": "266:7:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" } }, "value": null, "visibility": "internal" } ], - "src": "265:6:4" + "src": "265:9:4" }, - "scope": 400, - "src": "225:47:4", + "scope": 405, + "src": "225:50:4", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -5658,13 +5673,13 @@ "isConstructor": false, "isDeclaredConst": true, "modifiers": [], - "name": "getMiner", + "name": "getReferral", "nodeType": "FunctionDefinition", "parameters": { "id": 395, "nodeType": "ParameterList", "parameters": [], - "src": "295:2:4" + "src": "301:2:4" }, "payable": false, "returnParameters": { @@ -5677,7 +5692,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 399, - "src": "319:7:4", + "src": "325:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5688,7 +5703,7 @@ "id": 396, "name": "address", "nodeType": "ElementaryTypeName", - "src": "319:7:4", + "src": "325:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5698,20 +5713,76 @@ "visibility": "internal" } ], - "src": "318:9:4" + "src": "324:9:4" }, - "scope": 400, - "src": "278:50:4", + "scope": 405, + "src": "281:53:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 404, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isMining", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 400, + "nodeType": "ParameterList", + "parameters": [], + "src": "357:2:4" + }, + "payable": false, + "returnParameters": { + "id": 403, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 402, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 404, + "src": "381:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 401, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "381:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "380:6:4" + }, + "scope": 405, + "src": "340:47:4", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 401, - "src": "27:304:4" + "scope": 406, + "src": "27:363:4" } ], - "src": "0:331:4" + "src": "0:390:4" }, "id": 4 }, @@ -5720,14 +5791,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", "exportedSymbols": { "Terminable": [ - 437 + 442 ] }, - "id": 438, + "id": 443, "nodeType": "SourceUnit", "nodes": [ { - "id": 402, + "id": 407, "literals": [ "solidity", "0.4", @@ -5742,19 +5813,19 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 437, + "id": 442, "linearizedBaseContracts": [ - 437 + 442 ], "name": "Terminable", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 404, + "id": 409, "name": "_creator", "nodeType": "VariableDeclaration", - "scope": 437, + "scope": 442, "src": "56:25:5", "stateVariable": true, "storageLocation": "default", @@ -5763,7 +5834,7 @@ "typeString": "address" }, "typeName": { - "id": 403, + "id": 408, "name": "address", "nodeType": "ElementaryTypeName", "src": "56:7:5", @@ -5777,10 +5848,10 @@ }, { "constant": false, - "id": 406, + "id": 411, "name": "_terminated", "nodeType": "VariableDeclaration", - "scope": 437, + "scope": 442, "src": "88:25:5", "stateVariable": true, "storageLocation": "default", @@ -5789,7 +5860,7 @@ "typeString": "bool" }, "typeName": { - "id": 405, + "id": 410, "name": "bool", "nodeType": "ElementaryTypeName", "src": "88:4:5", @@ -5803,25 +5874,25 @@ }, { "body": { - "id": 418, + "id": 423, "nodeType": "Block", "src": "145:70:5", "statements": [ { "expression": { "argumentTypes": null, - "id": 412, + "id": 417, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 409, + "id": 414, "name": "_creator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 404, + "referencedDeclaration": 409, "src": "156:8:5", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5834,18 +5905,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 410, + "id": 415, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 887, + "referencedDeclaration": 892, "src": "167:3:5", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 411, + "id": 416, "isConstant": false, "isLValue": false, "isPure": false, @@ -5865,25 +5936,25 @@ "typeString": "address" } }, - "id": 413, + "id": 418, "nodeType": "ExpressionStatement", "src": "156:21:5" }, { "expression": { "argumentTypes": null, - "id": 416, + "id": 421, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 414, + "id": 419, "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 406, + "referencedDeclaration": 411, "src": "188:11:5", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5895,7 +5966,7 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 415, + "id": 420, "isConstant": false, "isLValue": false, "isPure": true, @@ -5916,14 +5987,14 @@ "typeString": "bool" } }, - "id": 417, + "id": 422, "nodeType": "ExpressionStatement", "src": "188:19:5" } ] }, "documentation": null, - "id": 419, + "id": 424, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -5931,19 +6002,19 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 407, + "id": 412, "nodeType": "ParameterList", "parameters": [], "src": "133:2:5" }, "payable": false, "returnParameters": { - "id": 408, + "id": 413, "nodeType": "ParameterList", "parameters": [], "src": "145:0:5" }, - "scope": 437, + "scope": 442, "src": "122:93:5", "stateMutability": "nonpayable", "superFunction": null, @@ -5951,7 +6022,7 @@ }, { "body": { - "id": 427, + "id": 432, "nodeType": "Block", "src": "248:52:5", "statements": [ @@ -5961,7 +6032,7 @@ "arguments": [ { "argumentTypes": null, - "id": 423, + "id": 428, "isConstant": false, "isLValue": false, "isPure": false, @@ -5972,11 +6043,11 @@ "src": "267:12:5", "subExpression": { "argumentTypes": null, - "id": 422, + "id": 427, "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 406, + "referencedDeclaration": 411, "src": "268:11:5", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5996,21 +6067,21 @@ "typeString": "bool" } ], - "id": 421, + "id": 426, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 890, - 891 + 895, + 896 ], - "referencedDeclaration": 890, + "referencedDeclaration": 895, "src": "259:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 424, + "id": 429, "isConstant": false, "isLValue": false, "isPure": false, @@ -6024,23 +6095,23 @@ "typeString": "tuple()" } }, - "id": 425, + "id": 430, "nodeType": "ExpressionStatement", "src": "259:21:5" }, { - "id": 426, + "id": 431, "nodeType": "PlaceholderStatement", "src": "291:1:5" } ] }, "documentation": null, - "id": 428, + "id": 433, "name": "notTerminated", "nodeType": "ModifierDefinition", "parameters": { - "id": 420, + "id": 425, "nodeType": "ParameterList", "parameters": [], "src": "245:2:5" @@ -6050,25 +6121,25 @@ }, { "body": { - "id": 435, + "id": 440, "nodeType": "Block", "src": "339:37:5", "statements": [ { "expression": { "argumentTypes": null, - "id": 433, + "id": 438, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 431, + "id": 436, "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 406, + "referencedDeclaration": 411, "src": "350:11:5", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6080,7 +6151,7 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 432, + "id": 437, "isConstant": false, "isLValue": false, "isPure": true, @@ -6101,14 +6172,14 @@ "typeString": "bool" } }, - "id": 434, + "id": 439, "nodeType": "ExpressionStatement", "src": "350:18:5" } ] }, "documentation": null, - "id": 436, + "id": 441, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -6116,26 +6187,26 @@ "name": "_terminate", "nodeType": "FunctionDefinition", "parameters": { - "id": 429, + "id": 434, "nodeType": "ParameterList", "parameters": [], "src": "327:2:5" }, "payable": false, "returnParameters": { - "id": 430, + "id": 435, "nodeType": "ParameterList", "parameters": [], "src": "339:0:5" }, - "scope": 437, + "scope": 442, "src": "308:68:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 438, + "scope": 443, "src": "27:352:5" } ], @@ -6148,14 +6219,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "exportedSymbols": { "Roles": [ - 531 + 536 ] }, - "id": 532, + "id": 537, "nodeType": "SourceUnit", "nodes": [ { - "id": 439, + "id": 444, "literals": [ "solidity", "^", @@ -6171,23 +6242,23 @@ "contractKind": "library", "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", "fullyImplemented": true, - "id": 531, + "id": 536, "linearizedBaseContracts": [ - 531 + 536 ], "name": "Roles", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "Roles.Role", - "id": 444, + "id": 449, "members": [ { "constant": false, - "id": 443, + "id": 448, "name": "bearer", "nodeType": "VariableDeclaration", - "scope": 444, + "scope": 449, "src": "145:32:6", "stateVariable": false, "storageLocation": "default", @@ -6196,9 +6267,9 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 442, + "id": 447, "keyType": { - "id": 440, + "id": 445, "name": "address", "nodeType": "ElementaryTypeName", "src": "154:7:6", @@ -6214,7 +6285,7 @@ "typeString": "mapping(address => bool)" }, "valueType": { - "id": 441, + "id": 446, "name": "bool", "nodeType": "ElementaryTypeName", "src": "165:4:6", @@ -6230,13 +6301,13 @@ ], "name": "Role", "nodeType": "StructDefinition", - "scope": 531, + "scope": 536, "src": "127:55:6", "visibility": "public" }, { "body": { - "id": 475, + "id": 480, "nodeType": "Block", "src": "302:109:6", "statements": [ @@ -6250,18 +6321,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 456, + "id": 461, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 452, + "id": 457, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 448, + "referencedDeclaration": 453, "src": "316:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6276,7 +6347,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 454, + "id": 459, "isConstant": false, "isLValue": false, "isPure": true, @@ -6299,7 +6370,7 @@ "typeString": "int_const 0" } ], - "id": 453, + "id": 458, "isConstant": false, "isLValue": false, "isPure": true, @@ -6312,7 +6383,7 @@ }, "typeName": "address" }, - "id": 455, + "id": 460, "isConstant": false, "isLValue": false, "isPure": true, @@ -6340,21 +6411,21 @@ "typeString": "bool" } ], - "id": 451, + "id": 456, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 890, - 891 + 895, + 896 ], - "referencedDeclaration": 890, + "referencedDeclaration": 895, "src": "308:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 457, + "id": 462, "isConstant": false, "isLValue": false, "isPure": false, @@ -6368,7 +6439,7 @@ "typeString": "tuple()" } }, - "id": 458, + "id": 463, "nodeType": "ExpressionStatement", "src": "308:30:6" }, @@ -6378,7 +6449,7 @@ "arguments": [ { "argumentTypes": null, - "id": 464, + "id": 469, "isConstant": false, "isLValue": false, "isPure": false, @@ -6392,24 +6463,24 @@ "arguments": [ { "argumentTypes": null, - "id": 461, + "id": 466, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 446, + "referencedDeclaration": 451, "src": "357:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeIdentifier": "t_struct$_Role_$449_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, { "argumentTypes": null, - "id": 462, + "id": 467, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 448, + "referencedDeclaration": 453, "src": "363:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6420,7 +6491,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeIdentifier": "t_struct$_Role_$449_storage_ptr", "typeString": "struct Roles.Role storage pointer" }, { @@ -6428,18 +6499,18 @@ "typeString": "address" } ], - "id": 460, + "id": 465, "name": "has", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 530, + "referencedDeclaration": 535, "src": "353:3:6", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$444_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$449_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 463, + "id": 468, "isConstant": false, "isLValue": false, "isPure": false, @@ -6466,21 +6537,21 @@ "typeString": "bool" } ], - "id": 459, + "id": 464, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 890, - 891 + 895, + 896 ], - "referencedDeclaration": 890, + "referencedDeclaration": 895, "src": "344:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 465, + "id": 470, "isConstant": false, "isLValue": false, "isPure": false, @@ -6494,14 +6565,14 @@ "typeString": "tuple()" } }, - "id": 466, + "id": 471, "nodeType": "ExpressionStatement", "src": "344:28:6" }, { "expression": { "argumentTypes": null, - "id": 473, + "id": 478, "isConstant": false, "isLValue": false, "isPure": false, @@ -6512,39 +6583,39 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 467, + "id": 472, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 446, + "referencedDeclaration": 451, "src": "379:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeIdentifier": "t_struct$_Role_$449_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 470, + "id": 475, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 443, + "referencedDeclaration": 448, "src": "379:11:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 471, + "id": 476, "indexExpression": { "argumentTypes": null, - "id": 469, + "id": 474, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 448, + "referencedDeclaration": 453, "src": "391:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6567,7 +6638,7 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 472, + "id": 477, "isConstant": false, "isLValue": false, "isPure": true, @@ -6588,14 +6659,14 @@ "typeString": "bool" } }, - "id": 474, + "id": 479, "nodeType": "ExpressionStatement", "src": "379:27:6" } ] }, "documentation": "@dev give an account access to this role", - "id": 476, + "id": 481, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -6603,31 +6674,31 @@ "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 449, + "id": 454, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 446, + "id": 451, "name": "role", "nodeType": "VariableDeclaration", - "scope": 476, + "scope": 481, "src": "257:17:6", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeIdentifier": "t_struct$_Role_$449_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 445, + "id": 450, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 444, + "referencedDeclaration": 449, "src": "257:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeIdentifier": "t_struct$_Role_$449_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -6636,10 +6707,10 @@ }, { "constant": false, - "id": 448, + "id": 453, "name": "account", "nodeType": "VariableDeclaration", - "scope": 476, + "scope": 481, "src": "276:15:6", "stateVariable": false, "storageLocation": "default", @@ -6648,7 +6719,7 @@ "typeString": "address" }, "typeName": { - "id": 447, + "id": 452, "name": "address", "nodeType": "ElementaryTypeName", "src": "276:7:6", @@ -6665,12 +6736,12 @@ }, "payable": false, "returnParameters": { - "id": 450, + "id": 455, "nodeType": "ParameterList", "parameters": [], "src": "302:0:6" }, - "scope": 531, + "scope": 536, "src": "244:167:6", "stateMutability": "nonpayable", "superFunction": null, @@ -6678,7 +6749,7 @@ }, { "body": { - "id": 506, + "id": 511, "nodeType": "Block", "src": "538:109:6", "statements": [ @@ -6692,18 +6763,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 488, + "id": 493, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 484, + "id": 489, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 480, + "referencedDeclaration": 485, "src": "552:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6718,7 +6789,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 486, + "id": 491, "isConstant": false, "isLValue": false, "isPure": true, @@ -6741,7 +6812,7 @@ "typeString": "int_const 0" } ], - "id": 485, + "id": 490, "isConstant": false, "isLValue": false, "isPure": true, @@ -6754,7 +6825,7 @@ }, "typeName": "address" }, - "id": 487, + "id": 492, "isConstant": false, "isLValue": false, "isPure": true, @@ -6782,21 +6853,21 @@ "typeString": "bool" } ], - "id": 483, + "id": 488, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 890, - 891 + 895, + 896 ], - "referencedDeclaration": 890, + "referencedDeclaration": 895, "src": "544:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 489, + "id": 494, "isConstant": false, "isLValue": false, "isPure": false, @@ -6810,7 +6881,7 @@ "typeString": "tuple()" } }, - "id": 490, + "id": 495, "nodeType": "ExpressionStatement", "src": "544:30:6" }, @@ -6823,24 +6894,24 @@ "arguments": [ { "argumentTypes": null, - "id": 493, + "id": 498, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 478, + "referencedDeclaration": 483, "src": "592:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeIdentifier": "t_struct$_Role_$449_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, { "argumentTypes": null, - "id": 494, + "id": 499, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 480, + "referencedDeclaration": 485, "src": "598:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6851,7 +6922,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeIdentifier": "t_struct$_Role_$449_storage_ptr", "typeString": "struct Roles.Role storage pointer" }, { @@ -6859,18 +6930,18 @@ "typeString": "address" } ], - "id": 492, + "id": 497, "name": "has", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 530, + "referencedDeclaration": 535, "src": "588:3:6", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$444_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$449_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 495, + "id": 500, "isConstant": false, "isLValue": false, "isPure": false, @@ -6892,21 +6963,21 @@ "typeString": "bool" } ], - "id": 491, + "id": 496, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 890, - 891 + 895, + 896 ], - "referencedDeclaration": 890, + "referencedDeclaration": 895, "src": "580:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 496, + "id": 501, "isConstant": false, "isLValue": false, "isPure": false, @@ -6920,14 +6991,14 @@ "typeString": "tuple()" } }, - "id": 497, + "id": 502, "nodeType": "ExpressionStatement", "src": "580:27:6" }, { "expression": { "argumentTypes": null, - "id": 504, + "id": 509, "isConstant": false, "isLValue": false, "isPure": false, @@ -6938,39 +7009,39 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 498, + "id": 503, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 478, + "referencedDeclaration": 483, "src": "614:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeIdentifier": "t_struct$_Role_$449_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 501, + "id": 506, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 443, + "referencedDeclaration": 448, "src": "614:11:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 502, + "id": 507, "indexExpression": { "argumentTypes": null, - "id": 500, + "id": 505, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 480, + "referencedDeclaration": 485, "src": "626:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6993,7 +7064,7 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 503, + "id": 508, "isConstant": false, "isLValue": false, "isPure": true, @@ -7014,14 +7085,14 @@ "typeString": "bool" } }, - "id": 505, + "id": 510, "nodeType": "ExpressionStatement", "src": "614:28:6" } ] }, "documentation": "@dev remove an account's access to this role", - "id": 507, + "id": 512, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -7029,31 +7100,31 @@ "name": "remove", "nodeType": "FunctionDefinition", "parameters": { - "id": 481, + "id": 486, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 478, + "id": 483, "name": "role", "nodeType": "VariableDeclaration", - "scope": 507, + "scope": 512, "src": "493:17:6", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeIdentifier": "t_struct$_Role_$449_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 477, + "id": 482, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 444, + "referencedDeclaration": 449, "src": "493:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeIdentifier": "t_struct$_Role_$449_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -7062,10 +7133,10 @@ }, { "constant": false, - "id": 480, + "id": 485, "name": "account", "nodeType": "VariableDeclaration", - "scope": 507, + "scope": 512, "src": "512:15:6", "stateVariable": false, "storageLocation": "default", @@ -7074,7 +7145,7 @@ "typeString": "address" }, "typeName": { - "id": 479, + "id": 484, "name": "address", "nodeType": "ElementaryTypeName", "src": "512:7:6", @@ -7091,12 +7162,12 @@ }, "payable": false, "returnParameters": { - "id": 482, + "id": 487, "nodeType": "ParameterList", "parameters": [], "src": "538:0:6" }, - "scope": 531, + "scope": 536, "src": "477:170:6", "stateMutability": "nonpayable", "superFunction": null, @@ -7104,7 +7175,7 @@ }, { "body": { - "id": 529, + "id": 534, "nodeType": "Block", "src": "817:74:6", "statements": [ @@ -7118,18 +7189,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 521, + "id": 526, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 517, + "id": 522, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 511, + "referencedDeclaration": 516, "src": "831:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -7144,7 +7215,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 519, + "id": 524, "isConstant": false, "isLValue": false, "isPure": true, @@ -7167,7 +7238,7 @@ "typeString": "int_const 0" } ], - "id": 518, + "id": 523, "isConstant": false, "isLValue": false, "isPure": true, @@ -7180,7 +7251,7 @@ }, "typeName": "address" }, - "id": 520, + "id": 525, "isConstant": false, "isLValue": false, "isPure": true, @@ -7208,21 +7279,21 @@ "typeString": "bool" } ], - "id": 516, + "id": 521, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 890, - 891 + 895, + 896 ], - "referencedDeclaration": 890, + "referencedDeclaration": 895, "src": "823:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 522, + "id": 527, "isConstant": false, "isLValue": false, "isPure": false, @@ -7236,7 +7307,7 @@ "typeString": "tuple()" } }, - "id": 523, + "id": 528, "nodeType": "ExpressionStatement", "src": "823:30:6" }, @@ -7247,39 +7318,39 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 524, + "id": 529, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 509, + "referencedDeclaration": 514, "src": "866:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeIdentifier": "t_struct$_Role_$449_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 525, + "id": 530, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 443, + "referencedDeclaration": 448, "src": "866:11:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 527, + "id": 532, "indexExpression": { "argumentTypes": null, - "id": 526, + "id": 531, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 511, + "referencedDeclaration": 516, "src": "878:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -7297,15 +7368,15 @@ "typeString": "bool" } }, - "functionReturnParameters": 515, - "id": 528, + "functionReturnParameters": 520, + "id": 533, "nodeType": "Return", "src": "859:27:6" } ] }, "documentation": "@dev check if an account has this role\n@return bool", - "id": 530, + "id": 535, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7313,31 +7384,31 @@ "name": "has", "nodeType": "FunctionDefinition", "parameters": { - "id": 512, + "id": 517, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 509, + "id": 514, "name": "role", "nodeType": "VariableDeclaration", - "scope": 530, + "scope": 535, "src": "738:17:6", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeIdentifier": "t_struct$_Role_$449_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 508, + "id": 513, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 444, + "referencedDeclaration": 449, "src": "738:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$444_storage_ptr", + "typeIdentifier": "t_struct$_Role_$449_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -7346,10 +7417,10 @@ }, { "constant": false, - "id": 511, + "id": 516, "name": "account", "nodeType": "VariableDeclaration", - "scope": 530, + "scope": 535, "src": "757:15:6", "stateVariable": false, "storageLocation": "default", @@ -7358,7 +7429,7 @@ "typeString": "address" }, "typeName": { - "id": 510, + "id": 515, "name": "address", "nodeType": "ElementaryTypeName", "src": "757:7:6", @@ -7375,15 +7446,15 @@ }, "payable": false, "returnParameters": { - "id": 515, + "id": 520, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 514, + "id": 519, "name": "", "nodeType": "VariableDeclaration", - "scope": 530, + "scope": 535, "src": "809:4:6", "stateVariable": false, "storageLocation": "default", @@ -7392,7 +7463,7 @@ "typeString": "bool" }, "typeName": { - "id": 513, + "id": 518, "name": "bool", "nodeType": "ElementaryTypeName", "src": "809:4:6", @@ -7407,14 +7478,14 @@ ], "src": "808:6:6" }, - "scope": 531, + "scope": 536, "src": "725:166:6", "stateMutability": "view", "superFunction": null, "visibility": "internal" } ], - "scope": 532, + "scope": 537, "src": "109:784:6" } ], @@ -7427,14 +7498,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "exportedSymbols": { "SafeMath": [ - 659 + 664 ] }, - "id": 660, + "id": 665, "nodeType": "SourceUnit", "nodes": [ { - "id": 533, + "id": 538, "literals": [ "solidity", "^", @@ -7450,16 +7521,16 @@ "contractKind": "library", "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", "fullyImplemented": true, - "id": 659, + "id": 664, "linearizedBaseContracts": [ - 659 + 664 ], "name": "SafeMath", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 565, + "id": 570, "nodeType": "Block", "src": "271:314:7", "statements": [ @@ -7470,18 +7541,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 544, + "id": 549, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 542, + "id": 547, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 535, + "referencedDeclaration": 540, "src": "486:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7493,7 +7564,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 543, + "id": 548, "isConstant": false, "isLValue": false, "isPure": true, @@ -7515,11 +7586,11 @@ } }, "falseBody": null, - "id": 548, + "id": 553, "nodeType": "IfStatement", "src": "482:35:7", "trueBody": { - "id": 547, + "id": 552, "nodeType": "Block", "src": "494:23:7", "statements": [ @@ -7527,7 +7598,7 @@ "expression": { "argumentTypes": null, "hexValue": "30", - "id": 545, + "id": 550, "isConstant": false, "isLValue": false, "isPure": true, @@ -7542,8 +7613,8 @@ }, "value": "0" }, - "functionReturnParameters": 541, - "id": 546, + "functionReturnParameters": 546, + "id": 551, "nodeType": "Return", "src": "502:8:7" } @@ -7552,15 +7623,15 @@ }, { "assignments": [ - 550 + 555 ], "declarations": [ { "constant": false, - "id": 550, + "id": 555, "name": "c", "nodeType": "VariableDeclaration", - "scope": 566, + "scope": 571, "src": "523:9:7", "stateVariable": false, "storageLocation": "default", @@ -7569,7 +7640,7 @@ "typeString": "uint256" }, "typeName": { - "id": 549, + "id": 554, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "523:7:7", @@ -7582,25 +7653,25 @@ "visibility": "internal" } ], - "id": 554, + "id": 559, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 553, + "id": 558, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 551, + "id": 556, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 535, + "referencedDeclaration": 540, "src": "535:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7611,11 +7682,11 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 552, + "id": 557, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 537, + "referencedDeclaration": 542, "src": "539:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7641,7 +7712,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 560, + "id": 565, "isConstant": false, "isLValue": false, "isPure": false, @@ -7652,18 +7723,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 558, + "id": 563, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 556, + "id": 561, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 550, + "referencedDeclaration": 555, "src": "554:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7674,11 +7745,11 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 557, + "id": 562, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 535, + "referencedDeclaration": 540, "src": "558:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7695,11 +7766,11 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 559, + "id": 564, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 537, + "referencedDeclaration": 542, "src": "563:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7720,21 +7791,21 @@ "typeString": "bool" } ], - "id": 555, + "id": 560, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 890, - 891 + 895, + 896 ], - "referencedDeclaration": 890, + "referencedDeclaration": 895, "src": "546:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 561, + "id": 566, "isConstant": false, "isLValue": false, "isPure": false, @@ -7748,33 +7819,33 @@ "typeString": "tuple()" } }, - "id": 562, + "id": 567, "nodeType": "ExpressionStatement", "src": "546:19:7" }, { "expression": { "argumentTypes": null, - "id": 563, + "id": 568, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 550, + "referencedDeclaration": 555, "src": "579:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 541, - "id": 564, + "functionReturnParameters": 546, + "id": 569, "nodeType": "Return", "src": "572:8:7" } ] }, "documentation": "@dev Multiplies two numbers, reverts on overflow.", - "id": 566, + "id": 571, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7782,15 +7853,15 @@ "name": "mul", "nodeType": "FunctionDefinition", "parameters": { - "id": 538, + "id": 543, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 535, + "id": 540, "name": "a", "nodeType": "VariableDeclaration", - "scope": 566, + "scope": 571, "src": "217:9:7", "stateVariable": false, "storageLocation": "default", @@ -7799,7 +7870,7 @@ "typeString": "uint256" }, "typeName": { - "id": 534, + "id": 539, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "217:7:7", @@ -7813,10 +7884,10 @@ }, { "constant": false, - "id": 537, + "id": 542, "name": "b", "nodeType": "VariableDeclaration", - "scope": 566, + "scope": 571, "src": "228:9:7", "stateVariable": false, "storageLocation": "default", @@ -7825,7 +7896,7 @@ "typeString": "uint256" }, "typeName": { - "id": 536, + "id": 541, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "228:7:7", @@ -7842,15 +7913,15 @@ }, "payable": false, "returnParameters": { - "id": 541, + "id": 546, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 540, + "id": 545, "name": "", "nodeType": "VariableDeclaration", - "scope": 566, + "scope": 571, "src": "262:7:7", "stateVariable": false, "storageLocation": "default", @@ -7859,7 +7930,7 @@ "typeString": "uint256" }, "typeName": { - "id": 539, + "id": 544, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "262:7:7", @@ -7874,7 +7945,7 @@ ], "src": "261:9:7" }, - "scope": 659, + "scope": 664, "src": "204:381:7", "stateMutability": "pure", "superFunction": null, @@ -7882,7 +7953,7 @@ }, { "body": { - "id": 589, + "id": 594, "nodeType": "Block", "src": "762:203:7", "statements": [ @@ -7896,18 +7967,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 578, + "id": 583, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 576, + "id": 581, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 570, + "referencedDeclaration": 575, "src": "776:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7919,7 +7990,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 577, + "id": 582, "isConstant": false, "isLValue": false, "isPure": true, @@ -7948,21 +8019,21 @@ "typeString": "bool" } ], - "id": 575, + "id": 580, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 890, - 891 + 895, + 896 ], - "referencedDeclaration": 890, + "referencedDeclaration": 895, "src": "768:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 579, + "id": 584, "isConstant": false, "isLValue": false, "isPure": false, @@ -7976,21 +8047,21 @@ "typeString": "tuple()" } }, - "id": 580, + "id": 585, "nodeType": "ExpressionStatement", "src": "768:14:7" }, { "assignments": [ - 582 + 587 ], "declarations": [ { "constant": false, - "id": 582, + "id": 587, "name": "c", "nodeType": "VariableDeclaration", - "scope": 590, + "scope": 595, "src": "846:9:7", "stateVariable": false, "storageLocation": "default", @@ -7999,7 +8070,7 @@ "typeString": "uint256" }, "typeName": { - "id": 581, + "id": 586, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "846:7:7", @@ -8012,25 +8083,25 @@ "visibility": "internal" } ], - "id": 586, + "id": 591, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 585, + "id": 590, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 583, + "id": 588, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 568, + "referencedDeclaration": 573, "src": "858:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -8041,11 +8112,11 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 584, + "id": 589, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 570, + "referencedDeclaration": 575, "src": "862:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -8064,26 +8135,26 @@ { "expression": { "argumentTypes": null, - "id": 587, + "id": 592, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 582, + "referencedDeclaration": 587, "src": "959:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 574, - "id": 588, + "functionReturnParameters": 579, + "id": 593, "nodeType": "Return", "src": "952:8:7" } ] }, "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", - "id": 590, + "id": 595, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -8091,15 +8162,15 @@ "name": "div", "nodeType": "FunctionDefinition", "parameters": { - "id": 571, + "id": 576, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 568, + "id": 573, "name": "a", "nodeType": "VariableDeclaration", - "scope": 590, + "scope": 595, "src": "708:9:7", "stateVariable": false, "storageLocation": "default", @@ -8108,7 +8179,7 @@ "typeString": "uint256" }, "typeName": { - "id": 567, + "id": 572, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "708:7:7", @@ -8122,10 +8193,10 @@ }, { "constant": false, - "id": 570, + "id": 575, "name": "b", "nodeType": "VariableDeclaration", - "scope": 590, + "scope": 595, "src": "719:9:7", "stateVariable": false, "storageLocation": "default", @@ -8134,7 +8205,7 @@ "typeString": "uint256" }, "typeName": { - "id": 569, + "id": 574, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "719:7:7", @@ -8151,15 +8222,15 @@ }, "payable": false, "returnParameters": { - "id": 574, + "id": 579, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 573, + "id": 578, "name": "", "nodeType": "VariableDeclaration", - "scope": 590, + "scope": 595, "src": "753:7:7", "stateVariable": false, "storageLocation": "default", @@ -8168,7 +8239,7 @@ "typeString": "uint256" }, "typeName": { - "id": 572, + "id": 577, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "753:7:7", @@ -8183,7 +8254,7 @@ ], "src": "752:9:7" }, - "scope": 659, + "scope": 664, "src": "695:270:7", "stateMutability": "pure", "superFunction": null, @@ -8191,7 +8262,7 @@ }, { "body": { - "id": 613, + "id": 618, "nodeType": "Block", "src": "1145:64:7", "statements": [ @@ -8205,18 +8276,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 602, + "id": 607, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 600, + "id": 605, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 594, + "referencedDeclaration": 599, "src": "1159:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -8227,11 +8298,11 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 601, + "id": 606, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 592, + "referencedDeclaration": 597, "src": "1164:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -8252,21 +8323,21 @@ "typeString": "bool" } ], - "id": 599, + "id": 604, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 890, - 891 + 895, + 896 ], - "referencedDeclaration": 890, + "referencedDeclaration": 895, "src": "1151:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 603, + "id": 608, "isConstant": false, "isLValue": false, "isPure": false, @@ -8280,21 +8351,21 @@ "typeString": "tuple()" } }, - "id": 604, + "id": 609, "nodeType": "ExpressionStatement", "src": "1151:15:7" }, { "assignments": [ - 606 + 611 ], "declarations": [ { "constant": false, - "id": 606, + "id": 611, "name": "c", "nodeType": "VariableDeclaration", - "scope": 614, + "scope": 619, "src": "1172:9:7", "stateVariable": false, "storageLocation": "default", @@ -8303,7 +8374,7 @@ "typeString": "uint256" }, "typeName": { - "id": 605, + "id": 610, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1172:7:7", @@ -8316,25 +8387,25 @@ "visibility": "internal" } ], - "id": 610, + "id": 615, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 609, + "id": 614, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 607, + "id": 612, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 592, + "referencedDeclaration": 597, "src": "1184:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -8345,11 +8416,11 @@ "operator": "-", "rightExpression": { "argumentTypes": null, - "id": 608, + "id": 613, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 594, + "referencedDeclaration": 599, "src": "1188:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -8368,26 +8439,26 @@ { "expression": { "argumentTypes": null, - "id": 611, + "id": 616, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 606, + "referencedDeclaration": 611, "src": "1203:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 598, - "id": 612, + "functionReturnParameters": 603, + "id": 617, "nodeType": "Return", "src": "1196:8:7" } ] }, "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", - "id": 614, + "id": 619, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -8395,15 +8466,15 @@ "name": "sub", "nodeType": "FunctionDefinition", "parameters": { - "id": 595, + "id": 600, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 592, + "id": 597, "name": "a", "nodeType": "VariableDeclaration", - "scope": 614, + "scope": 619, "src": "1091:9:7", "stateVariable": false, "storageLocation": "default", @@ -8412,7 +8483,7 @@ "typeString": "uint256" }, "typeName": { - "id": 591, + "id": 596, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1091:7:7", @@ -8426,10 +8497,10 @@ }, { "constant": false, - "id": 594, + "id": 599, "name": "b", "nodeType": "VariableDeclaration", - "scope": 614, + "scope": 619, "src": "1102:9:7", "stateVariable": false, "storageLocation": "default", @@ -8438,7 +8509,7 @@ "typeString": "uint256" }, "typeName": { - "id": 593, + "id": 598, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1102:7:7", @@ -8455,15 +8526,15 @@ }, "payable": false, "returnParameters": { - "id": 598, + "id": 603, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 597, + "id": 602, "name": "", "nodeType": "VariableDeclaration", - "scope": 614, + "scope": 619, "src": "1136:7:7", "stateVariable": false, "storageLocation": "default", @@ -8472,7 +8543,7 @@ "typeString": "uint256" }, "typeName": { - "id": 596, + "id": 601, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1136:7:7", @@ -8487,7 +8558,7 @@ ], "src": "1135:9:7" }, - "scope": 659, + "scope": 664, "src": "1078:131:7", "stateMutability": "pure", "superFunction": null, @@ -8495,21 +8566,21 @@ }, { "body": { - "id": 637, + "id": 642, "nodeType": "Block", "src": "1339:64:7", "statements": [ { "assignments": [ - 624 + 629 ], "declarations": [ { "constant": false, - "id": 624, + "id": 629, "name": "c", "nodeType": "VariableDeclaration", - "scope": 638, + "scope": 643, "src": "1345:9:7", "stateVariable": false, "storageLocation": "default", @@ -8518,7 +8589,7 @@ "typeString": "uint256" }, "typeName": { - "id": 623, + "id": 628, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1345:7:7", @@ -8531,25 +8602,25 @@ "visibility": "internal" } ], - "id": 628, + "id": 633, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 627, + "id": 632, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 625, + "id": 630, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 616, + "referencedDeclaration": 621, "src": "1357:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -8560,11 +8631,11 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 626, + "id": 631, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 618, + "referencedDeclaration": 623, "src": "1361:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -8590,18 +8661,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 632, + "id": 637, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 630, + "id": 635, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 624, + "referencedDeclaration": 629, "src": "1376:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -8612,11 +8683,11 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 631, + "id": 636, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 616, + "referencedDeclaration": 621, "src": "1381:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -8637,21 +8708,21 @@ "typeString": "bool" } ], - "id": 629, + "id": 634, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 890, - 891 + 895, + 896 ], - "referencedDeclaration": 890, + "referencedDeclaration": 895, "src": "1368:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 633, + "id": 638, "isConstant": false, "isLValue": false, "isPure": false, @@ -8665,33 +8736,33 @@ "typeString": "tuple()" } }, - "id": 634, + "id": 639, "nodeType": "ExpressionStatement", "src": "1368:15:7" }, { "expression": { "argumentTypes": null, - "id": 635, + "id": 640, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 624, + "referencedDeclaration": 629, "src": "1397:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 622, - "id": 636, + "functionReturnParameters": 627, + "id": 641, "nodeType": "Return", "src": "1390:8:7" } ] }, "documentation": "@dev Adds two numbers, reverts on overflow.", - "id": 638, + "id": 643, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -8699,15 +8770,15 @@ "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 619, + "id": 624, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 616, + "id": 621, "name": "a", "nodeType": "VariableDeclaration", - "scope": 638, + "scope": 643, "src": "1285:9:7", "stateVariable": false, "storageLocation": "default", @@ -8716,7 +8787,7 @@ "typeString": "uint256" }, "typeName": { - "id": 615, + "id": 620, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1285:7:7", @@ -8730,10 +8801,10 @@ }, { "constant": false, - "id": 618, + "id": 623, "name": "b", "nodeType": "VariableDeclaration", - "scope": 638, + "scope": 643, "src": "1296:9:7", "stateVariable": false, "storageLocation": "default", @@ -8742,7 +8813,7 @@ "typeString": "uint256" }, "typeName": { - "id": 617, + "id": 622, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1296:7:7", @@ -8759,15 +8830,15 @@ }, "payable": false, "returnParameters": { - "id": 622, + "id": 627, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 621, + "id": 626, "name": "", "nodeType": "VariableDeclaration", - "scope": 638, + "scope": 643, "src": "1330:7:7", "stateVariable": false, "storageLocation": "default", @@ -8776,7 +8847,7 @@ "typeString": "uint256" }, "typeName": { - "id": 620, + "id": 625, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1330:7:7", @@ -8791,7 +8862,7 @@ ], "src": "1329:9:7" }, - "scope": 659, + "scope": 664, "src": "1272:131:7", "stateMutability": "pure", "superFunction": null, @@ -8799,7 +8870,7 @@ }, { "body": { - "id": 657, + "id": 662, "nodeType": "Block", "src": "1602:44:7", "statements": [ @@ -8813,18 +8884,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 650, + "id": 655, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 648, + "id": 653, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 642, + "referencedDeclaration": 647, "src": "1616:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -8836,7 +8907,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 649, + "id": 654, "isConstant": false, "isLValue": false, "isPure": true, @@ -8865,21 +8936,21 @@ "typeString": "bool" } ], - "id": 647, + "id": 652, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 890, - 891 + 895, + 896 ], - "referencedDeclaration": 890, + "referencedDeclaration": 895, "src": "1608:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 651, + "id": 656, "isConstant": false, "isLValue": false, "isPure": false, @@ -8893,7 +8964,7 @@ "typeString": "tuple()" } }, - "id": 652, + "id": 657, "nodeType": "ExpressionStatement", "src": "1608:15:7" }, @@ -8904,18 +8975,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 655, + "id": 660, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 653, + "id": 658, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 640, + "referencedDeclaration": 645, "src": "1636:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -8926,11 +8997,11 @@ "operator": "%", "rightExpression": { "argumentTypes": null, - "id": 654, + "id": 659, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 642, + "referencedDeclaration": 647, "src": "1640:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -8943,15 +9014,15 @@ "typeString": "uint256" } }, - "functionReturnParameters": 646, - "id": 656, + "functionReturnParameters": 651, + "id": 661, "nodeType": "Return", "src": "1629:12:7" } ] }, "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", - "id": 658, + "id": 663, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -8959,15 +9030,15 @@ "name": "mod", "nodeType": "FunctionDefinition", "parameters": { - "id": 643, + "id": 648, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 640, + "id": 645, "name": "a", "nodeType": "VariableDeclaration", - "scope": 658, + "scope": 663, "src": "1548:9:7", "stateVariable": false, "storageLocation": "default", @@ -8976,7 +9047,7 @@ "typeString": "uint256" }, "typeName": { - "id": 639, + "id": 644, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1548:7:7", @@ -8990,10 +9061,10 @@ }, { "constant": false, - "id": 642, + "id": 647, "name": "b", "nodeType": "VariableDeclaration", - "scope": 658, + "scope": 663, "src": "1559:9:7", "stateVariable": false, "storageLocation": "default", @@ -9002,7 +9073,7 @@ "typeString": "uint256" }, "typeName": { - "id": 641, + "id": 646, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1559:7:7", @@ -9019,15 +9090,15 @@ }, "payable": false, "returnParameters": { - "id": 646, + "id": 651, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 645, + "id": 650, "name": "", "nodeType": "VariableDeclaration", - "scope": 658, + "scope": 663, "src": "1593:7:7", "stateVariable": false, "storageLocation": "default", @@ -9036,7 +9107,7 @@ "typeString": "uint256" }, "typeName": { - "id": 644, + "id": 649, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1593:7:7", @@ -9051,14 +9122,14 @@ ], "src": "1592:9:7" }, - "scope": 659, + "scope": 664, "src": "1535:111:7", "stateMutability": "pure", "superFunction": null, "visibility": "internal" } ], - "scope": 660, + "scope": 665, "src": "117:1531:7" } ], @@ -9071,14 +9142,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "exportedSymbols": { "IERC20": [ - 728 + 733 ] }, - "id": 729, + "id": 734, "nodeType": "SourceUnit", "nodes": [ { - "id": 661, + "id": 666, "literals": [ "solidity", "^", @@ -9094,9 +9165,9 @@ "contractKind": "interface", "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", "fullyImplemented": false, - "id": 728, + "id": 733, "linearizedBaseContracts": [ - 728 + 733 ], "name": "IERC20", "nodeType": "ContractDefinition", @@ -9104,7 +9175,7 @@ { "body": null, "documentation": null, - "id": 666, + "id": 671, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -9112,22 +9183,22 @@ "name": "totalSupply", "nodeType": "FunctionDefinition", "parameters": { - "id": 662, + "id": 667, "nodeType": "ParameterList", "parameters": [], "src": "156:2:8" }, "payable": false, "returnParameters": { - "id": 665, + "id": 670, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 664, + "id": 669, "name": "", "nodeType": "VariableDeclaration", - "scope": 666, + "scope": 671, "src": "182:7:8", "stateVariable": false, "storageLocation": "default", @@ -9136,7 +9207,7 @@ "typeString": "uint256" }, "typeName": { - "id": 663, + "id": 668, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "182:7:8", @@ -9151,7 +9222,7 @@ ], "src": "181:9:8" }, - "scope": 728, + "scope": 733, "src": "136:55:8", "stateMutability": "view", "superFunction": null, @@ -9160,7 +9231,7 @@ { "body": null, "documentation": null, - "id": 673, + "id": 678, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -9168,15 +9239,15 @@ "name": "balanceOf", "nodeType": "FunctionDefinition", "parameters": { - "id": 669, + "id": 674, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 668, + "id": 673, "name": "who", "nodeType": "VariableDeclaration", - "scope": 673, + "scope": 678, "src": "214:11:8", "stateVariable": false, "storageLocation": "default", @@ -9185,7 +9256,7 @@ "typeString": "address" }, "typeName": { - "id": 667, + "id": 672, "name": "address", "nodeType": "ElementaryTypeName", "src": "214:7:8", @@ -9202,15 +9273,15 @@ }, "payable": false, "returnParameters": { - "id": 672, + "id": 677, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 671, + "id": 676, "name": "", "nodeType": "VariableDeclaration", - "scope": 673, + "scope": 678, "src": "250:7:8", "stateVariable": false, "storageLocation": "default", @@ -9219,7 +9290,7 @@ "typeString": "uint256" }, "typeName": { - "id": 670, + "id": 675, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "250:7:8", @@ -9234,7 +9305,7 @@ ], "src": "249:9:8" }, - "scope": 728, + "scope": 733, "src": "195:64:8", "stateMutability": "view", "superFunction": null, @@ -9243,7 +9314,7 @@ { "body": null, "documentation": null, - "id": 682, + "id": 687, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -9251,15 +9322,15 @@ "name": "allowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 678, + "id": 683, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 675, + "id": 680, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 682, + "scope": 687, "src": "282:13:8", "stateVariable": false, "storageLocation": "default", @@ -9268,7 +9339,7 @@ "typeString": "address" }, "typeName": { - "id": 674, + "id": 679, "name": "address", "nodeType": "ElementaryTypeName", "src": "282:7:8", @@ -9282,10 +9353,10 @@ }, { "constant": false, - "id": 677, + "id": 682, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 682, + "scope": 687, "src": "297:15:8", "stateVariable": false, "storageLocation": "default", @@ -9294,7 +9365,7 @@ "typeString": "address" }, "typeName": { - "id": 676, + "id": 681, "name": "address", "nodeType": "ElementaryTypeName", "src": "297:7:8", @@ -9311,15 +9382,15 @@ }, "payable": false, "returnParameters": { - "id": 681, + "id": 686, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 680, + "id": 685, "name": "", "nodeType": "VariableDeclaration", - "scope": 682, + "scope": 687, "src": "341:7:8", "stateVariable": false, "storageLocation": "default", @@ -9328,7 +9399,7 @@ "typeString": "uint256" }, "typeName": { - "id": 679, + "id": 684, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "341:7:8", @@ -9343,7 +9414,7 @@ ], "src": "340:9:8" }, - "scope": 728, + "scope": 733, "src": "263:87:8", "stateMutability": "view", "superFunction": null, @@ -9352,7 +9423,7 @@ { "body": null, "documentation": null, - "id": 691, + "id": 696, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -9360,15 +9431,15 @@ "name": "transfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 687, + "id": 692, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 684, + "id": 689, "name": "to", "nodeType": "VariableDeclaration", - "scope": 691, + "scope": 696, "src": "372:10:8", "stateVariable": false, "storageLocation": "default", @@ -9377,7 +9448,7 @@ "typeString": "address" }, "typeName": { - "id": 683, + "id": 688, "name": "address", "nodeType": "ElementaryTypeName", "src": "372:7:8", @@ -9391,10 +9462,10 @@ }, { "constant": false, - "id": 686, + "id": 691, "name": "value", "nodeType": "VariableDeclaration", - "scope": 691, + "scope": 696, "src": "384:13:8", "stateVariable": false, "storageLocation": "default", @@ -9403,7 +9474,7 @@ "typeString": "uint256" }, "typeName": { - "id": 685, + "id": 690, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "384:7:8", @@ -9420,15 +9491,15 @@ }, "payable": false, "returnParameters": { - "id": 690, + "id": 695, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 689, + "id": 694, "name": "", "nodeType": "VariableDeclaration", - "scope": 691, + "scope": 696, "src": "417:4:8", "stateVariable": false, "storageLocation": "default", @@ -9437,7 +9508,7 @@ "typeString": "bool" }, "typeName": { - "id": 688, + "id": 693, "name": "bool", "nodeType": "ElementaryTypeName", "src": "417:4:8", @@ -9452,7 +9523,7 @@ ], "src": "416:6:8" }, - "scope": 728, + "scope": 733, "src": "354:69:8", "stateMutability": "nonpayable", "superFunction": null, @@ -9461,7 +9532,7 @@ { "body": null, "documentation": null, - "id": 700, + "id": 705, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -9469,15 +9540,15 @@ "name": "approve", "nodeType": "FunctionDefinition", "parameters": { - "id": 696, + "id": 701, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 693, + "id": 698, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 700, + "scope": 705, "src": "444:15:8", "stateVariable": false, "storageLocation": "default", @@ -9486,7 +9557,7 @@ "typeString": "address" }, "typeName": { - "id": 692, + "id": 697, "name": "address", "nodeType": "ElementaryTypeName", "src": "444:7:8", @@ -9500,10 +9571,10 @@ }, { "constant": false, - "id": 695, + "id": 700, "name": "value", "nodeType": "VariableDeclaration", - "scope": 700, + "scope": 705, "src": "461:13:8", "stateVariable": false, "storageLocation": "default", @@ -9512,7 +9583,7 @@ "typeString": "uint256" }, "typeName": { - "id": 694, + "id": 699, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "461:7:8", @@ -9529,15 +9600,15 @@ }, "payable": false, "returnParameters": { - "id": 699, + "id": 704, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 698, + "id": 703, "name": "", "nodeType": "VariableDeclaration", - "scope": 700, + "scope": 705, "src": "498:4:8", "stateVariable": false, "storageLocation": "default", @@ -9546,7 +9617,7 @@ "typeString": "bool" }, "typeName": { - "id": 697, + "id": 702, "name": "bool", "nodeType": "ElementaryTypeName", "src": "498:4:8", @@ -9561,7 +9632,7 @@ ], "src": "497:6:8" }, - "scope": 728, + "scope": 733, "src": "427:77:8", "stateMutability": "nonpayable", "superFunction": null, @@ -9570,7 +9641,7 @@ { "body": null, "documentation": null, - "id": 711, + "id": 716, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -9578,15 +9649,15 @@ "name": "transferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 707, + "id": 712, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 702, + "id": 707, "name": "from", "nodeType": "VariableDeclaration", - "scope": 711, + "scope": 716, "src": "530:12:8", "stateVariable": false, "storageLocation": "default", @@ -9595,7 +9666,7 @@ "typeString": "address" }, "typeName": { - "id": 701, + "id": 706, "name": "address", "nodeType": "ElementaryTypeName", "src": "530:7:8", @@ -9609,10 +9680,10 @@ }, { "constant": false, - "id": 704, + "id": 709, "name": "to", "nodeType": "VariableDeclaration", - "scope": 711, + "scope": 716, "src": "544:10:8", "stateVariable": false, "storageLocation": "default", @@ -9621,7 +9692,7 @@ "typeString": "address" }, "typeName": { - "id": 703, + "id": 708, "name": "address", "nodeType": "ElementaryTypeName", "src": "544:7:8", @@ -9635,10 +9706,10 @@ }, { "constant": false, - "id": 706, + "id": 711, "name": "value", "nodeType": "VariableDeclaration", - "scope": 711, + "scope": 716, "src": "556:13:8", "stateVariable": false, "storageLocation": "default", @@ -9647,7 +9718,7 @@ "typeString": "uint256" }, "typeName": { - "id": 705, + "id": 710, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "556:7:8", @@ -9664,15 +9735,15 @@ }, "payable": false, "returnParameters": { - "id": 710, + "id": 715, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 709, + "id": 714, "name": "", "nodeType": "VariableDeclaration", - "scope": 711, + "scope": 716, "src": "593:4:8", "stateVariable": false, "storageLocation": "default", @@ -9681,7 +9752,7 @@ "typeString": "bool" }, "typeName": { - "id": 708, + "id": 713, "name": "bool", "nodeType": "ElementaryTypeName", "src": "593:4:8", @@ -9696,7 +9767,7 @@ ], "src": "592:6:8" }, - "scope": 728, + "scope": 733, "src": "508:91:8", "stateMutability": "nonpayable", "superFunction": null, @@ -9705,20 +9776,20 @@ { "anonymous": false, "documentation": null, - "id": 719, + "id": 724, "name": "Transfer", "nodeType": "EventDefinition", "parameters": { - "id": 718, + "id": 723, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 713, + "id": 718, "indexed": true, "name": "from", "nodeType": "VariableDeclaration", - "scope": 719, + "scope": 724, "src": "623:20:8", "stateVariable": false, "storageLocation": "default", @@ -9727,7 +9798,7 @@ "typeString": "address" }, "typeName": { - "id": 712, + "id": 717, "name": "address", "nodeType": "ElementaryTypeName", "src": "623:7:8", @@ -9741,11 +9812,11 @@ }, { "constant": false, - "id": 715, + "id": 720, "indexed": true, "name": "to", "nodeType": "VariableDeclaration", - "scope": 719, + "scope": 724, "src": "649:18:8", "stateVariable": false, "storageLocation": "default", @@ -9754,7 +9825,7 @@ "typeString": "address" }, "typeName": { - "id": 714, + "id": 719, "name": "address", "nodeType": "ElementaryTypeName", "src": "649:7:8", @@ -9768,11 +9839,11 @@ }, { "constant": false, - "id": 717, + "id": 722, "indexed": false, "name": "value", "nodeType": "VariableDeclaration", - "scope": 719, + "scope": 724, "src": "673:13:8", "stateVariable": false, "storageLocation": "default", @@ -9781,7 +9852,7 @@ "typeString": "uint256" }, "typeName": { - "id": 716, + "id": 721, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "673:7:8", @@ -9801,20 +9872,20 @@ { "anonymous": false, "documentation": null, - "id": 727, + "id": 732, "name": "Approval", "nodeType": "EventDefinition", "parameters": { - "id": 726, + "id": 731, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 721, + "id": 726, "indexed": true, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 727, + "scope": 732, "src": "715:21:8", "stateVariable": false, "storageLocation": "default", @@ -9823,7 +9894,7 @@ "typeString": "address" }, "typeName": { - "id": 720, + "id": 725, "name": "address", "nodeType": "ElementaryTypeName", "src": "715:7:8", @@ -9837,11 +9908,11 @@ }, { "constant": false, - "id": 723, + "id": 728, "indexed": true, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 727, + "scope": 732, "src": "742:23:8", "stateVariable": false, "storageLocation": "default", @@ -9850,7 +9921,7 @@ "typeString": "address" }, "typeName": { - "id": 722, + "id": 727, "name": "address", "nodeType": "ElementaryTypeName", "src": "742:7:8", @@ -9864,11 +9935,11 @@ }, { "constant": false, - "id": 725, + "id": 730, "indexed": false, "name": "value", "nodeType": "VariableDeclaration", - "scope": 727, + "scope": 732, "src": "771:13:8", "stateVariable": false, "storageLocation": "default", @@ -9877,7 +9948,7 @@ "typeString": "uint256" }, "typeName": { - "id": 724, + "id": 729, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "771:7:8", @@ -9895,7 +9966,7 @@ "src": "695:94:8" } ], - "scope": 729, + "scope": 734, "src": "115:676:8" } ], @@ -9908,14 +9979,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "exportedSymbols": { "SafeERC20": [ - 872 + 877 ] }, - "id": 873, + "id": 878, "nodeType": "SourceUnit", "nodes": [ { - "id": 730, + "id": 735, "literals": [ "solidity", "^", @@ -9928,10 +9999,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "./IERC20.sol", - "id": 731, + "id": 736, "nodeType": "ImportDirective", - "scope": 873, - "sourceUnit": 729, + "scope": 878, + "sourceUnit": 734, "src": "26:22:9", "symbolAliases": [], "unitAlias": "" @@ -9939,10 +10010,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "file": "../../math/SafeMath.sol", - "id": 732, + "id": 737, "nodeType": "ImportDirective", - "scope": 873, - "sourceUnit": 660, + "scope": 878, + "sourceUnit": 665, "src": "49:33:9", "symbolAliases": [], "unitAlias": "" @@ -9953,31 +10024,31 @@ "contractKind": "library", "documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.", "fullyImplemented": true, - "id": 872, + "id": 877, "linearizedBaseContracts": [ - 872 + 877 ], "name": "SafeERC20", "nodeType": "ContractDefinition", "nodes": [ { - "id": 735, + "id": 740, "libraryName": { "contractScope": null, - "id": 733, + "id": 738, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 659, + "referencedDeclaration": 664, "src": "382:8:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$659", + "typeIdentifier": "t_contract$_SafeMath_$664", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", "src": "376:27:9", "typeName": { - "id": 734, + "id": 739, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "395:7:9", @@ -9989,7 +10060,7 @@ }, { "body": { - "id": 752, + "id": 757, "nodeType": "Block", "src": "501:45:9", "statements": [ @@ -10002,11 +10073,11 @@ "arguments": [ { "argumentTypes": null, - "id": 747, + "id": 752, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 739, + "referencedDeclaration": 744, "src": "530:2:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -10015,11 +10086,11 @@ }, { "argumentTypes": null, - "id": 748, + "id": 753, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 741, + "referencedDeclaration": 746, "src": "534:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -10040,32 +10111,32 @@ ], "expression": { "argumentTypes": null, - "id": 745, + "id": 750, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 737, + "referencedDeclaration": 742, "src": "515:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$728", + "typeIdentifier": "t_contract$_IERC20_$733", "typeString": "contract IERC20" } }, - "id": 746, + "id": 751, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", - "referencedDeclaration": 691, + "referencedDeclaration": 696, "src": "515:14:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 749, + "id": 754, "isConstant": false, "isLValue": false, "isPure": false, @@ -10087,21 +10158,21 @@ "typeString": "bool" } ], - "id": 744, + "id": 749, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 890, - 891 + 895, + 896 ], - "referencedDeclaration": 890, + "referencedDeclaration": 895, "src": "507:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 750, + "id": 755, "isConstant": false, "isLValue": false, "isPure": false, @@ -10115,14 +10186,14 @@ "typeString": "tuple()" } }, - "id": 751, + "id": 756, "nodeType": "ExpressionStatement", "src": "507:34:9" } ] }, "documentation": null, - "id": 753, + "id": 758, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -10130,31 +10201,31 @@ "name": "safeTransfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 742, + "id": 747, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 737, + "id": 742, "name": "token", "nodeType": "VariableDeclaration", - "scope": 753, + "scope": 758, "src": "434:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$728", + "typeIdentifier": "t_contract$_IERC20_$733", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 736, + "id": 741, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 728, + "referencedDeclaration": 733, "src": "434:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$728", + "typeIdentifier": "t_contract$_IERC20_$733", "typeString": "contract IERC20" } }, @@ -10163,10 +10234,10 @@ }, { "constant": false, - "id": 739, + "id": 744, "name": "to", "nodeType": "VariableDeclaration", - "scope": 753, + "scope": 758, "src": "452:10:9", "stateVariable": false, "storageLocation": "default", @@ -10175,7 +10246,7 @@ "typeString": "address" }, "typeName": { - "id": 738, + "id": 743, "name": "address", "nodeType": "ElementaryTypeName", "src": "452:7:9", @@ -10189,10 +10260,10 @@ }, { "constant": false, - "id": 741, + "id": 746, "name": "value", "nodeType": "VariableDeclaration", - "scope": 753, + "scope": 758, "src": "468:13:9", "stateVariable": false, "storageLocation": "default", @@ -10201,7 +10272,7 @@ "typeString": "uint256" }, "typeName": { - "id": 740, + "id": 745, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "468:7:9", @@ -10218,12 +10289,12 @@ }, "payable": false, "returnParameters": { - "id": 743, + "id": 748, "nodeType": "ParameterList", "parameters": [], "src": "501:0:9" }, - "scope": 872, + "scope": 877, "src": "407:139:9", "stateMutability": "nonpayable", "superFunction": null, @@ -10231,7 +10302,7 @@ }, { "body": { - "id": 773, + "id": 778, "nodeType": "Block", "src": "666:55:9", "statements": [ @@ -10244,11 +10315,11 @@ "arguments": [ { "argumentTypes": null, - "id": 767, + "id": 772, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 757, + "referencedDeclaration": 762, "src": "699:4:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -10257,11 +10328,11 @@ }, { "argumentTypes": null, - "id": 768, + "id": 773, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 759, + "referencedDeclaration": 764, "src": "705:2:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -10270,11 +10341,11 @@ }, { "argumentTypes": null, - "id": 769, + "id": 774, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 761, + "referencedDeclaration": 766, "src": "709:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -10299,32 +10370,32 @@ ], "expression": { "argumentTypes": null, - "id": 765, + "id": 770, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 755, + "referencedDeclaration": 760, "src": "680:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$728", + "typeIdentifier": "t_contract$_IERC20_$733", "typeString": "contract IERC20" } }, - "id": 766, + "id": 771, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", - "referencedDeclaration": 711, + "referencedDeclaration": 716, "src": "680:18:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)" } }, - "id": 770, + "id": 775, "isConstant": false, "isLValue": false, "isPure": false, @@ -10346,21 +10417,21 @@ "typeString": "bool" } ], - "id": 764, + "id": 769, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 890, - 891 + 895, + 896 ], - "referencedDeclaration": 890, + "referencedDeclaration": 895, "src": "672:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 771, + "id": 776, "isConstant": false, "isLValue": false, "isPure": false, @@ -10374,14 +10445,14 @@ "typeString": "tuple()" } }, - "id": 772, + "id": 777, "nodeType": "ExpressionStatement", "src": "672:44:9" } ] }, "documentation": null, - "id": 774, + "id": 779, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -10389,31 +10460,31 @@ "name": "safeTransferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 762, + "id": 767, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 755, + "id": 760, "name": "token", "nodeType": "VariableDeclaration", - "scope": 774, + "scope": 779, "src": "581:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$728", + "typeIdentifier": "t_contract$_IERC20_$733", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 754, + "id": 759, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 728, + "referencedDeclaration": 733, "src": "581:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$728", + "typeIdentifier": "t_contract$_IERC20_$733", "typeString": "contract IERC20" } }, @@ -10422,10 +10493,10 @@ }, { "constant": false, - "id": 757, + "id": 762, "name": "from", "nodeType": "VariableDeclaration", - "scope": 774, + "scope": 779, "src": "599:12:9", "stateVariable": false, "storageLocation": "default", @@ -10434,7 +10505,7 @@ "typeString": "address" }, "typeName": { - "id": 756, + "id": 761, "name": "address", "nodeType": "ElementaryTypeName", "src": "599:7:9", @@ -10448,10 +10519,10 @@ }, { "constant": false, - "id": 759, + "id": 764, "name": "to", "nodeType": "VariableDeclaration", - "scope": 774, + "scope": 779, "src": "617:10:9", "stateVariable": false, "storageLocation": "default", @@ -10460,7 +10531,7 @@ "typeString": "address" }, "typeName": { - "id": 758, + "id": 763, "name": "address", "nodeType": "ElementaryTypeName", "src": "617:7:9", @@ -10474,10 +10545,10 @@ }, { "constant": false, - "id": 761, + "id": 766, "name": "value", "nodeType": "VariableDeclaration", - "scope": 774, + "scope": 779, "src": "633:13:9", "stateVariable": false, "storageLocation": "default", @@ -10486,7 +10557,7 @@ "typeString": "uint256" }, "typeName": { - "id": 760, + "id": 765, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "633:7:9", @@ -10503,12 +10574,12 @@ }, "payable": false, "returnParameters": { - "id": 763, + "id": 768, "nodeType": "ParameterList", "parameters": [], "src": "666:0:9" }, - "scope": 872, + "scope": 877, "src": "550:171:9", "stateMutability": "nonpayable", "superFunction": null, @@ -10516,7 +10587,7 @@ }, { "body": { - "id": 808, + "id": 813, "nodeType": "Block", "src": "823:330:9", "statements": [ @@ -10530,7 +10601,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 797, + "id": 802, "isConstant": false, "isLValue": false, "isPure": false, @@ -10544,18 +10615,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 786, + "id": 791, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 784, + "id": 789, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 780, + "referencedDeclaration": 785, "src": "1045:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -10567,7 +10638,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 785, + "id": 790, "isConstant": false, "isLValue": false, "isPure": true, @@ -10589,7 +10660,7 @@ } } ], - "id": 787, + "id": 792, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -10613,7 +10684,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 795, + "id": 800, "isConstant": false, "isLValue": false, "isPure": false, @@ -10625,18 +10696,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 790, + "id": 795, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 887, + "referencedDeclaration": 892, "src": "1077:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 791, + "id": 796, "isConstant": false, "isLValue": false, "isPure": false, @@ -10652,11 +10723,11 @@ }, { "argumentTypes": null, - "id": 792, + "id": 797, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 778, + "referencedDeclaration": 783, "src": "1089:7:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -10677,32 +10748,32 @@ ], "expression": { "argumentTypes": null, - "id": 788, + "id": 793, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, + "referencedDeclaration": 781, "src": "1061:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$728", + "typeIdentifier": "t_contract$_IERC20_$733", "typeString": "contract IERC20" } }, - "id": 789, + "id": 794, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 682, + "referencedDeclaration": 687, "src": "1061:15:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 793, + "id": 798, "isConstant": false, "isLValue": false, "isPure": false, @@ -10721,7 +10792,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 794, + "id": 799, "isConstant": false, "isLValue": false, "isPure": true, @@ -10743,7 +10814,7 @@ } } ], - "id": 796, + "id": 801, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -10770,21 +10841,21 @@ "typeString": "bool" } ], - "id": 783, + "id": 788, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 890, - 891 + 895, + 896 ], - "referencedDeclaration": 890, + "referencedDeclaration": 895, "src": "1036:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 798, + "id": 803, "isConstant": false, "isLValue": false, "isPure": false, @@ -10798,7 +10869,7 @@ "typeString": "tuple()" } }, - "id": 799, + "id": 804, "nodeType": "ExpressionStatement", "src": "1036:68:9" }, @@ -10811,11 +10882,11 @@ "arguments": [ { "argumentTypes": null, - "id": 803, + "id": 808, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 778, + "referencedDeclaration": 783, "src": "1132:7:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -10824,11 +10895,11 @@ }, { "argumentTypes": null, - "id": 804, + "id": 809, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 780, + "referencedDeclaration": 785, "src": "1141:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -10849,32 +10920,32 @@ ], "expression": { "argumentTypes": null, - "id": 801, + "id": 806, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, + "referencedDeclaration": 781, "src": "1118:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$728", + "typeIdentifier": "t_contract$_IERC20_$733", "typeString": "contract IERC20" } }, - "id": 802, + "id": 807, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 700, + "referencedDeclaration": 705, "src": "1118:13:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 805, + "id": 810, "isConstant": false, "isLValue": false, "isPure": false, @@ -10896,21 +10967,21 @@ "typeString": "bool" } ], - "id": 800, + "id": 805, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 890, - 891 + 895, + 896 ], - "referencedDeclaration": 890, + "referencedDeclaration": 895, "src": "1110:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 806, + "id": 811, "isConstant": false, "isLValue": false, "isPure": false, @@ -10924,14 +10995,14 @@ "typeString": "tuple()" } }, - "id": 807, + "id": 812, "nodeType": "ExpressionStatement", "src": "1110:38:9" } ] }, "documentation": null, - "id": 809, + "id": 814, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -10939,31 +11010,31 @@ "name": "safeApprove", "nodeType": "FunctionDefinition", "parameters": { - "id": 781, + "id": 786, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 776, + "id": 781, "name": "token", "nodeType": "VariableDeclaration", - "scope": 809, + "scope": 814, "src": "751:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$728", + "typeIdentifier": "t_contract$_IERC20_$733", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 775, + "id": 780, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 728, + "referencedDeclaration": 733, "src": "751:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$728", + "typeIdentifier": "t_contract$_IERC20_$733", "typeString": "contract IERC20" } }, @@ -10972,10 +11043,10 @@ }, { "constant": false, - "id": 778, + "id": 783, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 809, + "scope": 814, "src": "769:15:9", "stateVariable": false, "storageLocation": "default", @@ -10984,7 +11055,7 @@ "typeString": "address" }, "typeName": { - "id": 777, + "id": 782, "name": "address", "nodeType": "ElementaryTypeName", "src": "769:7:9", @@ -10998,10 +11069,10 @@ }, { "constant": false, - "id": 780, + "id": 785, "name": "value", "nodeType": "VariableDeclaration", - "scope": 809, + "scope": 814, "src": "790:13:9", "stateVariable": false, "storageLocation": "default", @@ -11010,7 +11081,7 @@ "typeString": "uint256" }, "typeName": { - "id": 779, + "id": 784, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "790:7:9", @@ -11027,12 +11098,12 @@ }, "payable": false, "returnParameters": { - "id": 782, + "id": 787, "nodeType": "ParameterList", "parameters": [], "src": "823:0:9" }, - "scope": 872, + "scope": 877, "src": "725:428:9", "stateMutability": "nonpayable", "superFunction": null, @@ -11040,21 +11111,21 @@ }, { "body": { - "id": 839, + "id": 844, "nodeType": "Block", "src": "1265:135:9", "statements": [ { "assignments": [ - 819 + 824 ], "declarations": [ { "constant": false, - "id": 819, + "id": 824, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 840, + "scope": 845, "src": "1271:20:9", "stateVariable": false, "storageLocation": "default", @@ -11063,7 +11134,7 @@ "typeString": "uint256" }, "typeName": { - "id": 818, + "id": 823, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1271:7:9", @@ -11076,17 +11147,17 @@ "visibility": "internal" } ], - "id": 830, + "id": 835, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 828, + "id": 833, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 815, + "referencedDeclaration": 820, "src": "1338:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11109,14 +11180,14 @@ "arguments": [ { "argumentTypes": null, - "id": 823, + "id": 828, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 910, + "referencedDeclaration": 915, "src": "1318:4:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$872", + "typeIdentifier": "t_contract$_SafeERC20_$877", "typeString": "library SafeERC20" } } @@ -11124,11 +11195,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$872", + "typeIdentifier": "t_contract$_SafeERC20_$877", "typeString": "library SafeERC20" } ], - "id": 822, + "id": 827, "isConstant": false, "isLValue": false, "isPure": true, @@ -11141,7 +11212,7 @@ }, "typeName": "address" }, - "id": 824, + "id": 829, "isConstant": false, "isLValue": false, "isPure": false, @@ -11157,11 +11228,11 @@ }, { "argumentTypes": null, - "id": 825, + "id": 830, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 813, + "referencedDeclaration": 818, "src": "1325:7:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11182,32 +11253,32 @@ ], "expression": { "argumentTypes": null, - "id": 820, + "id": 825, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 811, + "referencedDeclaration": 816, "src": "1294:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$728", + "typeIdentifier": "t_contract$_IERC20_$733", "typeString": "contract IERC20" } }, - "id": 821, + "id": 826, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 682, + "referencedDeclaration": 687, "src": "1294:15:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 826, + "id": 831, "isConstant": false, "isLValue": false, "isPure": false, @@ -11221,21 +11292,21 @@ "typeString": "uint256" } }, - "id": 827, + "id": 832, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 638, + "referencedDeclaration": 643, "src": "1294:43:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 829, + "id": 834, "isConstant": false, "isLValue": false, "isPure": false, @@ -11261,11 +11332,11 @@ "arguments": [ { "argumentTypes": null, - "id": 834, + "id": 839, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 813, + "referencedDeclaration": 818, "src": "1372:7:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11274,11 +11345,11 @@ }, { "argumentTypes": null, - "id": 835, + "id": 840, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 819, + "referencedDeclaration": 824, "src": "1381:12:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11299,32 +11370,32 @@ ], "expression": { "argumentTypes": null, - "id": 832, + "id": 837, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 811, + "referencedDeclaration": 816, "src": "1358:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$728", + "typeIdentifier": "t_contract$_IERC20_$733", "typeString": "contract IERC20" } }, - "id": 833, + "id": 838, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 700, + "referencedDeclaration": 705, "src": "1358:13:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 836, + "id": 841, "isConstant": false, "isLValue": false, "isPure": false, @@ -11346,21 +11417,21 @@ "typeString": "bool" } ], - "id": 831, + "id": 836, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 890, - 891 + 895, + 896 ], - "referencedDeclaration": 890, + "referencedDeclaration": 895, "src": "1350:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 837, + "id": 842, "isConstant": false, "isLValue": false, "isPure": false, @@ -11374,14 +11445,14 @@ "typeString": "tuple()" } }, - "id": 838, + "id": 843, "nodeType": "ExpressionStatement", "src": "1350:45:9" } ] }, "documentation": null, - "id": 840, + "id": 845, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -11389,31 +11460,31 @@ "name": "safeIncreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 816, + "id": 821, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 811, + "id": 816, "name": "token", "nodeType": "VariableDeclaration", - "scope": 840, + "scope": 845, "src": "1193:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$728", + "typeIdentifier": "t_contract$_IERC20_$733", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 810, + "id": 815, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 728, + "referencedDeclaration": 733, "src": "1193:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$728", + "typeIdentifier": "t_contract$_IERC20_$733", "typeString": "contract IERC20" } }, @@ -11422,10 +11493,10 @@ }, { "constant": false, - "id": 813, + "id": 818, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 840, + "scope": 845, "src": "1211:15:9", "stateVariable": false, "storageLocation": "default", @@ -11434,7 +11505,7 @@ "typeString": "address" }, "typeName": { - "id": 812, + "id": 817, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:9", @@ -11448,10 +11519,10 @@ }, { "constant": false, - "id": 815, + "id": 820, "name": "value", "nodeType": "VariableDeclaration", - "scope": 840, + "scope": 845, "src": "1232:13:9", "stateVariable": false, "storageLocation": "default", @@ -11460,7 +11531,7 @@ "typeString": "uint256" }, "typeName": { - "id": 814, + "id": 819, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1232:7:9", @@ -11477,12 +11548,12 @@ }, "payable": false, "returnParameters": { - "id": 817, + "id": 822, "nodeType": "ParameterList", "parameters": [], "src": "1265:0:9" }, - "scope": 872, + "scope": 877, "src": "1157:243:9", "stateMutability": "nonpayable", "superFunction": null, @@ -11490,21 +11561,21 @@ }, { "body": { - "id": 870, + "id": 875, "nodeType": "Block", "src": "1512:135:9", "statements": [ { "assignments": [ - 850 + 855 ], "declarations": [ { "constant": false, - "id": 850, + "id": 855, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 871, + "scope": 876, "src": "1518:20:9", "stateVariable": false, "storageLocation": "default", @@ -11513,7 +11584,7 @@ "typeString": "uint256" }, "typeName": { - "id": 849, + "id": 854, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1518:7:9", @@ -11526,17 +11597,17 @@ "visibility": "internal" } ], - "id": 861, + "id": 866, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 859, + "id": 864, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 846, + "referencedDeclaration": 851, "src": "1585:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11559,14 +11630,14 @@ "arguments": [ { "argumentTypes": null, - "id": 854, + "id": 859, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 910, + "referencedDeclaration": 915, "src": "1565:4:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$872", + "typeIdentifier": "t_contract$_SafeERC20_$877", "typeString": "library SafeERC20" } } @@ -11574,11 +11645,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$872", + "typeIdentifier": "t_contract$_SafeERC20_$877", "typeString": "library SafeERC20" } ], - "id": 853, + "id": 858, "isConstant": false, "isLValue": false, "isPure": true, @@ -11591,7 +11662,7 @@ }, "typeName": "address" }, - "id": 855, + "id": 860, "isConstant": false, "isLValue": false, "isPure": false, @@ -11607,11 +11678,11 @@ }, { "argumentTypes": null, - "id": 856, + "id": 861, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 844, + "referencedDeclaration": 849, "src": "1572:7:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11632,32 +11703,32 @@ ], "expression": { "argumentTypes": null, - "id": 851, + "id": 856, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 842, + "referencedDeclaration": 847, "src": "1541:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$728", + "typeIdentifier": "t_contract$_IERC20_$733", "typeString": "contract IERC20" } }, - "id": 852, + "id": 857, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 682, + "referencedDeclaration": 687, "src": "1541:15:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 857, + "id": 862, "isConstant": false, "isLValue": false, "isPure": false, @@ -11671,21 +11742,21 @@ "typeString": "uint256" } }, - "id": 858, + "id": 863, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 614, + "referencedDeclaration": 619, "src": "1541:43:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 860, + "id": 865, "isConstant": false, "isLValue": false, "isPure": false, @@ -11711,11 +11782,11 @@ "arguments": [ { "argumentTypes": null, - "id": 865, + "id": 870, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 844, + "referencedDeclaration": 849, "src": "1619:7:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11724,11 +11795,11 @@ }, { "argumentTypes": null, - "id": 866, + "id": 871, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 850, + "referencedDeclaration": 855, "src": "1628:12:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11749,32 +11820,32 @@ ], "expression": { "argumentTypes": null, - "id": 863, + "id": 868, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 842, + "referencedDeclaration": 847, "src": "1605:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$728", + "typeIdentifier": "t_contract$_IERC20_$733", "typeString": "contract IERC20" } }, - "id": 864, + "id": 869, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 700, + "referencedDeclaration": 705, "src": "1605:13:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 867, + "id": 872, "isConstant": false, "isLValue": false, "isPure": false, @@ -11796,21 +11867,21 @@ "typeString": "bool" } ], - "id": 862, + "id": 867, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 890, - 891 + 895, + 896 ], - "referencedDeclaration": 890, + "referencedDeclaration": 895, "src": "1597:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 868, + "id": 873, "isConstant": false, "isLValue": false, "isPure": false, @@ -11824,14 +11895,14 @@ "typeString": "tuple()" } }, - "id": 869, + "id": 874, "nodeType": "ExpressionStatement", "src": "1597:45:9" } ] }, "documentation": null, - "id": 871, + "id": 876, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -11839,31 +11910,31 @@ "name": "safeDecreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 847, + "id": 852, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 842, + "id": 847, "name": "token", "nodeType": "VariableDeclaration", - "scope": 871, + "scope": 876, "src": "1440:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$728", + "typeIdentifier": "t_contract$_IERC20_$733", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 841, + "id": 846, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 728, + "referencedDeclaration": 733, "src": "1440:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$728", + "typeIdentifier": "t_contract$_IERC20_$733", "typeString": "contract IERC20" } }, @@ -11872,10 +11943,10 @@ }, { "constant": false, - "id": 844, + "id": 849, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 871, + "scope": 876, "src": "1458:15:9", "stateVariable": false, "storageLocation": "default", @@ -11884,7 +11955,7 @@ "typeString": "address" }, "typeName": { - "id": 843, + "id": 848, "name": "address", "nodeType": "ElementaryTypeName", "src": "1458:7:9", @@ -11898,10 +11969,10 @@ }, { "constant": false, - "id": 846, + "id": 851, "name": "value", "nodeType": "VariableDeclaration", - "scope": 871, + "scope": 876, "src": "1479:13:9", "stateVariable": false, "storageLocation": "default", @@ -11910,7 +11981,7 @@ "typeString": "uint256" }, "typeName": { - "id": 845, + "id": 850, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1479:7:9", @@ -11927,19 +11998,19 @@ }, "payable": false, "returnParameters": { - "id": 848, + "id": 853, "nodeType": "ParameterList", "parameters": [], "src": "1512:0:9" }, - "scope": 872, + "scope": 877, "src": "1404:243:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 873, + "scope": 878, "src": "353:1296:9" } ], diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.abi b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.abi index 397eab310..fb2d5f9a9 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.abi +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.abi @@ -1 +1 @@ -[{"constant":false,"inputs":[],"name":"terminate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"minerAddress","type":"address"}],"name":"trasferToMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"poolType","type":"uint8"},{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file +[{"constant":false,"inputs":[],"name":"terminate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"minerAddress","type":"address"}],"name":"transferToMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"poolType","type":"uint8"},{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin index d4cc95eca..09d3a38b5 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b506040516040806107f28339810160405280516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561006f90640100000000610093810204565b6003805483919060ff19166001838181111561008757fe5b0217905550505061013c565b6100ab6002826401000000006105e16100ae82021704565b50565b600160a060020a03811615156100c357600080fd5b6100d68282640100000000610105810204565b156100e057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561011c57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106a78061014b6000396000f3006080604052600436106100535763ffffffff60e060020a6000350416630c08bf8881146100585780632296f4c71461006f5780632e6b684914610090578063608d3d3d146100b1578063d43acc79146100e6575b600080fd5b34801561006457600080fd5b5061006d6100fb565b005b34801561007b57600080fd5b5061006d600160a060020a0360043516610119565b34801561009c57600080fd5b5061006d600160a060020a03600435166102f5565b3480156100bd57600080fd5b506100d2600160a060020a0360043516610315565b604080519115158252519081900360200190f35b3480156100f257600080fd5b5061006d610330565b61010433610315565b151561010f57600080fd5b610117610339565b565b600080548190819074010000000000000000000000000000000000000000900460ff161561014657600080fd5b61014f33610315565b151561015a57600080fd5b600160a060020a03841660009081526004602052604090205460ff161561018057600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156101c157600080fd5b505af11580156101d5573d6000803e3d6000fd5b505050506040513d60208110156101eb57600080fd5b505115156101f857600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561023657600080fd5b505af115801561024a573d6000803e3d6000fd5b505050506040513d602081101561026057600080fd5b50519150600060ff83161080159061027c575060058260ff1611155b151561028757600080fd5b61029082610400565b9050600160035460ff1660018111156102a557fe5b14156102b5576064600a82020490505b600160a060020a038085166000908152600460205260409020805460ff19166001908117909155546102ef9116858363ffffffff6104b216565b50505050565b6102fe33610315565b151561030957600080fd5b61031281610551565b50565b600061032860028363ffffffff61056216565b90505b919050565b61011733610599565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561039e57600080fd5b505af11580156103b2573d6000803e3d6000fd5b505050506040513d60208110156103c857600080fd5b5051905060008111156103f8576000546001546103f891600160a060020a0391821691168363ffffffff6104b216565b6103126105aa565b600060ff8216151561041d575069152d02c7e14af680000061032b565b8160ff166001141561043a575069d3c21bcecceda100000061032b565b8160ff166002141561045857506a01a784379d99db4200000061032b565b8160ff166003141561047657506a027b46536c66c8e300000061032b565b8160ff166004141561049457506a034f086f3b33b68400000061032b565b8160ff166005141561032b57506a0422ca8b0a00a42500000061032b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561051557600080fd5b505af1158015610529573d6000803e3d6000fd5b505050506040513d602081101561053f57600080fd5b5051151561054c57600080fd5b505050565b61031260028263ffffffff6105e116565b6000600160a060020a038216151561057957600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61031260028263ffffffff61062f16565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a03811615156105f657600080fd5b6106008282610562565b1561060a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561064457600080fd5b61064e8282610562565b151561065957600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058208317cc38f72fdbf4d19029db12a6c784275ab5dfd7521863b2c79aee26e6effb0029 \ No newline at end of file +608060405234801561001057600080fd5b506040516040806107f28339810160405280516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561006f90640100000000610093810204565b6003805483919060ff19166001838181111561008757fe5b0217905550505061013c565b6100ab6002826401000000006105e16100ae82021704565b50565b600160a060020a03811615156100c357600080fd5b6100d68282640100000000610105810204565b156100e057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561011c57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106a78061014b6000396000f3006080604052600436106100535763ffffffff60e060020a6000350416630c08bf8881146100585780632e6b68491461006f578063608d3d3d14610090578063d43acc79146100c5578063fe4028bb146100da575b600080fd5b34801561006457600080fd5b5061006d6100fb565b005b34801561007b57600080fd5b5061006d600160a060020a0360043516610119565b34801561009c57600080fd5b506100b1600160a060020a0360043516610139565b604080519115158252519081900360200190f35b3480156100d157600080fd5b5061006d610154565b3480156100e657600080fd5b5061006d600160a060020a036004351661015d565b61010433610139565b151561010f57600080fd5b610117610339565b565b61012233610139565b151561012d57600080fd5b61013681610400565b50565b600061014c60028363ffffffff61041116565b90505b919050565b61011733610448565b600080548190819074010000000000000000000000000000000000000000900460ff161561018a57600080fd5b61019333610139565b151561019e57600080fd5b600160a060020a03841660009081526004602052604090205460ff16156101c457600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561020557600080fd5b505af1158015610219573d6000803e3d6000fd5b505050506040513d602081101561022f57600080fd5b5051151561023c57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561027a57600080fd5b505af115801561028e573d6000803e3d6000fd5b505050506040513d60208110156102a457600080fd5b50519150600060ff8316108015906102c0575060058260ff1611155b15156102cb57600080fd5b6102d482610459565b9050600160035460ff1660018111156102e957fe5b14156102f9576064600a82020490505b600160a060020a038085166000908152600460205260409020805460ff19166001908117909155546103339116858363ffffffff61050b16565b50505050565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561039e57600080fd5b505af11580156103b2573d6000803e3d6000fd5b505050506040513d60208110156103c857600080fd5b5051905060008111156103f8576000546001546103f891600160a060020a0391821691168363ffffffff61050b16565b6101366105aa565b61013660028263ffffffff6105e116565b6000600160a060020a038216151561042857600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61013660028263ffffffff61062f16565b600060ff82161515610476575069152d02c7e14af680000061014f565b8160ff1660011415610493575069d3c21bcecceda100000061014f565b8160ff16600214156104b157506a01a784379d99db4200000061014f565b8160ff16600314156104cf57506a027b46536c66c8e300000061014f565b8160ff16600414156104ed57506a034f086f3b33b68400000061014f565b8160ff166005141561014f57506a0422ca8b0a00a42500000061014f565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561056e57600080fd5b505af1158015610582573d6000803e3d6000fd5b505050506040513d602081101561059857600080fd5b505115156105a557600080fd5b505050565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a03811615156105f657600080fd5b6106008282610411565b1561060a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561064457600080fd5b61064e8282610411565b151561065957600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820308aff6f9dcaa30d375fb4263114be30ddb9e7b07df39a8a98ba43cf3e23cf7e0029 \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json index 96063ba80..3d3e99dc6 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json @@ -9,20 +9,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "constant": false, - "inputs": [ - { - "name": "minerAddress", - "type": "address" - } - ], - "name": "trasferToMiner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { "constant": false, "inputs": [ @@ -65,6 +51,20 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "constant": false, + "inputs": [ + { + "name": "minerAddress", + "type": "address" + } + ], + "name": "transferToMiner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -81,13 +81,13 @@ "type": "constructor" } ], - "bytecode": "608060405234801561001057600080fd5b506040516040806107f28339810160405280516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561006f90640100000000610093810204565b6003805483919060ff19166001838181111561008757fe5b0217905550505061013c565b6100ab6002826401000000006105e16100ae82021704565b50565b600160a060020a03811615156100c357600080fd5b6100d68282640100000000610105810204565b156100e057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561011c57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106a78061014b6000396000f3006080604052600436106100535763ffffffff60e060020a6000350416630c08bf8881146100585780632296f4c71461006f5780632e6b684914610090578063608d3d3d146100b1578063d43acc79146100e6575b600080fd5b34801561006457600080fd5b5061006d6100fb565b005b34801561007b57600080fd5b5061006d600160a060020a0360043516610119565b34801561009c57600080fd5b5061006d600160a060020a03600435166102f5565b3480156100bd57600080fd5b506100d2600160a060020a0360043516610315565b604080519115158252519081900360200190f35b3480156100f257600080fd5b5061006d610330565b61010433610315565b151561010f57600080fd5b610117610339565b565b600080548190819074010000000000000000000000000000000000000000900460ff161561014657600080fd5b61014f33610315565b151561015a57600080fd5b600160a060020a03841660009081526004602052604090205460ff161561018057600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156101c157600080fd5b505af11580156101d5573d6000803e3d6000fd5b505050506040513d60208110156101eb57600080fd5b505115156101f857600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561023657600080fd5b505af115801561024a573d6000803e3d6000fd5b505050506040513d602081101561026057600080fd5b50519150600060ff83161080159061027c575060058260ff1611155b151561028757600080fd5b61029082610400565b9050600160035460ff1660018111156102a557fe5b14156102b5576064600a82020490505b600160a060020a038085166000908152600460205260409020805460ff19166001908117909155546102ef9116858363ffffffff6104b216565b50505050565b6102fe33610315565b151561030957600080fd5b61031281610551565b50565b600061032860028363ffffffff61056216565b90505b919050565b61011733610599565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561039e57600080fd5b505af11580156103b2573d6000803e3d6000fd5b505050506040513d60208110156103c857600080fd5b5051905060008111156103f8576000546001546103f891600160a060020a0391821691168363ffffffff6104b216565b6103126105aa565b600060ff8216151561041d575069152d02c7e14af680000061032b565b8160ff166001141561043a575069d3c21bcecceda100000061032b565b8160ff166002141561045857506a01a784379d99db4200000061032b565b8160ff166003141561047657506a027b46536c66c8e300000061032b565b8160ff166004141561049457506a034f086f3b33b68400000061032b565b8160ff166005141561032b57506a0422ca8b0a00a42500000061032b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561051557600080fd5b505af1158015610529573d6000803e3d6000fd5b505050506040513d602081101561053f57600080fd5b5051151561054c57600080fd5b505050565b61031260028263ffffffff6105e116565b6000600160a060020a038216151561057957600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61031260028263ffffffff61062f16565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a03811615156105f657600080fd5b6106008282610562565b1561060a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561064457600080fd5b61064e8282610562565b151561065957600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058208317cc38f72fdbf4d19029db12a6c784275ab5dfd7521863b2c79aee26e6effb0029", + "bytecode": "608060405234801561001057600080fd5b506040516040806107f28339810160405280516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561006f90640100000000610093810204565b6003805483919060ff19166001838181111561008757fe5b0217905550505061013c565b6100ab6002826401000000006105e16100ae82021704565b50565b600160a060020a03811615156100c357600080fd5b6100d68282640100000000610105810204565b156100e057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561011c57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106a78061014b6000396000f3006080604052600436106100535763ffffffff60e060020a6000350416630c08bf8881146100585780632e6b68491461006f578063608d3d3d14610090578063d43acc79146100c5578063fe4028bb146100da575b600080fd5b34801561006457600080fd5b5061006d6100fb565b005b34801561007b57600080fd5b5061006d600160a060020a0360043516610119565b34801561009c57600080fd5b506100b1600160a060020a0360043516610139565b604080519115158252519081900360200190f35b3480156100d157600080fd5b5061006d610154565b3480156100e657600080fd5b5061006d600160a060020a036004351661015d565b61010433610139565b151561010f57600080fd5b610117610339565b565b61012233610139565b151561012d57600080fd5b61013681610400565b50565b600061014c60028363ffffffff61041116565b90505b919050565b61011733610448565b600080548190819074010000000000000000000000000000000000000000900460ff161561018a57600080fd5b61019333610139565b151561019e57600080fd5b600160a060020a03841660009081526004602052604090205460ff16156101c457600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561020557600080fd5b505af1158015610219573d6000803e3d6000fd5b505050506040513d602081101561022f57600080fd5b5051151561023c57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561027a57600080fd5b505af115801561028e573d6000803e3d6000fd5b505050506040513d60208110156102a457600080fd5b50519150600060ff8316108015906102c0575060058260ff1611155b15156102cb57600080fd5b6102d482610459565b9050600160035460ff1660018111156102e957fe5b14156102f9576064600a82020490505b600160a060020a038085166000908152600460205260409020805460ff19166001908117909155546103339116858363ffffffff61050b16565b50505050565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561039e57600080fd5b505af11580156103b2573d6000803e3d6000fd5b505050506040513d60208110156103c857600080fd5b5051905060008111156103f8576000546001546103f891600160a060020a0391821691168363ffffffff61050b16565b6101366105aa565b61013660028263ffffffff6105e116565b6000600160a060020a038216151561042857600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61013660028263ffffffff61062f16565b600060ff82161515610476575069152d02c7e14af680000061014f565b8160ff1660011415610493575069d3c21bcecceda100000061014f565b8160ff16600214156104b157506a01a784379d99db4200000061014f565b8160ff16600314156104cf57506a027b46536c66c8e300000061014f565b8160ff16600414156104ed57506a034f086f3b33b68400000061014f565b8160ff166005141561014f57506a0422ca8b0a00a42500000061014f565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561056e57600080fd5b505af1158015610582573d6000803e3d6000fd5b505050506040513d602081101561059857600080fd5b505115156105a557600080fd5b505050565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a03811615156105f657600080fd5b6106008282610411565b1561060a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561064457600080fd5b61064e8282610411565b151561065957600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820308aff6f9dcaa30d375fb4263114be30ddb9e7b07df39a8a98ba43cf3e23cf7e0029", "functionHashes": { "addCoreTeam(address)": "2e6b6849", "isCoreTeam(address)": "608d3d3d", "renounceCoreTeam()": "d43acc79", "terminate()": "0c08bf88", - "trasferToMiner(address)": "2296f4c7" + "transferToMiner(address)": "fe4028bb" }, "gasEstimates": { "creation": { @@ -100,7 +100,7 @@ "isCoreTeam(address)": "infinite", "renounceCoreTeam()": "infinite", "terminate()": "infinite", - "trasferToMiner(address)": "infinite" + "transferToMiner(address)": "infinite" } } } \ No newline at end of file diff --git a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoMinerTests.cs b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoMinerTests.cs index 223858c99..0fa0aa1c0 100644 --- a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoMinerTests.cs +++ b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoMinerTests.cs @@ -56,8 +56,8 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests await miner1.AddSupervisorAsync(supervisorAccount.Address); // Transfer tokens to the miner... - await pool1.TrasferToMinerAsync(miner1.ContractAddress); - await pool2.TrasferToMinerAsync(miner1.ContractAddress); + await pool1.TransferToMinerAsync(miner1.ContractAddress); + await pool2.TransferToMinerAsync(miner1.ContractAddress); // Ensure the miner received the tokens according to its category 2. Assert.Equal(2.MAlgo() + 2.MAlgo() * 10 / 100, await token.BalanceOfAsync(miner1.ContractAddress)); diff --git a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoPoolTests.cs b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoPoolTests.cs index 608366c24..0f6f67e98 100644 --- a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoPoolTests.cs +++ b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoPoolTests.cs @@ -57,7 +57,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests // Transfer tokens from the pool to the miners... for (int i = 0; i <= 5; i++) { - await pool1.TrasferToMinerAsync(miners[i].ContractAddress); + await pool1.TransferToMinerAsync(miners[i].ContractAddress); } // Ensure each miner received the proper amount of tokens according its category... @@ -112,7 +112,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests // Transfer tokens from the pool to the miners... for (int i = 0; i <= 5; i++) { - await pool1.TrasferToMinerAsync(miners[i].ContractAddress); + await pool1.TransferToMinerAsync(miners[i].ContractAddress); } // Ensure each miner received the proper amount of tokens according its category... diff --git a/labs/algo-token-playground/README.md b/labs/algo-token-playground/README.md index 48c75a8b1..0fbef2920 100644 --- a/labs/algo-token-playground/README.md +++ b/labs/algo-token-playground/README.md @@ -205,14 +205,14 @@ Creates a new instance of the `AlgoPool` contract. >Example: `deploy-algopool 0 token -n dev_pool` -#### algopool-trasfertominer +#### algopool-transfertominer -`.algopool-trasfertominer ` +`.algopool-transfertominer ` Transfer tokens from the AlgoPool balance to the AlgoMiner balance. The amount of tokens to be transfered is determined by the AlgoMiner category (see the specification document). * `minerAddress`: the address of the AlgoMiner contract ->Example: `dev_pool.algopool-trasfertominer miner_1` +>Example: `dev_pool.algopool-transfertominer miner_1` #### algopool-terminate diff --git a/labs/algo-token-playground/pool-based-algominer-script.txt b/labs/algo-token-playground/pool-based-algominer-script.txt index 7d1571fdb..5d4cf358a 100644 --- a/labs/algo-token-playground/pool-based-algominer-script.txt +++ b/labs/algo-token-playground/pool-based-algominer-script.txt @@ -11,8 +11,8 @@ token.algotoken-transfer ref_pool 100m token.algotoken-balanceof dev_pool token.algotoken-balanceof ref_pool deploy-algominer 0 2 miner_1_account ref_1_account token -n miner_1 -dev_pool.algopool-trasfertominer miner_1 -ref_pool.algopool-trasfertominer miner_1 +dev_pool.algopool-transfertominer miner_1 +ref_pool.algopool-transfertominer miner_1 token.algotoken-balanceof miner_1 miner_1.algominer-activateminer set-account miner_1_account diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoPoolContract/AlgoPoolTrasferToMinerCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoPoolContract/AlgoPoolTransferToMinerCommand.cs similarity index 79% rename from labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoPoolContract/AlgoPoolTrasferToMinerCommand.cs rename to labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoPoolContract/AlgoPoolTransferToMinerCommand.cs index 6dd2fd989..0fab1e522 100644 --- a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoPoolContract/AlgoPoolTrasferToMinerCommand.cs +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoPoolContract/AlgoPoolTransferToMinerCommand.cs @@ -11,7 +11,7 @@ using Nethereum.Web3; namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoPoolContract { - public class AlgoPoolTrasferToMinerCommand : EthInvokeTransactionalFunctionCommand + public class AlgoPoolTransferToMinerCommand : EthInvokeTransactionalFunctionCommand { public string MinerAddress { get; set; } @@ -19,7 +19,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoPoolContract { var algoPool = new AlgoPool(contractAddress, web3, context.GasPriceProvider); - return await algoPool.TrasferToMinerAsync(context.ResolveContractReference(MinerAddress)); + return await algoPool.TransferToMinerAsync(context.ResolveContractReference(MinerAddress)); } } } diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoPoolParsers.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoPoolParsers.cs index 30d00ca8c..5d933ef4a 100644 --- a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoPoolParsers.cs +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoPoolParsers.cs @@ -21,9 +21,9 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Parsers TokenAddress = tokenAddress }).Register(); - (from contractReference in CommonParsers.Invoke("algopool-trasfertominer") + (from contractReference in CommonParsers.Invoke("algopool-transfertominer") from minerAddress in CommonParsers.StringValue - select new AlgoPoolTrasferToMinerCommand + select new AlgoPoolTransferToMinerCommand { ContractReference = contractReference, MinerAddress = minerAddress From 561bd9a13c19e78f050b3a25067844d62b465d2f Mon Sep 17 00:00:00 2001 From: Julian Molina Date: Tue, 15 Jan 2019 13:56:20 +0100 Subject: [PATCH 13/17] Legal wording --- CODE_OF_CONDUCT.md | 2 +- CONTRIBUTING.md | 34 +++++++++++++++++----------------- LICENSE | 31 ++++++++++++++----------------- 3 files changed, 32 insertions(+), 35 deletions(-) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index c71b685b4..4b37b0e16 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -34,7 +34,7 @@ This Code of Conduct applies both within project spaces and in public spaces whe ## Enforcement -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at feedback at advancedalgos dot org. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team using the online form in the contacts page of the superalgos.org website. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 311653120..c67e8d115 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,44 +2,44 @@ We are thrilled you are interested in contributing to this repository. Your help may be essential to the project's success and we want you in! -Advanced Algos LTD is a startup, currently at a very early stage. Although this repository is not open source software yet, we do welcome contributions from the community. +Superalgos is a collective project, currently at a very early stage. Although this repository is not open source software yet, we do welcome contributions from the community. -Contributions are deemed _voluntary work_. There might be incentives in place for certain kinds of contributions. Contact us for more information in this regards. +Contributions are deemed _voluntary work_. There might be incentives in place for certain kinds of contributions. Contact us for more information in this regard. In any case, contributors agree to provide an express grant of patent rights for their contributions. Submitting Pull Requests to this repository represents an express agreement with the terms of our Balanced Contributor Intellectual Property Agreement. This agreement is a direct implementation of GitHub's [Balanced Employee Intellectual Property Agreement 1.0.1](https://github.com/github/balanced-employee-ip-agreement/blob/master/Balanced_Employee_IP_Agreement.md). # Balanced Contributor Intellectual Property Agreement 1.0.1 -This BALANCED CONTRIBUTOR INTELLECTUAL PROPERTY AGREEMENT is between person or team submitting Pull Requests to this repository and Advanced Algos LTD ("Company"). +This BALANCED CONTRIBUTOR INTELLECTUAL PROPERTY AGREEMENT is between person or team submitting Pull Requests to this repository and Superalgos.org ("Project"). -**What is this?** This is the Company's Intellectual Property Agreement ("Agreement"). If you've worked in the technology space before, there's a good chance that you've run across one or more of these in the past. This document is the official, entire and exclusive agreement on what intellectual property ("IP") is yours, and what belongs to the Company. +**What is this?** This is the Project's Intellectual Property Agreement ("Agreement"). If you've worked in the technology space before, there's a good chance that you've run across one or more of these in the past. This document is the official, entire and exclusive agreement on what intellectual property ("IP") is yours, and what belongs to the Project. -**Why is this?** The Company needs to be clear on what IP it owns and has rights to. Its customers, contributors, and investors depend on the Company having the legal rights to the products and services it is providing so that the Company can continue operating and doing business. +**Why is this?** The Project needs to be clear on what IP it owns and has rights to. Its customers, contributors, and investors depend on the Project having the legal rights to the products and services it is providing so that the Project can continue operating and doing business. -The Company also believes that it's important to be clear on what it doesn't own. The Company doesn't want you looking over your shoulder every time you work on something personal or worrying that the Company will someday seize your open source non-lethal mousetrap simulation software. In other words, the Company isn't interested in appropriating your personal projects. +The Project also believes that it's important to be clear on what it doesn't own. The Project doesn't want you looking over your shoulder every time you work on something personal or worrying that the Project will someday seize your open source non-lethal mousetrap simulation software. In other words, the Project isn't interested in appropriating your personal projects. -**Read this.** Please read this document and be sure you understand it before you submit any Pull Requests. Due to legal risk and corporate obligations, the Company cannot, by and large, negotiate its terms. If you feel you have a particular circumstance that keeps you from signing, please let the Company's legal department ("Legal") know. And, of course, you're always free and encouraged to get your own legal counsel to explain anything you're not clear on. +**Read this.** Please read this document and be sure you understand it before you submit any Pull Requests. Due to legal risk and corporate obligations, the Project cannot, by and large, negotiate its terms. If you feel you have a particular circumstance that keeps you from signing, please let the Project's legal department ("Legal") know. And, of course, you're always free and encouraged to get your own legal counsel to explain anything you're not clear on. Cool? Then, by submitting your first Pull Request, and as a condition of your contribution, you agree to the following: -1. **What the Company owns.** The Company owns any IP ("Company IP") that you create, or help create _as its contributor_, but only if it meets one or more of these additional conditions: The IP was (i) related to an existing or prospective Company product or service at the time you developed, invented, or created it, (ii) developed for use by the Company, or (iii) developed or promoted with existing Company IP or with the Company's endorsement. You hereby grant and assign, and will grant and assign, to the Company all rights and interests in all Company IP. +1. **What the Project owns.** The Project owns any IP ("Project IP") that you create, or help create _as its contributor_, but only if it meets one or more of these additional conditions: The IP was (i) related to an existing or prospective Project product or service at the time you developed, invented, or created it, (ii) developed for use by the Project, or (iii) developed or promoted with existing Project IP or with the Project's endorsement. You hereby grant and assign, and will grant and assign, to the Project all rights and interests in all Project IP. - "Company IP" includes concepts, designs, developments, discoveries, ideas, improvements, inventions, trade secrets, trademarks, and works of authorship. + "Project IP" includes concepts, designs, developments, discoveries, ideas, improvements, inventions, trade secrets, trademarks, and works of authorship. -2. **What the Company doesn't own.** If you create IP that doesn't fit into one of the categories listed above, the Company doesn't own it. In other words, the Company doesn't own concepts, designs, developments, discoveries, ideas, improvements, inventions, trade secrets, trademarks, or works of authorship that you develop, invent, or create that do not meet any of the conditions in Section 1. +2. **What the Project doesn't own.** If you create IP that doesn't fit into one of the categories listed above, the Project doesn't own it. In other words, the Project doesn't own concepts, designs, developments, discoveries, ideas, improvements, inventions, trade secrets, trademarks, or works of authorship that you develop, invent, or create that do not meet any of the conditions in Section 1. -3. **Contribution of your IP to Company projects.** If you include your own IP – such as IP you created prior to working for the Company – into a Company product or service, it's still yours, of course, but you grant the Company a non-exclusive, irrevocable, fully paid-up, royalty-free, perpetual, sublicensable, transferable, worldwide license to use it without restriction in any way or implementation, in modified form, or as is, by itself, or incorporated into another product or service ("License"). If you include your name in any project over which the Company would have rights under this Agreement, such as in a copyright notice or a comment in code or documentation, then the License covers the rights associated with that use of your name as well. +3. **Contribution of your IP to Project projects.** If you include your own IP – such as IP you created prior to working for the Project – into a Project product or service, it's still yours, of course, but you grant the Project a non-exclusive, irrevocable, fully paid-up, royalty-free, perpetual, sublicensable, transferable, worldwide license to use it without restriction in any way or implementation, in modified form, or as is, by itself, or incorporated into another product or service ("License"). If you include your name in any project over which the Project would have rights under this Agreement, such as in a copyright notice or a comment in code or documentation, then the License covers the rights associated with that use of your name as well. -4. **Your contributions to non-Company projects.** The Company recognizes that you may be engaged in work that requires you to submit IP to entities other than the Company, such as open source projects used by the Company. Please make sure that Legal is aware of what you're working on so that Legal can help with any licensing issues. If any project asks you to sign a contribution agreement, you should check with Legal before doing so. These agreements may be legally binding on the Company and so should be run through Legal first. +4. **Your contributions to non-Project projects.** The Project recognizes that you may be engaged in work that requires you to submit IP to entities other than the Project, such as open source projects used by the Project. Please make sure that Legal is aware of what you're working on so that Legal can help with any licensing issues. If any project asks you to sign a contribution agreement, you should check with Legal before doing so. These agreements may be legally binding on the Project and so should be run through Legal first. -5. **Voluntary Works** All Company IP that you are involved with or create as part of your work for the Company is voluntary work which does not require compensation. There might be incentives in place for certain kinds of contributions. Feel free to contact the Company to learn more. +5. **Voluntary Works** All Project IP that you are involved with or create as part of your work for the Project is voluntary work which does not require compensation. There might be incentives in place for certain kinds of contributions. Feel free to contact the Project to learn more. 6. **No conflicts.** You agree that you don't have any outstanding agreements or obligations that conflict with those in this Agreement, and that you won't enter into conflicting agreements in the future. -7. **IP protection.** The Company might someday need to show the work that went into the development of IP that it uses or has used, or to make government filings to establish that it owns the IP or has rights over it. To help in those situations, you agree not to destroy any records you maintain relating to the development of any Company IP or IP under License (together, "All IP"), and, if the Company asks, to provide those records to the Company. You agree to help the Company secure and defend its rights in All IP. For your help the Company will compensate you at a reasonable rate. If the Company is unable to secure your help, you authorize the Company to act on your behalf (as your agent and attorney-in-fact) in securing all rights related to All IP. +7. **IP protection.** The Project might someday need to show the work that went into the development of IP that it uses or has used, or to make government filings to establish that it owns the IP or has rights over it. To help in those situations, you agree not to destroy any records you maintain relating to the development of any Project IP or IP under License (together, "All IP"), and, if the Project asks, to provide those records to the Project. You agree to help the Project secure and defend its rights in All IP. For your help the Project will compensate you at a reasonable rate. If the Project is unable to secure your help, you authorize the Project to act on your behalf (as your agent and attorney-in-fact) in securing all rights related to All IP. -8. **Confidentiality.** As an contributor or contractor of the Company, you will have access to sensitive confidential information that is important to the Company's business. You are responsible for keeping this information confidential, including after you end your work for the Company. +8. **Confidentiality.** As an contributor or contractor of the Project, you will have access to sensitive confidential information that is important to the Project's business. You are responsible for keeping this information confidential, including after you end your work for the Project. - "Confidential Information" includes non-public technical details about our products or services, financial information, business strategies and forecasts, customer data, or any other information, data or know-how that is valuable to the Company because it is not publicly known. + "Confidential Information" includes non-public technical details about our products or services, financial information, business strategies and forecasts, customer data, or any other information, data or know-how that is valuable to the Project because it is not publicly known. - The Company's Confidential Information is sensitive and we expect that you'll treat it as such. You agree to only use the Company's Confidential Information for the purpose of performing your contribution and for the benefit of the Company. You will do your best to keep Confidential Information secret. If you are not sure if something is Confidential Information, you should assume that it is, until you can confirm otherwise. \ No newline at end of file + The Project's Confidential Information is sensitive and we expect that you'll treat it as such. You agree to only use the Project's Confidential Information for the purpose of performing your contribution and for the benefit of the Project. You will do your best to keep Confidential Information secret. If you are not sure if something is Confidential Information, you should assume that it is, until you can confirm otherwise. \ No newline at end of file diff --git a/LICENSE b/LICENSE index c049df9cb..2fe09f449 100644 --- a/LICENSE +++ b/LICENSE @@ -1,23 +1,22 @@ COPYRIGHT NOTICE -© Copyright 2018 Advanced Algos LTD. +© Copyright 2018 Superalgos.org LICENSE NOTICE -Advanced Algos LTD. is a startup, currently at a very early stage. Because certain aspects of -the business are still not clearly defined, we have chosen to --temporarily-- grant a -restrictive license for the use of this repository, until those business aspects are clarified -and a proper open source license can be granted. +Superalgos is a collaborative project currently at a very early stage. Because certain aspects of +the project are still not clearly defined, we have chosen to --temporarily-- grant a restrictive +license for the use of this repository, until those aspects are clarified and a proper open source +license can be granted. -Advanced Algos LTD. is publishing the code of this software for several reasons. However, -it shall not be considered free software yet. Advanced Algos LTD. is a for-profit company -in the crypto space and this module is still proprietary software. +Superalgos.org is publishing the code of this software for several reasons. However, it shall not be considered free software yet. Superalgos is a collaborative project in the crypto space and this +software is still proprietary software. -The reasons for opening up the code of this module at this stage are the following: +The reasons for opening up the code of this software at this stage are the following: - * We believe that transparency is paramount to achieving our goals, so we want everyone - to be able to understand what this module does and how. Opening up the code of this module + * We believe that transparency is paramount to achieving our goals, so we want everyone to + be able to understand what this software does and how. Opening up the code of this software allows anyone to take a close look. * We welcome contributions from the community. Contributions are regarded as voluntary work. @@ -27,16 +26,14 @@ The reasons for opening up the code of this module at this stage are the followi LICENSE WORDING -Advanced Algos LTD. grants a limited license for the following uses: +Superalgos.org grants a limited license for the following uses: 1. CODE REVIEW AND AUDITS. You are granted permission to clone this repository to analyze, review or audit the code. -2. COLLABORATING WITH ADVANCED ALGOS LTD. You are granted permission to fork this repository +2. COLLABORATING WITH Superalgos.org. You are granted permission to fork this repository with the sole purpose of correcting bugs and developing functionality in agreement with - Advanced Algos LTD. By contributing to this repository you explicitely agree to the terms + Superalgos.org. By contributing to this repository you explicitely agree to the terms detailed in CONTRIBUTING.MD. -PLEASE SEE CONTRIBUTING.MD FOR MORE DETAILS ON THE IMPLICATIONS SURROUNDING YOUR CONTRIBUTIONS TO THIS REPOSITORY. - - +PLEASE SEE CONTRIBUTING.MD FOR MORE DETAILS ON THE IMPLICATIONS SURROUNDING YOUR CONTRIBUTIONS TO THIS REPOSITORY. \ No newline at end of file From b4f2cf1bf57834449bc41ff4bca5138d35e67bc9 Mon Sep 17 00:00:00 2001 From: pmmax Date: Tue, 12 Feb 2019 16:32:14 -0300 Subject: [PATCH 14/17] Added a method to quickly switch the testnet --- .../AlgoTokenV1Tests.cs | 4 ++-- .../AlgoFeesTests.cs | 6 +++--- .../AlgoMinerTests.cs | 4 ++-- .../AlgoPoolTests.cs | 6 +++--- .../EthNetwork.cs | 2 ++ 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/labs/algo-erc20-token/test/AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests/AlgoTokenV1Tests.cs b/labs/algo-erc20-token/test/AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests/AlgoTokenV1Tests.cs index f19264bde..78e097536 100644 --- a/labs/algo-erc20-token/test/AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests/AlgoTokenV1Tests.cs +++ b/labs/algo-erc20-token/test/AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests/AlgoTokenV1Tests.cs @@ -17,7 +17,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests [Fact] public async Task DeployContractAndTransferTokensTest() { - EthNetwork.UseGanacheTestNet(); + EthNetwork.UseDefaultTestNet(); var account1 = new Account(EthNetwork.Instance.PrefundedPrivateKey); var account2 = EthAccountFactory.Create(); @@ -39,7 +39,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoErc20Token.IntegrationTests [Fact] public async Task PausableFeatureTest() { - EthNetwork.UseGanacheTestNet(); + EthNetwork.UseDefaultTestNet(); var account1 = new Account(EthNetwork.Instance.PrefundedPrivateKey); var account2 = EthAccountFactory.Create(); diff --git a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoFeesTests.cs b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoFeesTests.cs index 56bbafc40..ad3bf61b1 100644 --- a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoFeesTests.cs +++ b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoFeesTests.cs @@ -17,7 +17,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests [Fact] public async Task MinerRegistrationTest() { - EthNetwork.UseGanacheTestNet(); + EthNetwork.UseDefaultTestNet(); var prefundedAccount = new Account(EthNetwork.Instance.PrefundedPrivateKey); @@ -101,7 +101,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests [Fact] public async Task MineTest() { - EthNetwork.UseGanacheTestNet(); + EthNetwork.UseDefaultTestNet(); var prefundedAccount = new Account(EthNetwork.Instance.PrefundedPrivateKey); @@ -181,7 +181,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests [Fact] public async Task TerminateTest() { - EthNetwork.UseGanacheTestNet(); + EthNetwork.UseDefaultTestNet(); var prefundedAccount = new Account(EthNetwork.Instance.PrefundedPrivateKey); diff --git a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoMinerTests.cs b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoMinerTests.cs index 0fa0aa1c0..afd0384f2 100644 --- a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoMinerTests.cs +++ b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoMinerTests.cs @@ -16,7 +16,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests [Fact] public async Task PoolBasedMinerBasicWorkfloWTest() { - EthNetwork.UseGanacheTestNet(); + EthNetwork.UseDefaultTestNet(); var prefundedAccount = new Account(EthNetwork.Instance.PrefundedPrivateKey); @@ -115,7 +115,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests [Fact] public async Task TerminateTest() { - EthNetwork.UseGanacheTestNet(); + EthNetwork.UseDefaultTestNet(); var prefundedAccount = new Account(EthNetwork.Instance.PrefundedPrivateKey); diff --git a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoPoolTests.cs b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoPoolTests.cs index 0f6f67e98..5268bcc4c 100644 --- a/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoPoolTests.cs +++ b/labs/algo-token-distribution/test/AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests/AlgoPoolTests.cs @@ -17,7 +17,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests [Fact] public async Task MinerPoolTransferToMinerTest() { - EthNetwork.UseGanacheTestNet(); + EthNetwork.UseDefaultTestNet(); var prefundedAccount = new Account(EthNetwork.Instance.PrefundedPrivateKey); @@ -72,7 +72,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests [Fact] public async Task ReferralPoolTransferToMinerTest() { - EthNetwork.UseGanacheTestNet(); + EthNetwork.UseDefaultTestNet(); var prefundedAccount = new Account(EthNetwork.Instance.PrefundedPrivateKey); @@ -127,7 +127,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests [Fact] public async Task TerminateTest() { - EthNetwork.UseGanacheTestNet(); + EthNetwork.UseDefaultTestNet(); var prefundedAccount = new Account(EthNetwork.Instance.PrefundedPrivateKey); diff --git a/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest/EthNetwork.cs b/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest/EthNetwork.cs index 8f1675e54..908600832 100644 --- a/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest/EthNetwork.cs +++ b/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest/EthNetwork.cs @@ -26,6 +26,8 @@ namespace AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest public IGasPriceProvider GasPriceProvider { get; private set; } public BigInteger TxBaseFeeWei => GasPriceProvider.GetGasPrice() * TRANSACTION_BASE_FEE; + public static void UseDefaultTestNet() => UseGethTestNet(); + public static void UseGanacheTestNet() { Instance = new EthNetwork From b1b99b9f76b7e566c512e421161dd68c3c50ec08 Mon Sep 17 00:00:00 2001 From: pmmax Date: Tue, 12 Feb 2019 18:30:36 -0300 Subject: [PATCH 15/17] Fixed issue #14. Added missing modifiers to state variables and constants --- .../SmartContracts/src/AlgoFees.sol | 12 +- .../SmartContracts/src/AlgoMiner.sol | 2 +- .../SmartContracts/src/AlgoPool.sol | 2 +- .../src/bin/AlgoFees-sol-output.json | 2981 +++++++-------- .../SmartContracts/src/bin/AlgoFees.bin | 2 +- .../SmartContracts/src/bin/AlgoFees.json | 2 +- .../src/bin/AlgoMiner-sol-output.json | 3277 +++++++++-------- .../SmartContracts/src/bin/AlgoMiner.abi | 2 +- .../SmartContracts/src/bin/AlgoMiner.bin | 2 +- .../SmartContracts/src/bin/AlgoMiner.json | 26 +- .../src/bin/AlgoPool-sol-output.json | 224 +- .../SmartContracts/src/bin/AlgoPool.bin | 2 +- .../SmartContracts/src/bin/AlgoPool.json | 2 +- .../EthNetwork.cs | 2 +- 14 files changed, 3324 insertions(+), 3214 deletions(-) diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol index 2850b2e05..26773a58a 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol @@ -11,12 +11,12 @@ import "./AlgoCoreTeamRole.sol"; contract AlgoFees is ERC20TokenHolder, AlgoSystemRole, AlgoCoreTeamRole { using SafeERC20 for IERC20; - uint256 constant CAT_0_VALUE_PROPORTION = 1; - uint256 constant CAT_1_VALUE_PROPORTION = 10; - uint256 constant CAT_2_VALUE_PROPORTION = 20; - uint256 constant CAT_3_VALUE_PROPORTION = 30; - uint256 constant CAT_4_VALUE_PROPORTION = 40; - uint256 constant CAT_5_VALUE_PROPORTION = 50; + uint256 private constant CAT_0_VALUE_PROPORTION = 1; + uint256 private constant CAT_1_VALUE_PROPORTION = 10; + uint256 private constant CAT_2_VALUE_PROPORTION = 20; + uint256 private constant CAT_3_VALUE_PROPORTION = 30; + uint256 private constant CAT_4_VALUE_PROPORTION = 40; + uint256 private constant CAT_5_VALUE_PROPORTION = 50; address[] private _miners; mapping(address => uint256) private _minersByAddress; diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol index c41b5b855..3a70d76f9 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol @@ -13,7 +13,7 @@ import "./AlgoSupervisorRole.sol"; contract AlgoMiner is AlgoCommon, ERC20TokenHolder, AlgoSystemRole, AlgoCoreTeamRole, AlgoSupervisorRole, IAlgoMiner { using SafeERC20 for IERC20; - uint256 public constant DAYS_PER_YEAR = 365; + uint256 private constant DAYS_PER_YEAR = 365; enum MinerType { PoolBased, diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol index 8b4ffcc9c..523febd74 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol @@ -17,7 +17,7 @@ contract AlgoPool is AlgoCommon, ERC20TokenHolder, AlgoCoreTeamRole { } PoolType private _poolType; - mapping(address => bool) _fundedMiners; + mapping(address => bool) private _fundedMiners; constructor(PoolType poolType, address tokenAddress) ERC20TokenHolder(tokenAddress) diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json index f2f99092c..324b8aec5 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json @@ -259,9 +259,9 @@ "evm": { "bytecode": { "linkReferences": {}, - "object": "60806040523480156200001157600080fd5b50604051602080620010d083398101604052516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790556200006c90640100000000620000c7810204565b6200008033640100000000620000e5810204565b50600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054600160a060020a031916905562000193565b620000e260028264010000000062000e066200010082021704565b50565b620000e260038264010000000062000e066200010082021704565b600160a060020a03811615156200011657600080fd5b6200012b82826401000000006200015b810204565b156200013657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200017357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610f2d80620001a36000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632e6b6849146100bc578063341ccfcb146100dd57806334cdcf26146100fe5780633d19ab1314610133578063608d3d3d1461016757806374be75921461018857806381f909f3146101a957806399f4b251146101ca578063bb52c137146101df578063d43acc7914610206578063e9d618591461021b575b600080fd5b3480156100b157600080fd5b506100ba610230565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661024e565b3480156100e957600080fd5b506100ba600160a060020a036004351661026e565b34801561010a57600080fd5b5061011f600160a060020a0360043516610457565b604080519115158252519081900360200190f35b34801561013f57600080fd5b5061014b600435610470565b60408051600160a060020a039092168252519081900360200190f35b34801561017357600080fd5b5061011f600160a060020a036004351661049f565b34801561019457600080fd5b506100ba600160a060020a03600435166104b2565b3480156101b557600080fd5b506100ba600160a060020a03600435166104cf565b3480156101d657600080fd5b506100ba610686565b3480156101eb57600080fd5b506101f4610bd1565b60408051918252519081900360200190f35b34801561021257600080fd5b506100ba610bdc565b34801561022757600080fd5b506100ba610be5565b6102393361049f565b151561024457600080fd5b61024c610bee565b565b6102573361049f565b151561026257600080fd5b61026b81610cb5565b50565b60008054819074010000000000000000000000000000000000000000900460ff161561029957600080fd5b6102a23361049f565b15156102ad57600080fd5b6004546103e8116102bd57600080fd5b600160a060020a038316600090815260056020526040902054156102e057600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032157600080fd5b505af1158015610335573d6000803e3d6000fd5b505050506040513d602081101561034b57600080fd5b5051151561035857600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b505050506040513d60208110156103c057600080fd5b50519050600060ff8216108015906103dc575060058160ff1611155b15156103e757600080fd5b505060048054600160a060020a039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b600061046a60028363ffffffff610cc616565b92915050565b600060048260010181548110151561048457fe5b600091825260209091200154600160a060020a031692915050565b600061046a60038363ffffffff610cc616565b6104bb33610457565b15156104c657600080fd5b61026b81610cfd565b60005474010000000000000000000000000000000000000000900460ff16156104f757600080fd5b6105003361049f565b151561050b57600080fd5b60045460011061051a57600080fd5b600454600214156105865760048054600190811061053457fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff191690556001610567600482610ea0565b50600160a060020a03811660009081526005602052604081205561026b565b600454600160a060020a03821660009081526005602052604090205414610620576004805460001981019081106105b957fe5b6000918252602080832090910154600160a060020a03848116845260059092526040909220546004805492909316929181106105f157fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60048054600019810190811061063257fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff19169055600480549061066b906000198301610ea0565b50600160a060020a0316600090815260056020526040812055565b6000610690610ec4565b60008060008061069e610ec4565b60005474010000000000000000000000000000000000000000900460ff16156106c657600080fd5b6106cf33610457565b15156106da57600080fd5b6004546001106106e957600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b505050506040513d602081101561077957600080fd5b505196506000871161078a57600080fd5b600194505b6004548510156109395760048054869081106107a757fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561080557600080fd5b505af1158015610819573d6000803e3d6000fd5b505050506040513d602081101561082f57600080fd5b5051151561083c5761092e565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561087a57600080fd5b505af115801561088e573d6000803e3d6000fd5b505050506040513d60208110156108a457600080fd5b5051925060ff831615156108c6578560005b602002018051600101905261092e565b8260ff16600114156108da578560016108b6565b8260ff16600214156108ee578560026108b6565b8260ff1660031415610902578560036108b6565b8260ff1660041415610916578560046108b6565b8260ff166005141561092e5760a08601805160010190525b60019094019361078f565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e909102016028909102016032909102019150818781151561097f57fe5b04815281600a880281151561099057fe5b04602082015281601488028115156109a457fe5b04604082015281601e88028115156109b857fe5b04606082015281602888028115156109cc57fe5b04608082015281603288028115156109e057fe5b0460a0820152600194505b600454851015610bc8576004805486908110610a0357fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a6157600080fd5b505af1158015610a75573d6000803e3d6000fd5b505050506040513d6020811015610a8b57600080fd5b50511515610a9857610bbd565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b505050506040513d6020811015610b0057600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610bbd91600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610b6457600080fd5b505af1158015610b78573d6000803e3d6000fd5b505050506040513d6020811015610b8e57600080fd5b50518260ff861660068110610b9f57fe5b6020020151600154600160a060020a0316919063ffffffff610d0e16565b6001909401936109eb565b50505050505050565b600454600019015b90565b61024c33610dad565b61024c33610dbe565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b505050506040513d6020811015610c7d57600080fd5b505190506000811115610cad57600054600154610cad91600160a060020a0391821691168363ffffffff610d0e16565b61026b610dcf565b61026b60038263ffffffff610e0616565b6000600160a060020a0382161515610cdd57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61026b60028263ffffffff610e0616565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610d7157600080fd5b505af1158015610d85573d6000803e3d6000fd5b505050506040513d6020811015610d9b57600080fd5b50511515610da857600080fd5b505050565b61026b60038263ffffffff610e5416565b61026b60028263ffffffff610e5416565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a0381161515610e1b57600080fd5b610e258282610cc6565b15610e2f57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610e6957600080fd5b610e738282610cc6565b1515610e7e57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610da857600083815260209020610da8918101908301610ee3565b60c0604051908101604052806006906020820280388339509192915050565b610bd991905b80821115610efd5760008155600101610ee9565b50905600a165627a7a72305820c97e98efb9f61c8f769238044b274ddcf265ed47d4444eab2134a813ff57783b0029", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP1 PUSH3 0x10D0 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE MLOAD PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP2 DUP3 AND DUP2 OR PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND OR SWAP1 SSTORE PUSH3 0x6C SWAP1 PUSH5 0x100000000 PUSH3 0xC7 DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x80 CALLER PUSH5 0x100000000 PUSH3 0xE5 DUP2 MUL DIV JUMP JUMPDEST POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT AND SWAP1 SSTORE PUSH3 0x193 JUMP JUMPDEST PUSH3 0xE2 PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH3 0xE06 PUSH3 0x100 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0xE2 PUSH1 0x3 DUP3 PUSH5 0x100000000 PUSH3 0xE06 PUSH3 0x100 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH3 0x116 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x12B DUP3 DUP3 PUSH5 0x100000000 PUSH3 0x15B DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH3 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xF2D DUP1 PUSH3 0x1A3 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA0 JUMPI PUSH4 0xFFFFFFFF PUSH1 0xE0 PUSH1 0x2 EXP PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0xC08BF88 DUP2 EQ PUSH2 0xA5 JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0xBC JUMPI DUP1 PUSH4 0x341CCFCB EQ PUSH2 0xDD JUMPI DUP1 PUSH4 0x34CDCF26 EQ PUSH2 0xFE JUMPI DUP1 PUSH4 0x3D19AB13 EQ PUSH2 0x133 JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0x74BE7592 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0x81F909F3 EQ PUSH2 0x1A9 JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x1CA JUMPI DUP1 PUSH4 0xBB52C137 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x206 JUMPI DUP1 PUSH4 0xE9D61859 EQ PUSH2 0x21B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0x230 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x24E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x26E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11F PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x457 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14B PUSH1 0x4 CALLDATALOAD PUSH2 0x470 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11F PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x49F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x194 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x4B2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x4CF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0x686 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F4 PUSH2 0xBD1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x212 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0xBDC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x227 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0xBE5 JUMP JUMPDEST PUSH2 0x239 CALLER PUSH2 0x49F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24C PUSH2 0xBEE JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x257 CALLER PUSH2 0x49F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x26B DUP2 PUSH2 0xCB5 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A2 CALLER PUSH2 0x49F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x2AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x3E8 GT PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x2E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x321 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x335 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x358 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0xFF DUP3 AND LT DUP1 ISZERO SWAP1 PUSH2 0x3DC JUMPI POP PUSH1 0x5 DUP2 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0x3E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP5 SWAP1 SSTORE PUSH1 0x1 DUP5 ADD DUP4 SSTORE SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B SWAP1 SWAP2 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46A PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xCC6 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 DUP3 PUSH1 0x1 ADD DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x484 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46A PUSH1 0x3 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xCC6 AND JUMP JUMPDEST PUSH2 0x4BB CALLER PUSH2 0x457 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x26B DUP2 PUSH2 0xCFD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x4F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x500 CALLER PUSH2 0x49F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x50B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 LT PUSH2 0x51A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x2 EQ ISZERO PUSH2 0x586 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 SWAP1 DUP2 LT PUSH2 0x534 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE PUSH1 0x1 PUSH2 0x567 PUSH1 0x4 DUP3 PUSH2 0xEA0 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH2 0x26B JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ PUSH2 0x620 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x5B9 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 DUP2 AND DUP5 MSTORE PUSH1 0x5 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 SWAP3 KECCAK256 SLOAD PUSH1 0x4 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP3 SWAP2 DUP2 LT PUSH2 0x5F1 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x632 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD SWAP1 PUSH2 0x66B SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0xEA0 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x690 PUSH2 0xEC4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x69E PUSH2 0xEC4 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x6C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6CF CALLER PUSH2 0x457 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x6DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 LT PUSH2 0x6E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x74F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x763 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x779 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP7 POP PUSH1 0x0 DUP8 GT PUSH2 0x78A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SWAP5 POP JUMPDEST PUSH1 0x4 SLOAD DUP6 LT ISZERO PUSH2 0x939 JUMPI PUSH1 0x4 DUP1 SLOAD DUP7 SWAP1 DUP2 LT PUSH2 0x7A7 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP4 POP DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x19A74AB3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x805 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x819 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x82F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x83C JUMPI PUSH2 0x92E JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x87A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x88E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP PUSH1 0xFF DUP4 AND ISZERO ISZERO PUSH2 0x8C6 JUMPI DUP6 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE PUSH2 0x92E JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x8DA JUMPI DUP6 PUSH1 0x1 PUSH2 0x8B6 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x8EE JUMPI DUP6 PUSH1 0x2 PUSH2 0x8B6 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x902 JUMPI DUP6 PUSH1 0x3 PUSH2 0x8B6 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x916 JUMPI DUP6 PUSH1 0x4 PUSH2 0x8B6 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x92E JUMPI PUSH1 0xA0 DUP7 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE JUMPDEST PUSH1 0x1 SWAP1 SWAP5 ADD SWAP4 PUSH2 0x78F JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x40 DUP10 ADD MLOAD PUSH1 0x20 DUP11 ADD MLOAD DUP11 MLOAD PUSH1 0xA SWAP1 SWAP2 MUL ADD PUSH1 0x14 SWAP1 SWAP2 MUL ADD PUSH1 0x1E SWAP1 SWAP2 MUL ADD PUSH1 0x28 SWAP1 SWAP2 MUL ADD PUSH1 0x32 SWAP1 SWAP2 MUL ADD SWAP2 POP DUP2 DUP8 DUP2 ISZERO ISZERO PUSH2 0x97F JUMPI INVALID JUMPDEST DIV DUP2 MSTORE DUP2 PUSH1 0xA DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x990 JUMPI INVALID JUMPDEST DIV PUSH1 0x20 DUP3 ADD MSTORE DUP2 PUSH1 0x14 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x9A4 JUMPI INVALID JUMPDEST DIV PUSH1 0x40 DUP3 ADD MSTORE DUP2 PUSH1 0x1E DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x9B8 JUMPI INVALID JUMPDEST DIV PUSH1 0x60 DUP3 ADD MSTORE DUP2 PUSH1 0x28 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x9CC JUMPI INVALID JUMPDEST DIV PUSH1 0x80 DUP3 ADD MSTORE DUP2 PUSH1 0x32 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x9E0 JUMPI INVALID JUMPDEST DIV PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x1 SWAP5 POP JUMPDEST PUSH1 0x4 SLOAD DUP6 LT ISZERO PUSH2 0xBC8 JUMPI PUSH1 0x4 DUP1 SLOAD DUP7 SWAP1 DUP2 LT PUSH2 0xA03 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP4 POP DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x19A74AB3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA75 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xA98 JUMPI PUSH2 0xBBD JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAEA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x302C11CA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP5 POP PUSH2 0xBBD SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND SWAP2 PUSH4 0x302C11CA SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB78 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 PUSH1 0xFF DUP7 AND PUSH1 0x6 DUP2 LT PUSH2 0xB9F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xD0E AND JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP5 ADD SWAP4 PUSH2 0x9EB JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 NOT ADD JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24C CALLER PUSH2 0xDAD JUMP JUMPDEST PUSH2 0x24C CALLER PUSH2 0xDBE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC67 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0xCAD JUMPI PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0xCAD SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xD0E AND JUMP JUMPDEST PUSH2 0x26B PUSH2 0xDCF JUMP JUMPDEST PUSH2 0x26B PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE06 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xCDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x26B PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE06 AND JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD85 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xDA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x26B PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE54 AND JUMP JUMPDEST PUSH2 0x26B PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE54 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xE1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE25 DUP3 DUP3 PUSH2 0xCC6 JUMP JUMPDEST ISZERO PUSH2 0xE2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xE69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE73 DUP3 DUP3 PUSH2 0xCC6 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xE7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0xDA8 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH2 0xDA8 SWAP2 DUP2 ADD SWAP1 DUP4 ADD PUSH2 0xEE3 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xBD9 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xEFD JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xEE9 JUMP JUMPDEST POP SWAP1 JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xc9 PUSH31 0x98EFB9F61C8F769238044B274DDCF265ED47D4444EAB2134A813FF57783B00 0x29 ", - "sourceMap": "556:4724:1:-;;;1070:235;8:9:-1;5:2;;;30:1;27;20:12;5:2;1070:235:1;;;;;;;;;;;;;156:8:5;:21;;167:10;-1:-1:-1;;;;;;156:21:5;;;;;-1:-1:-1;;;;;;188:19:5;;;;-1:-1:-1;636:29:3;;;;;-1:-1:-1;;;;;636:29:3;;;;;364:22:2;;:10;;;;:22;:::i;:::-;368:24:0;381:10;368:12;;;;:24;:::i;:::-;-1:-1:-1;1225:7:1;27:10:-1;;39:1;23:18;;45:23;;1246:1:1;1225:24;;;;;;;;-1:-1:-1;;;;;;1225:24:1;;;556:4724;;800:92:2;857:27;:14;876:7;857:18;;;;;;:27;:::i;:::-;800:92;:::o;824:96:0:-;883:29;:16;904:7;883:20;;;;;;:29;:::i;244:167:6:-;-1:-1:-1;;;;;316:21:6;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:6;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:6;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:6;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:6;:11;:20;;;;;;;;;;;;;;;725:166::o;556:4724:1:-;;;;;;;" + "object": "60806040523480156200001157600080fd5b50604051602080620010d083398101604052516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790556200006c90640100000000620000c7810204565b6200008033640100000000620000e5810204565b50600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054600160a060020a031916905562000193565b620000e260028264010000000062000e066200010082021704565b50565b620000e260038264010000000062000e066200010082021704565b600160a060020a03811615156200011657600080fd5b6200012b82826401000000006200015b810204565b156200013657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200017357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610f2d80620001a36000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632e6b6849146100bc578063341ccfcb146100dd57806334cdcf26146100fe5780633d19ab1314610133578063608d3d3d1461016757806374be75921461018857806381f909f3146101a957806399f4b251146101ca578063bb52c137146101df578063d43acc7914610206578063e9d618591461021b575b600080fd5b3480156100b157600080fd5b506100ba610230565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661024e565b3480156100e957600080fd5b506100ba600160a060020a036004351661026e565b34801561010a57600080fd5b5061011f600160a060020a0360043516610457565b604080519115158252519081900360200190f35b34801561013f57600080fd5b5061014b600435610470565b60408051600160a060020a039092168252519081900360200190f35b34801561017357600080fd5b5061011f600160a060020a036004351661049f565b34801561019457600080fd5b506100ba600160a060020a03600435166104b2565b3480156101b557600080fd5b506100ba600160a060020a03600435166104cf565b3480156101d657600080fd5b506100ba610686565b3480156101eb57600080fd5b506101f4610bd1565b60408051918252519081900360200190f35b34801561021257600080fd5b506100ba610bdc565b34801561022757600080fd5b506100ba610be5565b6102393361049f565b151561024457600080fd5b61024c610bee565b565b6102573361049f565b151561026257600080fd5b61026b81610cb5565b50565b60008054819074010000000000000000000000000000000000000000900460ff161561029957600080fd5b6102a23361049f565b15156102ad57600080fd5b6004546103e8116102bd57600080fd5b600160a060020a038316600090815260056020526040902054156102e057600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032157600080fd5b505af1158015610335573d6000803e3d6000fd5b505050506040513d602081101561034b57600080fd5b5051151561035857600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b505050506040513d60208110156103c057600080fd5b50519050600060ff8216108015906103dc575060058160ff1611155b15156103e757600080fd5b505060048054600160a060020a039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b600061046a60028363ffffffff610cc616565b92915050565b600060048260010181548110151561048457fe5b600091825260209091200154600160a060020a031692915050565b600061046a60038363ffffffff610cc616565b6104bb33610457565b15156104c657600080fd5b61026b81610cfd565b60005474010000000000000000000000000000000000000000900460ff16156104f757600080fd5b6105003361049f565b151561050b57600080fd5b60045460011061051a57600080fd5b600454600214156105865760048054600190811061053457fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff191690556001610567600482610ea0565b50600160a060020a03811660009081526005602052604081205561026b565b600454600160a060020a03821660009081526005602052604090205414610620576004805460001981019081106105b957fe5b6000918252602080832090910154600160a060020a03848116845260059092526040909220546004805492909316929181106105f157fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60048054600019810190811061063257fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff19169055600480549061066b906000198301610ea0565b50600160a060020a0316600090815260056020526040812055565b6000610690610ec4565b60008060008061069e610ec4565b60005474010000000000000000000000000000000000000000900460ff16156106c657600080fd5b6106cf33610457565b15156106da57600080fd5b6004546001106106e957600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b505050506040513d602081101561077957600080fd5b505196506000871161078a57600080fd5b600194505b6004548510156109395760048054869081106107a757fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561080557600080fd5b505af1158015610819573d6000803e3d6000fd5b505050506040513d602081101561082f57600080fd5b5051151561083c5761092e565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561087a57600080fd5b505af115801561088e573d6000803e3d6000fd5b505050506040513d60208110156108a457600080fd5b5051925060ff831615156108c6578560005b602002018051600101905261092e565b8260ff16600114156108da578560016108b6565b8260ff16600214156108ee578560026108b6565b8260ff1660031415610902578560036108b6565b8260ff1660041415610916578560046108b6565b8260ff166005141561092e5760a08601805160010190525b60019094019361078f565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e909102016028909102016032909102019150818781151561097f57fe5b04815281600a880281151561099057fe5b04602082015281601488028115156109a457fe5b04604082015281601e88028115156109b857fe5b04606082015281602888028115156109cc57fe5b04608082015281603288028115156109e057fe5b0460a0820152600194505b600454851015610bc8576004805486908110610a0357fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a6157600080fd5b505af1158015610a75573d6000803e3d6000fd5b505050506040513d6020811015610a8b57600080fd5b50511515610a9857610bbd565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b505050506040513d6020811015610b0057600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610bbd91600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610b6457600080fd5b505af1158015610b78573d6000803e3d6000fd5b505050506040513d6020811015610b8e57600080fd5b50518260ff861660068110610b9f57fe5b6020020151600154600160a060020a0316919063ffffffff610d0e16565b6001909401936109eb565b50505050505050565b600454600019015b90565b61024c33610dad565b61024c33610dbe565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b505050506040513d6020811015610c7d57600080fd5b505190506000811115610cad57600054600154610cad91600160a060020a0391821691168363ffffffff610d0e16565b61026b610dcf565b61026b60038263ffffffff610e0616565b6000600160a060020a0382161515610cdd57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61026b60028263ffffffff610e0616565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610d7157600080fd5b505af1158015610d85573d6000803e3d6000fd5b505050506040513d6020811015610d9b57600080fd5b50511515610da857600080fd5b505050565b61026b60038263ffffffff610e5416565b61026b60028263ffffffff610e5416565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a0381161515610e1b57600080fd5b610e258282610cc6565b15610e2f57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610e6957600080fd5b610e738282610cc6565b1515610e7e57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610da857600083815260209020610da8918101908301610ee3565b60c0604051908101604052806006906020820280388339509192915050565b610bd991905b80821115610efd5760008155600101610ee9565b50905600a165627a7a7230582095e26f90cc3199aca464eb563533fc93a77d60dc52f6506d09a60413c4ab2d960029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP1 PUSH3 0x10D0 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE MLOAD PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP2 DUP3 AND DUP2 OR PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND OR SWAP1 SSTORE PUSH3 0x6C SWAP1 PUSH5 0x100000000 PUSH3 0xC7 DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x80 CALLER PUSH5 0x100000000 PUSH3 0xE5 DUP2 MUL DIV JUMP JUMPDEST POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT AND SWAP1 SSTORE PUSH3 0x193 JUMP JUMPDEST PUSH3 0xE2 PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH3 0xE06 PUSH3 0x100 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0xE2 PUSH1 0x3 DUP3 PUSH5 0x100000000 PUSH3 0xE06 PUSH3 0x100 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH3 0x116 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x12B DUP3 DUP3 PUSH5 0x100000000 PUSH3 0x15B DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH3 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xF2D DUP1 PUSH3 0x1A3 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA0 JUMPI PUSH4 0xFFFFFFFF PUSH1 0xE0 PUSH1 0x2 EXP PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0xC08BF88 DUP2 EQ PUSH2 0xA5 JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0xBC JUMPI DUP1 PUSH4 0x341CCFCB EQ PUSH2 0xDD JUMPI DUP1 PUSH4 0x34CDCF26 EQ PUSH2 0xFE JUMPI DUP1 PUSH4 0x3D19AB13 EQ PUSH2 0x133 JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0x74BE7592 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0x81F909F3 EQ PUSH2 0x1A9 JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x1CA JUMPI DUP1 PUSH4 0xBB52C137 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x206 JUMPI DUP1 PUSH4 0xE9D61859 EQ PUSH2 0x21B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0x230 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x24E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x26E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11F PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x457 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14B PUSH1 0x4 CALLDATALOAD PUSH2 0x470 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11F PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x49F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x194 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x4B2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x4CF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0x686 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F4 PUSH2 0xBD1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x212 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0xBDC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x227 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0xBE5 JUMP JUMPDEST PUSH2 0x239 CALLER PUSH2 0x49F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24C PUSH2 0xBEE JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x257 CALLER PUSH2 0x49F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x26B DUP2 PUSH2 0xCB5 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A2 CALLER PUSH2 0x49F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x2AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x3E8 GT PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x2E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x321 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x335 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x358 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0xFF DUP3 AND LT DUP1 ISZERO SWAP1 PUSH2 0x3DC JUMPI POP PUSH1 0x5 DUP2 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0x3E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP5 SWAP1 SSTORE PUSH1 0x1 DUP5 ADD DUP4 SSTORE SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B SWAP1 SWAP2 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46A PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xCC6 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 DUP3 PUSH1 0x1 ADD DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x484 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46A PUSH1 0x3 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xCC6 AND JUMP JUMPDEST PUSH2 0x4BB CALLER PUSH2 0x457 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x26B DUP2 PUSH2 0xCFD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x4F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x500 CALLER PUSH2 0x49F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x50B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 LT PUSH2 0x51A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x2 EQ ISZERO PUSH2 0x586 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 SWAP1 DUP2 LT PUSH2 0x534 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE PUSH1 0x1 PUSH2 0x567 PUSH1 0x4 DUP3 PUSH2 0xEA0 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH2 0x26B JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ PUSH2 0x620 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x5B9 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 DUP2 AND DUP5 MSTORE PUSH1 0x5 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 SWAP3 KECCAK256 SLOAD PUSH1 0x4 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP3 SWAP2 DUP2 LT PUSH2 0x5F1 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x632 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD SWAP1 PUSH2 0x66B SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0xEA0 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x690 PUSH2 0xEC4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x69E PUSH2 0xEC4 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x6C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6CF CALLER PUSH2 0x457 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x6DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 LT PUSH2 0x6E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x74F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x763 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x779 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP7 POP PUSH1 0x0 DUP8 GT PUSH2 0x78A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SWAP5 POP JUMPDEST PUSH1 0x4 SLOAD DUP6 LT ISZERO PUSH2 0x939 JUMPI PUSH1 0x4 DUP1 SLOAD DUP7 SWAP1 DUP2 LT PUSH2 0x7A7 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP4 POP DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x19A74AB3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x805 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x819 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x82F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x83C JUMPI PUSH2 0x92E JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x87A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x88E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP PUSH1 0xFF DUP4 AND ISZERO ISZERO PUSH2 0x8C6 JUMPI DUP6 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE PUSH2 0x92E JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x8DA JUMPI DUP6 PUSH1 0x1 PUSH2 0x8B6 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x8EE JUMPI DUP6 PUSH1 0x2 PUSH2 0x8B6 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x902 JUMPI DUP6 PUSH1 0x3 PUSH2 0x8B6 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x916 JUMPI DUP6 PUSH1 0x4 PUSH2 0x8B6 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x92E JUMPI PUSH1 0xA0 DUP7 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE JUMPDEST PUSH1 0x1 SWAP1 SWAP5 ADD SWAP4 PUSH2 0x78F JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x40 DUP10 ADD MLOAD PUSH1 0x20 DUP11 ADD MLOAD DUP11 MLOAD PUSH1 0xA SWAP1 SWAP2 MUL ADD PUSH1 0x14 SWAP1 SWAP2 MUL ADD PUSH1 0x1E SWAP1 SWAP2 MUL ADD PUSH1 0x28 SWAP1 SWAP2 MUL ADD PUSH1 0x32 SWAP1 SWAP2 MUL ADD SWAP2 POP DUP2 DUP8 DUP2 ISZERO ISZERO PUSH2 0x97F JUMPI INVALID JUMPDEST DIV DUP2 MSTORE DUP2 PUSH1 0xA DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x990 JUMPI INVALID JUMPDEST DIV PUSH1 0x20 DUP3 ADD MSTORE DUP2 PUSH1 0x14 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x9A4 JUMPI INVALID JUMPDEST DIV PUSH1 0x40 DUP3 ADD MSTORE DUP2 PUSH1 0x1E DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x9B8 JUMPI INVALID JUMPDEST DIV PUSH1 0x60 DUP3 ADD MSTORE DUP2 PUSH1 0x28 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x9CC JUMPI INVALID JUMPDEST DIV PUSH1 0x80 DUP3 ADD MSTORE DUP2 PUSH1 0x32 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x9E0 JUMPI INVALID JUMPDEST DIV PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x1 SWAP5 POP JUMPDEST PUSH1 0x4 SLOAD DUP6 LT ISZERO PUSH2 0xBC8 JUMPI PUSH1 0x4 DUP1 SLOAD DUP7 SWAP1 DUP2 LT PUSH2 0xA03 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP4 POP DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x19A74AB3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA75 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xA98 JUMPI PUSH2 0xBBD JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAEA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x302C11CA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP5 POP PUSH2 0xBBD SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND SWAP2 PUSH4 0x302C11CA SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB78 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 PUSH1 0xFF DUP7 AND PUSH1 0x6 DUP2 LT PUSH2 0xB9F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xD0E AND JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP5 ADD SWAP4 PUSH2 0x9EB JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 NOT ADD JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24C CALLER PUSH2 0xDAD JUMP JUMPDEST PUSH2 0x24C CALLER PUSH2 0xDBE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC67 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0xCAD JUMPI PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0xCAD SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xD0E AND JUMP JUMPDEST PUSH2 0x26B PUSH2 0xDCF JUMP JUMPDEST PUSH2 0x26B PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE06 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xCDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x26B PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE06 AND JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD85 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xDA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x26B PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE54 AND JUMP JUMPDEST PUSH2 0x26B PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE54 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xE1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE25 DUP3 DUP3 PUSH2 0xCC6 JUMP JUMPDEST ISZERO PUSH2 0xE2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xE69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE73 DUP3 DUP3 PUSH2 0xCC6 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xE7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0xDA8 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH2 0xDA8 SWAP2 DUP2 ADD SWAP1 DUP4 ADD PUSH2 0xEE3 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xBD9 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xEFD JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xEE9 JUMP JUMPDEST POP SWAP1 JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 SWAP6 0xe2 PUSH16 0x90CC3199ACA464EB563533FC93A77D60 0xdc MSTORE 0xf6 POP PUSH14 0x9A60413C4AB2D96002900000000 ", + "sourceMap": "556:4772:1:-;;;1118:235;8:9:-1;5:2;;;30:1;27;20:12;5:2;1118:235:1;;;;;;;;;;;;;156:8:5;:21;;167:10;-1:-1:-1;;;;;;156:21:5;;;;;-1:-1:-1;;;;;;188:19:5;;;;-1:-1:-1;636:29:3;;;;;-1:-1:-1;;;;;636:29:3;;;;;364:22:2;;:10;;;;:22;:::i;:::-;368:24:0;381:10;368:12;;;;:24;:::i;:::-;-1:-1:-1;1273:7:1;27:10:-1;;39:1;23:18;;45:23;;1294:1:1;1273:24;;;;;;;;-1:-1:-1;;;;;;1273:24:1;;;556:4772;;800:92:2;857:27;:14;876:7;857:18;;;;;;:27;:::i;:::-;800:92;:::o;824:96:0:-;883:29;:16;904:7;883:20;;;;;;:29;:::i;244:167:6:-;-1:-1:-1;;;;;316:21:6;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:6;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:6;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:6;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:6;:11;:20;;;;;;;;;;;;;;;725:166::o;556:4772:1:-;;;;;;;" }, "gasEstimates": { "creation": { @@ -299,7 +299,7 @@ "unregisterMiner(address)": "81f909f3" } }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"terminate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"registerMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSystem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getMinerByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"unregisterMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMinerCount\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol\":\"AlgoFees\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol\":{\"keccak256\":\"0x143e742903e9fb652810dd60b96a084f550c5308784c4797270c651a3f407447\",\"urls\":[\"bzzr://a56b09e9fc46585c07a4fd9cd33c6624e86c745582536921fc16a9eda742f988\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol\":{\"keccak256\":\"0x6fffe504e6805d95ca42269cc995a3de9401a12bc037068b056c186ce8569d8d\",\"urls\":[\"bzzr://a0923a2d2b1e4992f552ce49638b19d6d8328950c1d5dc1395f0d625daf21c68\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol\":{\"keccak256\":\"0x71adbf7f060599239b7a981594e43dc8fbe8597fd2853b6fe9e70ff39883d73a\",\"urls\":[\"bzzr://70691c1638cdc0f744f8c5b5a94e4f857ba40ad053816cfbd15e13ed41a3bc66\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0xdc21d3ce2e847a83e62a95fc4e8a31305771c1c6549fba2102ae9a7caa09a1e5\",\"urls\":[\"bzzr://291aa93e18c12398d6d8031308b1a0231d253ec061a5449d0335bd476554383e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol\":{\"keccak256\":\"0x29a8fa3204dbd204355714601ce21d7d717a586a4de21009d8f2a3ca7981963f\",\"urls\":[\"bzzr://55d9b762620cef1e6f7b11a26d6cc123f5b608a59e0d36f9bc0a1e8ff0ff5c42\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"terminate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"registerMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSystem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getMinerByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"unregisterMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMinerCount\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol\":\"AlgoFees\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol\":{\"keccak256\":\"0x6c460b19697e0bbddcd6e319f2e8b5be033832eaf4d00e01a7ca7c95a514dd8c\",\"urls\":[\"bzzr://b99c4032a4291fdae1b1b51bee962ebfdc45ca26504858e297e8e85c20154308\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol\":{\"keccak256\":\"0x6fffe504e6805d95ca42269cc995a3de9401a12bc037068b056c186ce8569d8d\",\"urls\":[\"bzzr://a0923a2d2b1e4992f552ce49638b19d6d8328950c1d5dc1395f0d625daf21c68\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol\":{\"keccak256\":\"0x71adbf7f060599239b7a981594e43dc8fbe8597fd2853b6fe9e70ff39883d73a\",\"urls\":[\"bzzr://70691c1638cdc0f744f8c5b5a94e4f857ba40ad053816cfbd15e13ed41a3bc66\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0x1b1359f75f7d5a943ab06caea36824f0a6448c5ffa1a32ed7e26cee81cf3683a\",\"urls\":[\"bzzr://26177d59d0c84fa4e632538fbd44802f219e6501b0828533badcf80701cea0f5\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol\":{\"keccak256\":\"0x29a8fa3204dbd204355714601ce21d7d717a586a4de21009d8f2a3ca7981963f\",\"urls\":[\"bzzr://55d9b762620cef1e6f7b11a26d6cc123f5b608a59e0d36f9bc0a1e8ff0ff5c42\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -459,6 +459,20 @@ "stateMutability": "view", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "getReferral", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [], @@ -503,6 +517,7 @@ "getCategory()": "80258e47", "getMiner()": "302c11ca", "getMinerType()": "4969ae70", + "getReferral()": "329b1c92", "isAlgoMiner()": "1777fb4b", "isMining()": "19a74ab3" } @@ -882,7 +897,7 @@ "id": 2, "nodeType": "ImportDirective", "scope": 87, - "sourceUnit": 910, + "sourceUnit": 915, "src": "28:189:0", "symbolAliases": [], "unitAlias": "" @@ -907,10 +922,10 @@ "id": 3, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 909, + "referencedDeclaration": 914, "src": "260:5:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$909", + "typeIdentifier": "t_contract$_Roles_$914", "typeString": "library Roles" } }, @@ -921,10 +936,10 @@ "id": 4, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 822, + "referencedDeclaration": 827, "src": "270:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$822_storage_ptr", + "typeIdentifier": "t_struct$_Role_$827_storage_ptr", "typeString": "struct Roles.Role" } } @@ -939,7 +954,7 @@ "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$822_storage", + "typeIdentifier": "t_struct$_Role_$827_storage", "typeString": "struct Roles.Role" }, "typeName": { @@ -947,10 +962,10 @@ "id": 6, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 822, + "referencedDeclaration": 827, "src": "289:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$822_storage_ptr", + "typeIdentifier": "t_struct$_Role_$827_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -975,7 +990,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1265, + "referencedDeclaration": 1270, "src": "381:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1083,7 +1098,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1265, + "referencedDeclaration": 1270, "src": "462:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1149,10 +1164,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1268, - 1269 + 1273, + 1274 ], - "referencedDeclaration": 1268, + "referencedDeclaration": 1273, "src": "443:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -1237,7 +1252,7 @@ "referencedDeclaration": 7, "src": "584:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$822_storage", + "typeIdentifier": "t_struct$_Role_$827_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1248,10 +1263,10 @@ "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 908, + "referencedDeclaration": 913, "src": "584:20:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$822_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$822_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$827_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$827_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, @@ -1511,7 +1526,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1265, + "referencedDeclaration": 1270, "src": "797:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1638,7 +1653,7 @@ "referencedDeclaration": 7, "src": "883:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$822_storage", + "typeIdentifier": "t_struct$_Role_$827_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1649,10 +1664,10 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 854, + "referencedDeclaration": 859, "src": "883:20:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$822_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$822_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$827_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$827_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -1770,7 +1785,7 @@ "referencedDeclaration": 7, "src": "990:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$822_storage", + "typeIdentifier": "t_struct$_Role_$827_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1781,10 +1796,10 @@ "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 885, + "referencedDeclaration": 890, "src": "990:23:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$822_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$822_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$827_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$827_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -1898,7 +1913,7 @@ "id": 89, "nodeType": "ImportDirective", "scope": 607, - "sourceUnit": 1107, + "sourceUnit": 1112, "src": "27:195:1", "symbolAliases": [], "unitAlias": "" @@ -1909,7 +1924,7 @@ "id": 90, "nodeType": "ImportDirective", "scope": 607, - "sourceUnit": 1251, + "sourceUnit": 1256, "src": "224:198:1", "symbolAliases": [], "unitAlias": "" @@ -1920,7 +1935,7 @@ "id": 91, "nodeType": "ImportDirective", "scope": 607, - "sourceUnit": 779, + "sourceUnit": 784, "src": "426:26:1", "symbolAliases": [], "unitAlias": "" @@ -2017,9 +2032,9 @@ ], "contractDependencies": [ 86, - 693, 750, - 815 + 693, + 820 ], "contractKind": "contract", "documentation": null, @@ -2030,7 +2045,7 @@ 86, 693, 750, - 815 + 820 ], "name": "AlgoFees", "nodeType": "ContractDefinition", @@ -2042,10 +2057,10 @@ "id": 101, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1250, + "referencedDeclaration": 1255, "src": "641:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1250", + "typeIdentifier": "t_contract$_SafeERC20_$1255", "typeString": "library SafeERC20" } }, @@ -2056,10 +2071,10 @@ "id": 102, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1106, + "referencedDeclaration": 1111, "src": "655:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1106", + "typeIdentifier": "t_contract$_IERC20_$1111", "typeString": "contract IERC20" } } @@ -2070,7 +2085,7 @@ "name": "CAT_0_VALUE_PROPORTION", "nodeType": "VariableDeclaration", "scope": 606, - "src": "670:43:1", + "src": "670:51:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2097,7 +2112,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "712:1:1", + "src": "720:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -2105,7 +2120,7 @@ }, "value": "1" }, - "visibility": "internal" + "visibility": "private" }, { "constant": true, @@ -2113,7 +2128,7 @@ "name": "CAT_1_VALUE_PROPORTION", "nodeType": "VariableDeclaration", "scope": 606, - "src": "720:44:1", + "src": "728:52:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2124,7 +2139,7 @@ "id": 107, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "720:7:1", + "src": "728:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2140,7 +2155,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "762:2:1", + "src": "778:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", @@ -2148,7 +2163,7 @@ }, "value": "10" }, - "visibility": "internal" + "visibility": "private" }, { "constant": true, @@ -2156,7 +2171,7 @@ "name": "CAT_2_VALUE_PROPORTION", "nodeType": "VariableDeclaration", "scope": 606, - "src": "771:44:1", + "src": "787:52:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2167,7 +2182,7 @@ "id": 110, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "771:7:1", + "src": "787:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2183,7 +2198,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "813:2:1", + "src": "837:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_20_by_1", @@ -2191,7 +2206,7 @@ }, "value": "20" }, - "visibility": "internal" + "visibility": "private" }, { "constant": true, @@ -2199,7 +2214,7 @@ "name": "CAT_3_VALUE_PROPORTION", "nodeType": "VariableDeclaration", "scope": 606, - "src": "822:44:1", + "src": "846:52:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2210,7 +2225,7 @@ "id": 113, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "822:7:1", + "src": "846:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2226,7 +2241,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "864:2:1", + "src": "896:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_30_by_1", @@ -2234,7 +2249,7 @@ }, "value": "30" }, - "visibility": "internal" + "visibility": "private" }, { "constant": true, @@ -2242,7 +2257,7 @@ "name": "CAT_4_VALUE_PROPORTION", "nodeType": "VariableDeclaration", "scope": 606, - "src": "873:44:1", + "src": "905:52:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2253,7 +2268,7 @@ "id": 116, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "873:7:1", + "src": "905:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2269,7 +2284,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "915:2:1", + "src": "955:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_40_by_1", @@ -2277,7 +2292,7 @@ }, "value": "40" }, - "visibility": "internal" + "visibility": "private" }, { "constant": true, @@ -2285,7 +2300,7 @@ "name": "CAT_5_VALUE_PROPORTION", "nodeType": "VariableDeclaration", "scope": 606, - "src": "924:44:1", + "src": "964:52:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2296,7 +2311,7 @@ "id": 119, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "924:7:1", + "src": "964:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2312,7 +2327,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "966:2:1", + "src": "1014:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_50_by_1", @@ -2320,7 +2335,7 @@ }, "value": "50" }, - "visibility": "internal" + "visibility": "private" }, { "constant": false, @@ -2328,7 +2343,7 @@ "name": "_miners", "nodeType": "VariableDeclaration", "scope": 606, - "src": "977:25:1", + "src": "1025:25:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2340,7 +2355,7 @@ "id": 122, "name": "address", "nodeType": "ElementaryTypeName", - "src": "977:7:1", + "src": "1025:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2349,7 +2364,7 @@ "id": 123, "length": null, "nodeType": "ArrayTypeName", - "src": "977:9:1", + "src": "1025:9:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -2364,7 +2379,7 @@ "name": "_minersByAddress", "nodeType": "VariableDeclaration", "scope": 606, - "src": "1009:52:1", + "src": "1057:52:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2377,14 +2392,14 @@ "id": 125, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1017:7:1", + "src": "1065:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "1009:27:1", + "src": "1057:27:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" @@ -2393,7 +2408,7 @@ "id": 126, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1028:7:1", + "src": "1076:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2407,7 +2422,7 @@ "body": { "id": 148, "nodeType": "Block", - "src": "1214:91:1", + "src": "1262:91:1", "statements": [ { "expression": { @@ -2426,7 +2441,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1246:1:1", + "src": "1294:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2448,7 +2463,7 @@ "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1238:7:1", + "src": "1286:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" @@ -2463,7 +2478,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1238:10:1", + "src": "1286:10:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2484,7 +2499,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "1225:7:1", + "src": "1273:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -2498,7 +2513,7 @@ "memberName": "push", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1225:12:1", + "src": "1273:12:1", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", "typeString": "function (address) returns (uint256)" @@ -2512,7 +2527,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1225:24:1", + "src": "1273:24:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2520,7 +2535,7 @@ }, "id": 147, "nodeType": "ExpressionStatement", - "src": "1225:24:1" + "src": "1273:24:1" } ] }, @@ -2539,7 +2554,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 130, - "src": "1130:12:1", + "src": "1178:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2554,14 +2569,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 750, - "src": "1113:16:1", + "src": "1161:16:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ERC20TokenHolder_$750_$", "typeString": "type(contract ERC20TokenHolder)" } }, "nodeType": "ModifierInvocation", - "src": "1113:30:1" + "src": "1161:30:1" }, { "arguments": [], @@ -2573,14 +2588,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 693, - "src": "1153:14:1", + "src": "1201:14:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_AlgoSystemRole_$693_$", "typeString": "type(contract AlgoSystemRole)" } }, "nodeType": "ModifierInvocation", - "src": "1153:16:1" + "src": "1201:16:1" }, { "arguments": [], @@ -2592,14 +2607,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86, - "src": "1179:16:1", + "src": "1227:16:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_AlgoCoreTeamRole_$86_$", "typeString": "type(contract AlgoCoreTeamRole)" } }, "nodeType": "ModifierInvocation", - "src": "1179:18:1" + "src": "1227:18:1" } ], "name": "", @@ -2614,7 +2629,7 @@ "name": "tokenAddress", "nodeType": "VariableDeclaration", "scope": 149, - "src": "1082:20:1", + "src": "1130:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2625,7 +2640,7 @@ "id": 129, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1082:7:1", + "src": "1130:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2635,17 +2650,17 @@ "visibility": "internal" } ], - "src": "1081:22:1" + "src": "1129:22:1" }, "payable": false, "returnParameters": { "id": 139, "nodeType": "ParameterList", "parameters": [], - "src": "1214:0:1" + "src": "1262:0:1" }, "scope": 606, - "src": "1070:235:1", + "src": "1118:235:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -2654,7 +2669,7 @@ "body": { "id": 214, "nodeType": "Block", - "src": "1392:442:1", + "src": "1440:442:1", "statements": [ { "expression": { @@ -2680,7 +2695,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "1411:7:1", + "src": "1459:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -2694,7 +2709,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1411:14:1", + "src": "1459:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2712,7 +2727,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1428:4:1", + "src": "1476:4:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000_by_1", @@ -2720,7 +2735,7 @@ }, "value": "1000" }, - "src": "1411:21:1", + "src": "1459:21:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2738,11 +2753,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1268, - 1269 + 1273, + 1274 ], - "referencedDeclaration": 1268, - "src": "1403:7:1", + "referencedDeclaration": 1273, + "src": "1451:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -2756,7 +2771,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1403:30:1", + "src": "1451:30:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -2764,7 +2779,7 @@ }, "id": 164, "nodeType": "ExpressionStatement", - "src": "1403:30:1" + "src": "1451:30:1" }, { "expression": { @@ -2790,7 +2805,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 128, - "src": "1452:16:1", + "src": "1500:16:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" @@ -2804,7 +2819,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 151, - "src": "1469:12:1", + "src": "1517:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2815,7 +2830,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1452:30:1", + "src": "1500:30:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2833,7 +2848,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1486:1:1", + "src": "1534:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2841,7 +2856,7 @@ }, "value": "0" }, - "src": "1452:35:1", + "src": "1500:35:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2859,11 +2874,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1268, - 1269 + 1273, + 1274 ], - "referencedDeclaration": 1268, - "src": "1444:7:1", + "referencedDeclaration": 1273, + "src": "1492:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -2877,7 +2892,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1444:44:1", + "src": "1492:44:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -2885,7 +2900,7 @@ }, "id": 172, "nodeType": "ExpressionStatement", - "src": "1444:44:1" + "src": "1492:44:1" }, { "assignments": [ @@ -2898,11 +2913,11 @@ "name": "algoMiner", "nodeType": "VariableDeclaration", "scope": 215, - "src": "1501:20:1", + "src": "1549:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$778", + "typeIdentifier": "t_contract$_IAlgoMiner_$783", "typeString": "contract IAlgoMiner" }, "typeName": { @@ -2910,10 +2925,10 @@ "id": 173, "name": "IAlgoMiner", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 778, - "src": "1501:10:1", + "referencedDeclaration": 783, + "src": "1549:10:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$778", + "typeIdentifier": "t_contract$_IAlgoMiner_$783", "typeString": "contract IAlgoMiner" } }, @@ -2932,7 +2947,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 151, - "src": "1535:12:1", + "src": "1583:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2950,10 +2965,10 @@ "name": "IAlgoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 778, - "src": "1524:10:1", + "referencedDeclaration": 783, + "src": "1572:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$778_$", + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$783_$", "typeString": "type(contract IAlgoMiner)" } }, @@ -2965,14 +2980,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1524:24:1", + "src": "1572:24:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$778", + "typeIdentifier": "t_contract$_IAlgoMiner_$783", "typeString": "contract IAlgoMiner" } }, "nodeType": "VariableDeclarationStatement", - "src": "1501:47:1" + "src": "1549:47:1" }, { "expression": { @@ -2990,9 +3005,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, - "src": "1577:9:1", + "src": "1625:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$778", + "typeIdentifier": "t_contract$_IAlgoMiner_$783", "typeString": "contract IAlgoMiner" } }, @@ -3004,7 +3019,7 @@ "memberName": "isAlgoMiner", "nodeType": "MemberAccess", "referencedDeclaration": 757, - "src": "1577:21:1", + "src": "1625:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$__$returns$_t_bool_$", "typeString": "function () pure external returns (bool)" @@ -3018,7 +3033,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1577:23:1", + "src": "1625:23:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3036,11 +3051,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1268, - 1269 + 1273, + 1274 ], - "referencedDeclaration": 1268, - "src": "1569:7:1", + "referencedDeclaration": 1273, + "src": "1617:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -3054,7 +3069,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1569:32:1", + "src": "1617:32:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -3062,7 +3077,7 @@ }, "id": 184, "nodeType": "ExpressionStatement", - "src": "1569:32:1" + "src": "1617:32:1" }, { "assignments": [ @@ -3075,7 +3090,7 @@ "name": "minerCategory", "nodeType": "VariableDeclaration", "scope": 215, - "src": "1622:19:1", + "src": "1670:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3086,7 +3101,7 @@ "id": 185, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1622:5:1", + "src": "1670:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3109,9 +3124,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, - "src": "1644:9:1", + "src": "1692:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$778", + "typeIdentifier": "t_contract$_IAlgoMiner_$783", "typeString": "contract IAlgoMiner" } }, @@ -3123,7 +3138,7 @@ "memberName": "getCategory", "nodeType": "MemberAccess", "referencedDeclaration": 767, - "src": "1644:21:1", + "src": "1692:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" @@ -3137,14 +3152,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1644:23:1", + "src": "1692:23:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", - "src": "1622:45:1" + "src": "1670:45:1" }, { "expression": { @@ -3179,7 +3194,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 186, - "src": "1688:13:1", + "src": "1736:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3197,7 +3212,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1705:1:1", + "src": "1753:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3205,7 +3220,7 @@ }, "value": "0" }, - "src": "1688:18:1", + "src": "1736:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3231,7 +3246,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 186, - "src": "1710:13:1", + "src": "1758:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3249,7 +3264,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1727:1:1", + "src": "1775:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -3257,13 +3272,13 @@ }, "value": "5" }, - "src": "1710:18:1", + "src": "1758:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1688:40:1", + "src": "1736:40:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3281,11 +3296,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1268, - 1269 + 1273, + 1274 ], - "referencedDeclaration": 1268, - "src": "1680:7:1", + "referencedDeclaration": 1273, + "src": "1728:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -3299,7 +3314,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1680:49:1", + "src": "1728:49:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -3307,7 +3322,7 @@ }, "id": 200, "nodeType": "ExpressionStatement", - "src": "1680:49:1" + "src": "1728:49:1" }, { "expression": { @@ -3326,7 +3341,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 128, - "src": "1742:16:1", + "src": "1790:16:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" @@ -3340,7 +3355,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 151, - "src": "1759:12:1", + "src": "1807:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3351,7 +3366,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1742:30:1", + "src": "1790:30:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3368,7 +3383,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "1775:7:1", + "src": "1823:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -3382,13 +3397,13 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1775:14:1", + "src": "1823:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1742:47:1", + "src": "1790:47:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3396,7 +3411,7 @@ }, "id": 207, "nodeType": "ExpressionStatement", - "src": "1742:47:1" + "src": "1790:47:1" }, { "expression": { @@ -3409,7 +3424,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 151, - "src": "1813:12:1", + "src": "1861:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3430,7 +3445,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "1800:7:1", + "src": "1848:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -3444,7 +3459,7 @@ "memberName": "push", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1800:12:1", + "src": "1848:12:1", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", "typeString": "function (address) returns (uint256)" @@ -3458,7 +3473,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1800:26:1", + "src": "1848:26:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3466,7 +3481,7 @@ }, "id": 213, "nodeType": "ExpressionStatement", - "src": "1800:26:1" + "src": "1848:26:1" } ] }, @@ -3485,15 +3500,15 @@ "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 806, - "src": "1365:13:1", + "referencedDeclaration": 811, + "src": "1413:13:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1365:13:1" + "src": "1413:13:1" }, { "arguments": null, @@ -3505,14 +3520,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, - "src": "1379:12:1", + "src": "1427:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1379:12:1" + "src": "1427:12:1" } ], "name": "registerMiner", @@ -3527,7 +3542,7 @@ "name": "minerAddress", "nodeType": "VariableDeclaration", "scope": 215, - "src": "1336:20:1", + "src": "1384:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3538,7 +3553,7 @@ "id": 150, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1336:7:1", + "src": "1384:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3548,17 +3563,17 @@ "visibility": "internal" } ], - "src": "1335:22:1" + "src": "1383:22:1" }, "payable": false, "returnParameters": { "id": 157, "nodeType": "ParameterList", "parameters": [], - "src": "1392:0:1" + "src": "1440:0:1" }, "scope": 606, - "src": "1313:521:1", + "src": "1361:521:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -3567,7 +3582,7 @@ "body": { "id": 293, "nodeType": "Block", - "src": "1923:682:1", + "src": "1971:682:1", "statements": [ { "expression": { @@ -3593,7 +3608,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "1942:7:1", + "src": "1990:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -3607,7 +3622,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1942:14:1", + "src": "1990:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3625,7 +3640,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1959:1:1", + "src": "2007:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -3633,7 +3648,7 @@ }, "value": "1" }, - "src": "1942:18:1", + "src": "1990:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3651,11 +3666,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1268, - 1269 + 1273, + 1274 ], - "referencedDeclaration": 1268, - "src": "1934:7:1", + "referencedDeclaration": 1273, + "src": "1982:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -3669,7 +3684,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1934:27:1", + "src": "1982:27:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -3677,7 +3692,7 @@ }, "id": 230, "nodeType": "ExpressionStatement", - "src": "1934:27:1" + "src": "1982:27:1" }, { "condition": { @@ -3700,7 +3715,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "1977:7:1", + "src": "2025:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -3714,7 +3729,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1977:14:1", + "src": "2025:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3732,7 +3747,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1995:1:1", + "src": "2043:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -3740,7 +3755,7 @@ }, "value": "2" }, - "src": "1977:19:1", + "src": "2025:19:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3749,7 +3764,7 @@ "falseBody": { "id": 291, "nodeType": "Block", - "src": "2210:388:1", + "src": "2258:388:1", "statements": [ { "condition": { @@ -3772,7 +3787,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 128, - "src": "2242:16:1", + "src": "2290:16:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" @@ -3786,7 +3801,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 217, - "src": "2259:12:1", + "src": "2307:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3797,7 +3812,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2242:30:1", + "src": "2290:30:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3814,7 +3829,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "2276:7:1", + "src": "2324:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -3828,13 +3843,13 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2276:14:1", + "src": "2324:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2242:48:1", + "src": "2290:48:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3843,11 +3858,11 @@ "falseBody": null, "id": 272, "nodeType": "IfStatement", - "src": "2239:214:1", + "src": "2287:214:1", "trueBody": { "id": 271, "nodeType": "Block", - "src": "2292:161:1", + "src": "2340:161:1", "statements": [ { "expression": { @@ -3866,7 +3881,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "2368:7:1", + "src": "2416:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -3882,7 +3897,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 128, - "src": "2376:16:1", + "src": "2424:16:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" @@ -3896,7 +3911,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 217, - "src": "2393:12:1", + "src": "2441:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3907,7 +3922,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2376:30:1", + "src": "2424:30:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3918,7 +3933,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2368:39:1", + "src": "2416:39:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3935,7 +3950,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "2410:7:1", + "src": "2458:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -3962,7 +3977,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "2418:7:1", + "src": "2466:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -3976,7 +3991,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2418:14:1", + "src": "2466:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3994,7 +4009,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2435:1:1", + "src": "2483:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -4002,7 +4017,7 @@ }, "value": "1" }, - "src": "2418:18:1", + "src": "2466:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4013,13 +4028,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2410:27:1", + "src": "2458:27:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2368:69:1", + "src": "2416:69:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4027,7 +4042,7 @@ }, "id": 270, "nodeType": "ExpressionStatement", - "src": "2368:69:1" + "src": "2416:69:1" } ] } @@ -4043,7 +4058,7 @@ "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, - "src": "2469:34:1", + "src": "2517:34:1", "subExpression": { "argumentTypes": null, "baseExpression": { @@ -4053,7 +4068,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "2476:7:1", + "src": "2524:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -4080,7 +4095,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "2484:7:1", + "src": "2532:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -4094,7 +4109,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2484:14:1", + "src": "2532:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4112,7 +4127,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2501:1:1", + "src": "2549:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -4120,7 +4135,7 @@ }, "value": "1" }, - "src": "2484:18:1", + "src": "2532:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4131,7 +4146,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2476:27:1", + "src": "2524:27:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4144,7 +4159,7 @@ }, "id": 280, "nodeType": "ExpressionStatement", - "src": "2469:34:1" + "src": "2517:34:1" }, { "expression": { @@ -4157,7 +4172,7 @@ "nodeType": "UnaryOperation", "operator": "--", "prefix": false, - "src": "2518:16:1", + "src": "2566:16:1", "subExpression": { "argumentTypes": null, "expression": { @@ -4167,7 +4182,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "2518:7:1", + "src": "2566:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -4181,7 +4196,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2518:14:1", + "src": "2566:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4194,7 +4209,7 @@ }, "id": 285, "nodeType": "ExpressionStatement", - "src": "2518:16:1" + "src": "2566:16:1" }, { "expression": { @@ -4207,7 +4222,7 @@ "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, - "src": "2549:37:1", + "src": "2597:37:1", "subExpression": { "argumentTypes": null, "baseExpression": { @@ -4217,7 +4232,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 128, - "src": "2556:16:1", + "src": "2604:16:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" @@ -4231,7 +4246,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 217, - "src": "2573:12:1", + "src": "2621:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4242,7 +4257,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2556:30:1", + "src": "2604:30:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4255,17 +4270,17 @@ }, "id": 290, "nodeType": "ExpressionStatement", - "src": "2549:37:1" + "src": "2597:37:1" } ] }, "id": 292, "nodeType": "IfStatement", - "src": "1974:624:1", + "src": "2022:624:1", "trueBody": { "id": 251, "nodeType": "Block", - "src": "1998:206:1", + "src": "2046:206:1", "statements": [ { "expression": { @@ -4278,7 +4293,7 @@ "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, - "src": "2080:17:1", + "src": "2128:17:1", "subExpression": { "argumentTypes": null, "baseExpression": { @@ -4288,7 +4303,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "2087:7:1", + "src": "2135:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -4305,7 +4320,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2095:1:1", + "src": "2143:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -4318,7 +4333,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2087:10:1", + "src": "2135:10:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4331,7 +4346,7 @@ }, "id": 239, "nodeType": "ExpressionStatement", - "src": "2080:17:1" + "src": "2128:17:1" }, { "expression": { @@ -4350,7 +4365,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "2112:7:1", + "src": "2160:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -4364,7 +4379,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2112:14:1", + "src": "2160:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4382,7 +4397,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2129:1:1", + "src": "2177:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -4390,7 +4405,7 @@ }, "value": "1" }, - "src": "2112:18:1", + "src": "2160:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4398,7 +4413,7 @@ }, "id": 245, "nodeType": "ExpressionStatement", - "src": "2112:18:1" + "src": "2160:18:1" }, { "expression": { @@ -4411,7 +4426,7 @@ "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, - "src": "2145:37:1", + "src": "2193:37:1", "subExpression": { "argumentTypes": null, "baseExpression": { @@ -4421,7 +4436,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 128, - "src": "2152:16:1", + "src": "2200:16:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" @@ -4435,7 +4450,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 217, - "src": "2169:12:1", + "src": "2217:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4446,7 +4461,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2152:30:1", + "src": "2200:30:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4459,7 +4474,7 @@ }, "id": 250, "nodeType": "ExpressionStatement", - "src": "2145:37:1" + "src": "2193:37:1" } ] } @@ -4481,15 +4496,15 @@ "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 806, - "src": "1896:13:1", + "referencedDeclaration": 811, + "src": "1944:13:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1896:13:1" + "src": "1944:13:1" }, { "arguments": null, @@ -4501,14 +4516,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, - "src": "1910:12:1", + "src": "1958:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1910:12:1" + "src": "1958:12:1" } ], "name": "unregisterMiner", @@ -4523,7 +4538,7 @@ "name": "minerAddress", "nodeType": "VariableDeclaration", "scope": 294, - "src": "1867:20:1", + "src": "1915:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4534,7 +4549,7 @@ "id": 216, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1867:7:1", + "src": "1915:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4544,17 +4559,17 @@ "visibility": "internal" } ], - "src": "1866:22:1" + "src": "1914:22:1" }, "payable": false, "returnParameters": { "id": 223, "nodeType": "ParameterList", "parameters": [], - "src": "1923:0:1" + "src": "1971:0:1" }, "scope": 606, - "src": "1842:763:1", + "src": "1890:763:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -4563,7 +4578,7 @@ "body": { "id": 570, "nodeType": "Block", - "src": "2661:2307:1", + "src": "2709:2307:1", "statements": [ { "expression": { @@ -4589,7 +4604,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "2680:7:1", + "src": "2728:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -4603,7 +4618,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2680:14:1", + "src": "2728:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4621,7 +4636,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2697:1:1", + "src": "2745:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -4629,7 +4644,7 @@ }, "value": "1" }, - "src": "2680:18:1", + "src": "2728:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4647,11 +4662,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1268, - 1269 + 1273, + 1274 ], - "referencedDeclaration": 1268, - "src": "2672:7:1", + "referencedDeclaration": 1273, + "src": "2720:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -4665,7 +4680,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2672:27:1", + "src": "2720:27:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -4673,7 +4688,7 @@ }, "id": 307, "nodeType": "ExpressionStatement", - "src": "2672:27:1" + "src": "2720:27:1" }, { "assignments": [ @@ -4686,7 +4701,7 @@ "name": "currentFeesBalance", "nodeType": "VariableDeclaration", "scope": 571, - "src": "2712:26:1", + "src": "2760:26:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4697,7 +4712,7 @@ "id": 308, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2712:7:1", + "src": "2760:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4720,8 +4735,8 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1296, - "src": "2766:4:1", + "referencedDeclaration": 1301, + "src": "2814:4:1", "typeDescriptions": { "typeIdentifier": "t_contract$_AlgoFees_$606", "typeString": "contract AlgoFees" @@ -4741,7 +4756,7 @@ "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2758:7:1", + "src": "2806:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" @@ -4756,7 +4771,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2758:13:1", + "src": "2806:13:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4777,9 +4792,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 705, - "src": "2741:6:1", + "src": "2789:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1106", + "typeIdentifier": "t_contract$_IERC20_$1111", "typeString": "contract IERC20" } }, @@ -4790,8 +4805,8 @@ "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 1051, - "src": "2741:16:1", + "referencedDeclaration": 1056, + "src": "2789:16:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" @@ -4805,14 +4820,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2741:31:1", + "src": "2789:31:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2712:60:1" + "src": "2760:60:1" }, { "expression": { @@ -4836,7 +4851,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 309, - "src": "2787:18:1", + "src": "2835:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4854,7 +4869,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2808:1:1", + "src": "2856:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4862,7 +4877,7 @@ }, "value": "0" }, - "src": "2787:22:1", + "src": "2835:22:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4880,11 +4895,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1268, - 1269 + 1273, + 1274 ], - "referencedDeclaration": 1268, - "src": "2779:7:1", + "referencedDeclaration": 1273, + "src": "2827:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -4898,7 +4913,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2779:31:1", + "src": "2827:31:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -4906,7 +4921,7 @@ }, "id": 322, "nodeType": "ExpressionStatement", - "src": "2779:31:1" + "src": "2827:31:1" }, { "assignments": [], @@ -4917,7 +4932,7 @@ "name": "miners", "nodeType": "VariableDeclaration", "scope": 571, - "src": "2894:24:1", + "src": "2942:24:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4929,7 +4944,7 @@ "id": 325, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2894:7:1", + "src": "2942:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4946,7 +4961,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2902:1:1", + "src": "2950:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": null, @@ -4955,7 +4970,7 @@ "value": "6" }, "nodeType": "ArrayTypeName", - "src": "2894:10:1", + "src": "2942:10:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr", "typeString": "uint256[6]" @@ -4968,13 +4983,13 @@ "id": 328, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2894:24:1" + "src": "2942:24:1" }, { "body": { "id": 420, "nodeType": "Block", - "src": "2975:657:1", + "src": "3023:657:1", "statements": [ { "assignments": [ @@ -4987,11 +5002,11 @@ "name": "algoMiner", "nodeType": "VariableDeclaration", "scope": 571, - "src": "2990:20:1", + "src": "3038:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$778", + "typeIdentifier": "t_contract$_IAlgoMiner_$783", "typeString": "contract IAlgoMiner" }, "typeName": { @@ -4999,10 +5014,10 @@ "id": 340, "name": "IAlgoMiner", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 778, - "src": "2990:10:1", + "referencedDeclaration": 783, + "src": "3038:10:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$778", + "typeIdentifier": "t_contract$_IAlgoMiner_$783", "typeString": "contract IAlgoMiner" } }, @@ -5023,7 +5038,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "3024:7:1", + "src": "3072:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -5037,7 +5052,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 330, - "src": "3032:1:1", + "src": "3080:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5048,7 +5063,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3024:10:1", + "src": "3072:10:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5066,10 +5081,10 @@ "name": "IAlgoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 778, - "src": "3013:10:1", + "referencedDeclaration": 783, + "src": "3061:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$778_$", + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$783_$", "typeString": "type(contract IAlgoMiner)" } }, @@ -5081,14 +5096,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3013:22:1", + "src": "3061:22:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$778", + "typeIdentifier": "t_contract$_IAlgoMiner_$783", "typeString": "contract IAlgoMiner" } }, "nodeType": "VariableDeclarationStatement", - "src": "2990:45:1" + "src": "3038:45:1" }, { "condition": { @@ -5101,7 +5116,7 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "3055:21:1", + "src": "3103:21:1", "subExpression": { "argumentTypes": null, "arguments": [], @@ -5114,9 +5129,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 341, - "src": "3056:9:1", + "src": "3104:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$778", + "typeIdentifier": "t_contract$_IAlgoMiner_$783", "typeString": "contract IAlgoMiner" } }, @@ -5127,8 +5142,8 @@ "lValueRequested": false, "memberName": "isMining", "nodeType": "MemberAccess", - "referencedDeclaration": 772, - "src": "3056:18:1", + "referencedDeclaration": 782, + "src": "3104:18:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$", "typeString": "function () view external returns (bool)" @@ -5142,7 +5157,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3056:20:1", + "src": "3104:20:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5156,11 +5171,11 @@ "falseBody": null, "id": 353, "nodeType": "IfStatement", - "src": "3052:34:1", + "src": "3100:34:1", "trueBody": { "id": 352, "nodeType": "Continue", - "src": "3078:8:1" + "src": "3126:8:1" } }, { @@ -5174,7 +5189,7 @@ "name": "minerCategory", "nodeType": "VariableDeclaration", "scope": 571, - "src": "3103:19:1", + "src": "3151:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5185,7 +5200,7 @@ "id": 354, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "3103:5:1", + "src": "3151:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5208,9 +5223,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 341, - "src": "3125:9:1", + "src": "3173:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$778", + "typeIdentifier": "t_contract$_IAlgoMiner_$783", "typeString": "contract IAlgoMiner" } }, @@ -5222,7 +5237,7 @@ "memberName": "getCategory", "nodeType": "MemberAccess", "referencedDeclaration": 767, - "src": "3125:21:1", + "src": "3173:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" @@ -5236,14 +5251,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3125:23:1", + "src": "3173:23:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", - "src": "3103:45:1" + "src": "3151:45:1" }, { "condition": { @@ -5264,7 +5279,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 355, - "src": "3168:13:1", + "src": "3216:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5282,7 +5297,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3185:1:1", + "src": "3233:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5290,7 +5305,7 @@ }, "value": "0" }, - "src": "3168:18:1", + "src": "3216:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5315,7 +5330,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 355, - "src": "3243:13:1", + "src": "3291:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5333,7 +5348,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3260:1:1", + "src": "3308:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -5341,7 +5356,7 @@ }, "value": "1" }, - "src": "3243:18:1", + "src": "3291:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5366,7 +5381,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 355, - "src": "3318:13:1", + "src": "3366:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5384,7 +5399,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3335:1:1", + "src": "3383:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -5392,7 +5407,7 @@ }, "value": "2" }, - "src": "3318:18:1", + "src": "3366:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5417,7 +5432,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 355, - "src": "3393:13:1", + "src": "3441:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5435,7 +5450,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3410:1:1", + "src": "3458:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", @@ -5443,7 +5458,7 @@ }, "value": "3" }, - "src": "3393:18:1", + "src": "3441:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5468,7 +5483,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 355, - "src": "3468:13:1", + "src": "3516:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5486,7 +5501,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3485:1:1", + "src": "3533:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", @@ -5494,7 +5509,7 @@ }, "value": "4" }, - "src": "3468:18:1", + "src": "3516:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5519,7 +5534,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 355, - "src": "3543:13:1", + "src": "3591:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5537,7 +5552,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3560:1:1", + "src": "3608:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -5545,7 +5560,7 @@ }, "value": "5" }, - "src": "3543:18:1", + "src": "3591:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5554,11 +5569,11 @@ "falseBody": null, "id": 414, "nodeType": "IfStatement", - "src": "3540:69:1", + "src": "3588:69:1", "trueBody": { "id": 413, "nodeType": "Block", - "src": "3563:46:1", + "src": "3611:46:1", "statements": [ { "expression": { @@ -5571,7 +5586,7 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3582:11:1", + "src": "3630:11:1", "subExpression": { "argumentTypes": null, "baseExpression": { @@ -5581,7 +5596,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 327, - "src": "3582:6:1", + "src": "3630:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" @@ -5598,7 +5613,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3589:1:1", + "src": "3637:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -5611,7 +5626,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3582:9:1", + "src": "3630:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5624,18 +5639,18 @@ }, "id": 412, "nodeType": "ExpressionStatement", - "src": "3582:11:1" + "src": "3630:11:1" } ] } }, "id": 415, "nodeType": "IfStatement", - "src": "3465:144:1", + "src": "3513:144:1", "trueBody": { "id": 404, "nodeType": "Block", - "src": "3488:46:1", + "src": "3536:46:1", "statements": [ { "expression": { @@ -5648,7 +5663,7 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3507:11:1", + "src": "3555:11:1", "subExpression": { "argumentTypes": null, "baseExpression": { @@ -5658,7 +5673,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 327, - "src": "3507:6:1", + "src": "3555:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" @@ -5675,7 +5690,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3514:1:1", + "src": "3562:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", @@ -5688,7 +5703,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3507:9:1", + "src": "3555:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5701,18 +5716,18 @@ }, "id": 403, "nodeType": "ExpressionStatement", - "src": "3507:11:1" + "src": "3555:11:1" } ] } }, "id": 416, "nodeType": "IfStatement", - "src": "3390:219:1", + "src": "3438:219:1", "trueBody": { "id": 395, "nodeType": "Block", - "src": "3413:46:1", + "src": "3461:46:1", "statements": [ { "expression": { @@ -5725,7 +5740,7 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3432:11:1", + "src": "3480:11:1", "subExpression": { "argumentTypes": null, "baseExpression": { @@ -5735,7 +5750,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 327, - "src": "3432:6:1", + "src": "3480:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" @@ -5752,7 +5767,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3439:1:1", + "src": "3487:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", @@ -5765,7 +5780,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3432:9:1", + "src": "3480:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5778,18 +5793,18 @@ }, "id": 394, "nodeType": "ExpressionStatement", - "src": "3432:11:1" + "src": "3480:11:1" } ] } }, "id": 417, "nodeType": "IfStatement", - "src": "3315:294:1", + "src": "3363:294:1", "trueBody": { "id": 386, "nodeType": "Block", - "src": "3338:46:1", + "src": "3386:46:1", "statements": [ { "expression": { @@ -5802,7 +5817,7 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3357:11:1", + "src": "3405:11:1", "subExpression": { "argumentTypes": null, "baseExpression": { @@ -5812,7 +5827,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 327, - "src": "3357:6:1", + "src": "3405:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" @@ -5829,7 +5844,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3364:1:1", + "src": "3412:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -5842,7 +5857,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3357:9:1", + "src": "3405:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5855,18 +5870,18 @@ }, "id": 385, "nodeType": "ExpressionStatement", - "src": "3357:11:1" + "src": "3405:11:1" } ] } }, "id": 418, "nodeType": "IfStatement", - "src": "3240:369:1", + "src": "3288:369:1", "trueBody": { "id": 377, "nodeType": "Block", - "src": "3263:46:1", + "src": "3311:46:1", "statements": [ { "expression": { @@ -5879,7 +5894,7 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3282:11:1", + "src": "3330:11:1", "subExpression": { "argumentTypes": null, "baseExpression": { @@ -5889,7 +5904,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 327, - "src": "3282:6:1", + "src": "3330:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" @@ -5906,7 +5921,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3289:1:1", + "src": "3337:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -5919,7 +5934,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3282:9:1", + "src": "3330:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5932,18 +5947,18 @@ }, "id": 376, "nodeType": "ExpressionStatement", - "src": "3282:11:1" + "src": "3330:11:1" } ] } }, "id": 419, "nodeType": "IfStatement", - "src": "3165:444:1", + "src": "3213:444:1", "trueBody": { "id": 368, "nodeType": "Block", - "src": "3188:46:1", + "src": "3236:46:1", "statements": [ { "expression": { @@ -5956,7 +5971,7 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3207:11:1", + "src": "3255:11:1", "subExpression": { "argumentTypes": null, "baseExpression": { @@ -5966,7 +5981,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 327, - "src": "3207:6:1", + "src": "3255:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" @@ -5983,7 +5998,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3214:1:1", + "src": "3262:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5996,7 +6011,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3207:9:1", + "src": "3255:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6009,7 +6024,7 @@ }, "id": 367, "nodeType": "ExpressionStatement", - "src": "3207:11:1" + "src": "3255:11:1" } ] } @@ -6034,7 +6049,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 330, - "src": "2950:1:1", + "src": "2998:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6051,7 +6066,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "2954:7:1", + "src": "3002:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -6065,13 +6080,13 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2954:14:1", + "src": "3002:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2950:18:1", + "src": "2998:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6089,7 +6104,7 @@ "name": "i", "nodeType": "VariableDeclaration", "scope": 571, - "src": "2935:9:1", + "src": "2983:9:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6100,7 +6115,7 @@ "id": 329, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2935:7:1", + "src": "2983:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6121,7 +6136,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2947:1:1", + "src": "2995:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6130,7 +6145,7 @@ "value": "1" }, "nodeType": "VariableDeclarationStatement", - "src": "2935:13:1" + "src": "2983:13:1" }, "loopExpression": { "expression": { @@ -6143,7 +6158,7 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "2970:3:1", + "src": "3018:3:1", "subExpression": { "argumentTypes": null, "id": 337, @@ -6151,7 +6166,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 330, - "src": "2970:1:1", + "src": "3018:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6164,10 +6179,10 @@ }, "id": 339, "nodeType": "ExpressionStatement", - "src": "2970:3:1" + "src": "3018:3:1" }, "nodeType": "ForStatement", - "src": "2931:701:1" + "src": "2979:701:1" }, { "assignments": [ @@ -6180,7 +6195,7 @@ "name": "totalProportion", "nodeType": "VariableDeclaration", "scope": 571, - "src": "3720:23:1", + "src": "3768:23:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6191,7 +6206,7 @@ "id": 422, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3720:7:1", + "src": "3768:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6275,7 +6290,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 106, - "src": "3746:22:1", + "src": "3794:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6292,7 +6307,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 327, - "src": "3771:6:1", + "src": "3819:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" @@ -6309,7 +6324,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3778:1:1", + "src": "3826:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6322,13 +6337,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3771:9:1", + "src": "3819:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3746:34:1", + "src": "3794:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6354,7 +6369,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109, - "src": "3796:22:1", + "src": "3844:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6371,7 +6386,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 327, - "src": "3821:6:1", + "src": "3869:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" @@ -6388,7 +6403,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3828:1:1", + "src": "3876:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6401,19 +6416,19 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3821:9:1", + "src": "3869:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3796:34:1", + "src": "3844:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3746:84:1", + "src": "3794:84:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6439,7 +6454,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 112, - "src": "3846:22:1", + "src": "3894:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6456,7 +6471,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 327, - "src": "3871:6:1", + "src": "3919:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" @@ -6473,7 +6488,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3878:1:1", + "src": "3926:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -6486,19 +6501,19 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3871:9:1", + "src": "3919:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3846:34:1", + "src": "3894:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3746:134:1", + "src": "3794:134:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6524,7 +6539,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 115, - "src": "3896:22:1", + "src": "3944:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6541,7 +6556,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 327, - "src": "3921:6:1", + "src": "3969:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" @@ -6558,7 +6573,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3928:1:1", + "src": "3976:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", @@ -6571,19 +6586,19 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3921:9:1", + "src": "3969:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3896:34:1", + "src": "3944:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3746:184:1", + "src": "3794:184:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6609,7 +6624,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 118, - "src": "3946:22:1", + "src": "3994:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6626,7 +6641,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 327, - "src": "3971:6:1", + "src": "4019:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" @@ -6643,7 +6658,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3978:1:1", + "src": "4026:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", @@ -6656,19 +6671,19 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3971:9:1", + "src": "4019:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3946:34:1", + "src": "3994:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3746:234:1", + "src": "3794:234:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6694,7 +6709,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 121, - "src": "3996:22:1", + "src": "4044:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6711,7 +6726,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 327, - "src": "4021:6:1", + "src": "4069:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" @@ -6728,7 +6743,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4028:1:1", + "src": "4076:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -6741,26 +6756,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4021:9:1", + "src": "4069:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3996:34:1", + "src": "4044:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3746:284:1", + "src": "3794:284:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "3720:310:1" + "src": "3768:310:1" }, { "assignments": [], @@ -6771,7 +6786,7 @@ "name": "feePerMiner", "nodeType": "VariableDeclaration", "scope": 571, - "src": "4051:29:1", + "src": "4099:29:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -6783,7 +6798,7 @@ "id": 462, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4051:7:1", + "src": "4099:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6800,7 +6815,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4059:1:1", + "src": "4107:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": null, @@ -6809,7 +6824,7 @@ "value": "6" }, "nodeType": "ArrayTypeName", - "src": "4051:10:1", + "src": "4099:10:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr", "typeString": "uint256[6]" @@ -6822,7 +6837,7 @@ "id": 465, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "4051:29:1" + "src": "4099:29:1" }, { "expression": { @@ -6841,7 +6856,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 464, - "src": "4093:11:1", + "src": "4141:11:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" @@ -6858,7 +6873,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4105:1:1", + "src": "4153:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6871,7 +6886,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4093:14:1", + "src": "4141:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6908,7 +6923,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 309, - "src": "4110:18:1", + "src": "4158:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6923,13 +6938,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 106, - "src": "4131:22:1", + "src": "4179:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4110:43:1", + "src": "4158:43:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6944,19 +6959,19 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 423, - "src": "4156:15:1", + "src": "4204:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4110:61:1", + "src": "4158:61:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4093:78:1", + "src": "4141:78:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6964,7 +6979,7 @@ }, "id": 475, "nodeType": "ExpressionStatement", - "src": "4093:78:1" + "src": "4141:78:1" }, { "expression": { @@ -6983,7 +6998,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 464, - "src": "4182:11:1", + "src": "4230:11:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" @@ -7000,7 +7015,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4194:1:1", + "src": "4242:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -7013,7 +7028,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4182:14:1", + "src": "4230:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7050,7 +7065,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 309, - "src": "4199:18:1", + "src": "4247:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7065,13 +7080,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109, - "src": "4220:22:1", + "src": "4268:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4199:43:1", + "src": "4247:43:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7086,19 +7101,19 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 423, - "src": "4245:15:1", + "src": "4293:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4199:61:1", + "src": "4247:61:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4182:78:1", + "src": "4230:78:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7106,7 +7121,7 @@ }, "id": 485, "nodeType": "ExpressionStatement", - "src": "4182:78:1" + "src": "4230:78:1" }, { "expression": { @@ -7125,7 +7140,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 464, - "src": "4271:11:1", + "src": "4319:11:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" @@ -7142,7 +7157,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4283:1:1", + "src": "4331:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -7155,7 +7170,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4271:14:1", + "src": "4319:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7192,7 +7207,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 309, - "src": "4288:18:1", + "src": "4336:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7207,13 +7222,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 112, - "src": "4309:22:1", + "src": "4357:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4288:43:1", + "src": "4336:43:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7228,19 +7243,19 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 423, - "src": "4334:15:1", + "src": "4382:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4288:61:1", + "src": "4336:61:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4271:78:1", + "src": "4319:78:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7248,7 +7263,7 @@ }, "id": 495, "nodeType": "ExpressionStatement", - "src": "4271:78:1" + "src": "4319:78:1" }, { "expression": { @@ -7267,7 +7282,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 464, - "src": "4360:11:1", + "src": "4408:11:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" @@ -7284,7 +7299,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4372:1:1", + "src": "4420:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", @@ -7297,7 +7312,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4360:14:1", + "src": "4408:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7334,7 +7349,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 309, - "src": "4377:18:1", + "src": "4425:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7349,13 +7364,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 115, - "src": "4398:22:1", + "src": "4446:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4377:43:1", + "src": "4425:43:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7370,19 +7385,19 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 423, - "src": "4423:15:1", + "src": "4471:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4377:61:1", + "src": "4425:61:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4360:78:1", + "src": "4408:78:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7390,7 +7405,7 @@ }, "id": 505, "nodeType": "ExpressionStatement", - "src": "4360:78:1" + "src": "4408:78:1" }, { "expression": { @@ -7409,7 +7424,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 464, - "src": "4449:11:1", + "src": "4497:11:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" @@ -7426,7 +7441,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4461:1:1", + "src": "4509:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", @@ -7439,7 +7454,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4449:14:1", + "src": "4497:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7476,7 +7491,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 309, - "src": "4466:18:1", + "src": "4514:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7491,13 +7506,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 118, - "src": "4487:22:1", + "src": "4535:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4466:43:1", + "src": "4514:43:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7512,19 +7527,19 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 423, - "src": "4512:15:1", + "src": "4560:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4466:61:1", + "src": "4514:61:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4449:78:1", + "src": "4497:78:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7532,7 +7547,7 @@ }, "id": 515, "nodeType": "ExpressionStatement", - "src": "4449:78:1" + "src": "4497:78:1" }, { "expression": { @@ -7551,7 +7566,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 464, - "src": "4538:11:1", + "src": "4586:11:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" @@ -7568,7 +7583,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4550:1:1", + "src": "4598:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -7581,7 +7596,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4538:14:1", + "src": "4586:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7618,7 +7633,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 309, - "src": "4555:18:1", + "src": "4603:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7633,13 +7648,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 121, - "src": "4576:22:1", + "src": "4624:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4555:43:1", + "src": "4603:43:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7654,19 +7669,19 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 423, - "src": "4601:15:1", + "src": "4649:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4555:61:1", + "src": "4603:61:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4538:78:1", + "src": "4586:78:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7674,13 +7689,13 @@ }, "id": 525, "nodeType": "ExpressionStatement", - "src": "4538:78:1" + "src": "4586:78:1" }, { "body": { "id": 568, "nodeType": "Block", - "src": "4716:245:1", + "src": "4764:245:1", "statements": [ { "expression": { @@ -7697,9 +7712,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 341, - "src": "4731:9:1", + "src": "4779:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$778", + "typeIdentifier": "t_contract$_IAlgoMiner_$783", "typeString": "contract IAlgoMiner" } }, @@ -7717,7 +7732,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "4754:7:1", + "src": "4802:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -7731,7 +7746,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 330, - "src": "4762:1:1", + "src": "4810:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7742,7 +7757,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4754:10:1", + "src": "4802:10:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7760,10 +7775,10 @@ "name": "IAlgoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 778, - "src": "4743:10:1", + "referencedDeclaration": 783, + "src": "4791:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$778_$", + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$783_$", "typeString": "type(contract IAlgoMiner)" } }, @@ -7775,21 +7790,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4743:22:1", + "src": "4791:22:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$778", + "typeIdentifier": "t_contract$_IAlgoMiner_$783", "typeString": "contract IAlgoMiner" } }, - "src": "4731:34:1", + "src": "4779:34:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$778", + "typeIdentifier": "t_contract$_IAlgoMiner_$783", "typeString": "contract IAlgoMiner" } }, "id": 544, "nodeType": "ExpressionStatement", - "src": "4731:34:1" + "src": "4779:34:1" }, { "condition": { @@ -7802,7 +7817,7 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "4785:21:1", + "src": "4833:21:1", "subExpression": { "argumentTypes": null, "arguments": [], @@ -7815,9 +7830,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 341, - "src": "4786:9:1", + "src": "4834:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$778", + "typeIdentifier": "t_contract$_IAlgoMiner_$783", "typeString": "contract IAlgoMiner" } }, @@ -7828,8 +7843,8 @@ "lValueRequested": false, "memberName": "isMining", "nodeType": "MemberAccess", - "referencedDeclaration": 772, - "src": "4786:18:1", + "referencedDeclaration": 782, + "src": "4834:18:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$", "typeString": "function () view external returns (bool)" @@ -7843,7 +7858,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4786:20:1", + "src": "4834:20:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7857,11 +7872,11 @@ "falseBody": null, "id": 550, "nodeType": "IfStatement", - "src": "4782:34:1", + "src": "4830:34:1", "trueBody": { "id": 549, "nodeType": "Continue", - "src": "4808:8:1" + "src": "4856:8:1" } }, { @@ -7879,7 +7894,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 355, - "src": "4833:13:1", + "src": "4881:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7899,9 +7914,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 341, - "src": "4849:9:1", + "src": "4897:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$778", + "typeIdentifier": "t_contract$_IAlgoMiner_$783", "typeString": "contract IAlgoMiner" } }, @@ -7913,7 +7928,7 @@ "memberName": "getCategory", "nodeType": "MemberAccess", "referencedDeclaration": 767, - "src": "4849:21:1", + "src": "4897:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" @@ -7927,13 +7942,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4849:23:1", + "src": "4897:23:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "4833:39:1", + "src": "4881:39:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7941,7 +7956,7 @@ }, "id": 556, "nodeType": "ExpressionStatement", - "src": "4833:39:1" + "src": "4881:39:1" }, { "expression": { @@ -7959,9 +7974,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 341, - "src": "4900:9:1", + "src": "4948:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$778", + "typeIdentifier": "t_contract$_IAlgoMiner_$783", "typeString": "contract IAlgoMiner" } }, @@ -7972,8 +7987,8 @@ "lValueRequested": false, "memberName": "getMiner", "nodeType": "MemberAccess", - "referencedDeclaration": 777, - "src": "4900:18:1", + "referencedDeclaration": 772, + "src": "4948:18:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" @@ -7987,7 +8002,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4900:20:1", + "src": "4948:20:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8002,7 +8017,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 464, - "src": "4922:11:1", + "src": "4970:11:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" @@ -8016,7 +8031,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 355, - "src": "4934:13:1", + "src": "4982:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -8027,7 +8042,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4922:26:1", + "src": "4970:26:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8052,9 +8067,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 705, - "src": "4880:6:1", + "src": "4928:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1106", + "typeIdentifier": "t_contract$_IERC20_$1111", "typeString": "contract IERC20" } }, @@ -8065,10 +8080,10 @@ "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1131, - "src": "4880:19:1", + "referencedDeclaration": 1136, + "src": "4928:19:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1106_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1106_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1111_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1111_$", "typeString": "function (contract IERC20,address,uint256)" } }, @@ -8080,7 +8095,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4880:69:1", + "src": "4928:69:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -8088,7 +8103,7 @@ }, "id": 567, "nodeType": "ExpressionStatement", - "src": "4880:69:1" + "src": "4928:69:1" } ] }, @@ -8110,7 +8125,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 330, - "src": "4691:1:1", + "src": "4739:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8127,7 +8142,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "4695:7:1", + "src": "4743:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -8141,13 +8156,13 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4695:14:1", + "src": "4743:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4691:18:1", + "src": "4739:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8169,7 +8184,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 330, - "src": "4684:1:1", + "src": "4732:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8187,7 +8202,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4688:1:1", + "src": "4736:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -8195,7 +8210,7 @@ }, "value": "1" }, - "src": "4684:5:1", + "src": "4732:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8203,7 +8218,7 @@ }, "id": 529, "nodeType": "ExpressionStatement", - "src": "4684:5:1" + "src": "4732:5:1" }, "loopExpression": { "expression": { @@ -8216,7 +8231,7 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4711:3:1", + "src": "4759:3:1", "subExpression": { "argumentTypes": null, "id": 534, @@ -8224,7 +8239,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 330, - "src": "4711:1:1", + "src": "4759:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8237,10 +8252,10 @@ }, "id": 536, "nodeType": "ExpressionStatement", - "src": "4711:3:1" + "src": "4759:3:1" }, "nodeType": "ForStatement", - "src": "4680:281:1" + "src": "4728:281:1" } ] }, @@ -8259,15 +8274,15 @@ "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 806, - "src": "2636:13:1", + "referencedDeclaration": 811, + "src": "2684:13:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2636:13:1" + "src": "2684:13:1" }, { "arguments": null, @@ -8279,14 +8294,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 634, - "src": "2650:10:1", + "src": "2698:10:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2650:10:1" + "src": "2698:10:1" } ], "name": "mine", @@ -8295,17 +8310,17 @@ "id": 295, "nodeType": "ParameterList", "parameters": [], - "src": "2626:2:1" + "src": "2674:2:1" }, "payable": false, "returnParameters": { "id": 300, "nodeType": "ParameterList", "parameters": [], - "src": "2661:0:1" + "src": "2709:0:1" }, "scope": 606, - "src": "2613:2355:1", + "src": "2661:2355:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -8314,7 +8329,7 @@ "body": { "id": 579, "nodeType": "Block", - "src": "5017:31:1", + "src": "5065:31:1", "statements": [ { "expression": { @@ -8329,7 +8344,7 @@ 749 ], "referencedDeclaration": 749, - "src": "5028:10:1", + "src": "5076:10:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" @@ -8343,7 +8358,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5028:12:1", + "src": "5076:12:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -8351,7 +8366,7 @@ }, "id": 578, "nodeType": "ExpressionStatement", - "src": "5028:12:1" + "src": "5076:12:1" } ] }, @@ -8371,14 +8386,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, - "src": "5004:12:1", + "src": "5052:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "5004:12:1" + "src": "5052:12:1" } ], "name": "terminate", @@ -8387,17 +8402,17 @@ "id": 572, "nodeType": "ParameterList", "parameters": [], - "src": "4994:2:1" + "src": "5042:2:1" }, "payable": false, "returnParameters": { "id": 575, "nodeType": "ParameterList", "parameters": [], - "src": "5017:0:1" + "src": "5065:0:1" }, "scope": 606, - "src": "4976:72:1", + "src": "5024:72:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -8406,7 +8421,7 @@ "body": { "id": 590, "nodeType": "Block", - "src": "5111:44:1", + "src": "5159:44:1", "statements": [ { "expression": { @@ -8429,7 +8444,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "5129:7:1", + "src": "5177:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -8443,7 +8458,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "5129:14:1", + "src": "5177:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8461,7 +8476,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5146:1:1", + "src": "5194:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -8469,7 +8484,7 @@ }, "value": "1" }, - "src": "5129:18:1", + "src": "5177:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8478,7 +8493,7 @@ "functionReturnParameters": 584, "id": 589, "nodeType": "Return", - "src": "5122:25:1" + "src": "5170:25:1" } ] }, @@ -8494,7 +8509,7 @@ "id": 581, "nodeType": "ParameterList", "parameters": [], - "src": "5078:2:1" + "src": "5126:2:1" }, "payable": false, "returnParameters": { @@ -8507,7 +8522,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 591, - "src": "5102:7:1", + "src": "5150:7:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8518,7 +8533,7 @@ "id": 582, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5102:7:1", + "src": "5150:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8528,10 +8543,10 @@ "visibility": "internal" } ], - "src": "5101:9:1" + "src": "5149:9:1" }, "scope": 606, - "src": "5056:99:1", + "src": "5104:99:1", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -8540,7 +8555,7 @@ "body": { "id": 604, "nodeType": "Block", - "src": "5233:44:1", + "src": "5281:44:1", "statements": [ { "expression": { @@ -8552,7 +8567,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "5251:7:1", + "src": "5299:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -8577,7 +8592,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 593, - "src": "5259:5:1", + "src": "5307:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8595,7 +8610,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5267:1:1", + "src": "5315:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -8603,7 +8618,7 @@ }, "value": "1" }, - "src": "5259:9:1", + "src": "5307:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8614,7 +8629,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5251:18:1", + "src": "5299:18:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8623,7 +8638,7 @@ "functionReturnParameters": 597, "id": 603, "nodeType": "Return", - "src": "5244:25:1" + "src": "5292:25:1" } ] }, @@ -8645,7 +8660,7 @@ "name": "index", "nodeType": "VariableDeclaration", "scope": 605, - "src": "5188:13:1", + "src": "5236:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8656,7 +8671,7 @@ "id": 592, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5188:7:1", + "src": "5236:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8666,7 +8681,7 @@ "visibility": "internal" } ], - "src": "5187:15:1" + "src": "5235:15:1" }, "payable": false, "returnParameters": { @@ -8679,7 +8694,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 605, - "src": "5224:7:1", + "src": "5272:7:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8690,7 +8705,7 @@ "id": 595, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5224:7:1", + "src": "5272:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8700,20 +8715,20 @@ "visibility": "internal" } ], - "src": "5223:9:1" + "src": "5271:9:1" }, "scope": 606, - "src": "5163:114:1", + "src": "5211:114:1", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], "scope": 607, - "src": "556:4724:1" + "src": "556:4772:1" } ], - "src": "0:5280:1" + "src": "0:5328:1" }, "id": 1 }, @@ -8745,7 +8760,7 @@ "id": 609, "nodeType": "ImportDirective", "scope": 694, - "sourceUnit": 910, + "sourceUnit": 915, "src": "28:189:2", "symbolAliases": [], "unitAlias": "" @@ -8770,10 +8785,10 @@ "id": 610, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 909, + "referencedDeclaration": 914, "src": "258:5:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$909", + "typeIdentifier": "t_contract$_Roles_$914", "typeString": "library Roles" } }, @@ -8784,10 +8799,10 @@ "id": 611, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 822, + "referencedDeclaration": 827, "src": "268:10:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$822_storage_ptr", + "typeIdentifier": "t_struct$_Role_$827_storage_ptr", "typeString": "struct Roles.Role" } } @@ -8802,7 +8817,7 @@ "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$822_storage", + "typeIdentifier": "t_struct$_Role_$827_storage", "typeString": "struct Roles.Role" }, "typeName": { @@ -8810,10 +8825,10 @@ "id": 613, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 822, + "referencedDeclaration": 827, "src": "287:10:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$822_storage_ptr", + "typeIdentifier": "t_struct$_Role_$827_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -8838,7 +8853,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1265, + "referencedDeclaration": 1270, "src": "375:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -8946,7 +8961,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1265, + "referencedDeclaration": 1270, "src": "452:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -9012,10 +9027,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1268, - 1269 + 1273, + 1274 ], - "referencedDeclaration": 1268, + "referencedDeclaration": 1273, "src": "435:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -9100,7 +9115,7 @@ "referencedDeclaration": 614, "src": "572:14:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$822_storage", + "typeIdentifier": "t_struct$_Role_$827_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -9111,10 +9126,10 @@ "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 908, + "referencedDeclaration": 913, "src": "572:18:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$822_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$822_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$827_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$827_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, @@ -9374,7 +9389,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1265, + "referencedDeclaration": 1270, "src": "773:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -9501,7 +9516,7 @@ "referencedDeclaration": 614, "src": "857:14:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$822_storage", + "typeIdentifier": "t_struct$_Role_$827_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -9512,10 +9527,10 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 854, + "referencedDeclaration": 859, "src": "857:18:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$822_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$822_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$827_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$827_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -9633,7 +9648,7 @@ "referencedDeclaration": 614, "src": "960:14:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$822_storage", + "typeIdentifier": "t_struct$_Role_$827_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -9644,10 +9659,10 @@ "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 885, + "referencedDeclaration": 890, "src": "960:21:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$822_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$822_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$827_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$827_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -9761,7 +9776,7 @@ "id": 696, "nodeType": "ImportDirective", "scope": 751, - "sourceUnit": 1107, + "sourceUnit": 1112, "src": "27:195:3", "symbolAliases": [], "unitAlias": "" @@ -9772,7 +9787,7 @@ "id": 697, "nodeType": "ImportDirective", "scope": 751, - "sourceUnit": 1251, + "sourceUnit": 1256, "src": "224:198:3", "symbolAliases": [], "unitAlias": "" @@ -9783,7 +9798,7 @@ "id": 698, "nodeType": "ImportDirective", "scope": 751, - "sourceUnit": 816, + "sourceUnit": 821, "src": "426:26:3", "symbolAliases": [], "unitAlias": "" @@ -9797,10 +9812,10 @@ "id": 699, "name": "Terminable", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 815, + "referencedDeclaration": 820, "src": "485:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_Terminable_$815", + "typeIdentifier": "t_contract$_Terminable_$820", "typeString": "contract Terminable" } }, @@ -9810,7 +9825,7 @@ } ], "contractDependencies": [ - 815 + 820 ], "contractKind": "contract", "documentation": null, @@ -9818,7 +9833,7 @@ "id": 750, "linearizedBaseContracts": [ 750, - 815 + 820 ], "name": "ERC20TokenHolder", "nodeType": "ContractDefinition", @@ -9830,10 +9845,10 @@ "id": 701, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1250, + "referencedDeclaration": 1255, "src": "509:9:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1250", + "typeIdentifier": "t_contract$_SafeERC20_$1255", "typeString": "library SafeERC20" } }, @@ -9844,10 +9859,10 @@ "id": 702, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1106, + "referencedDeclaration": 1111, "src": "523:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1106", + "typeIdentifier": "t_contract$_IERC20_$1111", "typeString": "contract IERC20" } } @@ -9862,7 +9877,7 @@ "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1106", + "typeIdentifier": "t_contract$_IERC20_$1111", "typeString": "contract IERC20" }, "typeName": { @@ -9870,10 +9885,10 @@ "id": 704, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1106, + "referencedDeclaration": 1111, "src": "538:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1106", + "typeIdentifier": "t_contract$_IERC20_$1111", "typeString": "contract IERC20" } }, @@ -9903,7 +9918,7 @@ "referencedDeclaration": 705, "src": "636:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1106", + "typeIdentifier": "t_contract$_IERC20_$1111", "typeString": "contract IERC20" } }, @@ -9937,10 +9952,10 @@ "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1106, + "referencedDeclaration": 1111, "src": "645:6:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$1106_$", + "typeIdentifier": "t_type$_t_contract$_IERC20_$1111_$", "typeString": "type(contract IERC20)" } }, @@ -9954,13 +9969,13 @@ "nodeType": "FunctionCall", "src": "645:20:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1106", + "typeIdentifier": "t_contract$_IERC20_$1111", "typeString": "contract IERC20" } }, "src": "636:29:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1106", + "typeIdentifier": "t_contract$_IERC20_$1111", "typeString": "contract IERC20" } }, @@ -9985,10 +10000,10 @@ "name": "Terminable", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 815, + "referencedDeclaration": 820, "src": "603:10:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Terminable_$815_$", + "typeIdentifier": "t_type$_t_contract$_Terminable_$820_$", "typeString": "type(contract Terminable)" } }, @@ -10095,7 +10110,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1292, + "referencedDeclaration": 1297, "src": "773:4:3", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20TokenHolder_$750", @@ -10154,7 +10169,7 @@ "referencedDeclaration": 705, "src": "748:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1106", + "typeIdentifier": "t_contract$_IERC20_$1111", "typeString": "contract IERC20" } }, @@ -10165,7 +10180,7 @@ "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 1051, + "referencedDeclaration": 1056, "src": "748:16:3", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", @@ -10259,7 +10274,7 @@ "name": "_creator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 782, + "referencedDeclaration": 787, "src": "848:8:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -10300,7 +10315,7 @@ "referencedDeclaration": 705, "src": "828:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1106", + "typeIdentifier": "t_contract$_IERC20_$1111", "typeString": "contract IERC20" } }, @@ -10311,10 +10326,10 @@ "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1131, + "referencedDeclaration": 1136, "src": "828:19:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1106_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1106_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1111_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1111_$", "typeString": "function (contract IERC20,address,uint256)" } }, @@ -10351,10 +10366,10 @@ "name": "Terminable", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 815, + "referencedDeclaration": 820, "src": "895:10:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Terminable_$815_$", + "typeIdentifier": "t_type$_t_contract$_Terminable_$820_$", "typeString": "type(contract Terminable)" } }, @@ -10365,7 +10380,7 @@ "lValueRequested": false, "memberName": "_terminate", "nodeType": "MemberAccess", - "referencedDeclaration": 814, + "referencedDeclaration": 819, "src": "895:21:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", @@ -10416,7 +10431,7 @@ "scope": 750, "src": "681:245:3", "stateMutability": "nonpayable", - "superFunction": 814, + "superFunction": 819, "visibility": "internal" } ], @@ -10433,10 +10448,10 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", "exportedSymbols": { "IAlgoMiner": [ - 778 + 783 ] }, - "id": 779, + "id": 784, "nodeType": "SourceUnit", "nodes": [ { @@ -10455,9 +10470,9 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 778, + "id": 783, "linearizedBaseContracts": [ - 778 + 783 ], "name": "IAlgoMiner", "nodeType": "ContractDefinition", @@ -10512,7 +10527,7 @@ ], "src": "97:6:4" }, - "scope": 778, + "scope": 783, "src": "54:50:4", "stateMutability": "pure", "superFunction": null, @@ -10568,7 +10583,7 @@ ], "src": "154:7:4" }, - "scope": 778, + "scope": 783, "src": "110:52:4", "stateMutability": "view", "superFunction": null, @@ -10624,7 +10639,7 @@ ], "src": "211:7:4" }, - "scope": 778, + "scope": 783, "src": "168:51:4", "stateMutability": "view", "superFunction": null, @@ -10638,7 +10653,7 @@ "isConstructor": false, "isDeclaredConst": true, "modifiers": [], - "name": "isMining", + "name": "getMiner", "nodeType": "FunctionDefinition", "parameters": { "id": 768, @@ -10657,31 +10672,31 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 772, - "src": "266:4:4", + "src": "266:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { "id": 769, - "name": "bool", + "name": "address", "nodeType": "ElementaryTypeName", - "src": "266:4:4", + "src": "266:7:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" } }, "value": null, "visibility": "internal" } ], - "src": "265:6:4" + "src": "265:9:4" }, - "scope": 778, - "src": "225:47:4", + "scope": 783, + "src": "225:50:4", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -10694,13 +10709,13 @@ "isConstructor": false, "isDeclaredConst": true, "modifiers": [], - "name": "getMiner", + "name": "getReferral", "nodeType": "FunctionDefinition", "parameters": { "id": 773, "nodeType": "ParameterList", "parameters": [], - "src": "295:2:4" + "src": "301:2:4" }, "payable": false, "returnParameters": { @@ -10713,7 +10728,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 777, - "src": "319:7:4", + "src": "325:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10724,7 +10739,7 @@ "id": 774, "name": "address", "nodeType": "ElementaryTypeName", - "src": "319:7:4", + "src": "325:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10734,20 +10749,76 @@ "visibility": "internal" } ], - "src": "318:9:4" + "src": "324:9:4" }, - "scope": 778, - "src": "278:50:4", + "scope": 783, + "src": "281:53:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 782, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isMining", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 778, + "nodeType": "ParameterList", + "parameters": [], + "src": "357:2:4" + }, + "payable": false, + "returnParameters": { + "id": 781, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 780, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 782, + "src": "381:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 779, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "381:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "380:6:4" + }, + "scope": 783, + "src": "340:47:4", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 779, - "src": "27:304:4" + "scope": 784, + "src": "27:363:4" } ], - "src": "0:331:4" + "src": "0:390:4" }, "id": 4 }, @@ -10756,14 +10827,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", "exportedSymbols": { "Terminable": [ - 815 + 820 ] }, - "id": 816, + "id": 821, "nodeType": "SourceUnit", "nodes": [ { - "id": 780, + "id": 785, "literals": [ "solidity", "0.4", @@ -10778,19 +10849,19 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 815, + "id": 820, "linearizedBaseContracts": [ - 815 + 820 ], "name": "Terminable", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 782, + "id": 787, "name": "_creator", "nodeType": "VariableDeclaration", - "scope": 815, + "scope": 820, "src": "56:25:5", "stateVariable": true, "storageLocation": "default", @@ -10799,7 +10870,7 @@ "typeString": "address" }, "typeName": { - "id": 781, + "id": 786, "name": "address", "nodeType": "ElementaryTypeName", "src": "56:7:5", @@ -10813,10 +10884,10 @@ }, { "constant": false, - "id": 784, + "id": 789, "name": "_terminated", "nodeType": "VariableDeclaration", - "scope": 815, + "scope": 820, "src": "88:25:5", "stateVariable": true, "storageLocation": "default", @@ -10825,7 +10896,7 @@ "typeString": "bool" }, "typeName": { - "id": 783, + "id": 788, "name": "bool", "nodeType": "ElementaryTypeName", "src": "88:4:5", @@ -10839,25 +10910,25 @@ }, { "body": { - "id": 796, + "id": 801, "nodeType": "Block", "src": "145:70:5", "statements": [ { "expression": { "argumentTypes": null, - "id": 790, + "id": 795, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 787, + "id": 792, "name": "_creator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 782, + "referencedDeclaration": 787, "src": "156:8:5", "typeDescriptions": { "typeIdentifier": "t_address", @@ -10870,18 +10941,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 788, + "id": 793, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1265, + "referencedDeclaration": 1270, "src": "167:3:5", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 789, + "id": 794, "isConstant": false, "isLValue": false, "isPure": false, @@ -10901,25 +10972,25 @@ "typeString": "address" } }, - "id": 791, + "id": 796, "nodeType": "ExpressionStatement", "src": "156:21:5" }, { "expression": { "argumentTypes": null, - "id": 794, + "id": 799, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 792, + "id": 797, "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 784, + "referencedDeclaration": 789, "src": "188:11:5", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -10931,7 +11002,7 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 793, + "id": 798, "isConstant": false, "isLValue": false, "isPure": true, @@ -10952,14 +11023,14 @@ "typeString": "bool" } }, - "id": 795, + "id": 800, "nodeType": "ExpressionStatement", "src": "188:19:5" } ] }, "documentation": null, - "id": 797, + "id": 802, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -10967,19 +11038,19 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 785, + "id": 790, "nodeType": "ParameterList", "parameters": [], "src": "133:2:5" }, "payable": false, "returnParameters": { - "id": 786, + "id": 791, "nodeType": "ParameterList", "parameters": [], "src": "145:0:5" }, - "scope": 815, + "scope": 820, "src": "122:93:5", "stateMutability": "nonpayable", "superFunction": null, @@ -10987,7 +11058,7 @@ }, { "body": { - "id": 805, + "id": 810, "nodeType": "Block", "src": "248:52:5", "statements": [ @@ -10997,7 +11068,7 @@ "arguments": [ { "argumentTypes": null, - "id": 801, + "id": 806, "isConstant": false, "isLValue": false, "isPure": false, @@ -11008,11 +11079,11 @@ "src": "267:12:5", "subExpression": { "argumentTypes": null, - "id": 800, + "id": 805, "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 784, + "referencedDeclaration": 789, "src": "268:11:5", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -11032,21 +11103,21 @@ "typeString": "bool" } ], - "id": 799, + "id": 804, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1268, - 1269 + 1273, + 1274 ], - "referencedDeclaration": 1268, + "referencedDeclaration": 1273, "src": "259:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 802, + "id": 807, "isConstant": false, "isLValue": false, "isPure": false, @@ -11060,23 +11131,23 @@ "typeString": "tuple()" } }, - "id": 803, + "id": 808, "nodeType": "ExpressionStatement", "src": "259:21:5" }, { - "id": 804, + "id": 809, "nodeType": "PlaceholderStatement", "src": "291:1:5" } ] }, "documentation": null, - "id": 806, + "id": 811, "name": "notTerminated", "nodeType": "ModifierDefinition", "parameters": { - "id": 798, + "id": 803, "nodeType": "ParameterList", "parameters": [], "src": "245:2:5" @@ -11086,25 +11157,25 @@ }, { "body": { - "id": 813, + "id": 818, "nodeType": "Block", "src": "339:37:5", "statements": [ { "expression": { "argumentTypes": null, - "id": 811, + "id": 816, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 809, + "id": 814, "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 784, + "referencedDeclaration": 789, "src": "350:11:5", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -11116,7 +11187,7 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 810, + "id": 815, "isConstant": false, "isLValue": false, "isPure": true, @@ -11137,14 +11208,14 @@ "typeString": "bool" } }, - "id": 812, + "id": 817, "nodeType": "ExpressionStatement", "src": "350:18:5" } ] }, "documentation": null, - "id": 814, + "id": 819, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -11152,26 +11223,26 @@ "name": "_terminate", "nodeType": "FunctionDefinition", "parameters": { - "id": 807, + "id": 812, "nodeType": "ParameterList", "parameters": [], "src": "327:2:5" }, "payable": false, "returnParameters": { - "id": 808, + "id": 813, "nodeType": "ParameterList", "parameters": [], "src": "339:0:5" }, - "scope": 815, + "scope": 820, "src": "308:68:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 816, + "scope": 821, "src": "27:352:5" } ], @@ -11184,14 +11255,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "exportedSymbols": { "Roles": [ - 909 + 914 ] }, - "id": 910, + "id": 915, "nodeType": "SourceUnit", "nodes": [ { - "id": 817, + "id": 822, "literals": [ "solidity", "^", @@ -11207,23 +11278,23 @@ "contractKind": "library", "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", "fullyImplemented": true, - "id": 909, + "id": 914, "linearizedBaseContracts": [ - 909 + 914 ], "name": "Roles", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "Roles.Role", - "id": 822, + "id": 827, "members": [ { "constant": false, - "id": 821, + "id": 826, "name": "bearer", "nodeType": "VariableDeclaration", - "scope": 822, + "scope": 827, "src": "145:32:6", "stateVariable": false, "storageLocation": "default", @@ -11232,9 +11303,9 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 820, + "id": 825, "keyType": { - "id": 818, + "id": 823, "name": "address", "nodeType": "ElementaryTypeName", "src": "154:7:6", @@ -11250,7 +11321,7 @@ "typeString": "mapping(address => bool)" }, "valueType": { - "id": 819, + "id": 824, "name": "bool", "nodeType": "ElementaryTypeName", "src": "165:4:6", @@ -11266,13 +11337,13 @@ ], "name": "Role", "nodeType": "StructDefinition", - "scope": 909, + "scope": 914, "src": "127:55:6", "visibility": "public" }, { "body": { - "id": 853, + "id": 858, "nodeType": "Block", "src": "302:109:6", "statements": [ @@ -11286,18 +11357,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 834, + "id": 839, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 830, + "id": 835, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 826, + "referencedDeclaration": 831, "src": "316:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11312,7 +11383,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 832, + "id": 837, "isConstant": false, "isLValue": false, "isPure": true, @@ -11335,7 +11406,7 @@ "typeString": "int_const 0" } ], - "id": 831, + "id": 836, "isConstant": false, "isLValue": false, "isPure": true, @@ -11348,7 +11419,7 @@ }, "typeName": "address" }, - "id": 833, + "id": 838, "isConstant": false, "isLValue": false, "isPure": true, @@ -11376,21 +11447,21 @@ "typeString": "bool" } ], - "id": 829, + "id": 834, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1268, - 1269 + 1273, + 1274 ], - "referencedDeclaration": 1268, + "referencedDeclaration": 1273, "src": "308:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 835, + "id": 840, "isConstant": false, "isLValue": false, "isPure": false, @@ -11404,7 +11475,7 @@ "typeString": "tuple()" } }, - "id": 836, + "id": 841, "nodeType": "ExpressionStatement", "src": "308:30:6" }, @@ -11414,7 +11485,7 @@ "arguments": [ { "argumentTypes": null, - "id": 842, + "id": 847, "isConstant": false, "isLValue": false, "isPure": false, @@ -11428,24 +11499,24 @@ "arguments": [ { "argumentTypes": null, - "id": 839, + "id": 844, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 824, + "referencedDeclaration": 829, "src": "357:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$822_storage_ptr", + "typeIdentifier": "t_struct$_Role_$827_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, { "argumentTypes": null, - "id": 840, + "id": 845, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 826, + "referencedDeclaration": 831, "src": "363:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11456,7 +11527,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Role_$822_storage_ptr", + "typeIdentifier": "t_struct$_Role_$827_storage_ptr", "typeString": "struct Roles.Role storage pointer" }, { @@ -11464,18 +11535,18 @@ "typeString": "address" } ], - "id": 838, + "id": 843, "name": "has", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, + "referencedDeclaration": 913, "src": "353:3:6", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$822_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$827_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 841, + "id": 846, "isConstant": false, "isLValue": false, "isPure": false, @@ -11502,21 +11573,21 @@ "typeString": "bool" } ], - "id": 837, + "id": 842, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1268, - 1269 + 1273, + 1274 ], - "referencedDeclaration": 1268, + "referencedDeclaration": 1273, "src": "344:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 843, + "id": 848, "isConstant": false, "isLValue": false, "isPure": false, @@ -11530,14 +11601,14 @@ "typeString": "tuple()" } }, - "id": 844, + "id": 849, "nodeType": "ExpressionStatement", "src": "344:28:6" }, { "expression": { "argumentTypes": null, - "id": 851, + "id": 856, "isConstant": false, "isLValue": false, "isPure": false, @@ -11548,39 +11619,39 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 845, + "id": 850, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 824, + "referencedDeclaration": 829, "src": "379:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$822_storage_ptr", + "typeIdentifier": "t_struct$_Role_$827_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 848, + "id": 853, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 821, + "referencedDeclaration": 826, "src": "379:11:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 849, + "id": 854, "indexExpression": { "argumentTypes": null, - "id": 847, + "id": 852, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 826, + "referencedDeclaration": 831, "src": "391:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11603,7 +11674,7 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 850, + "id": 855, "isConstant": false, "isLValue": false, "isPure": true, @@ -11624,14 +11695,14 @@ "typeString": "bool" } }, - "id": 852, + "id": 857, "nodeType": "ExpressionStatement", "src": "379:27:6" } ] }, "documentation": "@dev give an account access to this role", - "id": 854, + "id": 859, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -11639,31 +11710,31 @@ "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 827, + "id": 832, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 824, + "id": 829, "name": "role", "nodeType": "VariableDeclaration", - "scope": 854, + "scope": 859, "src": "257:17:6", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$822_storage_ptr", + "typeIdentifier": "t_struct$_Role_$827_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 823, + "id": 828, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 822, + "referencedDeclaration": 827, "src": "257:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$822_storage_ptr", + "typeIdentifier": "t_struct$_Role_$827_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -11672,10 +11743,10 @@ }, { "constant": false, - "id": 826, + "id": 831, "name": "account", "nodeType": "VariableDeclaration", - "scope": 854, + "scope": 859, "src": "276:15:6", "stateVariable": false, "storageLocation": "default", @@ -11684,7 +11755,7 @@ "typeString": "address" }, "typeName": { - "id": 825, + "id": 830, "name": "address", "nodeType": "ElementaryTypeName", "src": "276:7:6", @@ -11701,12 +11772,12 @@ }, "payable": false, "returnParameters": { - "id": 828, + "id": 833, "nodeType": "ParameterList", "parameters": [], "src": "302:0:6" }, - "scope": 909, + "scope": 914, "src": "244:167:6", "stateMutability": "nonpayable", "superFunction": null, @@ -11714,7 +11785,7 @@ }, { "body": { - "id": 884, + "id": 889, "nodeType": "Block", "src": "538:109:6", "statements": [ @@ -11728,18 +11799,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 866, + "id": 871, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 862, + "id": 867, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 858, + "referencedDeclaration": 863, "src": "552:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11754,7 +11825,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 864, + "id": 869, "isConstant": false, "isLValue": false, "isPure": true, @@ -11777,7 +11848,7 @@ "typeString": "int_const 0" } ], - "id": 863, + "id": 868, "isConstant": false, "isLValue": false, "isPure": true, @@ -11790,7 +11861,7 @@ }, "typeName": "address" }, - "id": 865, + "id": 870, "isConstant": false, "isLValue": false, "isPure": true, @@ -11818,21 +11889,21 @@ "typeString": "bool" } ], - "id": 861, + "id": 866, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1268, - 1269 + 1273, + 1274 ], - "referencedDeclaration": 1268, + "referencedDeclaration": 1273, "src": "544:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 867, + "id": 872, "isConstant": false, "isLValue": false, "isPure": false, @@ -11846,7 +11917,7 @@ "typeString": "tuple()" } }, - "id": 868, + "id": 873, "nodeType": "ExpressionStatement", "src": "544:30:6" }, @@ -11859,24 +11930,24 @@ "arguments": [ { "argumentTypes": null, - "id": 871, + "id": 876, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 856, + "referencedDeclaration": 861, "src": "592:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$822_storage_ptr", + "typeIdentifier": "t_struct$_Role_$827_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, { "argumentTypes": null, - "id": 872, + "id": 877, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 858, + "referencedDeclaration": 863, "src": "598:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11887,7 +11958,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Role_$822_storage_ptr", + "typeIdentifier": "t_struct$_Role_$827_storage_ptr", "typeString": "struct Roles.Role storage pointer" }, { @@ -11895,18 +11966,18 @@ "typeString": "address" } ], - "id": 870, + "id": 875, "name": "has", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, + "referencedDeclaration": 913, "src": "588:3:6", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$822_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$827_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 873, + "id": 878, "isConstant": false, "isLValue": false, "isPure": false, @@ -11928,21 +11999,21 @@ "typeString": "bool" } ], - "id": 869, + "id": 874, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1268, - 1269 + 1273, + 1274 ], - "referencedDeclaration": 1268, + "referencedDeclaration": 1273, "src": "580:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 874, + "id": 879, "isConstant": false, "isLValue": false, "isPure": false, @@ -11956,14 +12027,14 @@ "typeString": "tuple()" } }, - "id": 875, + "id": 880, "nodeType": "ExpressionStatement", "src": "580:27:6" }, { "expression": { "argumentTypes": null, - "id": 882, + "id": 887, "isConstant": false, "isLValue": false, "isPure": false, @@ -11974,39 +12045,39 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 876, + "id": 881, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 856, + "referencedDeclaration": 861, "src": "614:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$822_storage_ptr", + "typeIdentifier": "t_struct$_Role_$827_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 879, + "id": 884, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 821, + "referencedDeclaration": 826, "src": "614:11:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 880, + "id": 885, "indexExpression": { "argumentTypes": null, - "id": 878, + "id": 883, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 858, + "referencedDeclaration": 863, "src": "626:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -12029,7 +12100,7 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 881, + "id": 886, "isConstant": false, "isLValue": false, "isPure": true, @@ -12050,14 +12121,14 @@ "typeString": "bool" } }, - "id": 883, + "id": 888, "nodeType": "ExpressionStatement", "src": "614:28:6" } ] }, "documentation": "@dev remove an account's access to this role", - "id": 885, + "id": 890, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -12065,31 +12136,31 @@ "name": "remove", "nodeType": "FunctionDefinition", "parameters": { - "id": 859, + "id": 864, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 856, + "id": 861, "name": "role", "nodeType": "VariableDeclaration", - "scope": 885, + "scope": 890, "src": "493:17:6", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$822_storage_ptr", + "typeIdentifier": "t_struct$_Role_$827_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 855, + "id": 860, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 822, + "referencedDeclaration": 827, "src": "493:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$822_storage_ptr", + "typeIdentifier": "t_struct$_Role_$827_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -12098,10 +12169,10 @@ }, { "constant": false, - "id": 858, + "id": 863, "name": "account", "nodeType": "VariableDeclaration", - "scope": 885, + "scope": 890, "src": "512:15:6", "stateVariable": false, "storageLocation": "default", @@ -12110,7 +12181,7 @@ "typeString": "address" }, "typeName": { - "id": 857, + "id": 862, "name": "address", "nodeType": "ElementaryTypeName", "src": "512:7:6", @@ -12127,12 +12198,12 @@ }, "payable": false, "returnParameters": { - "id": 860, + "id": 865, "nodeType": "ParameterList", "parameters": [], "src": "538:0:6" }, - "scope": 909, + "scope": 914, "src": "477:170:6", "stateMutability": "nonpayable", "superFunction": null, @@ -12140,7 +12211,7 @@ }, { "body": { - "id": 907, + "id": 912, "nodeType": "Block", "src": "817:74:6", "statements": [ @@ -12154,18 +12225,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 899, + "id": 904, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 895, + "id": 900, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 889, + "referencedDeclaration": 894, "src": "831:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -12180,7 +12251,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 897, + "id": 902, "isConstant": false, "isLValue": false, "isPure": true, @@ -12203,7 +12274,7 @@ "typeString": "int_const 0" } ], - "id": 896, + "id": 901, "isConstant": false, "isLValue": false, "isPure": true, @@ -12216,7 +12287,7 @@ }, "typeName": "address" }, - "id": 898, + "id": 903, "isConstant": false, "isLValue": false, "isPure": true, @@ -12244,21 +12315,21 @@ "typeString": "bool" } ], - "id": 894, + "id": 899, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1268, - 1269 + 1273, + 1274 ], - "referencedDeclaration": 1268, + "referencedDeclaration": 1273, "src": "823:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 900, + "id": 905, "isConstant": false, "isLValue": false, "isPure": false, @@ -12272,7 +12343,7 @@ "typeString": "tuple()" } }, - "id": 901, + "id": 906, "nodeType": "ExpressionStatement", "src": "823:30:6" }, @@ -12283,39 +12354,39 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 902, + "id": 907, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 887, + "referencedDeclaration": 892, "src": "866:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$822_storage_ptr", + "typeIdentifier": "t_struct$_Role_$827_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 903, + "id": 908, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 821, + "referencedDeclaration": 826, "src": "866:11:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 905, + "id": 910, "indexExpression": { "argumentTypes": null, - "id": 904, + "id": 909, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 889, + "referencedDeclaration": 894, "src": "878:7:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -12333,15 +12404,15 @@ "typeString": "bool" } }, - "functionReturnParameters": 893, - "id": 906, + "functionReturnParameters": 898, + "id": 911, "nodeType": "Return", "src": "859:27:6" } ] }, "documentation": "@dev check if an account has this role\n@return bool", - "id": 908, + "id": 913, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -12349,31 +12420,31 @@ "name": "has", "nodeType": "FunctionDefinition", "parameters": { - "id": 890, + "id": 895, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 887, + "id": 892, "name": "role", "nodeType": "VariableDeclaration", - "scope": 908, + "scope": 913, "src": "738:17:6", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$822_storage_ptr", + "typeIdentifier": "t_struct$_Role_$827_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 886, + "id": 891, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 822, + "referencedDeclaration": 827, "src": "738:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$822_storage_ptr", + "typeIdentifier": "t_struct$_Role_$827_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -12382,10 +12453,10 @@ }, { "constant": false, - "id": 889, + "id": 894, "name": "account", "nodeType": "VariableDeclaration", - "scope": 908, + "scope": 913, "src": "757:15:6", "stateVariable": false, "storageLocation": "default", @@ -12394,7 +12465,7 @@ "typeString": "address" }, "typeName": { - "id": 888, + "id": 893, "name": "address", "nodeType": "ElementaryTypeName", "src": "757:7:6", @@ -12411,15 +12482,15 @@ }, "payable": false, "returnParameters": { - "id": 893, + "id": 898, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 892, + "id": 897, "name": "", "nodeType": "VariableDeclaration", - "scope": 908, + "scope": 913, "src": "809:4:6", "stateVariable": false, "storageLocation": "default", @@ -12428,7 +12499,7 @@ "typeString": "bool" }, "typeName": { - "id": 891, + "id": 896, "name": "bool", "nodeType": "ElementaryTypeName", "src": "809:4:6", @@ -12443,14 +12514,14 @@ ], "src": "808:6:6" }, - "scope": 909, + "scope": 914, "src": "725:166:6", "stateMutability": "view", "superFunction": null, "visibility": "internal" } ], - "scope": 910, + "scope": 915, "src": "109:784:6" } ], @@ -12463,14 +12534,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "exportedSymbols": { "SafeMath": [ - 1037 + 1042 ] }, - "id": 1038, + "id": 1043, "nodeType": "SourceUnit", "nodes": [ { - "id": 911, + "id": 916, "literals": [ "solidity", "^", @@ -12486,16 +12557,16 @@ "contractKind": "library", "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", "fullyImplemented": true, - "id": 1037, + "id": 1042, "linearizedBaseContracts": [ - 1037 + 1042 ], "name": "SafeMath", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 943, + "id": 948, "nodeType": "Block", "src": "271:314:7", "statements": [ @@ -12506,18 +12577,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 922, + "id": 927, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 920, + "id": 925, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 913, + "referencedDeclaration": 918, "src": "486:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12529,7 +12600,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 921, + "id": 926, "isConstant": false, "isLValue": false, "isPure": true, @@ -12551,11 +12622,11 @@ } }, "falseBody": null, - "id": 926, + "id": 931, "nodeType": "IfStatement", "src": "482:35:7", "trueBody": { - "id": 925, + "id": 930, "nodeType": "Block", "src": "494:23:7", "statements": [ @@ -12563,7 +12634,7 @@ "expression": { "argumentTypes": null, "hexValue": "30", - "id": 923, + "id": 928, "isConstant": false, "isLValue": false, "isPure": true, @@ -12578,8 +12649,8 @@ }, "value": "0" }, - "functionReturnParameters": 919, - "id": 924, + "functionReturnParameters": 924, + "id": 929, "nodeType": "Return", "src": "502:8:7" } @@ -12588,15 +12659,15 @@ }, { "assignments": [ - 928 + 933 ], "declarations": [ { "constant": false, - "id": 928, + "id": 933, "name": "c", "nodeType": "VariableDeclaration", - "scope": 944, + "scope": 949, "src": "523:9:7", "stateVariable": false, "storageLocation": "default", @@ -12605,7 +12676,7 @@ "typeString": "uint256" }, "typeName": { - "id": 927, + "id": 932, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "523:7:7", @@ -12618,25 +12689,25 @@ "visibility": "internal" } ], - "id": 932, + "id": 937, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 931, + "id": 936, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 929, + "id": 934, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 913, + "referencedDeclaration": 918, "src": "535:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12647,11 +12718,11 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 930, + "id": 935, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 915, + "referencedDeclaration": 920, "src": "539:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12677,7 +12748,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 938, + "id": 943, "isConstant": false, "isLValue": false, "isPure": false, @@ -12688,18 +12759,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 936, + "id": 941, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 934, + "id": 939, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 928, + "referencedDeclaration": 933, "src": "554:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12710,11 +12781,11 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 935, + "id": 940, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 913, + "referencedDeclaration": 918, "src": "558:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12731,11 +12802,11 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 937, + "id": 942, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 915, + "referencedDeclaration": 920, "src": "563:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12756,21 +12827,21 @@ "typeString": "bool" } ], - "id": 933, + "id": 938, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1268, - 1269 + 1273, + 1274 ], - "referencedDeclaration": 1268, + "referencedDeclaration": 1273, "src": "546:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 939, + "id": 944, "isConstant": false, "isLValue": false, "isPure": false, @@ -12784,33 +12855,33 @@ "typeString": "tuple()" } }, - "id": 940, + "id": 945, "nodeType": "ExpressionStatement", "src": "546:19:7" }, { "expression": { "argumentTypes": null, - "id": 941, + "id": 946, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 928, + "referencedDeclaration": 933, "src": "579:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 919, - "id": 942, + "functionReturnParameters": 924, + "id": 947, "nodeType": "Return", "src": "572:8:7" } ] }, "documentation": "@dev Multiplies two numbers, reverts on overflow.", - "id": 944, + "id": 949, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -12818,15 +12889,15 @@ "name": "mul", "nodeType": "FunctionDefinition", "parameters": { - "id": 916, + "id": 921, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 913, + "id": 918, "name": "a", "nodeType": "VariableDeclaration", - "scope": 944, + "scope": 949, "src": "217:9:7", "stateVariable": false, "storageLocation": "default", @@ -12835,7 +12906,7 @@ "typeString": "uint256" }, "typeName": { - "id": 912, + "id": 917, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "217:7:7", @@ -12849,10 +12920,10 @@ }, { "constant": false, - "id": 915, + "id": 920, "name": "b", "nodeType": "VariableDeclaration", - "scope": 944, + "scope": 949, "src": "228:9:7", "stateVariable": false, "storageLocation": "default", @@ -12861,7 +12932,7 @@ "typeString": "uint256" }, "typeName": { - "id": 914, + "id": 919, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "228:7:7", @@ -12878,15 +12949,15 @@ }, "payable": false, "returnParameters": { - "id": 919, + "id": 924, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 918, + "id": 923, "name": "", "nodeType": "VariableDeclaration", - "scope": 944, + "scope": 949, "src": "262:7:7", "stateVariable": false, "storageLocation": "default", @@ -12895,7 +12966,7 @@ "typeString": "uint256" }, "typeName": { - "id": 917, + "id": 922, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "262:7:7", @@ -12910,7 +12981,7 @@ ], "src": "261:9:7" }, - "scope": 1037, + "scope": 1042, "src": "204:381:7", "stateMutability": "pure", "superFunction": null, @@ -12918,7 +12989,7 @@ }, { "body": { - "id": 967, + "id": 972, "nodeType": "Block", "src": "762:203:7", "statements": [ @@ -12932,18 +13003,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 956, + "id": 961, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 954, + "id": 959, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 948, + "referencedDeclaration": 953, "src": "776:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12955,7 +13026,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 955, + "id": 960, "isConstant": false, "isLValue": false, "isPure": true, @@ -12984,21 +13055,21 @@ "typeString": "bool" } ], - "id": 953, + "id": 958, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1268, - 1269 + 1273, + 1274 ], - "referencedDeclaration": 1268, + "referencedDeclaration": 1273, "src": "768:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 957, + "id": 962, "isConstant": false, "isLValue": false, "isPure": false, @@ -13012,21 +13083,21 @@ "typeString": "tuple()" } }, - "id": 958, + "id": 963, "nodeType": "ExpressionStatement", "src": "768:14:7" }, { "assignments": [ - 960 + 965 ], "declarations": [ { "constant": false, - "id": 960, + "id": 965, "name": "c", "nodeType": "VariableDeclaration", - "scope": 968, + "scope": 973, "src": "846:9:7", "stateVariable": false, "storageLocation": "default", @@ -13035,7 +13106,7 @@ "typeString": "uint256" }, "typeName": { - "id": 959, + "id": 964, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "846:7:7", @@ -13048,25 +13119,25 @@ "visibility": "internal" } ], - "id": 964, + "id": 969, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 963, + "id": 968, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 961, + "id": 966, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 946, + "referencedDeclaration": 951, "src": "858:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13077,11 +13148,11 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 962, + "id": 967, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 948, + "referencedDeclaration": 953, "src": "862:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13100,26 +13171,26 @@ { "expression": { "argumentTypes": null, - "id": 965, + "id": 970, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 960, + "referencedDeclaration": 965, "src": "959:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 952, - "id": 966, + "functionReturnParameters": 957, + "id": 971, "nodeType": "Return", "src": "952:8:7" } ] }, "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", - "id": 968, + "id": 973, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -13127,15 +13198,15 @@ "name": "div", "nodeType": "FunctionDefinition", "parameters": { - "id": 949, + "id": 954, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 946, + "id": 951, "name": "a", "nodeType": "VariableDeclaration", - "scope": 968, + "scope": 973, "src": "708:9:7", "stateVariable": false, "storageLocation": "default", @@ -13144,7 +13215,7 @@ "typeString": "uint256" }, "typeName": { - "id": 945, + "id": 950, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "708:7:7", @@ -13158,10 +13229,10 @@ }, { "constant": false, - "id": 948, + "id": 953, "name": "b", "nodeType": "VariableDeclaration", - "scope": 968, + "scope": 973, "src": "719:9:7", "stateVariable": false, "storageLocation": "default", @@ -13170,7 +13241,7 @@ "typeString": "uint256" }, "typeName": { - "id": 947, + "id": 952, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "719:7:7", @@ -13187,15 +13258,15 @@ }, "payable": false, "returnParameters": { - "id": 952, + "id": 957, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 951, + "id": 956, "name": "", "nodeType": "VariableDeclaration", - "scope": 968, + "scope": 973, "src": "753:7:7", "stateVariable": false, "storageLocation": "default", @@ -13204,7 +13275,7 @@ "typeString": "uint256" }, "typeName": { - "id": 950, + "id": 955, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "753:7:7", @@ -13219,7 +13290,7 @@ ], "src": "752:9:7" }, - "scope": 1037, + "scope": 1042, "src": "695:270:7", "stateMutability": "pure", "superFunction": null, @@ -13227,7 +13298,7 @@ }, { "body": { - "id": 991, + "id": 996, "nodeType": "Block", "src": "1145:64:7", "statements": [ @@ -13241,18 +13312,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 980, + "id": 985, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 978, + "id": 983, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 972, + "referencedDeclaration": 977, "src": "1159:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13263,11 +13334,11 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 979, + "id": 984, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 970, + "referencedDeclaration": 975, "src": "1164:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13288,21 +13359,21 @@ "typeString": "bool" } ], - "id": 977, + "id": 982, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1268, - 1269 + 1273, + 1274 ], - "referencedDeclaration": 1268, + "referencedDeclaration": 1273, "src": "1151:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 981, + "id": 986, "isConstant": false, "isLValue": false, "isPure": false, @@ -13316,21 +13387,21 @@ "typeString": "tuple()" } }, - "id": 982, + "id": 987, "nodeType": "ExpressionStatement", "src": "1151:15:7" }, { "assignments": [ - 984 + 989 ], "declarations": [ { "constant": false, - "id": 984, + "id": 989, "name": "c", "nodeType": "VariableDeclaration", - "scope": 992, + "scope": 997, "src": "1172:9:7", "stateVariable": false, "storageLocation": "default", @@ -13339,7 +13410,7 @@ "typeString": "uint256" }, "typeName": { - "id": 983, + "id": 988, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1172:7:7", @@ -13352,25 +13423,25 @@ "visibility": "internal" } ], - "id": 988, + "id": 993, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 987, + "id": 992, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 985, + "id": 990, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 970, + "referencedDeclaration": 975, "src": "1184:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13381,11 +13452,11 @@ "operator": "-", "rightExpression": { "argumentTypes": null, - "id": 986, + "id": 991, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 972, + "referencedDeclaration": 977, "src": "1188:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13404,26 +13475,26 @@ { "expression": { "argumentTypes": null, - "id": 989, + "id": 994, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 984, + "referencedDeclaration": 989, "src": "1203:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 976, - "id": 990, + "functionReturnParameters": 981, + "id": 995, "nodeType": "Return", "src": "1196:8:7" } ] }, "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", - "id": 992, + "id": 997, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -13431,15 +13502,15 @@ "name": "sub", "nodeType": "FunctionDefinition", "parameters": { - "id": 973, + "id": 978, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 970, + "id": 975, "name": "a", "nodeType": "VariableDeclaration", - "scope": 992, + "scope": 997, "src": "1091:9:7", "stateVariable": false, "storageLocation": "default", @@ -13448,7 +13519,7 @@ "typeString": "uint256" }, "typeName": { - "id": 969, + "id": 974, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1091:7:7", @@ -13462,10 +13533,10 @@ }, { "constant": false, - "id": 972, + "id": 977, "name": "b", "nodeType": "VariableDeclaration", - "scope": 992, + "scope": 997, "src": "1102:9:7", "stateVariable": false, "storageLocation": "default", @@ -13474,7 +13545,7 @@ "typeString": "uint256" }, "typeName": { - "id": 971, + "id": 976, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1102:7:7", @@ -13491,15 +13562,15 @@ }, "payable": false, "returnParameters": { - "id": 976, + "id": 981, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 975, + "id": 980, "name": "", "nodeType": "VariableDeclaration", - "scope": 992, + "scope": 997, "src": "1136:7:7", "stateVariable": false, "storageLocation": "default", @@ -13508,7 +13579,7 @@ "typeString": "uint256" }, "typeName": { - "id": 974, + "id": 979, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1136:7:7", @@ -13523,7 +13594,7 @@ ], "src": "1135:9:7" }, - "scope": 1037, + "scope": 1042, "src": "1078:131:7", "stateMutability": "pure", "superFunction": null, @@ -13531,21 +13602,21 @@ }, { "body": { - "id": 1015, + "id": 1020, "nodeType": "Block", "src": "1339:64:7", "statements": [ { "assignments": [ - 1002 + 1007 ], "declarations": [ { "constant": false, - "id": 1002, + "id": 1007, "name": "c", "nodeType": "VariableDeclaration", - "scope": 1016, + "scope": 1021, "src": "1345:9:7", "stateVariable": false, "storageLocation": "default", @@ -13554,7 +13625,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1001, + "id": 1006, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1345:7:7", @@ -13567,25 +13638,25 @@ "visibility": "internal" } ], - "id": 1006, + "id": 1011, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1005, + "id": 1010, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1003, + "id": 1008, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 994, + "referencedDeclaration": 999, "src": "1357:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13596,11 +13667,11 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 1004, + "id": 1009, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 996, + "referencedDeclaration": 1001, "src": "1361:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13626,18 +13697,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1010, + "id": 1015, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1008, + "id": 1013, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1002, + "referencedDeclaration": 1007, "src": "1376:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13648,11 +13719,11 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 1009, + "id": 1014, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 994, + "referencedDeclaration": 999, "src": "1381:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13673,21 +13744,21 @@ "typeString": "bool" } ], - "id": 1007, + "id": 1012, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1268, - 1269 + 1273, + 1274 ], - "referencedDeclaration": 1268, + "referencedDeclaration": 1273, "src": "1368:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1011, + "id": 1016, "isConstant": false, "isLValue": false, "isPure": false, @@ -13701,33 +13772,33 @@ "typeString": "tuple()" } }, - "id": 1012, + "id": 1017, "nodeType": "ExpressionStatement", "src": "1368:15:7" }, { "expression": { "argumentTypes": null, - "id": 1013, + "id": 1018, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1002, + "referencedDeclaration": 1007, "src": "1397:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1000, - "id": 1014, + "functionReturnParameters": 1005, + "id": 1019, "nodeType": "Return", "src": "1390:8:7" } ] }, "documentation": "@dev Adds two numbers, reverts on overflow.", - "id": 1016, + "id": 1021, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -13735,15 +13806,15 @@ "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 997, + "id": 1002, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 994, + "id": 999, "name": "a", "nodeType": "VariableDeclaration", - "scope": 1016, + "scope": 1021, "src": "1285:9:7", "stateVariable": false, "storageLocation": "default", @@ -13752,7 +13823,7 @@ "typeString": "uint256" }, "typeName": { - "id": 993, + "id": 998, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1285:7:7", @@ -13766,10 +13837,10 @@ }, { "constant": false, - "id": 996, + "id": 1001, "name": "b", "nodeType": "VariableDeclaration", - "scope": 1016, + "scope": 1021, "src": "1296:9:7", "stateVariable": false, "storageLocation": "default", @@ -13778,7 +13849,7 @@ "typeString": "uint256" }, "typeName": { - "id": 995, + "id": 1000, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1296:7:7", @@ -13795,15 +13866,15 @@ }, "payable": false, "returnParameters": { - "id": 1000, + "id": 1005, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 999, + "id": 1004, "name": "", "nodeType": "VariableDeclaration", - "scope": 1016, + "scope": 1021, "src": "1330:7:7", "stateVariable": false, "storageLocation": "default", @@ -13812,7 +13883,7 @@ "typeString": "uint256" }, "typeName": { - "id": 998, + "id": 1003, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1330:7:7", @@ -13827,7 +13898,7 @@ ], "src": "1329:9:7" }, - "scope": 1037, + "scope": 1042, "src": "1272:131:7", "stateMutability": "pure", "superFunction": null, @@ -13835,7 +13906,7 @@ }, { "body": { - "id": 1035, + "id": 1040, "nodeType": "Block", "src": "1602:44:7", "statements": [ @@ -13849,18 +13920,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1028, + "id": 1033, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1026, + "id": 1031, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1020, + "referencedDeclaration": 1025, "src": "1616:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13872,7 +13943,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1027, + "id": 1032, "isConstant": false, "isLValue": false, "isPure": true, @@ -13901,21 +13972,21 @@ "typeString": "bool" } ], - "id": 1025, + "id": 1030, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1268, - 1269 + 1273, + 1274 ], - "referencedDeclaration": 1268, + "referencedDeclaration": 1273, "src": "1608:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1029, + "id": 1034, "isConstant": false, "isLValue": false, "isPure": false, @@ -13929,7 +14000,7 @@ "typeString": "tuple()" } }, - "id": 1030, + "id": 1035, "nodeType": "ExpressionStatement", "src": "1608:15:7" }, @@ -13940,18 +14011,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1033, + "id": 1038, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1031, + "id": 1036, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1018, + "referencedDeclaration": 1023, "src": "1636:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13962,11 +14033,11 @@ "operator": "%", "rightExpression": { "argumentTypes": null, - "id": 1032, + "id": 1037, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1020, + "referencedDeclaration": 1025, "src": "1640:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13979,15 +14050,15 @@ "typeString": "uint256" } }, - "functionReturnParameters": 1024, - "id": 1034, + "functionReturnParameters": 1029, + "id": 1039, "nodeType": "Return", "src": "1629:12:7" } ] }, "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", - "id": 1036, + "id": 1041, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -13995,15 +14066,15 @@ "name": "mod", "nodeType": "FunctionDefinition", "parameters": { - "id": 1021, + "id": 1026, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1018, + "id": 1023, "name": "a", "nodeType": "VariableDeclaration", - "scope": 1036, + "scope": 1041, "src": "1548:9:7", "stateVariable": false, "storageLocation": "default", @@ -14012,7 +14083,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1017, + "id": 1022, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1548:7:7", @@ -14026,10 +14097,10 @@ }, { "constant": false, - "id": 1020, + "id": 1025, "name": "b", "nodeType": "VariableDeclaration", - "scope": 1036, + "scope": 1041, "src": "1559:9:7", "stateVariable": false, "storageLocation": "default", @@ -14038,7 +14109,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1019, + "id": 1024, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1559:7:7", @@ -14055,15 +14126,15 @@ }, "payable": false, "returnParameters": { - "id": 1024, + "id": 1029, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1023, + "id": 1028, "name": "", "nodeType": "VariableDeclaration", - "scope": 1036, + "scope": 1041, "src": "1593:7:7", "stateVariable": false, "storageLocation": "default", @@ -14072,7 +14143,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1022, + "id": 1027, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1593:7:7", @@ -14087,14 +14158,14 @@ ], "src": "1592:9:7" }, - "scope": 1037, + "scope": 1042, "src": "1535:111:7", "stateMutability": "pure", "superFunction": null, "visibility": "internal" } ], - "scope": 1038, + "scope": 1043, "src": "117:1531:7" } ], @@ -14107,14 +14178,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "exportedSymbols": { "IERC20": [ - 1106 + 1111 ] }, - "id": 1107, + "id": 1112, "nodeType": "SourceUnit", "nodes": [ { - "id": 1039, + "id": 1044, "literals": [ "solidity", "^", @@ -14130,9 +14201,9 @@ "contractKind": "interface", "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", "fullyImplemented": false, - "id": 1106, + "id": 1111, "linearizedBaseContracts": [ - 1106 + 1111 ], "name": "IERC20", "nodeType": "ContractDefinition", @@ -14140,7 +14211,7 @@ { "body": null, "documentation": null, - "id": 1044, + "id": 1049, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -14148,22 +14219,22 @@ "name": "totalSupply", "nodeType": "FunctionDefinition", "parameters": { - "id": 1040, + "id": 1045, "nodeType": "ParameterList", "parameters": [], "src": "156:2:8" }, "payable": false, "returnParameters": { - "id": 1043, + "id": 1048, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1042, + "id": 1047, "name": "", "nodeType": "VariableDeclaration", - "scope": 1044, + "scope": 1049, "src": "182:7:8", "stateVariable": false, "storageLocation": "default", @@ -14172,7 +14243,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1041, + "id": 1046, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "182:7:8", @@ -14187,7 +14258,7 @@ ], "src": "181:9:8" }, - "scope": 1106, + "scope": 1111, "src": "136:55:8", "stateMutability": "view", "superFunction": null, @@ -14196,7 +14267,7 @@ { "body": null, "documentation": null, - "id": 1051, + "id": 1056, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -14204,15 +14275,15 @@ "name": "balanceOf", "nodeType": "FunctionDefinition", "parameters": { - "id": 1047, + "id": 1052, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1046, + "id": 1051, "name": "who", "nodeType": "VariableDeclaration", - "scope": 1051, + "scope": 1056, "src": "214:11:8", "stateVariable": false, "storageLocation": "default", @@ -14221,7 +14292,7 @@ "typeString": "address" }, "typeName": { - "id": 1045, + "id": 1050, "name": "address", "nodeType": "ElementaryTypeName", "src": "214:7:8", @@ -14238,15 +14309,15 @@ }, "payable": false, "returnParameters": { - "id": 1050, + "id": 1055, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1049, + "id": 1054, "name": "", "nodeType": "VariableDeclaration", - "scope": 1051, + "scope": 1056, "src": "250:7:8", "stateVariable": false, "storageLocation": "default", @@ -14255,7 +14326,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1048, + "id": 1053, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "250:7:8", @@ -14270,7 +14341,7 @@ ], "src": "249:9:8" }, - "scope": 1106, + "scope": 1111, "src": "195:64:8", "stateMutability": "view", "superFunction": null, @@ -14279,7 +14350,7 @@ { "body": null, "documentation": null, - "id": 1060, + "id": 1065, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -14287,15 +14358,15 @@ "name": "allowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1056, + "id": 1061, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1053, + "id": 1058, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1060, + "scope": 1065, "src": "282:13:8", "stateVariable": false, "storageLocation": "default", @@ -14304,7 +14375,7 @@ "typeString": "address" }, "typeName": { - "id": 1052, + "id": 1057, "name": "address", "nodeType": "ElementaryTypeName", "src": "282:7:8", @@ -14318,10 +14389,10 @@ }, { "constant": false, - "id": 1055, + "id": 1060, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1060, + "scope": 1065, "src": "297:15:8", "stateVariable": false, "storageLocation": "default", @@ -14330,7 +14401,7 @@ "typeString": "address" }, "typeName": { - "id": 1054, + "id": 1059, "name": "address", "nodeType": "ElementaryTypeName", "src": "297:7:8", @@ -14347,15 +14418,15 @@ }, "payable": false, "returnParameters": { - "id": 1059, + "id": 1064, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1058, + "id": 1063, "name": "", "nodeType": "VariableDeclaration", - "scope": 1060, + "scope": 1065, "src": "341:7:8", "stateVariable": false, "storageLocation": "default", @@ -14364,7 +14435,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1057, + "id": 1062, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "341:7:8", @@ -14379,7 +14450,7 @@ ], "src": "340:9:8" }, - "scope": 1106, + "scope": 1111, "src": "263:87:8", "stateMutability": "view", "superFunction": null, @@ -14388,7 +14459,7 @@ { "body": null, "documentation": null, - "id": 1069, + "id": 1074, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -14396,15 +14467,15 @@ "name": "transfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 1065, + "id": 1070, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1062, + "id": 1067, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1069, + "scope": 1074, "src": "372:10:8", "stateVariable": false, "storageLocation": "default", @@ -14413,7 +14484,7 @@ "typeString": "address" }, "typeName": { - "id": 1061, + "id": 1066, "name": "address", "nodeType": "ElementaryTypeName", "src": "372:7:8", @@ -14427,10 +14498,10 @@ }, { "constant": false, - "id": 1064, + "id": 1069, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1069, + "scope": 1074, "src": "384:13:8", "stateVariable": false, "storageLocation": "default", @@ -14439,7 +14510,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1063, + "id": 1068, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "384:7:8", @@ -14456,15 +14527,15 @@ }, "payable": false, "returnParameters": { - "id": 1068, + "id": 1073, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1067, + "id": 1072, "name": "", "nodeType": "VariableDeclaration", - "scope": 1069, + "scope": 1074, "src": "417:4:8", "stateVariable": false, "storageLocation": "default", @@ -14473,7 +14544,7 @@ "typeString": "bool" }, "typeName": { - "id": 1066, + "id": 1071, "name": "bool", "nodeType": "ElementaryTypeName", "src": "417:4:8", @@ -14488,7 +14559,7 @@ ], "src": "416:6:8" }, - "scope": 1106, + "scope": 1111, "src": "354:69:8", "stateMutability": "nonpayable", "superFunction": null, @@ -14497,7 +14568,7 @@ { "body": null, "documentation": null, - "id": 1078, + "id": 1083, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -14505,15 +14576,15 @@ "name": "approve", "nodeType": "FunctionDefinition", "parameters": { - "id": 1074, + "id": 1079, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1071, + "id": 1076, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1078, + "scope": 1083, "src": "444:15:8", "stateVariable": false, "storageLocation": "default", @@ -14522,7 +14593,7 @@ "typeString": "address" }, "typeName": { - "id": 1070, + "id": 1075, "name": "address", "nodeType": "ElementaryTypeName", "src": "444:7:8", @@ -14536,10 +14607,10 @@ }, { "constant": false, - "id": 1073, + "id": 1078, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1078, + "scope": 1083, "src": "461:13:8", "stateVariable": false, "storageLocation": "default", @@ -14548,7 +14619,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1072, + "id": 1077, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "461:7:8", @@ -14565,15 +14636,15 @@ }, "payable": false, "returnParameters": { - "id": 1077, + "id": 1082, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1076, + "id": 1081, "name": "", "nodeType": "VariableDeclaration", - "scope": 1078, + "scope": 1083, "src": "498:4:8", "stateVariable": false, "storageLocation": "default", @@ -14582,7 +14653,7 @@ "typeString": "bool" }, "typeName": { - "id": 1075, + "id": 1080, "name": "bool", "nodeType": "ElementaryTypeName", "src": "498:4:8", @@ -14597,7 +14668,7 @@ ], "src": "497:6:8" }, - "scope": 1106, + "scope": 1111, "src": "427:77:8", "stateMutability": "nonpayable", "superFunction": null, @@ -14606,7 +14677,7 @@ { "body": null, "documentation": null, - "id": 1089, + "id": 1094, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -14614,15 +14685,15 @@ "name": "transferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 1085, + "id": 1090, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1080, + "id": 1085, "name": "from", "nodeType": "VariableDeclaration", - "scope": 1089, + "scope": 1094, "src": "530:12:8", "stateVariable": false, "storageLocation": "default", @@ -14631,7 +14702,7 @@ "typeString": "address" }, "typeName": { - "id": 1079, + "id": 1084, "name": "address", "nodeType": "ElementaryTypeName", "src": "530:7:8", @@ -14645,10 +14716,10 @@ }, { "constant": false, - "id": 1082, + "id": 1087, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1089, + "scope": 1094, "src": "544:10:8", "stateVariable": false, "storageLocation": "default", @@ -14657,7 +14728,7 @@ "typeString": "address" }, "typeName": { - "id": 1081, + "id": 1086, "name": "address", "nodeType": "ElementaryTypeName", "src": "544:7:8", @@ -14671,10 +14742,10 @@ }, { "constant": false, - "id": 1084, + "id": 1089, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1089, + "scope": 1094, "src": "556:13:8", "stateVariable": false, "storageLocation": "default", @@ -14683,7 +14754,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1083, + "id": 1088, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "556:7:8", @@ -14700,15 +14771,15 @@ }, "payable": false, "returnParameters": { - "id": 1088, + "id": 1093, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1087, + "id": 1092, "name": "", "nodeType": "VariableDeclaration", - "scope": 1089, + "scope": 1094, "src": "593:4:8", "stateVariable": false, "storageLocation": "default", @@ -14717,7 +14788,7 @@ "typeString": "bool" }, "typeName": { - "id": 1086, + "id": 1091, "name": "bool", "nodeType": "ElementaryTypeName", "src": "593:4:8", @@ -14732,7 +14803,7 @@ ], "src": "592:6:8" }, - "scope": 1106, + "scope": 1111, "src": "508:91:8", "stateMutability": "nonpayable", "superFunction": null, @@ -14741,20 +14812,20 @@ { "anonymous": false, "documentation": null, - "id": 1097, + "id": 1102, "name": "Transfer", "nodeType": "EventDefinition", "parameters": { - "id": 1096, + "id": 1101, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1091, + "id": 1096, "indexed": true, "name": "from", "nodeType": "VariableDeclaration", - "scope": 1097, + "scope": 1102, "src": "623:20:8", "stateVariable": false, "storageLocation": "default", @@ -14763,7 +14834,7 @@ "typeString": "address" }, "typeName": { - "id": 1090, + "id": 1095, "name": "address", "nodeType": "ElementaryTypeName", "src": "623:7:8", @@ -14777,11 +14848,11 @@ }, { "constant": false, - "id": 1093, + "id": 1098, "indexed": true, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1097, + "scope": 1102, "src": "649:18:8", "stateVariable": false, "storageLocation": "default", @@ -14790,7 +14861,7 @@ "typeString": "address" }, "typeName": { - "id": 1092, + "id": 1097, "name": "address", "nodeType": "ElementaryTypeName", "src": "649:7:8", @@ -14804,11 +14875,11 @@ }, { "constant": false, - "id": 1095, + "id": 1100, "indexed": false, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1097, + "scope": 1102, "src": "673:13:8", "stateVariable": false, "storageLocation": "default", @@ -14817,7 +14888,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1094, + "id": 1099, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "673:7:8", @@ -14837,20 +14908,20 @@ { "anonymous": false, "documentation": null, - "id": 1105, + "id": 1110, "name": "Approval", "nodeType": "EventDefinition", "parameters": { - "id": 1104, + "id": 1109, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1099, + "id": 1104, "indexed": true, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1105, + "scope": 1110, "src": "715:21:8", "stateVariable": false, "storageLocation": "default", @@ -14859,7 +14930,7 @@ "typeString": "address" }, "typeName": { - "id": 1098, + "id": 1103, "name": "address", "nodeType": "ElementaryTypeName", "src": "715:7:8", @@ -14873,11 +14944,11 @@ }, { "constant": false, - "id": 1101, + "id": 1106, "indexed": true, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1105, + "scope": 1110, "src": "742:23:8", "stateVariable": false, "storageLocation": "default", @@ -14886,7 +14957,7 @@ "typeString": "address" }, "typeName": { - "id": 1100, + "id": 1105, "name": "address", "nodeType": "ElementaryTypeName", "src": "742:7:8", @@ -14900,11 +14971,11 @@ }, { "constant": false, - "id": 1103, + "id": 1108, "indexed": false, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1105, + "scope": 1110, "src": "771:13:8", "stateVariable": false, "storageLocation": "default", @@ -14913,7 +14984,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1102, + "id": 1107, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "771:7:8", @@ -14931,7 +15002,7 @@ "src": "695:94:8" } ], - "scope": 1107, + "scope": 1112, "src": "115:676:8" } ], @@ -14944,14 +15015,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "exportedSymbols": { "SafeERC20": [ - 1250 + 1255 ] }, - "id": 1251, + "id": 1256, "nodeType": "SourceUnit", "nodes": [ { - "id": 1108, + "id": 1113, "literals": [ "solidity", "^", @@ -14964,10 +15035,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "./IERC20.sol", - "id": 1109, + "id": 1114, "nodeType": "ImportDirective", - "scope": 1251, - "sourceUnit": 1107, + "scope": 1256, + "sourceUnit": 1112, "src": "26:22:9", "symbolAliases": [], "unitAlias": "" @@ -14975,10 +15046,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "file": "../../math/SafeMath.sol", - "id": 1110, + "id": 1115, "nodeType": "ImportDirective", - "scope": 1251, - "sourceUnit": 1038, + "scope": 1256, + "sourceUnit": 1043, "src": "49:33:9", "symbolAliases": [], "unitAlias": "" @@ -14989,31 +15060,31 @@ "contractKind": "library", "documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.", "fullyImplemented": true, - "id": 1250, + "id": 1255, "linearizedBaseContracts": [ - 1250 + 1255 ], "name": "SafeERC20", "nodeType": "ContractDefinition", "nodes": [ { - "id": 1113, + "id": 1118, "libraryName": { "contractScope": null, - "id": 1111, + "id": 1116, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1037, + "referencedDeclaration": 1042, "src": "382:8:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$1037", + "typeIdentifier": "t_contract$_SafeMath_$1042", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", "src": "376:27:9", "typeName": { - "id": 1112, + "id": 1117, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "395:7:9", @@ -15025,7 +15096,7 @@ }, { "body": { - "id": 1130, + "id": 1135, "nodeType": "Block", "src": "501:45:9", "statements": [ @@ -15038,11 +15109,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1125, + "id": 1130, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1117, + "referencedDeclaration": 1122, "src": "530:2:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -15051,11 +15122,11 @@ }, { "argumentTypes": null, - "id": 1126, + "id": 1131, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1119, + "referencedDeclaration": 1124, "src": "534:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15076,32 +15147,32 @@ ], "expression": { "argumentTypes": null, - "id": 1123, + "id": 1128, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1115, + "referencedDeclaration": 1120, "src": "515:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1106", + "typeIdentifier": "t_contract$_IERC20_$1111", "typeString": "contract IERC20" } }, - "id": 1124, + "id": 1129, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1069, + "referencedDeclaration": 1074, "src": "515:14:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1127, + "id": 1132, "isConstant": false, "isLValue": false, "isPure": false, @@ -15123,21 +15194,21 @@ "typeString": "bool" } ], - "id": 1122, + "id": 1127, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1268, - 1269 + 1273, + 1274 ], - "referencedDeclaration": 1268, + "referencedDeclaration": 1273, "src": "507:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1128, + "id": 1133, "isConstant": false, "isLValue": false, "isPure": false, @@ -15151,14 +15222,14 @@ "typeString": "tuple()" } }, - "id": 1129, + "id": 1134, "nodeType": "ExpressionStatement", "src": "507:34:9" } ] }, "documentation": null, - "id": 1131, + "id": 1136, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -15166,31 +15237,31 @@ "name": "safeTransfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 1120, + "id": 1125, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1115, + "id": 1120, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1131, + "scope": 1136, "src": "434:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1106", + "typeIdentifier": "t_contract$_IERC20_$1111", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1114, + "id": 1119, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1106, + "referencedDeclaration": 1111, "src": "434:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1106", + "typeIdentifier": "t_contract$_IERC20_$1111", "typeString": "contract IERC20" } }, @@ -15199,10 +15270,10 @@ }, { "constant": false, - "id": 1117, + "id": 1122, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1131, + "scope": 1136, "src": "452:10:9", "stateVariable": false, "storageLocation": "default", @@ -15211,7 +15282,7 @@ "typeString": "address" }, "typeName": { - "id": 1116, + "id": 1121, "name": "address", "nodeType": "ElementaryTypeName", "src": "452:7:9", @@ -15225,10 +15296,10 @@ }, { "constant": false, - "id": 1119, + "id": 1124, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1131, + "scope": 1136, "src": "468:13:9", "stateVariable": false, "storageLocation": "default", @@ -15237,7 +15308,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1118, + "id": 1123, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "468:7:9", @@ -15254,12 +15325,12 @@ }, "payable": false, "returnParameters": { - "id": 1121, + "id": 1126, "nodeType": "ParameterList", "parameters": [], "src": "501:0:9" }, - "scope": 1250, + "scope": 1255, "src": "407:139:9", "stateMutability": "nonpayable", "superFunction": null, @@ -15267,7 +15338,7 @@ }, { "body": { - "id": 1151, + "id": 1156, "nodeType": "Block", "src": "666:55:9", "statements": [ @@ -15280,11 +15351,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1145, + "id": 1150, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1135, + "referencedDeclaration": 1140, "src": "699:4:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -15293,11 +15364,11 @@ }, { "argumentTypes": null, - "id": 1146, + "id": 1151, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1137, + "referencedDeclaration": 1142, "src": "705:2:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -15306,11 +15377,11 @@ }, { "argumentTypes": null, - "id": 1147, + "id": 1152, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1139, + "referencedDeclaration": 1144, "src": "709:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15335,32 +15406,32 @@ ], "expression": { "argumentTypes": null, - "id": 1143, + "id": 1148, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1133, + "referencedDeclaration": 1138, "src": "680:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1106", + "typeIdentifier": "t_contract$_IERC20_$1111", "typeString": "contract IERC20" } }, - "id": 1144, + "id": 1149, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", - "referencedDeclaration": 1089, + "referencedDeclaration": 1094, "src": "680:18:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)" } }, - "id": 1148, + "id": 1153, "isConstant": false, "isLValue": false, "isPure": false, @@ -15382,21 +15453,21 @@ "typeString": "bool" } ], - "id": 1142, + "id": 1147, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1268, - 1269 + 1273, + 1274 ], - "referencedDeclaration": 1268, + "referencedDeclaration": 1273, "src": "672:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1149, + "id": 1154, "isConstant": false, "isLValue": false, "isPure": false, @@ -15410,14 +15481,14 @@ "typeString": "tuple()" } }, - "id": 1150, + "id": 1155, "nodeType": "ExpressionStatement", "src": "672:44:9" } ] }, "documentation": null, - "id": 1152, + "id": 1157, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -15425,31 +15496,31 @@ "name": "safeTransferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 1140, + "id": 1145, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1133, + "id": 1138, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1152, + "scope": 1157, "src": "581:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1106", + "typeIdentifier": "t_contract$_IERC20_$1111", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1132, + "id": 1137, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1106, + "referencedDeclaration": 1111, "src": "581:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1106", + "typeIdentifier": "t_contract$_IERC20_$1111", "typeString": "contract IERC20" } }, @@ -15458,10 +15529,10 @@ }, { "constant": false, - "id": 1135, + "id": 1140, "name": "from", "nodeType": "VariableDeclaration", - "scope": 1152, + "scope": 1157, "src": "599:12:9", "stateVariable": false, "storageLocation": "default", @@ -15470,7 +15541,7 @@ "typeString": "address" }, "typeName": { - "id": 1134, + "id": 1139, "name": "address", "nodeType": "ElementaryTypeName", "src": "599:7:9", @@ -15484,10 +15555,10 @@ }, { "constant": false, - "id": 1137, + "id": 1142, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1152, + "scope": 1157, "src": "617:10:9", "stateVariable": false, "storageLocation": "default", @@ -15496,7 +15567,7 @@ "typeString": "address" }, "typeName": { - "id": 1136, + "id": 1141, "name": "address", "nodeType": "ElementaryTypeName", "src": "617:7:9", @@ -15510,10 +15581,10 @@ }, { "constant": false, - "id": 1139, + "id": 1144, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1152, + "scope": 1157, "src": "633:13:9", "stateVariable": false, "storageLocation": "default", @@ -15522,7 +15593,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1138, + "id": 1143, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "633:7:9", @@ -15539,12 +15610,12 @@ }, "payable": false, "returnParameters": { - "id": 1141, + "id": 1146, "nodeType": "ParameterList", "parameters": [], "src": "666:0:9" }, - "scope": 1250, + "scope": 1255, "src": "550:171:9", "stateMutability": "nonpayable", "superFunction": null, @@ -15552,7 +15623,7 @@ }, { "body": { - "id": 1186, + "id": 1191, "nodeType": "Block", "src": "823:330:9", "statements": [ @@ -15566,7 +15637,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1175, + "id": 1180, "isConstant": false, "isLValue": false, "isPure": false, @@ -15580,18 +15651,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1164, + "id": 1169, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1162, + "id": 1167, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1158, + "referencedDeclaration": 1163, "src": "1045:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15603,7 +15674,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1163, + "id": 1168, "isConstant": false, "isLValue": false, "isPure": true, @@ -15625,7 +15696,7 @@ } } ], - "id": 1165, + "id": 1170, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -15649,7 +15720,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1173, + "id": 1178, "isConstant": false, "isLValue": false, "isPure": false, @@ -15661,18 +15732,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1168, + "id": 1173, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1265, + "referencedDeclaration": 1270, "src": "1077:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1169, + "id": 1174, "isConstant": false, "isLValue": false, "isPure": false, @@ -15688,11 +15759,11 @@ }, { "argumentTypes": null, - "id": 1170, + "id": 1175, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1156, + "referencedDeclaration": 1161, "src": "1089:7:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -15713,32 +15784,32 @@ ], "expression": { "argumentTypes": null, - "id": 1166, + "id": 1171, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1154, + "referencedDeclaration": 1159, "src": "1061:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1106", + "typeIdentifier": "t_contract$_IERC20_$1111", "typeString": "contract IERC20" } }, - "id": 1167, + "id": 1172, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 1060, + "referencedDeclaration": 1065, "src": "1061:15:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1171, + "id": 1176, "isConstant": false, "isLValue": false, "isPure": false, @@ -15757,7 +15828,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1172, + "id": 1177, "isConstant": false, "isLValue": false, "isPure": true, @@ -15779,7 +15850,7 @@ } } ], - "id": 1174, + "id": 1179, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -15806,21 +15877,21 @@ "typeString": "bool" } ], - "id": 1161, + "id": 1166, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1268, - 1269 + 1273, + 1274 ], - "referencedDeclaration": 1268, + "referencedDeclaration": 1273, "src": "1036:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1176, + "id": 1181, "isConstant": false, "isLValue": false, "isPure": false, @@ -15834,7 +15905,7 @@ "typeString": "tuple()" } }, - "id": 1177, + "id": 1182, "nodeType": "ExpressionStatement", "src": "1036:68:9" }, @@ -15847,11 +15918,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1181, + "id": 1186, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1156, + "referencedDeclaration": 1161, "src": "1132:7:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -15860,11 +15931,11 @@ }, { "argumentTypes": null, - "id": 1182, + "id": 1187, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1158, + "referencedDeclaration": 1163, "src": "1141:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15885,32 +15956,32 @@ ], "expression": { "argumentTypes": null, - "id": 1179, + "id": 1184, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1154, + "referencedDeclaration": 1159, "src": "1118:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1106", + "typeIdentifier": "t_contract$_IERC20_$1111", "typeString": "contract IERC20" } }, - "id": 1180, + "id": 1185, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 1078, + "referencedDeclaration": 1083, "src": "1118:13:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1183, + "id": 1188, "isConstant": false, "isLValue": false, "isPure": false, @@ -15932,21 +16003,21 @@ "typeString": "bool" } ], - "id": 1178, + "id": 1183, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1268, - 1269 + 1273, + 1274 ], - "referencedDeclaration": 1268, + "referencedDeclaration": 1273, "src": "1110:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1184, + "id": 1189, "isConstant": false, "isLValue": false, "isPure": false, @@ -15960,14 +16031,14 @@ "typeString": "tuple()" } }, - "id": 1185, + "id": 1190, "nodeType": "ExpressionStatement", "src": "1110:38:9" } ] }, "documentation": null, - "id": 1187, + "id": 1192, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -15975,31 +16046,31 @@ "name": "safeApprove", "nodeType": "FunctionDefinition", "parameters": { - "id": 1159, + "id": 1164, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1154, + "id": 1159, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1187, + "scope": 1192, "src": "751:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1106", + "typeIdentifier": "t_contract$_IERC20_$1111", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1153, + "id": 1158, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1106, + "referencedDeclaration": 1111, "src": "751:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1106", + "typeIdentifier": "t_contract$_IERC20_$1111", "typeString": "contract IERC20" } }, @@ -16008,10 +16079,10 @@ }, { "constant": false, - "id": 1156, + "id": 1161, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1187, + "scope": 1192, "src": "769:15:9", "stateVariable": false, "storageLocation": "default", @@ -16020,7 +16091,7 @@ "typeString": "address" }, "typeName": { - "id": 1155, + "id": 1160, "name": "address", "nodeType": "ElementaryTypeName", "src": "769:7:9", @@ -16034,10 +16105,10 @@ }, { "constant": false, - "id": 1158, + "id": 1163, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1187, + "scope": 1192, "src": "790:13:9", "stateVariable": false, "storageLocation": "default", @@ -16046,7 +16117,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1157, + "id": 1162, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "790:7:9", @@ -16063,12 +16134,12 @@ }, "payable": false, "returnParameters": { - "id": 1160, + "id": 1165, "nodeType": "ParameterList", "parameters": [], "src": "823:0:9" }, - "scope": 1250, + "scope": 1255, "src": "725:428:9", "stateMutability": "nonpayable", "superFunction": null, @@ -16076,21 +16147,21 @@ }, { "body": { - "id": 1217, + "id": 1222, "nodeType": "Block", "src": "1265:135:9", "statements": [ { "assignments": [ - 1197 + 1202 ], "declarations": [ { "constant": false, - "id": 1197, + "id": 1202, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 1218, + "scope": 1223, "src": "1271:20:9", "stateVariable": false, "storageLocation": "default", @@ -16099,7 +16170,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1196, + "id": 1201, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1271:7:9", @@ -16112,17 +16183,17 @@ "visibility": "internal" } ], - "id": 1208, + "id": 1213, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1206, + "id": 1211, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1193, + "referencedDeclaration": 1198, "src": "1338:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16145,14 +16216,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1201, + "id": 1206, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1286, + "referencedDeclaration": 1291, "src": "1318:4:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1250", + "typeIdentifier": "t_contract$_SafeERC20_$1255", "typeString": "library SafeERC20" } } @@ -16160,11 +16231,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$1250", + "typeIdentifier": "t_contract$_SafeERC20_$1255", "typeString": "library SafeERC20" } ], - "id": 1200, + "id": 1205, "isConstant": false, "isLValue": false, "isPure": true, @@ -16177,7 +16248,7 @@ }, "typeName": "address" }, - "id": 1202, + "id": 1207, "isConstant": false, "isLValue": false, "isPure": false, @@ -16193,11 +16264,11 @@ }, { "argumentTypes": null, - "id": 1203, + "id": 1208, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1191, + "referencedDeclaration": 1196, "src": "1325:7:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -16218,32 +16289,32 @@ ], "expression": { "argumentTypes": null, - "id": 1198, + "id": 1203, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1189, + "referencedDeclaration": 1194, "src": "1294:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1106", + "typeIdentifier": "t_contract$_IERC20_$1111", "typeString": "contract IERC20" } }, - "id": 1199, + "id": 1204, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 1060, + "referencedDeclaration": 1065, "src": "1294:15:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1204, + "id": 1209, "isConstant": false, "isLValue": false, "isPure": false, @@ -16257,21 +16328,21 @@ "typeString": "uint256" } }, - "id": 1205, + "id": 1210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1016, + "referencedDeclaration": 1021, "src": "1294:43:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1207, + "id": 1212, "isConstant": false, "isLValue": false, "isPure": false, @@ -16297,11 +16368,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1212, + "id": 1217, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1191, + "referencedDeclaration": 1196, "src": "1372:7:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -16310,11 +16381,11 @@ }, { "argumentTypes": null, - "id": 1213, + "id": 1218, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1197, + "referencedDeclaration": 1202, "src": "1381:12:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16335,32 +16406,32 @@ ], "expression": { "argumentTypes": null, - "id": 1210, + "id": 1215, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1189, + "referencedDeclaration": 1194, "src": "1358:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1106", + "typeIdentifier": "t_contract$_IERC20_$1111", "typeString": "contract IERC20" } }, - "id": 1211, + "id": 1216, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 1078, + "referencedDeclaration": 1083, "src": "1358:13:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1214, + "id": 1219, "isConstant": false, "isLValue": false, "isPure": false, @@ -16382,21 +16453,21 @@ "typeString": "bool" } ], - "id": 1209, + "id": 1214, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1268, - 1269 + 1273, + 1274 ], - "referencedDeclaration": 1268, + "referencedDeclaration": 1273, "src": "1350:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1215, + "id": 1220, "isConstant": false, "isLValue": false, "isPure": false, @@ -16410,14 +16481,14 @@ "typeString": "tuple()" } }, - "id": 1216, + "id": 1221, "nodeType": "ExpressionStatement", "src": "1350:45:9" } ] }, "documentation": null, - "id": 1218, + "id": 1223, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -16425,31 +16496,31 @@ "name": "safeIncreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1194, + "id": 1199, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1189, + "id": 1194, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1218, + "scope": 1223, "src": "1193:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1106", + "typeIdentifier": "t_contract$_IERC20_$1111", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1188, + "id": 1193, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1106, + "referencedDeclaration": 1111, "src": "1193:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1106", + "typeIdentifier": "t_contract$_IERC20_$1111", "typeString": "contract IERC20" } }, @@ -16458,10 +16529,10 @@ }, { "constant": false, - "id": 1191, + "id": 1196, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1218, + "scope": 1223, "src": "1211:15:9", "stateVariable": false, "storageLocation": "default", @@ -16470,7 +16541,7 @@ "typeString": "address" }, "typeName": { - "id": 1190, + "id": 1195, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:9", @@ -16484,10 +16555,10 @@ }, { "constant": false, - "id": 1193, + "id": 1198, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1218, + "scope": 1223, "src": "1232:13:9", "stateVariable": false, "storageLocation": "default", @@ -16496,7 +16567,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1192, + "id": 1197, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1232:7:9", @@ -16513,12 +16584,12 @@ }, "payable": false, "returnParameters": { - "id": 1195, + "id": 1200, "nodeType": "ParameterList", "parameters": [], "src": "1265:0:9" }, - "scope": 1250, + "scope": 1255, "src": "1157:243:9", "stateMutability": "nonpayable", "superFunction": null, @@ -16526,21 +16597,21 @@ }, { "body": { - "id": 1248, + "id": 1253, "nodeType": "Block", "src": "1512:135:9", "statements": [ { "assignments": [ - 1228 + 1233 ], "declarations": [ { "constant": false, - "id": 1228, + "id": 1233, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 1249, + "scope": 1254, "src": "1518:20:9", "stateVariable": false, "storageLocation": "default", @@ -16549,7 +16620,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1227, + "id": 1232, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1518:7:9", @@ -16562,17 +16633,17 @@ "visibility": "internal" } ], - "id": 1239, + "id": 1244, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1237, + "id": 1242, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1224, + "referencedDeclaration": 1229, "src": "1585:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16595,14 +16666,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1232, + "id": 1237, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1286, + "referencedDeclaration": 1291, "src": "1565:4:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1250", + "typeIdentifier": "t_contract$_SafeERC20_$1255", "typeString": "library SafeERC20" } } @@ -16610,11 +16681,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$1250", + "typeIdentifier": "t_contract$_SafeERC20_$1255", "typeString": "library SafeERC20" } ], - "id": 1231, + "id": 1236, "isConstant": false, "isLValue": false, "isPure": true, @@ -16627,7 +16698,7 @@ }, "typeName": "address" }, - "id": 1233, + "id": 1238, "isConstant": false, "isLValue": false, "isPure": false, @@ -16643,11 +16714,11 @@ }, { "argumentTypes": null, - "id": 1234, + "id": 1239, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1222, + "referencedDeclaration": 1227, "src": "1572:7:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -16668,32 +16739,32 @@ ], "expression": { "argumentTypes": null, - "id": 1229, + "id": 1234, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1220, + "referencedDeclaration": 1225, "src": "1541:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1106", + "typeIdentifier": "t_contract$_IERC20_$1111", "typeString": "contract IERC20" } }, - "id": 1230, + "id": 1235, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 1060, + "referencedDeclaration": 1065, "src": "1541:15:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1235, + "id": 1240, "isConstant": false, "isLValue": false, "isPure": false, @@ -16707,21 +16778,21 @@ "typeString": "uint256" } }, - "id": 1236, + "id": 1241, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 992, + "referencedDeclaration": 997, "src": "1541:43:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1238, + "id": 1243, "isConstant": false, "isLValue": false, "isPure": false, @@ -16747,11 +16818,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1243, + "id": 1248, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1222, + "referencedDeclaration": 1227, "src": "1619:7:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -16760,11 +16831,11 @@ }, { "argumentTypes": null, - "id": 1244, + "id": 1249, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1228, + "referencedDeclaration": 1233, "src": "1628:12:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16785,32 +16856,32 @@ ], "expression": { "argumentTypes": null, - "id": 1241, + "id": 1246, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1220, + "referencedDeclaration": 1225, "src": "1605:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1106", + "typeIdentifier": "t_contract$_IERC20_$1111", "typeString": "contract IERC20" } }, - "id": 1242, + "id": 1247, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 1078, + "referencedDeclaration": 1083, "src": "1605:13:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1245, + "id": 1250, "isConstant": false, "isLValue": false, "isPure": false, @@ -16832,21 +16903,21 @@ "typeString": "bool" } ], - "id": 1240, + "id": 1245, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1268, - 1269 + 1273, + 1274 ], - "referencedDeclaration": 1268, + "referencedDeclaration": 1273, "src": "1597:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1246, + "id": 1251, "isConstant": false, "isLValue": false, "isPure": false, @@ -16860,14 +16931,14 @@ "typeString": "tuple()" } }, - "id": 1247, + "id": 1252, "nodeType": "ExpressionStatement", "src": "1597:45:9" } ] }, "documentation": null, - "id": 1249, + "id": 1254, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -16875,31 +16946,31 @@ "name": "safeDecreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1225, + "id": 1230, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1220, + "id": 1225, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1249, + "scope": 1254, "src": "1440:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1106", + "typeIdentifier": "t_contract$_IERC20_$1111", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1219, + "id": 1224, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1106, + "referencedDeclaration": 1111, "src": "1440:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1106", + "typeIdentifier": "t_contract$_IERC20_$1111", "typeString": "contract IERC20" } }, @@ -16908,10 +16979,10 @@ }, { "constant": false, - "id": 1222, + "id": 1227, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1249, + "scope": 1254, "src": "1458:15:9", "stateVariable": false, "storageLocation": "default", @@ -16920,7 +16991,7 @@ "typeString": "address" }, "typeName": { - "id": 1221, + "id": 1226, "name": "address", "nodeType": "ElementaryTypeName", "src": "1458:7:9", @@ -16934,10 +17005,10 @@ }, { "constant": false, - "id": 1224, + "id": 1229, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1249, + "scope": 1254, "src": "1479:13:9", "stateVariable": false, "storageLocation": "default", @@ -16946,7 +17017,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1223, + "id": 1228, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1479:7:9", @@ -16963,19 +17034,19 @@ }, "payable": false, "returnParameters": { - "id": 1226, + "id": 1231, "nodeType": "ParameterList", "parameters": [], "src": "1512:0:9" }, - "scope": 1250, + "scope": 1255, "src": "1404:243:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 1251, + "scope": 1256, "src": "353:1296:9" } ], diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.bin b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.bin index f56408f66..fd3dbf5fd 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.bin +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b50604051602080620010d083398101604052516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790556200006c90640100000000620000c7810204565b6200008033640100000000620000e5810204565b50600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054600160a060020a031916905562000193565b620000e260028264010000000062000e066200010082021704565b50565b620000e260038264010000000062000e066200010082021704565b600160a060020a03811615156200011657600080fd5b6200012b82826401000000006200015b810204565b156200013657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200017357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610f2d80620001a36000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632e6b6849146100bc578063341ccfcb146100dd57806334cdcf26146100fe5780633d19ab1314610133578063608d3d3d1461016757806374be75921461018857806381f909f3146101a957806399f4b251146101ca578063bb52c137146101df578063d43acc7914610206578063e9d618591461021b575b600080fd5b3480156100b157600080fd5b506100ba610230565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661024e565b3480156100e957600080fd5b506100ba600160a060020a036004351661026e565b34801561010a57600080fd5b5061011f600160a060020a0360043516610457565b604080519115158252519081900360200190f35b34801561013f57600080fd5b5061014b600435610470565b60408051600160a060020a039092168252519081900360200190f35b34801561017357600080fd5b5061011f600160a060020a036004351661049f565b34801561019457600080fd5b506100ba600160a060020a03600435166104b2565b3480156101b557600080fd5b506100ba600160a060020a03600435166104cf565b3480156101d657600080fd5b506100ba610686565b3480156101eb57600080fd5b506101f4610bd1565b60408051918252519081900360200190f35b34801561021257600080fd5b506100ba610bdc565b34801561022757600080fd5b506100ba610be5565b6102393361049f565b151561024457600080fd5b61024c610bee565b565b6102573361049f565b151561026257600080fd5b61026b81610cb5565b50565b60008054819074010000000000000000000000000000000000000000900460ff161561029957600080fd5b6102a23361049f565b15156102ad57600080fd5b6004546103e8116102bd57600080fd5b600160a060020a038316600090815260056020526040902054156102e057600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032157600080fd5b505af1158015610335573d6000803e3d6000fd5b505050506040513d602081101561034b57600080fd5b5051151561035857600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b505050506040513d60208110156103c057600080fd5b50519050600060ff8216108015906103dc575060058160ff1611155b15156103e757600080fd5b505060048054600160a060020a039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b600061046a60028363ffffffff610cc616565b92915050565b600060048260010181548110151561048457fe5b600091825260209091200154600160a060020a031692915050565b600061046a60038363ffffffff610cc616565b6104bb33610457565b15156104c657600080fd5b61026b81610cfd565b60005474010000000000000000000000000000000000000000900460ff16156104f757600080fd5b6105003361049f565b151561050b57600080fd5b60045460011061051a57600080fd5b600454600214156105865760048054600190811061053457fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff191690556001610567600482610ea0565b50600160a060020a03811660009081526005602052604081205561026b565b600454600160a060020a03821660009081526005602052604090205414610620576004805460001981019081106105b957fe5b6000918252602080832090910154600160a060020a03848116845260059092526040909220546004805492909316929181106105f157fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60048054600019810190811061063257fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff19169055600480549061066b906000198301610ea0565b50600160a060020a0316600090815260056020526040812055565b6000610690610ec4565b60008060008061069e610ec4565b60005474010000000000000000000000000000000000000000900460ff16156106c657600080fd5b6106cf33610457565b15156106da57600080fd5b6004546001106106e957600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b505050506040513d602081101561077957600080fd5b505196506000871161078a57600080fd5b600194505b6004548510156109395760048054869081106107a757fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561080557600080fd5b505af1158015610819573d6000803e3d6000fd5b505050506040513d602081101561082f57600080fd5b5051151561083c5761092e565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561087a57600080fd5b505af115801561088e573d6000803e3d6000fd5b505050506040513d60208110156108a457600080fd5b5051925060ff831615156108c6578560005b602002018051600101905261092e565b8260ff16600114156108da578560016108b6565b8260ff16600214156108ee578560026108b6565b8260ff1660031415610902578560036108b6565b8260ff1660041415610916578560046108b6565b8260ff166005141561092e5760a08601805160010190525b60019094019361078f565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e909102016028909102016032909102019150818781151561097f57fe5b04815281600a880281151561099057fe5b04602082015281601488028115156109a457fe5b04604082015281601e88028115156109b857fe5b04606082015281602888028115156109cc57fe5b04608082015281603288028115156109e057fe5b0460a0820152600194505b600454851015610bc8576004805486908110610a0357fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a6157600080fd5b505af1158015610a75573d6000803e3d6000fd5b505050506040513d6020811015610a8b57600080fd5b50511515610a9857610bbd565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b505050506040513d6020811015610b0057600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610bbd91600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610b6457600080fd5b505af1158015610b78573d6000803e3d6000fd5b505050506040513d6020811015610b8e57600080fd5b50518260ff861660068110610b9f57fe5b6020020151600154600160a060020a0316919063ffffffff610d0e16565b6001909401936109eb565b50505050505050565b600454600019015b90565b61024c33610dad565b61024c33610dbe565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b505050506040513d6020811015610c7d57600080fd5b505190506000811115610cad57600054600154610cad91600160a060020a0391821691168363ffffffff610d0e16565b61026b610dcf565b61026b60038263ffffffff610e0616565b6000600160a060020a0382161515610cdd57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61026b60028263ffffffff610e0616565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610d7157600080fd5b505af1158015610d85573d6000803e3d6000fd5b505050506040513d6020811015610d9b57600080fd5b50511515610da857600080fd5b505050565b61026b60038263ffffffff610e5416565b61026b60028263ffffffff610e5416565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a0381161515610e1b57600080fd5b610e258282610cc6565b15610e2f57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610e6957600080fd5b610e738282610cc6565b1515610e7e57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610da857600083815260209020610da8918101908301610ee3565b60c0604051908101604052806006906020820280388339509192915050565b610bd991905b80821115610efd5760008155600101610ee9565b50905600a165627a7a72305820c97e98efb9f61c8f769238044b274ddcf265ed47d4444eab2134a813ff57783b0029 \ No newline at end of file +60806040523480156200001157600080fd5b50604051602080620010d083398101604052516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790556200006c90640100000000620000c7810204565b6200008033640100000000620000e5810204565b50600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054600160a060020a031916905562000193565b620000e260028264010000000062000e066200010082021704565b50565b620000e260038264010000000062000e066200010082021704565b600160a060020a03811615156200011657600080fd5b6200012b82826401000000006200015b810204565b156200013657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200017357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610f2d80620001a36000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632e6b6849146100bc578063341ccfcb146100dd57806334cdcf26146100fe5780633d19ab1314610133578063608d3d3d1461016757806374be75921461018857806381f909f3146101a957806399f4b251146101ca578063bb52c137146101df578063d43acc7914610206578063e9d618591461021b575b600080fd5b3480156100b157600080fd5b506100ba610230565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661024e565b3480156100e957600080fd5b506100ba600160a060020a036004351661026e565b34801561010a57600080fd5b5061011f600160a060020a0360043516610457565b604080519115158252519081900360200190f35b34801561013f57600080fd5b5061014b600435610470565b60408051600160a060020a039092168252519081900360200190f35b34801561017357600080fd5b5061011f600160a060020a036004351661049f565b34801561019457600080fd5b506100ba600160a060020a03600435166104b2565b3480156101b557600080fd5b506100ba600160a060020a03600435166104cf565b3480156101d657600080fd5b506100ba610686565b3480156101eb57600080fd5b506101f4610bd1565b60408051918252519081900360200190f35b34801561021257600080fd5b506100ba610bdc565b34801561022757600080fd5b506100ba610be5565b6102393361049f565b151561024457600080fd5b61024c610bee565b565b6102573361049f565b151561026257600080fd5b61026b81610cb5565b50565b60008054819074010000000000000000000000000000000000000000900460ff161561029957600080fd5b6102a23361049f565b15156102ad57600080fd5b6004546103e8116102bd57600080fd5b600160a060020a038316600090815260056020526040902054156102e057600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032157600080fd5b505af1158015610335573d6000803e3d6000fd5b505050506040513d602081101561034b57600080fd5b5051151561035857600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b505050506040513d60208110156103c057600080fd5b50519050600060ff8216108015906103dc575060058160ff1611155b15156103e757600080fd5b505060048054600160a060020a039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b600061046a60028363ffffffff610cc616565b92915050565b600060048260010181548110151561048457fe5b600091825260209091200154600160a060020a031692915050565b600061046a60038363ffffffff610cc616565b6104bb33610457565b15156104c657600080fd5b61026b81610cfd565b60005474010000000000000000000000000000000000000000900460ff16156104f757600080fd5b6105003361049f565b151561050b57600080fd5b60045460011061051a57600080fd5b600454600214156105865760048054600190811061053457fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff191690556001610567600482610ea0565b50600160a060020a03811660009081526005602052604081205561026b565b600454600160a060020a03821660009081526005602052604090205414610620576004805460001981019081106105b957fe5b6000918252602080832090910154600160a060020a03848116845260059092526040909220546004805492909316929181106105f157fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60048054600019810190811061063257fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff19169055600480549061066b906000198301610ea0565b50600160a060020a0316600090815260056020526040812055565b6000610690610ec4565b60008060008061069e610ec4565b60005474010000000000000000000000000000000000000000900460ff16156106c657600080fd5b6106cf33610457565b15156106da57600080fd5b6004546001106106e957600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b505050506040513d602081101561077957600080fd5b505196506000871161078a57600080fd5b600194505b6004548510156109395760048054869081106107a757fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561080557600080fd5b505af1158015610819573d6000803e3d6000fd5b505050506040513d602081101561082f57600080fd5b5051151561083c5761092e565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561087a57600080fd5b505af115801561088e573d6000803e3d6000fd5b505050506040513d60208110156108a457600080fd5b5051925060ff831615156108c6578560005b602002018051600101905261092e565b8260ff16600114156108da578560016108b6565b8260ff16600214156108ee578560026108b6565b8260ff1660031415610902578560036108b6565b8260ff1660041415610916578560046108b6565b8260ff166005141561092e5760a08601805160010190525b60019094019361078f565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e909102016028909102016032909102019150818781151561097f57fe5b04815281600a880281151561099057fe5b04602082015281601488028115156109a457fe5b04604082015281601e88028115156109b857fe5b04606082015281602888028115156109cc57fe5b04608082015281603288028115156109e057fe5b0460a0820152600194505b600454851015610bc8576004805486908110610a0357fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a6157600080fd5b505af1158015610a75573d6000803e3d6000fd5b505050506040513d6020811015610a8b57600080fd5b50511515610a9857610bbd565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b505050506040513d6020811015610b0057600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610bbd91600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610b6457600080fd5b505af1158015610b78573d6000803e3d6000fd5b505050506040513d6020811015610b8e57600080fd5b50518260ff861660068110610b9f57fe5b6020020151600154600160a060020a0316919063ffffffff610d0e16565b6001909401936109eb565b50505050505050565b600454600019015b90565b61024c33610dad565b61024c33610dbe565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b505050506040513d6020811015610c7d57600080fd5b505190506000811115610cad57600054600154610cad91600160a060020a0391821691168363ffffffff610d0e16565b61026b610dcf565b61026b60038263ffffffff610e0616565b6000600160a060020a0382161515610cdd57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61026b60028263ffffffff610e0616565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610d7157600080fd5b505af1158015610d85573d6000803e3d6000fd5b505050506040513d6020811015610d9b57600080fd5b50511515610da857600080fd5b505050565b61026b60038263ffffffff610e5416565b61026b60028263ffffffff610e5416565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a0381161515610e1b57600080fd5b610e258282610cc6565b15610e2f57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610e6957600080fd5b610e738282610cc6565b1515610e7e57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610da857600083815260209020610da8918101908301610ee3565b60c0604051908101604052806006906020820280388339509192915050565b610bd991905b80821115610efd5760008155600101610ee9565b50905600a165627a7a7230582095e26f90cc3199aca464eb563533fc93a77d60dc52f6506d09a60413c4ab2d960029 \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.json index 2124d0262..4edae4a73 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.json @@ -175,7 +175,7 @@ "type": "constructor" } ], - "bytecode": "60806040523480156200001157600080fd5b50604051602080620010d083398101604052516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790556200006c90640100000000620000c7810204565b6200008033640100000000620000e5810204565b50600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054600160a060020a031916905562000193565b620000e260028264010000000062000e066200010082021704565b50565b620000e260038264010000000062000e066200010082021704565b600160a060020a03811615156200011657600080fd5b6200012b82826401000000006200015b810204565b156200013657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200017357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610f2d80620001a36000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632e6b6849146100bc578063341ccfcb146100dd57806334cdcf26146100fe5780633d19ab1314610133578063608d3d3d1461016757806374be75921461018857806381f909f3146101a957806399f4b251146101ca578063bb52c137146101df578063d43acc7914610206578063e9d618591461021b575b600080fd5b3480156100b157600080fd5b506100ba610230565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661024e565b3480156100e957600080fd5b506100ba600160a060020a036004351661026e565b34801561010a57600080fd5b5061011f600160a060020a0360043516610457565b604080519115158252519081900360200190f35b34801561013f57600080fd5b5061014b600435610470565b60408051600160a060020a039092168252519081900360200190f35b34801561017357600080fd5b5061011f600160a060020a036004351661049f565b34801561019457600080fd5b506100ba600160a060020a03600435166104b2565b3480156101b557600080fd5b506100ba600160a060020a03600435166104cf565b3480156101d657600080fd5b506100ba610686565b3480156101eb57600080fd5b506101f4610bd1565b60408051918252519081900360200190f35b34801561021257600080fd5b506100ba610bdc565b34801561022757600080fd5b506100ba610be5565b6102393361049f565b151561024457600080fd5b61024c610bee565b565b6102573361049f565b151561026257600080fd5b61026b81610cb5565b50565b60008054819074010000000000000000000000000000000000000000900460ff161561029957600080fd5b6102a23361049f565b15156102ad57600080fd5b6004546103e8116102bd57600080fd5b600160a060020a038316600090815260056020526040902054156102e057600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032157600080fd5b505af1158015610335573d6000803e3d6000fd5b505050506040513d602081101561034b57600080fd5b5051151561035857600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b505050506040513d60208110156103c057600080fd5b50519050600060ff8216108015906103dc575060058160ff1611155b15156103e757600080fd5b505060048054600160a060020a039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b600061046a60028363ffffffff610cc616565b92915050565b600060048260010181548110151561048457fe5b600091825260209091200154600160a060020a031692915050565b600061046a60038363ffffffff610cc616565b6104bb33610457565b15156104c657600080fd5b61026b81610cfd565b60005474010000000000000000000000000000000000000000900460ff16156104f757600080fd5b6105003361049f565b151561050b57600080fd5b60045460011061051a57600080fd5b600454600214156105865760048054600190811061053457fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff191690556001610567600482610ea0565b50600160a060020a03811660009081526005602052604081205561026b565b600454600160a060020a03821660009081526005602052604090205414610620576004805460001981019081106105b957fe5b6000918252602080832090910154600160a060020a03848116845260059092526040909220546004805492909316929181106105f157fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60048054600019810190811061063257fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff19169055600480549061066b906000198301610ea0565b50600160a060020a0316600090815260056020526040812055565b6000610690610ec4565b60008060008061069e610ec4565b60005474010000000000000000000000000000000000000000900460ff16156106c657600080fd5b6106cf33610457565b15156106da57600080fd5b6004546001106106e957600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b505050506040513d602081101561077957600080fd5b505196506000871161078a57600080fd5b600194505b6004548510156109395760048054869081106107a757fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561080557600080fd5b505af1158015610819573d6000803e3d6000fd5b505050506040513d602081101561082f57600080fd5b5051151561083c5761092e565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561087a57600080fd5b505af115801561088e573d6000803e3d6000fd5b505050506040513d60208110156108a457600080fd5b5051925060ff831615156108c6578560005b602002018051600101905261092e565b8260ff16600114156108da578560016108b6565b8260ff16600214156108ee578560026108b6565b8260ff1660031415610902578560036108b6565b8260ff1660041415610916578560046108b6565b8260ff166005141561092e5760a08601805160010190525b60019094019361078f565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e909102016028909102016032909102019150818781151561097f57fe5b04815281600a880281151561099057fe5b04602082015281601488028115156109a457fe5b04604082015281601e88028115156109b857fe5b04606082015281602888028115156109cc57fe5b04608082015281603288028115156109e057fe5b0460a0820152600194505b600454851015610bc8576004805486908110610a0357fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a6157600080fd5b505af1158015610a75573d6000803e3d6000fd5b505050506040513d6020811015610a8b57600080fd5b50511515610a9857610bbd565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b505050506040513d6020811015610b0057600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610bbd91600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610b6457600080fd5b505af1158015610b78573d6000803e3d6000fd5b505050506040513d6020811015610b8e57600080fd5b50518260ff861660068110610b9f57fe5b6020020151600154600160a060020a0316919063ffffffff610d0e16565b6001909401936109eb565b50505050505050565b600454600019015b90565b61024c33610dad565b61024c33610dbe565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b505050506040513d6020811015610c7d57600080fd5b505190506000811115610cad57600054600154610cad91600160a060020a0391821691168363ffffffff610d0e16565b61026b610dcf565b61026b60038263ffffffff610e0616565b6000600160a060020a0382161515610cdd57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61026b60028263ffffffff610e0616565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610d7157600080fd5b505af1158015610d85573d6000803e3d6000fd5b505050506040513d6020811015610d9b57600080fd5b50511515610da857600080fd5b505050565b61026b60038263ffffffff610e5416565b61026b60028263ffffffff610e5416565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a0381161515610e1b57600080fd5b610e258282610cc6565b15610e2f57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610e6957600080fd5b610e738282610cc6565b1515610e7e57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610da857600083815260209020610da8918101908301610ee3565b60c0604051908101604052806006906020820280388339509192915050565b610bd991905b80821115610efd5760008155600101610ee9565b50905600a165627a7a72305820c97e98efb9f61c8f769238044b274ddcf265ed47d4444eab2134a813ff57783b0029", + "bytecode": "60806040523480156200001157600080fd5b50604051602080620010d083398101604052516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790556200006c90640100000000620000c7810204565b6200008033640100000000620000e5810204565b50600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054600160a060020a031916905562000193565b620000e260028264010000000062000e066200010082021704565b50565b620000e260038264010000000062000e066200010082021704565b600160a060020a03811615156200011657600080fd5b6200012b82826401000000006200015b810204565b156200013657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200017357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610f2d80620001a36000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632e6b6849146100bc578063341ccfcb146100dd57806334cdcf26146100fe5780633d19ab1314610133578063608d3d3d1461016757806374be75921461018857806381f909f3146101a957806399f4b251146101ca578063bb52c137146101df578063d43acc7914610206578063e9d618591461021b575b600080fd5b3480156100b157600080fd5b506100ba610230565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661024e565b3480156100e957600080fd5b506100ba600160a060020a036004351661026e565b34801561010a57600080fd5b5061011f600160a060020a0360043516610457565b604080519115158252519081900360200190f35b34801561013f57600080fd5b5061014b600435610470565b60408051600160a060020a039092168252519081900360200190f35b34801561017357600080fd5b5061011f600160a060020a036004351661049f565b34801561019457600080fd5b506100ba600160a060020a03600435166104b2565b3480156101b557600080fd5b506100ba600160a060020a03600435166104cf565b3480156101d657600080fd5b506100ba610686565b3480156101eb57600080fd5b506101f4610bd1565b60408051918252519081900360200190f35b34801561021257600080fd5b506100ba610bdc565b34801561022757600080fd5b506100ba610be5565b6102393361049f565b151561024457600080fd5b61024c610bee565b565b6102573361049f565b151561026257600080fd5b61026b81610cb5565b50565b60008054819074010000000000000000000000000000000000000000900460ff161561029957600080fd5b6102a23361049f565b15156102ad57600080fd5b6004546103e8116102bd57600080fd5b600160a060020a038316600090815260056020526040902054156102e057600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032157600080fd5b505af1158015610335573d6000803e3d6000fd5b505050506040513d602081101561034b57600080fd5b5051151561035857600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b505050506040513d60208110156103c057600080fd5b50519050600060ff8216108015906103dc575060058160ff1611155b15156103e757600080fd5b505060048054600160a060020a039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b600061046a60028363ffffffff610cc616565b92915050565b600060048260010181548110151561048457fe5b600091825260209091200154600160a060020a031692915050565b600061046a60038363ffffffff610cc616565b6104bb33610457565b15156104c657600080fd5b61026b81610cfd565b60005474010000000000000000000000000000000000000000900460ff16156104f757600080fd5b6105003361049f565b151561050b57600080fd5b60045460011061051a57600080fd5b600454600214156105865760048054600190811061053457fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff191690556001610567600482610ea0565b50600160a060020a03811660009081526005602052604081205561026b565b600454600160a060020a03821660009081526005602052604090205414610620576004805460001981019081106105b957fe5b6000918252602080832090910154600160a060020a03848116845260059092526040909220546004805492909316929181106105f157fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60048054600019810190811061063257fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff19169055600480549061066b906000198301610ea0565b50600160a060020a0316600090815260056020526040812055565b6000610690610ec4565b60008060008061069e610ec4565b60005474010000000000000000000000000000000000000000900460ff16156106c657600080fd5b6106cf33610457565b15156106da57600080fd5b6004546001106106e957600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b505050506040513d602081101561077957600080fd5b505196506000871161078a57600080fd5b600194505b6004548510156109395760048054869081106107a757fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561080557600080fd5b505af1158015610819573d6000803e3d6000fd5b505050506040513d602081101561082f57600080fd5b5051151561083c5761092e565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561087a57600080fd5b505af115801561088e573d6000803e3d6000fd5b505050506040513d60208110156108a457600080fd5b5051925060ff831615156108c6578560005b602002018051600101905261092e565b8260ff16600114156108da578560016108b6565b8260ff16600214156108ee578560026108b6565b8260ff1660031415610902578560036108b6565b8260ff1660041415610916578560046108b6565b8260ff166005141561092e5760a08601805160010190525b60019094019361078f565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e909102016028909102016032909102019150818781151561097f57fe5b04815281600a880281151561099057fe5b04602082015281601488028115156109a457fe5b04604082015281601e88028115156109b857fe5b04606082015281602888028115156109cc57fe5b04608082015281603288028115156109e057fe5b0460a0820152600194505b600454851015610bc8576004805486908110610a0357fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a6157600080fd5b505af1158015610a75573d6000803e3d6000fd5b505050506040513d6020811015610a8b57600080fd5b50511515610a9857610bbd565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b505050506040513d6020811015610b0057600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610bbd91600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610b6457600080fd5b505af1158015610b78573d6000803e3d6000fd5b505050506040513d6020811015610b8e57600080fd5b50518260ff861660068110610b9f57fe5b6020020151600154600160a060020a0316919063ffffffff610d0e16565b6001909401936109eb565b50505050505050565b600454600019015b90565b61024c33610dad565b61024c33610dbe565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b505050506040513d6020811015610c7d57600080fd5b505190506000811115610cad57600054600154610cad91600160a060020a0391821691168363ffffffff610d0e16565b61026b610dcf565b61026b60038263ffffffff610e0616565b6000600160a060020a0382161515610cdd57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61026b60028263ffffffff610e0616565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610d7157600080fd5b505af1158015610d85573d6000803e3d6000fd5b505050506040513d6020811015610d9b57600080fd5b50511515610da857600080fd5b505050565b61026b60038263ffffffff610e5416565b61026b60028263ffffffff610e5416565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a0381161515610e1b57600080fd5b610e258282610cc6565b15610e2f57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610e6957600080fd5b610e738282610cc6565b1515610e7e57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610da857600083815260209020610da8918101908301610ee3565b60c0604051908101604052806006906020820280388339509192915050565b610bd991905b80821115610efd5760008155600101610ee9565b50905600a165627a7a7230582095e26f90cc3199aca464eb563533fc93a77d60dc52f6506d09a60413c4ab2d960029", "functionHashes": { "addCoreTeam(address)": "2e6b6849", "addSystem(address)": "74be7592", diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json index 6731ab628..79da0244d 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json @@ -419,20 +419,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "constant": true, - "inputs": [], - "name": "DAYS_PER_YEAR", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { "constant": true, "inputs": [], @@ -522,18 +508,17 @@ "evm": { "bytecode": { "linkReferences": {}, - "object": "60806040523480156200001157600080fd5b5060405160a080620014f7833981016040908152815160208301519183015160608401516080909401516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790559294919262000087906401000000006200018e810204565b6200009b33640100000000620001ac810204565b620000af33640100000000620001c7810204565b60008460ff1610158015620000c8575060058460ff1611155b1515620000d457600080fd5b600160a060020a0383161515620000ea57600080fd5b6000856001811115620000f957fe5b14156200011657600160a060020a03821615156200011657600080fd5b6005805486919060ff1916600183818111156200012f57fe5b0217905550506005805461ff00191661010060ff9590951694909402939093176201000060b060020a03191662010000600160a060020a03938416021790925560068054600160a060020a031916929091169190911790555062000275565b620001a9600282640100000000620011ac620001e282021704565b50565b620001a9600382640100000000620011ac620001e282021704565b620001a9600482640100000000620011ac620001e282021704565b600160a060020a0381161515620001f857600080fd5b6200020d82826401000000006200023d810204565b156200021857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200025557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61127280620002856000396000f30060806040526004361061017f5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630c08bf888114610184578063162f986d1461019b5780631777fb4b146101b057806319a74ab3146101d957806321b79d98146101ee578063231d4e2a1461020357806329d10b6e146102245780632e6b684914610245578063302c11ca14610266578063329b1c921461029757806334cdcf26146102ac578063363aa6c7146102cd5780633e6968b6146102e2578063427534a41461030e5780634969ae7014610323578063608d3d3d1461034e57806374be75921461036f57806380258e471461039057806381a24459146103a55780638329138f146103c657806399f4b251146103ed5780639e614ca014610402578063b2a32cd514610417578063be9524941461042c578063c6846ef814610441578063cdfd0f6414610468578063ce41607a1461047d578063d43acc7914610492578063da408679146104a7578063e9d61859146104bc575b600080fd5b34801561019057600080fd5b506101996104d1565b005b3480156101a757600080fd5b506101996104ef565b3480156101bc57600080fd5b506101c561055e565b604080519115158252519081900360200190f35b3480156101e557600080fd5b506101c5610563565b3480156101fa57600080fd5b5061019961059a565b34801561020f57600080fd5b50610199600160a060020a0360043516610630565b34801561023057600080fd5b50610199600160a060020a036004351661071c565b34801561025157600080fd5b50610199600160a060020a0360043516610739565b34801561027257600080fd5b5061027b610756565b60408051600160a060020a039092168252519081900360200190f35b3480156102a357600080fd5b5061027b61076b565b3480156102b857600080fd5b506101c5600160a060020a036004351661077a565b3480156102d957600080fd5b50610199610795565b3480156102ee57600080fd5b506102f7610846565b6040805161ffff9092168252519081900360200190f35b34801561031a57600080fd5b50610199610857565b34801561032f57600080fd5b506103386108c3565b6040805160ff9092168252519081900360200190f35b34801561035a57600080fd5b506101c5600160a060020a03600435166108d7565b34801561037b57600080fd5b50610199600160a060020a03600435166108ea565b34801561039c57600080fd5b50610338610907565b3480156103b157600080fd5b506101c5600160a060020a0360043516610915565b3480156103d257600080fd5b50610199600160a060020a0360043581169060243516610928565b3480156103f957600080fd5b506101996109db565b34801561040e57600080fd5b50610199610c1c565b34801561042357600080fd5b50610199610c8d565b34801561043857600080fd5b50610199610deb565b34801561044d57600080fd5b50610456610df4565b60408051918252519081900360200190f35b34801561047457600080fd5b50610456610dfa565b34801561048957600080fd5b50610338610e00565b34801561049e57600080fd5b50610199610e23565b3480156104b357600080fd5b50610199610e2c565b3480156104c857600080fd5b50610199610ebd565b6104da336108d7565b15156104e557600080fd5b6104ed610ec6565b565b60005460a060020a900460ff161561050657600080fd5b61050f33610915565b151561051a57600080fd5b600160065460a060020a900460ff16600381111561053457fe5b1461053e57600080fd5b600680546002919060a060020a60ff02191660a060020a835b0217905550565b600190565b6000600160065460a060020a900460ff16600381111561057f57fe5b148015610595575060065460a860020a900460ff165b905090565b60005460a060020a900460ff16156105b157600080fd5b600554620100009004600160a060020a031633146105ce57600080fd5b600160065460a060020a900460ff1660038111156105e857fe5b146105f257600080fd5b60065460a860020a900460ff161561060957600080fd5b6006805475ff000000000000000000000000000000000000000000191660a860020a179055565b610639336108d7565b151561064457600080fd5b600060065460a060020a900460ff16600381111561065e57fe5b1461066857600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051610719928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b1580156106d457600080fd5b505af11580156106e8573d6000803e3d6000fd5b505050506040513d60208110156106fe57600080fd5b5051600154600160a060020a0316919063ffffffff610f8d16565b50565b61072533610915565b151561073057600080fd5b61071981611045565b610742336108d7565b151561074d57600080fd5b61071981611056565b600554620100009004600160a060020a031690565b600654600160a060020a031690565b600061078d60028363ffffffff61106716565b90505b919050565b60005460a060020a900460ff16156107ac57600080fd5b6107b533610915565b15156107c057600080fd5b600360065460a060020a900460ff1660038111156107da57fe5b14156107e557600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff00001916905560a060020a60ff021916740300000000000000000000000000000000000000001775ff00ffffffffffffffffffffffffffffffffffffffff19169055565b60065460b860020a900461ffff1690565b60005460a060020a900460ff161561086e57600080fd5b61087733610915565b151561088257600080fd5b600260065460a060020a900460ff16600381111561089c57fe5b146108a657600080fd5b600680546001919060a060020a60ff02191660a060020a83610557565b60055460009060ff16600181111561059557fe5b600061078d60038363ffffffff61106716565b6108f33361077a565b15156108fe57600080fd5b6107198161109e565b600554610100900460ff1690565b600061078d60048363ffffffff61106716565b60005460a060020a900460ff161561093f57600080fd5b61094833610915565b151561095357600080fd5b600360065460a060020a900460ff16600381111561096d57fe5b1461097757600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a039687160217905560a060020a60ff02191660a060020a1773ffffffffffffffffffffffffffffffffffffffff191691909216179055565b60008054819060a060020a900460ff16156109f557600080fd5b6109fe3361077a565b1515610a0957600080fd5b600060055460ff166001811115610a1c57fe5b14610a2657600080fd5b600160065460a060020a900460ff166003811115610a4057fe5b14610a4a57600080fd5b60065460a860020a900460ff161515610a6257600080fd5b60065460b860020a900461ffff161515610ad8576006805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610ba0565b60068054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610ba0576006805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600754600290046007555b505060075461016d90046064600a82020460008211610bbe57600080fd5b60008111610bcb57600080fd5b600554600154610bf591600160a060020a039182169162010000909104168463ffffffff610f8d16565b600654600154610c1891600160a060020a0391821691168363ffffffff610f8d16565b5050565b60005460a060020a900460ff1615610c3357600080fd5b610c3c336108d7565b1515610c4757600080fd5b600060065460a060020a900460ff166003811115610c6157fe5b1415610c6c57600080fd5b6006805475ffff000000000000000000000000000000000000000019169055565b600080548190819060a060020a900460ff1615610ca957600080fd5b610cb2336108d7565b1515610cbd57600080fd5b600060065460a060020a900460ff166003811115610cd757fe5b14610ce157600080fd5b600060055460ff166001811115610cf457fe5b148015610d015750600754155b15610dd057600554610d1a90610100900460ff166110af565b92506064600a8402600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519390920486019450600160a060020a0316916370a08231916024808201926020929091908290030181600087803b158015610d8e57600080fd5b505af1158015610da2573d6000803e3d6000fd5b505050506040513d6020811015610db857600080fd5b50519050818114610dc857600080fd5b600283046007555b50506006805460a060020a60ff02191660a060020a17905550565b6104ed33611161565b61016d81565b60075490565b600654760100000000000000000000000000000000000000000000900460ff1690565b6104ed33611172565b60005460a060020a900460ff1615610e4357600080fd5b600554620100009004600160a060020a03163314610e6057600080fd5b600160065460a060020a900460ff166003811115610e7a57fe5b14610e8457600080fd5b60065460a860020a900460ff161515610e9c57600080fd5b6006805475ff00000000000000000000000000000000000000000019169055565b6104ed33611183565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610f2b57600080fd5b505af1158015610f3f573d6000803e3d6000fd5b505050506040513d6020811015610f5557600080fd5b505190506000811115610f8557600054600154610f8591600160a060020a0391821691168363ffffffff610f8d16565b610719611194565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561100957600080fd5b505af115801561101d573d6000803e3d6000fd5b505050506040513d602081101561103357600080fd5b5051151561104057600080fd5b505050565b61071960048263ffffffff6111ac16565b61071960038263ffffffff6111ac16565b6000600160a060020a038216151561107e57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61071960028263ffffffff6111ac16565b600060ff821615156110cc575069152d02c7e14af6800000610790565b8160ff16600114156110e9575069d3c21bcecceda1000000610790565b8160ff166002141561110757506a01a784379d99db42000000610790565b8160ff166003141561112557506a027b46536c66c8e3000000610790565b8160ff166004141561114357506a034f086f3b33b684000000610790565b8160ff166005141561079057506a0422ca8b0a00a425000000610790565b61071960048263ffffffff6111fa16565b61071960038263ffffffff6111fa16565b61071960028263ffffffff6111fa16565b6000805460a060020a60ff02191660a060020a179055565b600160a060020a03811615156111c157600080fd5b6111cb8282611067565b156111d557600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561120f57600080fd5b6112198282611067565b151561122457600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058205f527260d789022d74031e68eb390ff4f3057e6fce4f2adde7c12af38948fde60029", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0xA0 DUP1 PUSH3 0x14F7 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 SWAP1 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD SWAP2 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 SWAP1 SWAP5 ADD MLOAD PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP2 DUP3 AND DUP2 OR PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND OR SWAP1 SSTORE SWAP3 SWAP5 SWAP2 SWAP3 PUSH3 0x87 SWAP1 PUSH5 0x100000000 PUSH3 0x18E DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x9B CALLER PUSH5 0x100000000 PUSH3 0x1AC DUP2 MUL DIV JUMP JUMPDEST PUSH3 0xAF CALLER PUSH5 0x100000000 PUSH3 0x1C7 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0xFF AND LT ISZERO DUP1 ISZERO PUSH3 0xC8 JUMPI POP PUSH1 0x5 DUP5 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH3 0xD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH3 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 DUP2 GT ISZERO PUSH3 0xF9 JUMPI INVALID JUMPDEST EQ ISZERO PUSH3 0x116 JUMPI PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x116 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD DUP7 SWAP2 SWAP1 PUSH1 0xFF NOT AND PUSH1 0x1 DUP4 DUP2 DUP2 GT ISZERO PUSH3 0x12F JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP POP PUSH1 0x5 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 PUSH1 0xFF SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 MUL SWAP4 SWAP1 SWAP4 OR PUSH3 0x10000 PUSH1 0xB0 PUSH1 0x2 EXP SUB NOT AND PUSH3 0x10000 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP4 DUP5 AND MUL OR SWAP1 SWAP3 SSTORE PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0x275 JUMP JUMPDEST PUSH3 0x1A9 PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH3 0x11AC PUSH3 0x1E2 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x1A9 PUSH1 0x3 DUP3 PUSH5 0x100000000 PUSH3 0x11AC PUSH3 0x1E2 DUP3 MUL OR DIV JUMP JUMPDEST PUSH3 0x1A9 PUSH1 0x4 DUP3 PUSH5 0x100000000 PUSH3 0x11AC PUSH3 0x1E2 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH3 0x1F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x20D DUP3 DUP3 PUSH5 0x100000000 PUSH3 0x23D DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH3 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x255 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1272 DUP1 PUSH3 0x285 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x17F JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0xC08BF88 DUP2 EQ PUSH2 0x184 JUMPI DUP1 PUSH4 0x162F986D EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0x1777FB4B EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x19A74AB3 EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0x21B79D98 EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0x231D4E2A EQ PUSH2 0x203 JUMPI DUP1 PUSH4 0x29D10B6E EQ PUSH2 0x224 JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0x245 JUMPI DUP1 PUSH4 0x302C11CA EQ PUSH2 0x266 JUMPI DUP1 PUSH4 0x329B1C92 EQ PUSH2 0x297 JUMPI DUP1 PUSH4 0x34CDCF26 EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0x363AA6C7 EQ PUSH2 0x2CD JUMPI DUP1 PUSH4 0x3E6968B6 EQ PUSH2 0x2E2 JUMPI DUP1 PUSH4 0x427534A4 EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0x4969AE70 EQ PUSH2 0x323 JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x34E JUMPI DUP1 PUSH4 0x74BE7592 EQ PUSH2 0x36F JUMPI DUP1 PUSH4 0x80258E47 EQ PUSH2 0x390 JUMPI DUP1 PUSH4 0x81A24459 EQ PUSH2 0x3A5 JUMPI DUP1 PUSH4 0x8329138F EQ PUSH2 0x3C6 JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x3ED JUMPI DUP1 PUSH4 0x9E614CA0 EQ PUSH2 0x402 JUMPI DUP1 PUSH4 0xB2A32CD5 EQ PUSH2 0x417 JUMPI DUP1 PUSH4 0xBE952494 EQ PUSH2 0x42C JUMPI DUP1 PUSH4 0xC6846EF8 EQ PUSH2 0x441 JUMPI DUP1 PUSH4 0xCDFD0F64 EQ PUSH2 0x468 JUMPI DUP1 PUSH4 0xCE41607A EQ PUSH2 0x47D JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x492 JUMPI DUP1 PUSH4 0xDA408679 EQ PUSH2 0x4A7 JUMPI DUP1 PUSH4 0xE9D61859 EQ PUSH2 0x4BC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0x4D1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0x4EF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH2 0x55E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH2 0x563 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0x59A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x630 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x230 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x71C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x251 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x739 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27B PUSH2 0x756 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27B PUSH2 0x76B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x77A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0x795 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F7 PUSH2 0x846 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0xFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0x857 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x338 PUSH2 0x8C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x8D7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x8EA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x338 PUSH2 0x907 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x915 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH2 0x928 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0x9DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0xC1C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x423 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0xC8D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0xDEB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x456 PUSH2 0xDF4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x474 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x456 PUSH2 0xDFA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x489 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x338 PUSH2 0xE00 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x49E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0xE23 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0xE2C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x199 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x4DA CALLER PUSH2 0x8D7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x4E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4ED PUSH2 0xEC6 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x506 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x50F CALLER PUSH2 0x915 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x51A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x534 JUMPI INVALID JUMPDEST EQ PUSH2 0x53E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x2 SWAP2 SWAP1 PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 JUMPDEST MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x57F JUMPI INVALID JUMPDEST EQ DUP1 ISZERO PUSH2 0x595 JUMPI POP PUSH1 0x6 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x5B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0x5CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5E8 JUMPI INVALID JUMPDEST EQ PUSH2 0x5F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND PUSH1 0xA8 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x639 CALLER PUSH2 0x8D7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x644 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x65E JUMPI INVALID JUMPDEST EQ PUSH2 0x668 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x719 SWAP3 DUP5 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xF8D AND JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x725 CALLER PUSH2 0x915 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x730 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x719 DUP2 PUSH2 0x1045 JUMP JUMPDEST PUSH2 0x742 CALLER PUSH2 0x8D7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x74D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x719 DUP2 PUSH2 0x1056 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78D PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1067 AND JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x7AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7B5 CALLER PUSH2 0x915 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x7C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x7DA JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x7E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x5 DUP1 SLOAD PUSH22 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 NOT AND SWAP1 SSTORE PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH21 0x30000000000000000000000000000000000000000 OR PUSH22 0xFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x86E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x877 CALLER PUSH2 0x915 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x882 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x89C JUMPI INVALID JUMPDEST EQ PUSH2 0x8A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 SWAP2 SWAP1 PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 PUSH2 0x557 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x595 JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH2 0x78D PUSH1 0x3 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1067 AND JUMP JUMPDEST PUSH2 0x8F3 CALLER PUSH2 0x77A JUMP JUMPDEST ISZERO ISZERO PUSH2 0x8FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x719 DUP2 PUSH2 0x109E JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78D PUSH1 0x4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1067 AND JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x93F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x948 CALLER PUSH2 0x915 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x953 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x96D JUMPI INVALID JUMPDEST EQ PUSH2 0x977 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x5 DUP1 SLOAD PUSH22 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 NOT AND PUSH3 0x10000 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP7 DUP8 AND MUL OR SWAP1 SSTORE PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x9F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9FE CALLER PUSH2 0x77A JUMP JUMPDEST ISZERO ISZERO PUSH2 0xA09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xA1C JUMPI INVALID JUMPDEST EQ PUSH2 0xA26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA40 JUMPI INVALID JUMPDEST EQ PUSH2 0xA4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0xA62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH2 0xFFFF AND ISZERO ISZERO PUSH2 0xAD8 JUMPI PUSH1 0x6 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP2 AND PUSH23 0x100000000000000000000000000000000000000000000 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH2 0xBA0 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH2 0xFFFF PUSH1 0xB8 PUSH1 0x2 EXP DUP1 DUP5 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD DUP2 AND DUP3 MUL PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE SWAP1 SWAP2 DIV AND PUSH2 0x16E EQ ISZERO PUSH2 0xBA0 JUMPI PUSH1 0x6 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH1 0x1 PUSH1 0xFF PUSH23 0x100000000000000000000000000000000000000000000 DUP1 DUP6 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD AND MUL PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH1 0x7 SLOAD PUSH1 0x2 SWAP1 DIV PUSH1 0x7 SSTORE JUMPDEST POP POP PUSH1 0x7 SLOAD PUSH2 0x16D SWAP1 DIV PUSH1 0x64 PUSH1 0xA DUP3 MUL DIV PUSH1 0x0 DUP3 GT PUSH2 0xBBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0xBCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 SLOAD PUSH2 0xBF5 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 PUSH3 0x10000 SWAP1 SWAP2 DIV AND DUP5 PUSH4 0xFFFFFFFF PUSH2 0xF8D AND JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 SLOAD PUSH2 0xC18 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xF8D AND JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xC33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC3C CALLER PUSH2 0x8D7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xC47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xC61 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xC6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH22 0xFFFF0000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 DUP2 SWAP1 PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xCA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCB2 CALLER PUSH2 0x8D7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xCBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xCD7 JUMPI INVALID JUMPDEST EQ PUSH2 0xCE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xCF4 JUMPI INVALID JUMPDEST EQ DUP1 ISZERO PUSH2 0xD01 JUMPI POP PUSH1 0x7 SLOAD ISZERO JUMPDEST ISZERO PUSH2 0xDD0 JUMPI PUSH1 0x5 SLOAD PUSH2 0xD1A SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x10AF JUMP JUMPDEST SWAP3 POP PUSH1 0x64 PUSH1 0xA DUP5 MUL PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP4 SWAP1 SWAP3 DIV DUP7 ADD SWAP5 POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDA2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP2 DUP2 EQ PUSH2 0xDC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 DUP4 DIV PUSH1 0x7 SSTORE JUMPDEST POP POP PUSH1 0x6 DUP1 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x4ED CALLER PUSH2 0x1161 JUMP JUMPDEST PUSH2 0x16D DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH23 0x100000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x4ED CALLER PUSH2 0x1172 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xE43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0xE60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xE7A JUMPI INVALID JUMPDEST EQ PUSH2 0xE84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0xE9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x4ED CALLER PUSH2 0x1183 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF3F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0xF85 JUMPI PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0xF85 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xF8D AND JUMP JUMPDEST PUSH2 0x719 PUSH2 0x1194 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1009 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x101D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1033 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x1040 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x719 PUSH1 0x4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x11AC AND JUMP JUMPDEST PUSH2 0x719 PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x11AC AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x107E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x719 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x11AC AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND ISZERO ISZERO PUSH2 0x10CC JUMPI POP PUSH10 0x152D02C7E14AF6800000 PUSH2 0x790 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x10E9 JUMPI POP PUSH10 0xD3C21BCECCEDA1000000 PUSH2 0x790 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x1107 JUMPI POP PUSH11 0x1A784379D99DB42000000 PUSH2 0x790 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x1125 JUMPI POP PUSH11 0x27B46536C66C8E3000000 PUSH2 0x790 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x1143 JUMPI POP PUSH11 0x34F086F3B33B684000000 PUSH2 0x790 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x790 JUMPI POP PUSH11 0x422CA8B0A00A425000000 PUSH2 0x790 JUMP JUMPDEST PUSH2 0x719 PUSH1 0x4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x11FA AND JUMP JUMPDEST PUSH2 0x719 PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x11FA AND JUMP JUMPDEST PUSH2 0x719 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x11FA AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x11C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11CB DUP3 DUP3 PUSH2 0x1067 JUMP JUMPDEST ISZERO PUSH2 0x11D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x120F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1219 DUP3 DUP3 PUSH2 0x1067 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x1224 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0x5f MSTORE PUSH19 0x60D789022D74031E68EB390FF4F3057E6FCE4F 0x2a 0xdd 0xe7 0xc1 0x2a RETURN DUP10 0x48 REVERT 0xe6 STOP 0x29 ", - "sourceMap": "620:5566:2:-;;;1311:664;8:9:-1;5:2;;;30:1;27;20:12;5:2;1311:664:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;156:8:7;:21;;167:10;-1:-1:-1;;;;;;156:21:7;;;;;-1:-1:-1;;;;;;188:19:7;;;;-1:-1:-1;636:29:5;;;;;-1:-1:-1;;;;;636:29:5;;;;;1311:664:2;;;;364:22:4;;:10;;;;:22;:::i;:::-;368:24:1;381:10;368:12;;;;:24;:::i;:::-;366:26:3;381:10;366:14;;;;:26;:::i;:::-;1624:1:2;1612:8;:13;;;;:30;;;;;1641:1;1629:8;:13;;;;1612:30;1604:39;;;;;;;;-1:-1:-1;;;;;1662:33:2;;;;1654:42;;;;;;1725:19;1712:9;:32;;;;;;;;;1709:109;;;-1:-1:-1;;;;;1769:36:2;;;;1761:45;;;;;;1830:10;:22;;1843:9;;1830:10;-1:-1:-1;;1830:22:2;;1843:9;1830:22;;;;;;;;;;;;-1:-1:-1;;1863:9:2;:20;;-1:-1:-1;;1863:20:2;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1894:28:2;;-1:-1:-1;;;;;1894:28:2;;;;;;;;1933:9;:34;;-1:-1:-1;;;;;;1933:34:2;;;;;;;;;;;-1:-1:-1;620:5566:2;;800:92:4;857:27;:14;876:7;857:18;;;;;;:27;:::i;:::-;800:92;:::o;824:96:1:-;883:29;:16;904:7;883:20;;;;;;:29;:::i;836:94:3:-;897:25;:12;914:7;897:16;;;;;;:25;:::i;244:167:8:-;-1:-1:-1;;;;;316:21:8;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:8;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:8;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:8;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:8;:11;:20;;;;;;;;;;;;;;;725:166::o;620:5566:2:-;;;;;;;" + "object": "60806040523480156200001157600080fd5b5060405160a080620014d1833981016040908152815160208301519183015160608401516080909401516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790559294919262000087906401000000006200018e810204565b6200009b33640100000000620001ac810204565b620000af33640100000000620001c7810204565b60008460ff1610158015620000c8575060058460ff1611155b1515620000d457600080fd5b600160a060020a0383161515620000ea57600080fd5b6000856001811115620000f957fe5b14156200011657600160a060020a03821615156200011657600080fd5b6005805486919060ff1916600183818111156200012f57fe5b0217905550506005805461ff00191661010060ff9590951694909402939093176201000060b060020a03191662010000600160a060020a03938416021790925560068054600160a060020a031916929091169190911790555062000275565b620001a960028264010000000062001186620001e282021704565b50565b620001a960038264010000000062001186620001e282021704565b620001a960048264010000000062001186620001e282021704565b600160a060020a0381161515620001f857600080fd5b6200020d82826401000000006200023d810204565b156200021857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200025557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61124c80620002856000396000f3006080604052600436106101745763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630c08bf888114610179578063162f986d146101905780631777fb4b146101a557806319a74ab3146101ce57806321b79d98146101e3578063231d4e2a146101f857806329d10b6e146102195780632e6b68491461023a578063302c11ca1461025b578063329b1c921461028c57806334cdcf26146102a1578063363aa6c7146102c25780633e6968b6146102d7578063427534a4146103035780634969ae7014610318578063608d3d3d1461034357806374be75921461036457806380258e471461038557806381a244591461039a5780638329138f146103bb57806399f4b251146103e25780639e614ca0146103f7578063b2a32cd51461040c578063be95249414610421578063cdfd0f6414610436578063ce41607a1461045d578063d43acc7914610472578063da40867914610487578063e9d618591461049c575b600080fd5b34801561018557600080fd5b5061018e6104b1565b005b34801561019c57600080fd5b5061018e6104cf565b3480156101b157600080fd5b506101ba61053e565b604080519115158252519081900360200190f35b3480156101da57600080fd5b506101ba610543565b3480156101ef57600080fd5b5061018e61057a565b34801561020457600080fd5b5061018e600160a060020a0360043516610610565b34801561022557600080fd5b5061018e600160a060020a03600435166106fc565b34801561024657600080fd5b5061018e600160a060020a0360043516610719565b34801561026757600080fd5b50610270610736565b60408051600160a060020a039092168252519081900360200190f35b34801561029857600080fd5b5061027061074b565b3480156102ad57600080fd5b506101ba600160a060020a036004351661075a565b3480156102ce57600080fd5b5061018e610775565b3480156102e357600080fd5b506102ec610826565b6040805161ffff9092168252519081900360200190f35b34801561030f57600080fd5b5061018e610837565b34801561032457600080fd5b5061032d6108a3565b6040805160ff9092168252519081900360200190f35b34801561034f57600080fd5b506101ba600160a060020a03600435166108b7565b34801561037057600080fd5b5061018e600160a060020a03600435166108ca565b34801561039157600080fd5b5061032d6108e7565b3480156103a657600080fd5b506101ba600160a060020a03600435166108f5565b3480156103c757600080fd5b5061018e600160a060020a0360043581169060243516610908565b3480156103ee57600080fd5b5061018e6109bb565b34801561040357600080fd5b5061018e610bfc565b34801561041857600080fd5b5061018e610c6d565b34801561042d57600080fd5b5061018e610dcb565b34801561044257600080fd5b5061044b610dd4565b60408051918252519081900360200190f35b34801561046957600080fd5b5061032d610dda565b34801561047e57600080fd5b5061018e610dfd565b34801561049357600080fd5b5061018e610e06565b3480156104a857600080fd5b5061018e610e97565b6104ba336108b7565b15156104c557600080fd5b6104cd610ea0565b565b60005460a060020a900460ff16156104e657600080fd5b6104ef336108f5565b15156104fa57600080fd5b600160065460a060020a900460ff16600381111561051457fe5b1461051e57600080fd5b600680546002919060a060020a60ff02191660a060020a835b0217905550565b600190565b6000600160065460a060020a900460ff16600381111561055f57fe5b148015610575575060065460a860020a900460ff165b905090565b60005460a060020a900460ff161561059157600080fd5b600554620100009004600160a060020a031633146105ae57600080fd5b600160065460a060020a900460ff1660038111156105c857fe5b146105d257600080fd5b60065460a860020a900460ff16156105e957600080fd5b6006805475ff000000000000000000000000000000000000000000191660a860020a179055565b610619336108b7565b151561062457600080fd5b600060065460a060020a900460ff16600381111561063e57fe5b1461064857600080fd5b600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516106f9928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d60208110156106de57600080fd5b5051600154600160a060020a0316919063ffffffff610f6716565b50565b610705336108f5565b151561071057600080fd5b6106f98161101f565b610722336108b7565b151561072d57600080fd5b6106f981611030565b600554620100009004600160a060020a031690565b600654600160a060020a031690565b600061076d60028363ffffffff61104116565b90505b919050565b60005460a060020a900460ff161561078c57600080fd5b610795336108f5565b15156107a057600080fd5b600360065460a060020a900460ff1660038111156107ba57fe5b14156107c557600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff00001916905560a060020a60ff021916740300000000000000000000000000000000000000001775ff00ffffffffffffffffffffffffffffffffffffffff19169055565b60065460b860020a900461ffff1690565b60005460a060020a900460ff161561084e57600080fd5b610857336108f5565b151561086257600080fd5b600260065460a060020a900460ff16600381111561087c57fe5b1461088657600080fd5b600680546001919060a060020a60ff02191660a060020a83610537565b60055460009060ff16600181111561057557fe5b600061076d60038363ffffffff61104116565b6108d33361075a565b15156108de57600080fd5b6106f981611078565b600554610100900460ff1690565b600061076d60048363ffffffff61104116565b60005460a060020a900460ff161561091f57600080fd5b610928336108f5565b151561093357600080fd5b600360065460a060020a900460ff16600381111561094d57fe5b1461095757600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a039687160217905560a060020a60ff02191660a060020a1773ffffffffffffffffffffffffffffffffffffffff191691909216179055565b60008054819060a060020a900460ff16156109d557600080fd5b6109de3361075a565b15156109e957600080fd5b600060055460ff1660018111156109fc57fe5b14610a0657600080fd5b600160065460a060020a900460ff166003811115610a2057fe5b14610a2a57600080fd5b60065460a860020a900460ff161515610a4257600080fd5b60065460b860020a900461ffff161515610ab8576006805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610b80565b60068054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610b80576006805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600754600290046007555b505060075461016d90046064600a82020460008211610b9e57600080fd5b60008111610bab57600080fd5b600554600154610bd591600160a060020a039182169162010000909104168463ffffffff610f6716565b600654600154610bf891600160a060020a0391821691168363ffffffff610f6716565b5050565b60005460a060020a900460ff1615610c1357600080fd5b610c1c336108b7565b1515610c2757600080fd5b600060065460a060020a900460ff166003811115610c4157fe5b1415610c4c57600080fd5b6006805475ffff000000000000000000000000000000000000000019169055565b600080548190819060a060020a900460ff1615610c8957600080fd5b610c92336108b7565b1515610c9d57600080fd5b600060065460a060020a900460ff166003811115610cb757fe5b14610cc157600080fd5b600060055460ff166001811115610cd457fe5b148015610ce15750600754155b15610db057600554610cfa90610100900460ff16611089565b92506064600a8402600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519390920486019450600160a060020a0316916370a08231916024808201926020929091908290030181600087803b158015610d6e57600080fd5b505af1158015610d82573d6000803e3d6000fd5b505050506040513d6020811015610d9857600080fd5b50519050818114610da857600080fd5b600283046007555b50506006805460a060020a60ff02191660a060020a17905550565b6104cd3361113b565b60075490565b600654760100000000000000000000000000000000000000000000900460ff1690565b6104cd3361114c565b60005460a060020a900460ff1615610e1d57600080fd5b600554620100009004600160a060020a03163314610e3a57600080fd5b600160065460a060020a900460ff166003811115610e5457fe5b14610e5e57600080fd5b60065460a860020a900460ff161515610e7657600080fd5b6006805475ff00000000000000000000000000000000000000000019169055565b6104cd3361115d565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610f0557600080fd5b505af1158015610f19573d6000803e3d6000fd5b505050506040513d6020811015610f2f57600080fd5b505190506000811115610f5f57600054600154610f5f91600160a060020a0391821691168363ffffffff610f6716565b6106f961116e565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610fe357600080fd5b505af1158015610ff7573d6000803e3d6000fd5b505050506040513d602081101561100d57600080fd5b5051151561101a57600080fd5b505050565b6106f960048263ffffffff61118616565b6106f960038263ffffffff61118616565b6000600160a060020a038216151561105857600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106f960028263ffffffff61118616565b600060ff821615156110a6575069152d02c7e14af6800000610770565b8160ff16600114156110c3575069d3c21bcecceda1000000610770565b8160ff16600214156110e157506a01a784379d99db42000000610770565b8160ff16600314156110ff57506a027b46536c66c8e3000000610770565b8160ff166004141561111d57506a034f086f3b33b684000000610770565b8160ff166005141561077057506a0422ca8b0a00a425000000610770565b6106f960048263ffffffff6111d416565b6106f960038263ffffffff6111d416565b6106f960028263ffffffff6111d416565b6000805460a060020a60ff02191660a060020a179055565b600160a060020a038116151561119b57600080fd5b6111a58282611041565b156111af57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a03811615156111e957600080fd5b6111f38282611041565b15156111fe57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058202935a8fadd5caa8f5a9312cd903c07814b3de5662642cabdc9018c364221db570029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0xA0 DUP1 PUSH3 0x14D1 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 SWAP1 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD SWAP2 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 SWAP1 SWAP5 ADD MLOAD PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP2 DUP3 AND DUP2 OR PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND OR SWAP1 SSTORE SWAP3 SWAP5 SWAP2 SWAP3 PUSH3 0x87 SWAP1 PUSH5 0x100000000 PUSH3 0x18E DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x9B CALLER PUSH5 0x100000000 PUSH3 0x1AC DUP2 MUL DIV JUMP JUMPDEST PUSH3 0xAF CALLER PUSH5 0x100000000 PUSH3 0x1C7 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0xFF AND LT ISZERO DUP1 ISZERO PUSH3 0xC8 JUMPI POP PUSH1 0x5 DUP5 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH3 0xD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH3 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 DUP2 GT ISZERO PUSH3 0xF9 JUMPI INVALID JUMPDEST EQ ISZERO PUSH3 0x116 JUMPI PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x116 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD DUP7 SWAP2 SWAP1 PUSH1 0xFF NOT AND PUSH1 0x1 DUP4 DUP2 DUP2 GT ISZERO PUSH3 0x12F JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP POP PUSH1 0x5 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 PUSH1 0xFF SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 MUL SWAP4 SWAP1 SWAP4 OR PUSH3 0x10000 PUSH1 0xB0 PUSH1 0x2 EXP SUB NOT AND PUSH3 0x10000 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP4 DUP5 AND MUL OR SWAP1 SWAP3 SSTORE PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0x275 JUMP JUMPDEST PUSH3 0x1A9 PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH3 0x1186 PUSH3 0x1E2 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x1A9 PUSH1 0x3 DUP3 PUSH5 0x100000000 PUSH3 0x1186 PUSH3 0x1E2 DUP3 MUL OR DIV JUMP JUMPDEST PUSH3 0x1A9 PUSH1 0x4 DUP3 PUSH5 0x100000000 PUSH3 0x1186 PUSH3 0x1E2 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH3 0x1F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x20D DUP3 DUP3 PUSH5 0x100000000 PUSH3 0x23D DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH3 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x255 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x124C DUP1 PUSH3 0x285 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x174 JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0xC08BF88 DUP2 EQ PUSH2 0x179 JUMPI DUP1 PUSH4 0x162F986D EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0x1777FB4B EQ PUSH2 0x1A5 JUMPI DUP1 PUSH4 0x19A74AB3 EQ PUSH2 0x1CE JUMPI DUP1 PUSH4 0x21B79D98 EQ PUSH2 0x1E3 JUMPI DUP1 PUSH4 0x231D4E2A EQ PUSH2 0x1F8 JUMPI DUP1 PUSH4 0x29D10B6E EQ PUSH2 0x219 JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0x23A JUMPI DUP1 PUSH4 0x302C11CA EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0x329B1C92 EQ PUSH2 0x28C JUMPI DUP1 PUSH4 0x34CDCF26 EQ PUSH2 0x2A1 JUMPI DUP1 PUSH4 0x363AA6C7 EQ PUSH2 0x2C2 JUMPI DUP1 PUSH4 0x3E6968B6 EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x427534A4 EQ PUSH2 0x303 JUMPI DUP1 PUSH4 0x4969AE70 EQ PUSH2 0x318 JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x343 JUMPI DUP1 PUSH4 0x74BE7592 EQ PUSH2 0x364 JUMPI DUP1 PUSH4 0x80258E47 EQ PUSH2 0x385 JUMPI DUP1 PUSH4 0x81A24459 EQ PUSH2 0x39A JUMPI DUP1 PUSH4 0x8329138F EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x3E2 JUMPI DUP1 PUSH4 0x9E614CA0 EQ PUSH2 0x3F7 JUMPI DUP1 PUSH4 0xB2A32CD5 EQ PUSH2 0x40C JUMPI DUP1 PUSH4 0xBE952494 EQ PUSH2 0x421 JUMPI DUP1 PUSH4 0xCDFD0F64 EQ PUSH2 0x436 JUMPI DUP1 PUSH4 0xCE41607A EQ PUSH2 0x45D JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x472 JUMPI DUP1 PUSH4 0xDA408679 EQ PUSH2 0x487 JUMPI DUP1 PUSH4 0xE9D61859 EQ PUSH2 0x49C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0x4B1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0x4CF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH2 0x53E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH2 0x543 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0x57A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x204 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x610 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x225 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x6FC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x246 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x719 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x270 PUSH2 0x736 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x270 PUSH2 0x74B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x75A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0x775 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2EC PUSH2 0x826 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0xFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0x837 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x32D PUSH2 0x8A3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x8B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x370 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x8CA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x391 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x32D PUSH2 0x8E7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x8F5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH2 0x908 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0x9BB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0xBFC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x418 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0xC6D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0xDCB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x442 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44B PUSH2 0xDD4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x469 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x32D PUSH2 0xDDA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0xDFD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x493 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0xE06 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0xE97 JUMP JUMPDEST PUSH2 0x4BA CALLER PUSH2 0x8B7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x4C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4CD PUSH2 0xEA0 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x4E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4EF CALLER PUSH2 0x8F5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x4FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x514 JUMPI INVALID JUMPDEST EQ PUSH2 0x51E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x2 SWAP2 SWAP1 PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 JUMPDEST MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x55F JUMPI INVALID JUMPDEST EQ DUP1 ISZERO PUSH2 0x575 JUMPI POP PUSH1 0x6 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x591 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0x5AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5C8 JUMPI INVALID JUMPDEST EQ PUSH2 0x5D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x5E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND PUSH1 0xA8 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x619 CALLER PUSH2 0x8B7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x624 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x63E JUMPI INVALID JUMPDEST EQ PUSH2 0x648 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x6F9 SWAP3 DUP5 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6C8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xF67 AND JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x705 CALLER PUSH2 0x8F5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x710 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F9 DUP2 PUSH2 0x101F JUMP JUMPDEST PUSH2 0x722 CALLER PUSH2 0x8B7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x72D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F9 DUP2 PUSH2 0x1030 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x76D PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1041 AND JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x78C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x795 CALLER PUSH2 0x8F5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x7A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x7BA JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x7C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x5 DUP1 SLOAD PUSH22 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 NOT AND SWAP1 SSTORE PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH21 0x30000000000000000000000000000000000000000 OR PUSH22 0xFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x84E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x857 CALLER PUSH2 0x8F5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x862 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x87C JUMPI INVALID JUMPDEST EQ PUSH2 0x886 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 SWAP2 SWAP1 PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 PUSH2 0x537 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x575 JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH2 0x76D PUSH1 0x3 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1041 AND JUMP JUMPDEST PUSH2 0x8D3 CALLER PUSH2 0x75A JUMP JUMPDEST ISZERO ISZERO PUSH2 0x8DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F9 DUP2 PUSH2 0x1078 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x76D PUSH1 0x4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1041 AND JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x91F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x928 CALLER PUSH2 0x8F5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x933 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x94D JUMPI INVALID JUMPDEST EQ PUSH2 0x957 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x5 DUP1 SLOAD PUSH22 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 NOT AND PUSH3 0x10000 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP7 DUP8 AND MUL OR SWAP1 SSTORE PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x9D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9DE CALLER PUSH2 0x75A JUMP JUMPDEST ISZERO ISZERO PUSH2 0x9E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x9FC JUMPI INVALID JUMPDEST EQ PUSH2 0xA06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA20 JUMPI INVALID JUMPDEST EQ PUSH2 0xA2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0xA42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH2 0xFFFF AND ISZERO ISZERO PUSH2 0xAB8 JUMPI PUSH1 0x6 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP2 AND PUSH23 0x100000000000000000000000000000000000000000000 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH2 0xB80 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH2 0xFFFF PUSH1 0xB8 PUSH1 0x2 EXP DUP1 DUP5 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD DUP2 AND DUP3 MUL PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE SWAP1 SWAP2 DIV AND PUSH2 0x16E EQ ISZERO PUSH2 0xB80 JUMPI PUSH1 0x6 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH1 0x1 PUSH1 0xFF PUSH23 0x100000000000000000000000000000000000000000000 DUP1 DUP6 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD AND MUL PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH1 0x7 SLOAD PUSH1 0x2 SWAP1 DIV PUSH1 0x7 SSTORE JUMPDEST POP POP PUSH1 0x7 SLOAD PUSH2 0x16D SWAP1 DIV PUSH1 0x64 PUSH1 0xA DUP3 MUL DIV PUSH1 0x0 DUP3 GT PUSH2 0xB9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0xBAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 SLOAD PUSH2 0xBD5 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 PUSH3 0x10000 SWAP1 SWAP2 DIV AND DUP5 PUSH4 0xFFFFFFFF PUSH2 0xF67 AND JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 SLOAD PUSH2 0xBF8 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xF67 AND JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xC13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC1C CALLER PUSH2 0x8B7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xC27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xC41 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xC4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH22 0xFFFF0000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 DUP2 SWAP1 PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xC89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC92 CALLER PUSH2 0x8B7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xC9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xCB7 JUMPI INVALID JUMPDEST EQ PUSH2 0xCC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xCD4 JUMPI INVALID JUMPDEST EQ DUP1 ISZERO PUSH2 0xCE1 JUMPI POP PUSH1 0x7 SLOAD ISZERO JUMPDEST ISZERO PUSH2 0xDB0 JUMPI PUSH1 0x5 SLOAD PUSH2 0xCFA SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1089 JUMP JUMPDEST SWAP3 POP PUSH1 0x64 PUSH1 0xA DUP5 MUL PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP4 SWAP1 SWAP3 DIV DUP7 ADD SWAP5 POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD82 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP2 DUP2 EQ PUSH2 0xDA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 DUP4 DIV PUSH1 0x7 SSTORE JUMPDEST POP POP PUSH1 0x6 DUP1 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x4CD CALLER PUSH2 0x113B JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH23 0x100000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x4CD CALLER PUSH2 0x114C JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xE1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0xE3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xE54 JUMPI INVALID JUMPDEST EQ PUSH2 0xE5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0xE76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x4CD CALLER PUSH2 0x115D JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF19 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0xF5F JUMPI PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0xF5F SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xF67 AND JUMP JUMPDEST PUSH2 0x6F9 PUSH2 0x116E JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFF7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x100D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x101A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x6F9 PUSH1 0x4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1186 AND JUMP JUMPDEST PUSH2 0x6F9 PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1186 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x1058 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x6F9 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1186 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND ISZERO ISZERO PUSH2 0x10A6 JUMPI POP PUSH10 0x152D02C7E14AF6800000 PUSH2 0x770 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x10C3 JUMPI POP PUSH10 0xD3C21BCECCEDA1000000 PUSH2 0x770 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x10E1 JUMPI POP PUSH11 0x1A784379D99DB42000000 PUSH2 0x770 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x10FF JUMPI POP PUSH11 0x27B46536C66C8E3000000 PUSH2 0x770 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x111D JUMPI POP PUSH11 0x34F086F3B33B684000000 PUSH2 0x770 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x770 JUMPI POP PUSH11 0x422CA8B0A00A425000000 PUSH2 0x770 JUMP JUMPDEST PUSH2 0x6F9 PUSH1 0x4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x11D4 AND JUMP JUMPDEST PUSH2 0x6F9 PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x11D4 AND JUMP JUMPDEST PUSH2 0x6F9 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x11D4 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x119B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11A5 DUP3 DUP3 PUSH2 0x1041 JUMP JUMPDEST ISZERO PUSH2 0x11AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x11E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11F3 DUP3 DUP3 PUSH2 0x1041 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x11FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0x29 CALLDATALOAD 0xa8 STATICCALL 0xdd 0x5c 0xaa DUP16 GAS SWAP4 SLT 0xcd SWAP1 EXTCODECOPY SMOD DUP2 0x4b RETURNDATASIZE 0xe5 PUSH7 0x2642CABDC9018C CALLDATASIZE TIMESTAMP 0x21 0xdb JUMPI STOP 0x29 ", + "sourceMap": "620:5567:2:-;;;1312:664;8:9:-1;5:2;;;30:1;27;20:12;5:2;1312:664:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;156:8:7;:21;;167:10;-1:-1:-1;;;;;;156:21:7;;;;;-1:-1:-1;;;;;;188:19:7;;;;-1:-1:-1;636:29:5;;;;;-1:-1:-1;;;;;636:29:5;;;;;1312:664:2;;;;364:22:4;;:10;;;;:22;:::i;:::-;368:24:1;381:10;368:12;;;;:24;:::i;:::-;366:26:3;381:10;366:14;;;;:26;:::i;:::-;1625:1:2;1613:8;:13;;;;:30;;;;;1642:1;1630:8;:13;;;;1613:30;1605:39;;;;;;;;-1:-1:-1;;;;;1663:33:2;;;;1655:42;;;;;;1726:19;1713:9;:32;;;;;;;;;1710:109;;;-1:-1:-1;;;;;1770:36:2;;;;1762:45;;;;;;1831:10;:22;;1844:9;;1831:10;-1:-1:-1;;1831:22:2;;1844:9;1831:22;;;;;;;;;;;;-1:-1:-1;;1864:9:2;:20;;-1:-1:-1;;1864:20:2;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1895:28:2;;-1:-1:-1;;;;;1895:28:2;;;;;;;;1934:9;:34;;-1:-1:-1;;;;;;1934:34:2;;;;;;;;;;;-1:-1:-1;620:5567:2;;800:92:4;857:27;:14;876:7;857:18;;;;;;:27;:::i;:::-;800:92;:::o;824:96:1:-;883:29;:16;904:7;883:20;;;;;;:29;:::i;836:94:3:-;897:25;:12;914:7;897:16;;;;;;:25;:::i;244:167:8:-;-1:-1:-1;;;;;316:21:8;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:8;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:8;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:8;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:8;:11;:20;;;;;;;;;;;;;;;725:166::o;620:5567:2:-;;;;;;;" }, "gasEstimates": { "creation": { - "codeDepositCost": "944400", + "codeDepositCost": "936800", "executionCost": "infinite", "totalCost": "infinite" }, "external": { - "DAYS_PER_YEAR()": "712", "activateMiner()": "infinite", "addCoreTeam(address)": "infinite", "addSupervisor(address)": "infinite", @@ -541,8 +526,8 @@ "deactivateMiner()": "infinite", "getCategory()": "784", "getCurrentDay()": "737", - "getCurrentYear()": "982", - "getCurrentYearSupply()": "934", + "getCurrentYear()": "960", + "getCurrentYearSupply()": "912", "getMiner()": "724", "getMinerType()": "744", "getReferral()": "735", @@ -561,12 +546,11 @@ "resumeMining()": "infinite", "startMining()": "21742", "stopAndRemoveOwnership()": "infinite", - "stopMining()": "22204", + "stopMining()": "22182", "terminate()": "infinite" } }, "methodIdentifiers": { - "DAYS_PER_YEAR()": "c6846ef8", "activateMiner()": "b2a32cd5", "addCoreTeam(address)": "2e6b6849", "addSupervisor(address)": "29d10b6e", @@ -598,7 +582,7 @@ "terminate()": "0c08bf88" } }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"terminate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pauseMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isAlgoMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isMining\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"startMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newMinerAddress\",\"type\":\"address\"}],\"name\":\"migrateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getReferral\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSystem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopAndRemoveOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentDay\",\"outputs\":[{\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"resumeMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMinerType\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCategory\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSupervisor\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwnerAddress\",\"type\":\"address\"},{\"name\":\"newReferralAddress\",\"type\":\"address\"}],\"name\":\"resetMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"deactivateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"activateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DAYS_PER_YEAR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentYearSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentYear\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"minerType\",\"type\":\"uint8\"},{\"name\":\"category\",\"type\":\"uint8\"},{\"name\":\"minerAccountAddress\",\"type\":\"address\"},{\"name\":\"referralAccountAddress\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":\"AlgoMiner\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol\":{\"keccak256\":\"0x2314139702cc63c8daa379e521abea3be32730ba896f68f3f865749907e64539\",\"urls\":[\"bzzr://b945e0ec5a4ca8a52b5e816c5bb00807d0ca43c5363102821b36c8c4ee98a2d5\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":{\"keccak256\":\"0x6539396006d7e6026ab2400540be3063f410d784fb2da2cb173a19ffc582843d\",\"urls\":[\"bzzr://0a7fc440769cf939c984395489ca31b68e34822cabe58b6dd2e94466b5cf841c\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol\":{\"keccak256\":\"0x20955eaf60f79f885c941d97e208320c9e0bc1f05b8121342f8187f9a39fd46b\",\"urls\":[\"bzzr://8e30e53aa0322307873f8c0a4fc3c58b7562a0fde92a0921a52bdef4e129ec4b\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol\":{\"keccak256\":\"0x6fffe504e6805d95ca42269cc995a3de9401a12bc037068b056c186ce8569d8d\",\"urls\":[\"bzzr://a0923a2d2b1e4992f552ce49638b19d6d8328950c1d5dc1395f0d625daf21c68\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol\":{\"keccak256\":\"0x71adbf7f060599239b7a981594e43dc8fbe8597fd2853b6fe9e70ff39883d73a\",\"urls\":[\"bzzr://70691c1638cdc0f744f8c5b5a94e4f857ba40ad053816cfbd15e13ed41a3bc66\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0xdc21d3ce2e847a83e62a95fc4e8a31305771c1c6549fba2102ae9a7caa09a1e5\",\"urls\":[\"bzzr://291aa93e18c12398d6d8031308b1a0231d253ec061a5449d0335bd476554383e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol\":{\"keccak256\":\"0x29a8fa3204dbd204355714601ce21d7d717a586a4de21009d8f2a3ca7981963f\",\"urls\":[\"bzzr://55d9b762620cef1e6f7b11a26d6cc123f5b608a59e0d36f9bc0a1e8ff0ff5c42\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"terminate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pauseMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isAlgoMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isMining\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"startMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newMinerAddress\",\"type\":\"address\"}],\"name\":\"migrateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getReferral\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSystem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopAndRemoveOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentDay\",\"outputs\":[{\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"resumeMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMinerType\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCategory\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSupervisor\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwnerAddress\",\"type\":\"address\"},{\"name\":\"newReferralAddress\",\"type\":\"address\"}],\"name\":\"resetMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"deactivateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"activateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentYearSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentYear\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"minerType\",\"type\":\"uint8\"},{\"name\":\"category\",\"type\":\"uint8\"},{\"name\":\"minerAccountAddress\",\"type\":\"address\"},{\"name\":\"referralAccountAddress\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":\"AlgoMiner\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol\":{\"keccak256\":\"0x2314139702cc63c8daa379e521abea3be32730ba896f68f3f865749907e64539\",\"urls\":[\"bzzr://b945e0ec5a4ca8a52b5e816c5bb00807d0ca43c5363102821b36c8c4ee98a2d5\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":{\"keccak256\":\"0x9e72a9de7487735ff03810eed3ba1d97f7568ae7fc2b60339d95da498615ff71\",\"urls\":[\"bzzr://4464c54eb74e4f2afd3c6bc80e65640607e3c06c29e19297fc2bf08de027724f\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol\":{\"keccak256\":\"0x20955eaf60f79f885c941d97e208320c9e0bc1f05b8121342f8187f9a39fd46b\",\"urls\":[\"bzzr://8e30e53aa0322307873f8c0a4fc3c58b7562a0fde92a0921a52bdef4e129ec4b\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol\":{\"keccak256\":\"0x6fffe504e6805d95ca42269cc995a3de9401a12bc037068b056c186ce8569d8d\",\"urls\":[\"bzzr://a0923a2d2b1e4992f552ce49638b19d6d8328950c1d5dc1395f0d625daf21c68\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol\":{\"keccak256\":\"0x71adbf7f060599239b7a981594e43dc8fbe8597fd2853b6fe9e70ff39883d73a\",\"urls\":[\"bzzr://70691c1638cdc0f744f8c5b5a94e4f857ba40ad053816cfbd15e13ed41a3bc66\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0x1b1359f75f7d5a943ab06caea36824f0a6448c5ffa1a32ed7e26cee81cf3683a\",\"urls\":[\"bzzr://26177d59d0c84fa4e632538fbd44802f219e6501b0828533badcf80701cea0f5\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol\":{\"keccak256\":\"0x29a8fa3204dbd204355714601ce21d7d717a586a4de21009d8f2a3ca7981963f\",\"urls\":[\"bzzr://55d9b762620cef1e6f7b11a26d6cc123f5b608a59e0d36f9bc0a1e8ff0ff5c42\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -833,6 +817,20 @@ "stateMutability": "view", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "getReferral", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [], @@ -877,6 +875,7 @@ "getCategory()": "80258e47", "getMiner()": "302c11ca", "getMinerType()": "4969ae70", + "getReferral()": "329b1c92", "isAlgoMiner()": "1777fb4b", "isMining()": "19a74ab3" } @@ -2591,7 +2590,7 @@ "id": 100, "nodeType": "ImportDirective", "scope": 185, - "sourceUnit": 1177, + "sourceUnit": 1182, "src": "28:189:1", "symbolAliases": [], "unitAlias": "" @@ -2616,10 +2615,10 @@ "id": 101, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1176, + "referencedDeclaration": 1181, "src": "260:5:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$1176", + "typeIdentifier": "t_contract$_Roles_$1181", "typeString": "library Roles" } }, @@ -2630,10 +2629,10 @@ "id": 102, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1089, + "referencedDeclaration": 1094, "src": "270:10:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", "typeString": "struct Roles.Role" } } @@ -2648,7 +2647,7 @@ "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1089_storage", + "typeIdentifier": "t_struct$_Role_$1094_storage", "typeString": "struct Roles.Role" }, "typeName": { @@ -2656,10 +2655,10 @@ "id": 104, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1089, + "referencedDeclaration": 1094, "src": "289:10:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -2684,7 +2683,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1532, + "referencedDeclaration": 1537, "src": "381:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2792,7 +2791,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1532, + "referencedDeclaration": 1537, "src": "462:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2858,10 +2857,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, + "referencedDeclaration": 1540, "src": "443:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -2946,7 +2945,7 @@ "referencedDeclaration": 105, "src": "584:16:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1089_storage", + "typeIdentifier": "t_struct$_Role_$1094_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -2957,10 +2956,10 @@ "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 1175, + "referencedDeclaration": 1180, "src": "584:20:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1089_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1089_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1094_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1094_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, @@ -3220,7 +3219,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1532, + "referencedDeclaration": 1537, "src": "797:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -3347,7 +3346,7 @@ "referencedDeclaration": 105, "src": "883:16:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1089_storage", + "typeIdentifier": "t_struct$_Role_$1094_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -3358,10 +3357,10 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1121, + "referencedDeclaration": 1126, "src": "883:20:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1089_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1089_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1094_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1094_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -3479,7 +3478,7 @@ "referencedDeclaration": 105, "src": "990:16:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1089_storage", + "typeIdentifier": "t_struct$_Role_$1094_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -3490,10 +3489,10 @@ "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 1152, + "referencedDeclaration": 1157, "src": "990:23:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1089_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1089_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1094_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1094_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -3607,7 +3606,7 @@ "id": 187, "nodeType": "ImportDirective", "scope": 787, - "sourceUnit": 1374, + "sourceUnit": 1379, "src": "27:195:2", "symbolAliases": [], "unitAlias": "" @@ -3618,7 +3617,7 @@ "id": 188, "nodeType": "ImportDirective", "scope": 787, - "sourceUnit": 1518, + "sourceUnit": 1523, "src": "224:198:2", "symbolAliases": [], "unitAlias": "" @@ -3629,7 +3628,7 @@ "id": 189, "nodeType": "ImportDirective", "scope": 787, - "sourceUnit": 1046, + "sourceUnit": 1051, "src": "426:26:2", "symbolAliases": [], "unitAlias": "" @@ -3788,10 +3787,10 @@ "id": 205, "name": "IAlgoMiner", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1045, + "referencedDeclaration": 1050, "src": "726:10:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$1045", + "typeIdentifier": "t_contract$_IAlgoMiner_$1050", "typeString": "contract IAlgoMiner" } }, @@ -3801,13 +3800,13 @@ } ], "contractDependencies": [ + 1087, + 1050, 97, - 184, - 873, - 960, 1017, - 1045, - 1082 + 960, + 184, + 873 ], "contractKind": "contract", "documentation": null, @@ -3815,12 +3814,12 @@ "id": 786, "linearizedBaseContracts": [ 786, - 1045, + 1050, 873, 184, 960, 1017, - 1082, + 1087, 97 ], "name": "AlgoMiner", @@ -3833,10 +3832,10 @@ "id": 207, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1517, + "referencedDeclaration": 1522, "src": "750:9:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1517", + "typeIdentifier": "t_contract$_SafeERC20_$1522", "typeString": "library SafeERC20" } }, @@ -3847,10 +3846,10 @@ "id": 208, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1373, + "referencedDeclaration": 1378, "src": "764:6:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" } } @@ -3861,7 +3860,7 @@ "name": "DAYS_PER_YEAR", "nodeType": "VariableDeclaration", "scope": 786, - "src": "779:43:2", + "src": "779:44:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3888,7 +3887,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "819:3:2", + "src": "820:3:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_365_by_1", @@ -3896,7 +3895,7 @@ }, "value": "365" }, - "visibility": "public" + "visibility": "private" }, { "canonicalName": "AlgoMiner.MinerType", @@ -3906,18 +3905,18 @@ "id": 213, "name": "PoolBased", "nodeType": "EnumValue", - "src": "857:9:2" + "src": "858:9:2" }, { "id": 214, "name": "NonPoolBased", "nodeType": "EnumValue", - "src": "877:12:2" + "src": "878:12:2" } ], "name": "MinerType", "nodeType": "EnumDefinition", - "src": "831:65:2" + "src": "832:65:2" }, { "canonicalName": "AlgoMiner.MinerState", @@ -3927,30 +3926,30 @@ "id": 216, "name": "Deactivated", "nodeType": "EnumValue", - "src": "931:11:2" + "src": "932:11:2" }, { "id": 217, "name": "Activated", "nodeType": "EnumValue", - "src": "953:9:2" + "src": "954:9:2" }, { "id": 218, "name": "Suspended", "nodeType": "EnumValue", - "src": "973:9:2" + "src": "974:9:2" }, { "id": 219, "name": "Stopped", "nodeType": "EnumValue", - "src": "993:7:2" + "src": "994:7:2" } ], "name": "MinerState", "nodeType": "EnumDefinition", - "src": "904:103:2" + "src": "905:103:2" }, { "constant": false, @@ -3958,7 +3957,7 @@ "name": "_minerType", "nodeType": "VariableDeclaration", "scope": 786, - "src": "1015:28:2", + "src": "1016:28:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3971,7 +3970,7 @@ "name": "MinerType", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 215, - "src": "1015:9:2", + "src": "1016:9:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" @@ -3986,7 +3985,7 @@ "name": "_category", "nodeType": "VariableDeclaration", "scope": 786, - "src": "1050:23:2", + "src": "1051:23:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3997,7 +3996,7 @@ "id": 223, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1050:5:2", + "src": "1051:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4012,7 +4011,7 @@ "name": "_miner", "nodeType": "VariableDeclaration", "scope": 786, - "src": "1080:22:2", + "src": "1081:22:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4023,7 +4022,7 @@ "id": 225, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1080:7:2", + "src": "1081:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4038,7 +4037,7 @@ "name": "_referral", "nodeType": "VariableDeclaration", "scope": 786, - "src": "1109:25:2", + "src": "1110:25:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4049,7 +4048,7 @@ "id": 227, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1109:7:2", + "src": "1110:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4064,7 +4063,7 @@ "name": "_state", "nodeType": "VariableDeclaration", "scope": 786, - "src": "1143:25:2", + "src": "1144:25:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4077,7 +4076,7 @@ "name": "MinerState", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 220, - "src": "1143:10:2", + "src": "1144:10:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -4092,7 +4091,7 @@ "name": "_mining", "nodeType": "VariableDeclaration", "scope": 786, - "src": "1175:20:2", + "src": "1176:20:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4103,7 +4102,7 @@ "id": 231, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1175:4:2", + "src": "1176:4:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4118,7 +4117,7 @@ "name": "_currentYear", "nodeType": "VariableDeclaration", "scope": 786, - "src": "1202:26:2", + "src": "1203:26:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4129,7 +4128,7 @@ "id": 233, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1202:5:2", + "src": "1203:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4144,7 +4143,7 @@ "name": "_currentDay", "nodeType": "VariableDeclaration", "scope": 786, - "src": "1235:26:2", + "src": "1236:26:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4155,7 +4154,7 @@ "id": 235, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "1235:6:2", + "src": "1236:6:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -4170,7 +4169,7 @@ "name": "_currentYearSupply", "nodeType": "VariableDeclaration", "scope": 786, - "src": "1268:34:2", + "src": "1269:34:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4181,7 +4180,7 @@ "id": 237, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1268:7:2", + "src": "1269:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4194,7 +4193,7 @@ "body": { "id": 308, "nodeType": "Block", - "src": "1583:392:2", + "src": "1584:392:2", "statements": [ { "expression": { @@ -4229,7 +4228,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 242, - "src": "1612:8:2", + "src": "1613:8:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4247,7 +4246,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1624:1:2", + "src": "1625:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4255,7 +4254,7 @@ }, "value": "0" }, - "src": "1612:13:2", + "src": "1613:13:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4281,7 +4280,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 242, - "src": "1629:8:2", + "src": "1630:8:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4299,7 +4298,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1641:1:2", + "src": "1642:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -4307,13 +4306,13 @@ }, "value": "5" }, - "src": "1629:13:2", + "src": "1630:13:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1612:30:2", + "src": "1613:30:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4331,11 +4330,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, - "src": "1604:7:2", + "referencedDeclaration": 1540, + "src": "1605:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -4349,7 +4348,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1604:39:2", + "src": "1605:39:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -4357,7 +4356,7 @@ }, "id": 269, "nodeType": "ExpressionStatement", - "src": "1604:39:2" + "src": "1605:39:2" }, { "expression": { @@ -4381,7 +4380,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 244, - "src": "1662:19:2", + "src": "1663:19:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4402,7 +4401,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1693:1:2", + "src": "1694:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4424,7 +4423,7 @@ "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1685:7:2", + "src": "1686:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" @@ -4439,13 +4438,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1685:10:2", + "src": "1686:10:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1662:33:2", + "src": "1663:33:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4463,11 +4462,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, - "src": "1654:7:2", + "referencedDeclaration": 1540, + "src": "1655:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -4481,7 +4480,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1654:42:2", + "src": "1655:42:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -4489,7 +4488,7 @@ }, "id": 277, "nodeType": "ExpressionStatement", - "src": "1654:42:2" + "src": "1655:42:2" }, { "condition": { @@ -4510,7 +4509,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 240, - "src": "1712:9:2", + "src": "1713:9:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" @@ -4527,7 +4526,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 215, - "src": "1725:9:2", + "src": "1726:9:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerType_$215_$", "typeString": "type(enum AlgoMiner.MinerType)" @@ -4541,13 +4540,13 @@ "memberName": "PoolBased", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1725:19:2", + "src": "1726:19:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" } }, - "src": "1712:32:2", + "src": "1713:32:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4556,11 +4555,11 @@ "falseBody": null, "id": 291, "nodeType": "IfStatement", - "src": "1709:109:2", + "src": "1710:109:2", "trueBody": { "id": 290, "nodeType": "Block", - "src": "1746:72:2", + "src": "1747:72:2", "statements": [ { "expression": { @@ -4584,7 +4583,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 246, - "src": "1769:22:2", + "src": "1770:22:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4605,7 +4604,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1803:1:2", + "src": "1804:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4627,7 +4626,7 @@ "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1795:7:2", + "src": "1796:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" @@ -4642,13 +4641,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1795:10:2", + "src": "1796:10:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1769:36:2", + "src": "1770:36:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4666,11 +4665,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, - "src": "1761:7:2", + "referencedDeclaration": 1540, + "src": "1762:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -4684,7 +4683,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1761:45:2", + "src": "1762:45:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -4692,7 +4691,7 @@ }, "id": 289, "nodeType": "ExpressionStatement", - "src": "1761:45:2" + "src": "1762:45:2" } ] } @@ -4712,7 +4711,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 222, - "src": "1830:10:2", + "src": "1831:10:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" @@ -4727,13 +4726,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 240, - "src": "1843:9:2", + "src": "1844:9:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" } }, - "src": "1830:22:2", + "src": "1831:22:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" @@ -4741,7 +4740,7 @@ }, "id": 295, "nodeType": "ExpressionStatement", - "src": "1830:22:2" + "src": "1831:22:2" }, { "expression": { @@ -4758,7 +4757,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 224, - "src": "1863:9:2", + "src": "1864:9:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4773,13 +4772,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 242, - "src": "1875:8:2", + "src": "1876:8:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "1863:20:2", + "src": "1864:20:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4787,7 +4786,7 @@ }, "id": 299, "nodeType": "ExpressionStatement", - "src": "1863:20:2" + "src": "1864:20:2" }, { "expression": { @@ -4804,7 +4803,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 226, - "src": "1894:6:2", + "src": "1895:6:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4819,13 +4818,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 244, - "src": "1903:19:2", + "src": "1904:19:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1894:28:2", + "src": "1895:28:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4833,7 +4832,7 @@ }, "id": 303, "nodeType": "ExpressionStatement", - "src": "1894:28:2" + "src": "1895:28:2" }, { "expression": { @@ -4850,7 +4849,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 228, - "src": "1933:9:2", + "src": "1934:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4865,13 +4864,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 246, - "src": "1945:22:2", + "src": "1946:22:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1933:34:2", + "src": "1934:34:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4879,7 +4878,7 @@ }, "id": 307, "nodeType": "ExpressionStatement", - "src": "1933:34:2" + "src": "1934:34:2" } ] }, @@ -4898,7 +4897,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 248, - "src": "1469:12:2", + "src": "1470:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4913,14 +4912,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1017, - "src": "1452:16:2", + "src": "1453:16:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ERC20TokenHolder_$1017_$", "typeString": "type(contract ERC20TokenHolder)" } }, "nodeType": "ModifierInvocation", - "src": "1452:30:2" + "src": "1453:30:2" }, { "arguments": [], @@ -4932,14 +4931,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 960, - "src": "1492:14:2", + "src": "1493:14:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_AlgoSystemRole_$960_$", "typeString": "type(contract AlgoSystemRole)" } }, "nodeType": "ModifierInvocation", - "src": "1492:16:2" + "src": "1493:16:2" }, { "arguments": [], @@ -4951,14 +4950,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 184, - "src": "1518:16:2", + "src": "1519:16:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_AlgoCoreTeamRole_$184_$", "typeString": "type(contract AlgoCoreTeamRole)" } }, "nodeType": "ModifierInvocation", - "src": "1518:18:2" + "src": "1519:18:2" }, { "arguments": [], @@ -4970,14 +4969,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 873, - "src": "1546:18:2", + "src": "1547:18:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_AlgoSupervisorRole_$873_$", "typeString": "type(contract AlgoSupervisorRole)" } }, "nodeType": "ModifierInvocation", - "src": "1546:20:2" + "src": "1547:20:2" } ], "name": "", @@ -4992,7 +4991,7 @@ "name": "minerType", "nodeType": "VariableDeclaration", "scope": 309, - "src": "1323:19:2", + "src": "1324:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5005,7 +5004,7 @@ "name": "MinerType", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 215, - "src": "1323:9:2", + "src": "1324:9:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" @@ -5020,7 +5019,7 @@ "name": "category", "nodeType": "VariableDeclaration", "scope": 309, - "src": "1344:14:2", + "src": "1345:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5031,7 +5030,7 @@ "id": 241, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1344:5:2", + "src": "1345:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5046,7 +5045,7 @@ "name": "minerAccountAddress", "nodeType": "VariableDeclaration", "scope": 309, - "src": "1360:27:2", + "src": "1361:27:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5057,7 +5056,7 @@ "id": 243, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1360:7:2", + "src": "1361:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5072,7 +5071,7 @@ "name": "referralAccountAddress", "nodeType": "VariableDeclaration", "scope": 309, - "src": "1389:30:2", + "src": "1390:30:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5083,7 +5082,7 @@ "id": 245, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1389:7:2", + "src": "1390:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5098,7 +5097,7 @@ "name": "tokenAddress", "nodeType": "VariableDeclaration", "scope": 309, - "src": "1421:20:2", + "src": "1422:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5109,7 +5108,7 @@ "id": 247, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1421:7:2", + "src": "1422:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5119,17 +5118,17 @@ "visibility": "internal" } ], - "src": "1322:120:2" + "src": "1323:120:2" }, "payable": false, "returnParameters": { "id": 259, "nodeType": "ParameterList", "parameters": [], - "src": "1583:0:2" + "src": "1584:0:2" }, "scope": 786, - "src": "1311:664:2", + "src": "1312:664:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -5138,7 +5137,7 @@ "body": { "id": 319, "nodeType": "Block", - "src": "2004:60:2", + "src": "2005:60:2", "statements": [ { "expression": { @@ -5163,8 +5162,8 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1532, - "src": "2023:3:2", + "referencedDeclaration": 1537, + "src": "2024:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" @@ -5178,7 +5177,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2023:10:2", + "src": "2024:10:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5193,13 +5192,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 226, - "src": "2037:6:2", + "src": "2038:6:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2023:20:2", + "src": "2024:20:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5217,11 +5216,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, - "src": "2015:7:2", + "referencedDeclaration": 1540, + "src": "2016:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -5235,7 +5234,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2015:29:2", + "src": "2016:29:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -5243,12 +5242,12 @@ }, "id": 317, "nodeType": "ExpressionStatement", - "src": "2015:29:2" + "src": "2016:29:2" }, { "id": 318, "nodeType": "PlaceholderStatement", - "src": "2055:1:2" + "src": "2056:1:2" } ] }, @@ -5260,16 +5259,16 @@ "id": 310, "nodeType": "ParameterList", "parameters": [], - "src": "2001:2:2" + "src": "2002:2:2" }, - "src": "1983:81:2", + "src": "1984:81:2", "visibility": "internal" }, { "body": { "id": 386, "nodeType": "Block", - "src": "2135:512:2", + "src": "2136:512:2", "statements": [ { "expression": { @@ -5293,7 +5292,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "2154:6:2", + "src": "2155:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -5310,7 +5309,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "2164:10:2", + "src": "2165:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" @@ -5324,13 +5323,13 @@ "memberName": "Deactivated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2164:22:2", + "src": "2165:22:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2154:32:2", + "src": "2155:32:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5348,11 +5347,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, - "src": "2146:7:2", + "referencedDeclaration": 1540, + "src": "2147:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -5366,7 +5365,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2146:41:2", + "src": "2147:41:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -5374,7 +5373,7 @@ }, "id": 333, "nodeType": "ExpressionStatement", - "src": "2146:41:2" + "src": "2147:41:2" }, { "condition": { @@ -5406,7 +5405,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 222, - "src": "2203:10:2", + "src": "2204:10:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" @@ -5423,7 +5422,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 215, - "src": "2217:9:2", + "src": "2218:9:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerType_$215_$", "typeString": "type(enum AlgoMiner.MinerType)" @@ -5437,13 +5436,13 @@ "memberName": "PoolBased", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2217:19:2", + "src": "2218:19:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" } }, - "src": "2203:33:2", + "src": "2204:33:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5469,7 +5468,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 238, - "src": "2240:18:2", + "src": "2241:18:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5487,7 +5486,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2262:1:2", + "src": "2263:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5495,13 +5494,13 @@ }, "value": "0" }, - "src": "2240:23:2", + "src": "2241:23:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2203:60:2", + "src": "2204:60:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5510,11 +5509,11 @@ "falseBody": null, "id": 380, "nodeType": "IfStatement", - "src": "2200:398:2", + "src": "2201:398:2", "trueBody": { "id": 379, "nodeType": "Block", - "src": "2265:333:2", + "src": "2266:333:2", "statements": [ { "assignments": [ @@ -5527,7 +5526,7 @@ "name": "capacity", "nodeType": "VariableDeclaration", "scope": 387, - "src": "2282:16:2", + "src": "2283:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5538,7 +5537,7 @@ "id": 342, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2282:7:2", + "src": "2283:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5559,7 +5558,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 224, - "src": "2323:9:2", + "src": "2324:9:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5578,7 +5577,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, - "src": "2301:21:2", + "src": "2302:21:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint8_$returns$_t_uint256_$", "typeString": "function (uint8) pure returns (uint256)" @@ -5592,14 +5591,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2301:32:2", + "src": "2302:32:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2282:51:2" + "src": "2283:51:2" }, { "assignments": [ @@ -5612,7 +5611,7 @@ "name": "expectedBalance", "nodeType": "VariableDeclaration", "scope": 387, - "src": "2348:23:2", + "src": "2349:23:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5623,7 +5622,7 @@ "id": 348, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2348:7:2", + "src": "2349:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5652,7 +5651,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 343, - "src": "2374:8:2", + "src": "2375:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5689,7 +5688,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 343, - "src": "2385:8:2", + "src": "2386:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5707,7 +5706,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2396:2:2", + "src": "2397:2:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", @@ -5715,7 +5714,7 @@ }, "value": "10" }, - "src": "2385:13:2", + "src": "2386:13:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5733,7 +5732,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2401:3:2", + "src": "2402:3:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_100_by_1", @@ -5741,20 +5740,20 @@ }, "value": "100" }, - "src": "2385:19:2", + "src": "2386:19:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2374:30:2", + "src": "2375:30:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2348:56:2" + "src": "2349:56:2" }, { "assignments": [ @@ -5767,7 +5766,7 @@ "name": "currentBalance", "nodeType": "VariableDeclaration", "scope": 387, - "src": "2421:22:2", + "src": "2422:22:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5778,7 +5777,7 @@ "id": 358, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2421:7:2", + "src": "2422:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5801,8 +5800,8 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1567, - "src": "2471:4:2", + "referencedDeclaration": 1572, + "src": "2472:4:2", "typeDescriptions": { "typeIdentifier": "t_contract$_AlgoMiner_$786", "typeString": "contract AlgoMiner" @@ -5822,7 +5821,7 @@ "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2463:7:2", + "src": "2464:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" @@ -5837,7 +5836,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2463:13:2", + "src": "2464:13:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5858,9 +5857,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, - "src": "2446:6:2", + "src": "2447:6:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" } }, @@ -5871,8 +5870,8 @@ "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 1318, - "src": "2446:16:2", + "referencedDeclaration": 1323, + "src": "2447:16:2", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" @@ -5886,14 +5885,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2446:31:2", + "src": "2447:31:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2421:56:2" + "src": "2422:56:2" }, { "expression": { @@ -5917,7 +5916,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 359, - "src": "2502:14:2", + "src": "2503:14:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5932,13 +5931,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 349, - "src": "2520:15:2", + "src": "2521:15:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2502:33:2", + "src": "2503:33:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5956,11 +5955,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, - "src": "2494:7:2", + "referencedDeclaration": 1540, + "src": "2495:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -5974,7 +5973,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2494:42:2", + "src": "2495:42:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -5982,7 +5981,7 @@ }, "id": 372, "nodeType": "ExpressionStatement", - "src": "2494:42:2" + "src": "2495:42:2" }, { "expression": { @@ -5999,7 +5998,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 238, - "src": "2553:18:2", + "src": "2554:18:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6025,7 +6024,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 343, - "src": "2574:8:2", + "src": "2575:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6043,7 +6042,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2585:1:2", + "src": "2586:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -6051,13 +6050,13 @@ }, "value": "2" }, - "src": "2574:12:2", + "src": "2575:12:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2553:33:2", + "src": "2554:33:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6065,7 +6064,7 @@ }, "id": 378, "nodeType": "ExpressionStatement", - "src": "2553:33:2" + "src": "2554:33:2" } ] } @@ -6085,7 +6084,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "2610:6:2", + "src": "2611:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -6102,7 +6101,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "2619:10:2", + "src": "2620:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" @@ -6116,13 +6115,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2619:20:2", + "src": "2620:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2610:29:2", + "src": "2611:29:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -6130,7 +6129,7 @@ }, "id": 385, "nodeType": "ExpressionStatement", - "src": "2610:29:2" + "src": "2611:29:2" } ] }, @@ -6149,15 +6148,15 @@ "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1073, - "src": "2108:13:2", + "referencedDeclaration": 1078, + "src": "2109:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2108:13:2" + "src": "2109:13:2" }, { "arguments": null, @@ -6169,14 +6168,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "2122:12:2", + "src": "2123:12:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2122:12:2" + "src": "2123:12:2" } ], "name": "activateMiner", @@ -6185,17 +6184,17 @@ "id": 321, "nodeType": "ParameterList", "parameters": [], - "src": "2098:2:2" + "src": "2099:2:2" }, "payable": false, "returnParameters": { "id": 326, "nodeType": "ParameterList", "parameters": [], - "src": "2135:0:2" + "src": "2136:0:2" }, "scope": 786, - "src": "2076:571:2", + "src": "2077:571:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -6204,7 +6203,7 @@ "body": { "id": 410, "nodeType": "Block", - "src": "2716:138:2", + "src": "2717:138:2", "statements": [ { "expression": { @@ -6228,7 +6227,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "2735:6:2", + "src": "2736:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -6245,7 +6244,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "2745:10:2", + "src": "2746:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" @@ -6259,13 +6258,13 @@ "memberName": "Deactivated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2745:22:2", + "src": "2746:22:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2735:32:2", + "src": "2736:32:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6283,11 +6282,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, - "src": "2727:7:2", + "referencedDeclaration": 1540, + "src": "2728:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -6301,7 +6300,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2727:41:2", + "src": "2728:41:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -6309,7 +6308,7 @@ }, "id": 400, "nodeType": "ExpressionStatement", - "src": "2727:41:2" + "src": "2728:41:2" }, { "expression": { @@ -6326,7 +6325,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "2789:6:2", + "src": "2790:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -6343,7 +6342,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "2798:10:2", + "src": "2799:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" @@ -6357,13 +6356,13 @@ "memberName": "Deactivated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2798:22:2", + "src": "2799:22:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2789:31:2", + "src": "2790:31:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -6371,7 +6370,7 @@ }, "id": 405, "nodeType": "ExpressionStatement", - "src": "2789:31:2" + "src": "2790:31:2" }, { "expression": { @@ -6388,7 +6387,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, - "src": "2831:7:2", + "src": "2832:7:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6406,7 +6405,7 @@ "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2841:5:2", + "src": "2842:5:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6414,7 +6413,7 @@ }, "value": "false" }, - "src": "2831:15:2", + "src": "2832:15:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6422,7 +6421,7 @@ }, "id": 409, "nodeType": "ExpressionStatement", - "src": "2831:15:2" + "src": "2832:15:2" } ] }, @@ -6441,15 +6440,15 @@ "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1073, - "src": "2689:13:2", + "referencedDeclaration": 1078, + "src": "2690:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2689:13:2" + "src": "2690:13:2" }, { "arguments": null, @@ -6461,14 +6460,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "2703:12:2", + "src": "2704:12:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2703:12:2" + "src": "2704:12:2" } ], "name": "deactivateMiner", @@ -6477,17 +6476,17 @@ "id": 388, "nodeType": "ParameterList", "parameters": [], - "src": "2679:2:2" + "src": "2680:2:2" }, "payable": false, "returnParameters": { "id": 393, "nodeType": "ParameterList", "parameters": [], - "src": "2716:0:2" + "src": "2717:0:2" }, "scope": 786, - "src": "2655:199:2", + "src": "2656:199:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -6496,7 +6495,7 @@ "body": { "id": 437, "nodeType": "Block", - "src": "2929:142:2", + "src": "2930:142:2", "statements": [ { "expression": { @@ -6520,7 +6519,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "2948:6:2", + "src": "2949:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -6537,7 +6536,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "2958:10:2", + "src": "2959:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" @@ -6551,13 +6550,13 @@ "memberName": "Deactivated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2958:22:2", + "src": "2959:22:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2948:32:2", + "src": "2949:32:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6575,11 +6574,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, - "src": "2940:7:2", + "referencedDeclaration": 1540, + "src": "2941:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -6593,7 +6592,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2940:41:2", + "src": "2941:41:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -6601,7 +6600,7 @@ }, "id": 424, "nodeType": "ExpressionStatement", - "src": "2940:41:2" + "src": "2941:41:2" }, { "expression": { @@ -6614,7 +6613,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 413, - "src": "3014:15:2", + "src": "3015:15:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6632,8 +6631,8 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1567, - "src": "3056:4:2", + "referencedDeclaration": 1572, + "src": "3057:4:2", "typeDescriptions": { "typeIdentifier": "t_contract$_AlgoMiner_$786", "typeString": "contract AlgoMiner" @@ -6653,7 +6652,7 @@ "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3048:7:2", + "src": "3049:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" @@ -6668,7 +6667,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3048:13:2", + "src": "3049:13:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6689,9 +6688,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, - "src": "3031:6:2", + "src": "3032:6:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" } }, @@ -6702,8 +6701,8 @@ "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 1318, - "src": "3031:16:2", + "referencedDeclaration": 1323, + "src": "3032:16:2", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" @@ -6717,7 +6716,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3031:31:2", + "src": "3032:31:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6742,9 +6741,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, - "src": "2994:6:2", + "src": "2995:6:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" } }, @@ -6755,10 +6754,10 @@ "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1398, - "src": "2994:19:2", + "referencedDeclaration": 1403, + "src": "2995:19:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1373_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1373_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1378_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1378_$", "typeString": "function (contract IERC20,address,uint256)" } }, @@ -6770,7 +6769,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2994:69:2", + "src": "2995:69:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -6778,7 +6777,7 @@ }, "id": 436, "nodeType": "ExpressionStatement", - "src": "2994:69:2" + "src": "2995:69:2" } ] }, @@ -6798,14 +6797,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "2916:12:2", + "src": "2917:12:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2916:12:2" + "src": "2917:12:2" } ], "name": "migrateMiner", @@ -6820,7 +6819,7 @@ "name": "newMinerAddress", "nodeType": "VariableDeclaration", "scope": 438, - "src": "2884:23:2", + "src": "2885:23:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6831,7 +6830,7 @@ "id": 412, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2884:7:2", + "src": "2885:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6841,17 +6840,17 @@ "visibility": "internal" } ], - "src": "2883:25:2" + "src": "2884:25:2" }, "payable": false, "returnParameters": { "id": 417, "nodeType": "ParameterList", "parameters": [], - "src": "2929:0:2" + "src": "2930:0:2" }, "scope": 786, - "src": "2862:209:2", + "src": "2863:209:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -6860,7 +6859,7 @@ "body": { "id": 457, "nodeType": "Block", - "src": "3138:108:2", + "src": "3139:108:2", "statements": [ { "expression": { @@ -6884,7 +6883,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "3157:6:2", + "src": "3158:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -6901,7 +6900,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "3167:10:2", + "src": "3168:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" @@ -6915,13 +6914,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3167:20:2", + "src": "3168:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3157:30:2", + "src": "3158:30:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6939,11 +6938,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, - "src": "3149:7:2", + "referencedDeclaration": 1540, + "src": "3150:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -6957,7 +6956,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3149:39:2", + "src": "3150:39:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -6965,7 +6964,7 @@ }, "id": 451, "nodeType": "ExpressionStatement", - "src": "3149:39:2" + "src": "3150:39:2" }, { "expression": { @@ -6982,7 +6981,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "3209:6:2", + "src": "3210:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -6999,7 +6998,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "3218:10:2", + "src": "3219:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" @@ -7013,13 +7012,13 @@ "memberName": "Suspended", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3218:20:2", + "src": "3219:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3209:29:2", + "src": "3210:29:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -7027,7 +7026,7 @@ }, "id": 456, "nodeType": "ExpressionStatement", - "src": "3209:29:2" + "src": "3210:29:2" } ] }, @@ -7046,15 +7045,15 @@ "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1073, - "src": "3109:13:2", + "referencedDeclaration": 1078, + "src": "3110:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3109:13:2" + "src": "3110:13:2" }, { "arguments": null, @@ -7066,14 +7065,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 814, - "src": "3123:14:2", + "src": "3124:14:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3123:14:2" + "src": "3124:14:2" } ], "name": "pauseMining", @@ -7082,17 +7081,17 @@ "id": 439, "nodeType": "ParameterList", "parameters": [], - "src": "3099:2:2" + "src": "3100:2:2" }, "payable": false, "returnParameters": { "id": 444, "nodeType": "ParameterList", "parameters": [], - "src": "3138:0:2" + "src": "3139:0:2" }, "scope": 786, - "src": "3079:167:2", + "src": "3080:167:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -7101,7 +7100,7 @@ "body": { "id": 477, "nodeType": "Block", - "src": "3314:100:2", + "src": "3315:100:2", "statements": [ { "expression": { @@ -7125,7 +7124,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "3333:6:2", + "src": "3334:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -7142,7 +7141,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "3343:10:2", + "src": "3344:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" @@ -7156,13 +7155,13 @@ "memberName": "Suspended", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3343:20:2", + "src": "3344:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3333:30:2", + "src": "3334:30:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7180,11 +7179,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, - "src": "3325:7:2", + "referencedDeclaration": 1540, + "src": "3326:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -7198,7 +7197,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3325:39:2", + "src": "3326:39:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -7206,7 +7205,7 @@ }, "id": 471, "nodeType": "ExpressionStatement", - "src": "3325:39:2" + "src": "3326:39:2" }, { "expression": { @@ -7223,7 +7222,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "3377:6:2", + "src": "3378:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -7240,7 +7239,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "3386:10:2", + "src": "3387:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" @@ -7254,13 +7253,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3386:20:2", + "src": "3387:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3377:29:2", + "src": "3378:29:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -7268,7 +7267,7 @@ }, "id": 476, "nodeType": "ExpressionStatement", - "src": "3377:29:2" + "src": "3378:29:2" } ] }, @@ -7287,15 +7286,15 @@ "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1073, - "src": "3285:13:2", + "referencedDeclaration": 1078, + "src": "3286:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3285:13:2" + "src": "3286:13:2" }, { "arguments": null, @@ -7307,14 +7306,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 814, - "src": "3299:14:2", + "src": "3300:14:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3299:14:2" + "src": "3300:14:2" } ], "name": "resumeMining", @@ -7323,17 +7322,17 @@ "id": 459, "nodeType": "ParameterList", "parameters": [], - "src": "3275:2:2" + "src": "3276:2:2" }, "payable": false, "returnParameters": { "id": 464, "nodeType": "ParameterList", "parameters": [], - "src": "3314:0:2" + "src": "3315:0:2" }, "scope": 786, - "src": "3254:160:2", + "src": "3255:160:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -7342,7 +7341,7 @@ "body": { "id": 513, "nodeType": "Block", - "src": "3492:193:2", + "src": "3493:193:2", "statements": [ { "expression": { @@ -7366,7 +7365,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "3511:6:2", + "src": "3512:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -7383,7 +7382,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "3521:10:2", + "src": "3522:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" @@ -7397,13 +7396,13 @@ "memberName": "Stopped", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3521:18:2", + "src": "3522:18:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3511:28:2", + "src": "3512:28:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7421,11 +7420,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, - "src": "3503:7:2", + "referencedDeclaration": 1540, + "src": "3504:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -7439,7 +7438,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3503:37:2", + "src": "3504:37:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -7447,7 +7446,7 @@ }, "id": 491, "nodeType": "ExpressionStatement", - "src": "3503:37:2" + "src": "3504:37:2" }, { "expression": { @@ -7464,7 +7463,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "3561:6:2", + "src": "3562:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -7481,7 +7480,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "3570:10:2", + "src": "3571:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" @@ -7495,13 +7494,13 @@ "memberName": "Stopped", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3570:18:2", + "src": "3571:18:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3561:27:2", + "src": "3562:27:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -7509,7 +7508,7 @@ }, "id": 496, "nodeType": "ExpressionStatement", - "src": "3561:27:2" + "src": "3562:27:2" }, { "expression": { @@ -7526,7 +7525,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, - "src": "3599:7:2", + "src": "3600:7:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7544,7 +7543,7 @@ "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3609:5:2", + "src": "3610:5:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -7552,7 +7551,7 @@ }, "value": "false" }, - "src": "3599:15:2", + "src": "3600:15:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7560,7 +7559,7 @@ }, "id": 500, "nodeType": "ExpressionStatement", - "src": "3599:15:2" + "src": "3600:15:2" }, { "expression": { @@ -7577,7 +7576,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 226, - "src": "3625:6:2", + "src": "3626:6:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7598,7 +7597,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3642:1:2", + "src": "3643:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7620,7 +7619,7 @@ "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3634:7:2", + "src": "3635:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" @@ -7635,13 +7634,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3634:10:2", + "src": "3635:10:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3625:19:2", + "src": "3626:19:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7649,7 +7648,7 @@ }, "id": 506, "nodeType": "ExpressionStatement", - "src": "3625:19:2" + "src": "3626:19:2" }, { "expression": { @@ -7666,7 +7665,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 228, - "src": "3655:9:2", + "src": "3656:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7687,7 +7686,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3675:1:2", + "src": "3676:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7709,7 +7708,7 @@ "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3667:7:2", + "src": "3668:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" @@ -7724,13 +7723,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3667:10:2", + "src": "3668:10:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3655:22:2", + "src": "3656:22:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7738,7 +7737,7 @@ }, "id": 512, "nodeType": "ExpressionStatement", - "src": "3655:22:2" + "src": "3656:22:2" } ] }, @@ -7757,15 +7756,15 @@ "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1073, - "src": "3463:13:2", + "referencedDeclaration": 1078, + "src": "3464:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3463:13:2" + "src": "3464:13:2" }, { "arguments": null, @@ -7777,14 +7776,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 814, - "src": "3477:14:2", + "src": "3478:14:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3477:14:2" + "src": "3478:14:2" } ], "name": "stopAndRemoveOwnership", @@ -7793,17 +7792,17 @@ "id": 479, "nodeType": "ParameterList", "parameters": [], - "src": "3453:2:2" + "src": "3454:2:2" }, "payable": false, "returnParameters": { "id": 484, "nodeType": "ParameterList", "parameters": [], - "src": "3492:0:2" + "src": "3493:0:2" }, "scope": 786, - "src": "3422:263:2", + "src": "3423:263:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -7812,7 +7811,7 @@ "body": { "id": 545, "nodeType": "Block", - "src": "3802:174:2", + "src": "3803:174:2", "statements": [ { "expression": { @@ -7836,7 +7835,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "3821:6:2", + "src": "3822:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -7853,7 +7852,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "3831:10:2", + "src": "3832:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" @@ -7867,13 +7866,13 @@ "memberName": "Stopped", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3831:18:2", + "src": "3832:18:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3821:28:2", + "src": "3822:28:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7891,11 +7890,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, - "src": "3813:7:2", + "referencedDeclaration": 1540, + "src": "3814:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -7909,7 +7908,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3813:37:2", + "src": "3814:37:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -7917,7 +7916,7 @@ }, "id": 531, "nodeType": "ExpressionStatement", - "src": "3813:37:2" + "src": "3814:37:2" }, { "expression": { @@ -7934,7 +7933,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "3863:6:2", + "src": "3864:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -7951,7 +7950,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "3872:10:2", + "src": "3873:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" @@ -7965,13 +7964,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3872:20:2", + "src": "3873:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3863:29:2", + "src": "3864:29:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -7979,7 +7978,7 @@ }, "id": 536, "nodeType": "ExpressionStatement", - "src": "3863:29:2" + "src": "3864:29:2" }, { "expression": { @@ -7996,7 +7995,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 226, - "src": "3903:6:2", + "src": "3904:6:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8011,13 +8010,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 516, - "src": "3912:15:2", + "src": "3913:15:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3903:24:2", + "src": "3904:24:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8025,7 +8024,7 @@ }, "id": 540, "nodeType": "ExpressionStatement", - "src": "3903:24:2" + "src": "3904:24:2" }, { "expression": { @@ -8042,7 +8041,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 228, - "src": "3938:9:2", + "src": "3939:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8057,13 +8056,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 518, - "src": "3950:18:2", + "src": "3951:18:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3938:30:2", + "src": "3939:30:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8071,7 +8070,7 @@ }, "id": 544, "nodeType": "ExpressionStatement", - "src": "3938:30:2" + "src": "3939:30:2" } ] }, @@ -8090,15 +8089,15 @@ "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1073, - "src": "3773:13:2", + "referencedDeclaration": 1078, + "src": "3774:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3773:13:2" + "src": "3774:13:2" }, { "arguments": null, @@ -8110,14 +8109,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 814, - "src": "3787:14:2", + "src": "3788:14:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3787:14:2" + "src": "3788:14:2" } ], "name": "resetMiner", @@ -8132,7 +8131,7 @@ "name": "newOwnerAddress", "nodeType": "VariableDeclaration", "scope": 546, - "src": "3713:23:2", + "src": "3714:23:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8143,7 +8142,7 @@ "id": 515, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3713:7:2", + "src": "3714:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8158,7 +8157,7 @@ "name": "newReferralAddress", "nodeType": "VariableDeclaration", "scope": 546, - "src": "3738:26:2", + "src": "3739:26:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8169,7 +8168,7 @@ "id": 517, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3738:7:2", + "src": "3739:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8179,17 +8178,17 @@ "visibility": "internal" } ], - "src": "3712:53:2" + "src": "3713:53:2" }, "payable": false, "returnParameters": { "id": 524, "nodeType": "ParameterList", "parameters": [], - "src": "3802:0:2" + "src": "3803:0:2" }, "scope": 786, - "src": "3693:283:2", + "src": "3694:283:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -8198,7 +8197,7 @@ "body": { "id": 569, "nodeType": "Block", - "src": "4038:121:2", + "src": "4039:121:2", "statements": [ { "expression": { @@ -8222,7 +8221,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "4057:6:2", + "src": "4058:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -8239,7 +8238,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "4067:10:2", + "src": "4068:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" @@ -8253,13 +8252,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4067:20:2", + "src": "4068:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "4057:30:2", + "src": "4058:30:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8277,11 +8276,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, - "src": "4049:7:2", + "referencedDeclaration": 1540, + "src": "4050:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -8295,7 +8294,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4049:39:2", + "src": "4050:39:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -8303,7 +8302,7 @@ }, "id": 559, "nodeType": "ExpressionStatement", - "src": "4049:39:2" + "src": "4050:39:2" }, { "expression": { @@ -8319,7 +8318,7 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "4107:8:2", + "src": "4108:8:2", "subExpression": { "argumentTypes": null, "id": 561, @@ -8327,7 +8326,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, - "src": "4108:7:2", + "src": "4109:7:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8350,11 +8349,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, - "src": "4099:7:2", + "referencedDeclaration": 1540, + "src": "4100:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -8368,7 +8367,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4099:17:2", + "src": "4100:17:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -8376,7 +8375,7 @@ }, "id": 564, "nodeType": "ExpressionStatement", - "src": "4099:17:2" + "src": "4100:17:2" }, { "expression": { @@ -8393,7 +8392,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, - "src": "4137:7:2", + "src": "4138:7:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8411,7 +8410,7 @@ "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "4147:4:2", + "src": "4148:4:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -8419,7 +8418,7 @@ }, "value": "true" }, - "src": "4137:14:2", + "src": "4138:14:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8427,7 +8426,7 @@ }, "id": 568, "nodeType": "ExpressionStatement", - "src": "4137:14:2" + "src": "4138:14:2" } ] }, @@ -8446,15 +8445,15 @@ "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1073, - "src": "4014:13:2", + "referencedDeclaration": 1078, + "src": "4015:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4014:13:2" + "src": "4015:13:2" }, { "arguments": null, @@ -8466,14 +8465,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 320, - "src": "4028:9:2", + "src": "4029:9:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4028:9:2" + "src": "4029:9:2" } ], "name": "startMining", @@ -8482,17 +8481,17 @@ "id": 547, "nodeType": "ParameterList", "parameters": [], - "src": "4004:2:2" + "src": "4005:2:2" }, "payable": false, "returnParameters": { "id": 552, "nodeType": "ParameterList", "parameters": [], - "src": "4038:0:2" + "src": "4039:0:2" }, "scope": 786, - "src": "3984:175:2", + "src": "3985:175:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -8501,7 +8500,7 @@ "body": { "id": 592, "nodeType": "Block", - "src": "4220:121:2", + "src": "4221:121:2", "statements": [ { "expression": { @@ -8525,7 +8524,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "4239:6:2", + "src": "4240:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -8542,7 +8541,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "4249:10:2", + "src": "4250:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" @@ -8556,13 +8555,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4249:20:2", + "src": "4250:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "4239:30:2", + "src": "4240:30:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8580,11 +8579,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, - "src": "4231:7:2", + "referencedDeclaration": 1540, + "src": "4232:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -8598,7 +8597,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4231:39:2", + "src": "4232:39:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -8606,7 +8605,7 @@ }, "id": 583, "nodeType": "ExpressionStatement", - "src": "4231:39:2" + "src": "4232:39:2" }, { "expression": { @@ -8619,7 +8618,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, - "src": "4289:7:2", + "src": "4290:7:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8637,11 +8636,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, - "src": "4281:7:2", + "referencedDeclaration": 1540, + "src": "4282:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -8655,7 +8654,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4281:16:2", + "src": "4282:16:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -8663,7 +8662,7 @@ }, "id": 587, "nodeType": "ExpressionStatement", - "src": "4281:16:2" + "src": "4282:16:2" }, { "expression": { @@ -8680,7 +8679,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, - "src": "4318:7:2", + "src": "4319:7:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8698,7 +8697,7 @@ "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "4328:5:2", + "src": "4329:5:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -8706,7 +8705,7 @@ }, "value": "false" }, - "src": "4318:15:2", + "src": "4319:15:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8714,7 +8713,7 @@ }, "id": 591, "nodeType": "ExpressionStatement", - "src": "4318:15:2" + "src": "4319:15:2" } ] }, @@ -8733,15 +8732,15 @@ "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1073, - "src": "4196:13:2", + "referencedDeclaration": 1078, + "src": "4197:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4196:13:2" + "src": "4197:13:2" }, { "arguments": null, @@ -8753,14 +8752,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 320, - "src": "4210:9:2", + "src": "4211:9:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4210:9:2" + "src": "4211:9:2" } ], "name": "stopMining", @@ -8769,17 +8768,17 @@ "id": 571, "nodeType": "ParameterList", "parameters": [], - "src": "4186:2:2" + "src": "4187:2:2" }, "payable": false, "returnParameters": { "id": 576, "nodeType": "ParameterList", "parameters": [], - "src": "4220:0:2" + "src": "4221:0:2" }, "scope": 786, - "src": "4167:174:2", + "src": "4168:174:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -8788,7 +8787,7 @@ "body": { "id": 696, "nodeType": "Block", - "src": "4397:800:2", + "src": "4398:800:2", "statements": [ { "expression": { @@ -8812,7 +8811,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 222, - "src": "4416:10:2", + "src": "4417:10:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" @@ -8829,7 +8828,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 215, - "src": "4430:9:2", + "src": "4431:9:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerType_$215_$", "typeString": "type(enum AlgoMiner.MinerType)" @@ -8843,13 +8842,13 @@ "memberName": "PoolBased", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4430:19:2", + "src": "4431:19:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" } }, - "src": "4416:33:2", + "src": "4417:33:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8867,11 +8866,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, - "src": "4408:7:2", + "referencedDeclaration": 1540, + "src": "4409:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -8885,7 +8884,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4408:42:2", + "src": "4409:42:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -8893,7 +8892,7 @@ }, "id": 606, "nodeType": "ExpressionStatement", - "src": "4408:42:2" + "src": "4409:42:2" }, { "expression": { @@ -8917,7 +8916,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "4469:6:2", + "src": "4470:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -8934,7 +8933,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "4479:10:2", + "src": "4480:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" @@ -8948,13 +8947,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4479:20:2", + "src": "4480:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "4469:30:2", + "src": "4470:30:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8972,11 +8971,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, - "src": "4461:7:2", + "referencedDeclaration": 1540, + "src": "4462:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -8990,7 +8989,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4461:39:2", + "src": "4462:39:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -8998,7 +8997,7 @@ }, "id": 613, "nodeType": "ExpressionStatement", - "src": "4461:39:2" + "src": "4462:39:2" }, { "expression": { @@ -9011,7 +9010,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, - "src": "4519:7:2", + "src": "4520:7:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9029,11 +9028,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, - "src": "4511:7:2", + "referencedDeclaration": 1540, + "src": "4512:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -9047,7 +9046,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4511:16:2", + "src": "4512:16:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -9055,7 +9054,7 @@ }, "id": 617, "nodeType": "ExpressionStatement", - "src": "4511:16:2" + "src": "4512:16:2" }, { "condition": { @@ -9076,7 +9075,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 236, - "src": "4543:11:2", + "src": "4544:11:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -9094,7 +9093,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4558:1:2", + "src": "4559:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9102,7 +9101,7 @@ }, "value": "0" }, - "src": "4543:16:2", + "src": "4544:16:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9111,7 +9110,7 @@ "falseBody": { "id": 654, "nodeType": "Block", - "src": "4640:238:2", + "src": "4641:238:2", "statements": [ { "expression": { @@ -9124,7 +9123,7 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4655:13:2", + "src": "4656:13:2", "subExpression": { "argumentTypes": null, "id": 630, @@ -9132,7 +9131,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 236, - "src": "4655:11:2", + "src": "4656:11:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -9145,7 +9144,7 @@ }, "id": 632, "nodeType": "ExpressionStatement", - "src": "4655:13:2" + "src": "4656:13:2" }, { "condition": { @@ -9166,7 +9165,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 236, - "src": "4686:11:2", + "src": "4687:11:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -9195,7 +9194,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 212, - "src": "4702:13:2", + "src": "4703:13:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9213,7 +9212,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4718:1:2", + "src": "4719:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -9221,7 +9220,7 @@ }, "value": "1" }, - "src": "4702:17:2", + "src": "4703:17:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9235,13 +9234,13 @@ "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "4701:19:2", + "src": "4702:19:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4686:34:2", + "src": "4687:34:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9250,11 +9249,11 @@ "falseBody": null, "id": 653, "nodeType": "IfStatement", - "src": "4683:184:2", + "src": "4684:184:2", "trueBody": { "id": 652, "nodeType": "Block", - "src": "4722:145:2", + "src": "4723:145:2", "statements": [ { "expression": { @@ -9267,7 +9266,7 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4741:14:2", + "src": "4742:14:2", "subExpression": { "argumentTypes": null, "id": 639, @@ -9275,7 +9274,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 234, - "src": "4741:12:2", + "src": "4742:12:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -9288,7 +9287,7 @@ }, "id": 641, "nodeType": "ExpressionStatement", - "src": "4741:14:2" + "src": "4742:14:2" }, { "expression": { @@ -9305,7 +9304,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 236, - "src": "4774:11:2", + "src": "4775:11:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -9323,7 +9322,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4788:1:2", + "src": "4789:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -9331,7 +9330,7 @@ }, "value": "1" }, - "src": "4774:15:2", + "src": "4775:15:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -9339,7 +9338,7 @@ }, "id": 645, "nodeType": "ExpressionStatement", - "src": "4774:15:2" + "src": "4775:15:2" }, { "expression": { @@ -9356,7 +9355,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 238, - "src": "4808:18:2", + "src": "4809:18:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9382,7 +9381,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 238, - "src": "4829:18:2", + "src": "4830:18:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9400,7 +9399,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4850:1:2", + "src": "4851:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -9408,13 +9407,13 @@ }, "value": "2" }, - "src": "4829:22:2", + "src": "4830:22:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4808:43:2", + "src": "4809:43:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9422,7 +9421,7 @@ }, "id": 651, "nodeType": "ExpressionStatement", - "src": "4808:43:2" + "src": "4809:43:2" } ] } @@ -9431,11 +9430,11 @@ }, "id": 655, "nodeType": "IfStatement", - "src": "4540:338:2", + "src": "4541:338:2", "trueBody": { "id": 629, "nodeType": "Block", - "src": "4561:73:2", + "src": "4562:73:2", "statements": [ { "expression": { @@ -9452,7 +9451,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 234, - "src": "4576:12:2", + "src": "4577:12:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -9470,7 +9469,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4591:1:2", + "src": "4592:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -9478,7 +9477,7 @@ }, "value": "1" }, - "src": "4576:16:2", + "src": "4577:16:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -9486,7 +9485,7 @@ }, "id": 624, "nodeType": "ExpressionStatement", - "src": "4576:16:2" + "src": "4577:16:2" }, { "expression": { @@ -9503,7 +9502,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 236, - "src": "4607:11:2", + "src": "4608:11:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -9521,7 +9520,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4621:1:2", + "src": "4622:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -9529,7 +9528,7 @@ }, "value": "1" }, - "src": "4607:15:2", + "src": "4608:15:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -9537,7 +9536,7 @@ }, "id": 628, "nodeType": "ExpressionStatement", - "src": "4607:15:2" + "src": "4608:15:2" } ] } @@ -9553,7 +9552,7 @@ "name": "minerTokens", "nodeType": "VariableDeclaration", "scope": 697, - "src": "4890:19:2", + "src": "4891:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9564,7 +9563,7 @@ "id": 656, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4890:7:2", + "src": "4891:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9593,7 +9592,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 238, - "src": "4912:18:2", + "src": "4913:18:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9608,20 +9607,20 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 212, - "src": "4933:13:2", + "src": "4934:13:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4912:34:2", + "src": "4913:34:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "4890:56:2" + "src": "4891:56:2" }, { "assignments": [ @@ -9634,7 +9633,7 @@ "name": "referralTokens", "nodeType": "VariableDeclaration", "scope": 697, - "src": "4957:22:2", + "src": "4958:22:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9645,7 +9644,7 @@ "id": 662, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4957:7:2", + "src": "4958:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9685,7 +9684,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 657, - "src": "4982:11:2", + "src": "4983:11:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9703,7 +9702,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4996:2:2", + "src": "4997:2:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", @@ -9711,7 +9710,7 @@ }, "value": "10" }, - "src": "4982:16:2", + "src": "4983:16:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9729,7 +9728,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5001:3:2", + "src": "5002:3:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_100_by_1", @@ -9737,14 +9736,14 @@ }, "value": "100" }, - "src": "4982:22:2", + "src": "4983:22:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "4957:47:2" + "src": "4958:47:2" }, { "expression": { @@ -9768,7 +9767,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 657, - "src": "5025:11:2", + "src": "5026:11:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9786,7 +9785,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5039:1:2", + "src": "5040:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9794,7 +9793,7 @@ }, "value": "0" }, - "src": "5025:15:2", + "src": "5026:15:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9812,11 +9811,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, - "src": "5017:7:2", + "referencedDeclaration": 1540, + "src": "5018:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -9830,7 +9829,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5017:24:2", + "src": "5018:24:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -9838,7 +9837,7 @@ }, "id": 675, "nodeType": "ExpressionStatement", - "src": "5017:24:2" + "src": "5018:24:2" }, { "expression": { @@ -9862,7 +9861,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 663, - "src": "5060:14:2", + "src": "5061:14:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9880,7 +9879,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5077:1:2", + "src": "5078:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9888,7 +9887,7 @@ }, "value": "0" }, - "src": "5060:18:2", + "src": "5061:18:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9906,11 +9905,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, - "src": "5052:7:2", + "referencedDeclaration": 1540, + "src": "5053:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -9924,7 +9923,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5052:27:2", + "src": "5053:27:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -9932,7 +9931,7 @@ }, "id": 681, "nodeType": "ExpressionStatement", - "src": "5052:27:2" + "src": "5053:27:2" }, { "expression": { @@ -9945,7 +9944,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 226, - "src": "5112:6:2", + "src": "5113:6:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9958,7 +9957,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 657, - "src": "5120:11:2", + "src": "5121:11:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9983,9 +9982,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, - "src": "5092:6:2", + "src": "5093:6:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" } }, @@ -9996,10 +9995,10 @@ "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1398, - "src": "5092:19:2", + "referencedDeclaration": 1403, + "src": "5093:19:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1373_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1373_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1378_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1378_$", "typeString": "function (contract IERC20,address,uint256)" } }, @@ -10011,7 +10010,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5092:40:2", + "src": "5093:40:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -10019,7 +10018,7 @@ }, "id": 688, "nodeType": "ExpressionStatement", - "src": "5092:40:2" + "src": "5093:40:2" }, { "expression": { @@ -10032,7 +10031,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 228, - "src": "5163:9:2", + "src": "5164:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10045,7 +10044,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 663, - "src": "5174:14:2", + "src": "5175:14:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10070,9 +10069,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, - "src": "5143:6:2", + "src": "5144:6:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" } }, @@ -10083,10 +10082,10 @@ "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1398, - "src": "5143:19:2", + "referencedDeclaration": 1403, + "src": "5144:19:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1373_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1373_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1378_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1378_$", "typeString": "function (contract IERC20,address,uint256)" } }, @@ -10098,7 +10097,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5143:46:2", + "src": "5144:46:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -10106,7 +10105,7 @@ }, "id": 695, "nodeType": "ExpressionStatement", - "src": "5143:46:2" + "src": "5144:46:2" } ] }, @@ -10125,15 +10124,15 @@ "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1073, - "src": "4372:13:2", + "referencedDeclaration": 1078, + "src": "4373:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4372:13:2" + "src": "4373:13:2" }, { "arguments": null, @@ -10145,14 +10144,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 901, - "src": "4386:10:2", + "src": "4387:10:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4386:10:2" + "src": "4387:10:2" } ], "name": "mine", @@ -10161,17 +10160,17 @@ "id": 594, "nodeType": "ParameterList", "parameters": [], - "src": "4362:2:2" + "src": "4363:2:2" }, "payable": false, "returnParameters": { "id": 599, "nodeType": "ParameterList", "parameters": [], - "src": "4397:0:2" + "src": "4398:0:2" }, "scope": 786, - "src": "4349:848:2", + "src": "4350:848:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -10180,7 +10179,7 @@ "body": { "id": 705, "nodeType": "Block", - "src": "5246:31:2", + "src": "5247:31:2", "statements": [ { "expression": { @@ -10195,7 +10194,7 @@ 1016 ], "referencedDeclaration": 1016, - "src": "5257:10:2", + "src": "5258:10:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" @@ -10209,7 +10208,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5257:12:2", + "src": "5258:12:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -10217,7 +10216,7 @@ }, "id": 704, "nodeType": "ExpressionStatement", - "src": "5257:12:2" + "src": "5258:12:2" } ] }, @@ -10237,14 +10236,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "5233:12:2", + "src": "5234:12:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "5233:12:2" + "src": "5234:12:2" } ], "name": "terminate", @@ -10253,17 +10252,17 @@ "id": 698, "nodeType": "ParameterList", "parameters": [], - "src": "5223:2:2" + "src": "5224:2:2" }, "payable": false, "returnParameters": { "id": 701, "nodeType": "ParameterList", "parameters": [], - "src": "5246:0:2" + "src": "5247:0:2" }, "scope": 786, - "src": "5205:72:2", + "src": "5206:72:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -10272,7 +10271,7 @@ "body": { "id": 713, "nodeType": "Block", - "src": "5335:30:2", + "src": "5336:30:2", "statements": [ { "expression": { @@ -10285,7 +10284,7 @@ "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "5353:4:2", + "src": "5354:4:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -10296,7 +10295,7 @@ "functionReturnParameters": 710, "id": 712, "nodeType": "Return", - "src": "5346:11:2" + "src": "5347:11:2" } ] }, @@ -10312,7 +10311,7 @@ "id": 707, "nodeType": "ParameterList", "parameters": [], - "src": "5305:2:2" + "src": "5306:2:2" }, "payable": false, "returnParameters": { @@ -10325,7 +10324,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 714, - "src": "5329:4:2", + "src": "5330:4:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10336,7 +10335,7 @@ "id": 708, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "5329:4:2", + "src": "5330:4:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10346,10 +10345,10 @@ "visibility": "internal" } ], - "src": "5328:6:2" + "src": "5329:6:2" }, "scope": 786, - "src": "5285:80:2", + "src": "5286:80:2", "stateMutability": "pure", "superFunction": 1024, "visibility": "public" @@ -10358,7 +10357,7 @@ "body": { "id": 723, "nodeType": "Block", - "src": "5425:43:2", + "src": "5426:43:2", "statements": [ { "expression": { @@ -10371,7 +10370,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 222, - "src": "5449:10:2", + "src": "5450:10:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" @@ -10391,7 +10390,7 @@ "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "5443:5:2", + "src": "5444:5:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)" @@ -10406,7 +10405,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5443:17:2", + "src": "5444:17:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -10415,7 +10414,7 @@ "functionReturnParameters": 718, "id": 722, "nodeType": "Return", - "src": "5436:24:2" + "src": "5437:24:2" } ] }, @@ -10431,7 +10430,7 @@ "id": 715, "nodeType": "ParameterList", "parameters": [], - "src": "5394:2:2" + "src": "5395:2:2" }, "payable": false, "returnParameters": { @@ -10444,7 +10443,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 724, - "src": "5418:5:2", + "src": "5419:5:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10455,7 +10454,7 @@ "id": 716, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "5418:5:2", + "src": "5419:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -10465,10 +10464,10 @@ "visibility": "internal" } ], - "src": "5417:7:2" + "src": "5418:7:2" }, "scope": 786, - "src": "5373:95:2", + "src": "5374:95:2", "stateMutability": "view", "superFunction": 1029, "visibility": "public" @@ -10477,7 +10476,7 @@ "body": { "id": 731, "nodeType": "Block", - "src": "5527:35:2", + "src": "5528:35:2", "statements": [ { "expression": { @@ -10487,7 +10486,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 224, - "src": "5545:9:2", + "src": "5546:9:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -10496,7 +10495,7 @@ "functionReturnParameters": 728, "id": 730, "nodeType": "Return", - "src": "5538:16:2" + "src": "5539:16:2" } ] }, @@ -10512,7 +10511,7 @@ "id": 725, "nodeType": "ParameterList", "parameters": [], - "src": "5496:2:2" + "src": "5497:2:2" }, "payable": false, "returnParameters": { @@ -10525,7 +10524,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 732, - "src": "5520:5:2", + "src": "5521:5:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10536,7 +10535,7 @@ "id": 726, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "5520:5:2", + "src": "5521:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -10546,10 +10545,10 @@ "visibility": "internal" } ], - "src": "5519:7:2" + "src": "5520:7:2" }, "scope": 786, - "src": "5476:86:2", + "src": "5477:86:2", "stateMutability": "view", "superFunction": 1034, "visibility": "public" @@ -10558,7 +10557,7 @@ "body": { "id": 739, "nodeType": "Block", - "src": "5620:32:2", + "src": "5621:32:2", "statements": [ { "expression": { @@ -10568,7 +10567,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 226, - "src": "5638:6:2", + "src": "5639:6:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10577,7 +10576,7 @@ "functionReturnParameters": 736, "id": 738, "nodeType": "Return", - "src": "5631:13:2" + "src": "5632:13:2" } ] }, @@ -10593,7 +10592,7 @@ "id": 733, "nodeType": "ParameterList", "parameters": [], - "src": "5587:2:2" + "src": "5588:2:2" }, "payable": false, "returnParameters": { @@ -10606,7 +10605,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 740, - "src": "5611:7:2", + "src": "5612:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10617,7 +10616,7 @@ "id": 734, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5611:7:2", + "src": "5612:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10627,19 +10626,19 @@ "visibility": "internal" } ], - "src": "5610:9:2" + "src": "5611:9:2" }, "scope": 786, - "src": "5570:82:2", + "src": "5571:82:2", "stateMutability": "view", - "superFunction": 1044, + "superFunction": 1039, "visibility": "public" }, { "body": { "id": 747, "nodeType": "Block", - "src": "5713:35:2", + "src": "5714:35:2", "statements": [ { "expression": { @@ -10649,7 +10648,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 228, - "src": "5731:9:2", + "src": "5732:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10658,7 +10657,7 @@ "functionReturnParameters": 744, "id": 746, "nodeType": "Return", - "src": "5724:16:2" + "src": "5725:16:2" } ] }, @@ -10674,7 +10673,7 @@ "id": 741, "nodeType": "ParameterList", "parameters": [], - "src": "5680:2:2" + "src": "5681:2:2" }, "payable": false, "returnParameters": { @@ -10687,7 +10686,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 748, - "src": "5704:7:2", + "src": "5705:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10698,7 +10697,7 @@ "id": 742, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5704:7:2", + "src": "5705:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10708,19 +10707,19 @@ "visibility": "internal" } ], - "src": "5703:9:2" + "src": "5704:9:2" }, "scope": 786, - "src": "5660:88:2", + "src": "5661:88:2", "stateMutability": "view", - "superFunction": null, + "superFunction": 1044, "visibility": "public" }, { "body": { "id": 760, "nodeType": "Block", - "src": "5803:67:2", + "src": "5804:67:2", "statements": [ { "expression": { @@ -10752,7 +10751,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "5821:6:2", + "src": "5822:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -10769,7 +10768,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "5831:10:2", + "src": "5832:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" @@ -10783,13 +10782,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "5831:20:2", + "src": "5832:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "5821:30:2", + "src": "5822:30:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10804,13 +10803,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, - "src": "5855:7:2", + "src": "5856:7:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "5821:41:2", + "src": "5822:41:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10819,7 +10818,7 @@ "functionReturnParameters": 752, "id": 759, "nodeType": "Return", - "src": "5814:48:2" + "src": "5815:48:2" } ] }, @@ -10835,7 +10834,7 @@ "id": 749, "nodeType": "ParameterList", "parameters": [], - "src": "5773:2:2" + "src": "5774:2:2" }, "payable": false, "returnParameters": { @@ -10848,7 +10847,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 761, - "src": "5797:4:2", + "src": "5798:4:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10859,7 +10858,7 @@ "id": 750, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "5797:4:2", + "src": "5798:4:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10869,19 +10868,19 @@ "visibility": "internal" } ], - "src": "5796:6:2" + "src": "5797:6:2" }, "scope": 786, - "src": "5756:114:2", + "src": "5757:114:2", "stateMutability": "view", - "superFunction": 1039, + "superFunction": 1049, "visibility": "public" }, { "body": { "id": 768, "nodeType": "Block", - "src": "5932:38:2", + "src": "5933:38:2", "statements": [ { "expression": { @@ -10891,7 +10890,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 234, - "src": "5950:12:2", + "src": "5951:12:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -10900,7 +10899,7 @@ "functionReturnParameters": 765, "id": 767, "nodeType": "Return", - "src": "5943:19:2" + "src": "5944:19:2" } ] }, @@ -10916,7 +10915,7 @@ "id": 762, "nodeType": "ParameterList", "parameters": [], - "src": "5901:2:2" + "src": "5902:2:2" }, "payable": false, "returnParameters": { @@ -10929,7 +10928,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 769, - "src": "5925:5:2", + "src": "5926:5:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10940,7 +10939,7 @@ "id": 763, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "5925:5:2", + "src": "5926:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -10950,10 +10949,10 @@ "visibility": "internal" } ], - "src": "5924:7:2" + "src": "5925:7:2" }, "scope": 786, - "src": "5878:92:2", + "src": "5879:92:2", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -10962,7 +10961,7 @@ "body": { "id": 776, "nodeType": "Block", - "src": "6032:37:2", + "src": "6033:37:2", "statements": [ { "expression": { @@ -10972,7 +10971,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 236, - "src": "6050:11:2", + "src": "6051:11:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -10981,7 +10980,7 @@ "functionReturnParameters": 773, "id": 775, "nodeType": "Return", - "src": "6043:18:2" + "src": "6044:18:2" } ] }, @@ -10997,7 +10996,7 @@ "id": 770, "nodeType": "ParameterList", "parameters": [], - "src": "6000:2:2" + "src": "6001:2:2" }, "payable": false, "returnParameters": { @@ -11010,7 +11009,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 777, - "src": "6024:6:2", + "src": "6025:6:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11021,7 +11020,7 @@ "id": 771, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "6024:6:2", + "src": "6025:6:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -11031,10 +11030,10 @@ "visibility": "internal" } ], - "src": "6023:8:2" + "src": "6024:8:2" }, "scope": 786, - "src": "5978:91:2", + "src": "5979:91:2", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -11043,7 +11042,7 @@ "body": { "id": 784, "nodeType": "Block", - "src": "6139:44:2", + "src": "6140:44:2", "statements": [ { "expression": { @@ -11053,7 +11052,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 238, - "src": "6157:18:2", + "src": "6158:18:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11062,7 +11061,7 @@ "functionReturnParameters": 781, "id": 783, "nodeType": "Return", - "src": "6150:25:2" + "src": "6151:25:2" } ] }, @@ -11078,7 +11077,7 @@ "id": 778, "nodeType": "ParameterList", "parameters": [], - "src": "6106:2:2" + "src": "6107:2:2" }, "payable": false, "returnParameters": { @@ -11091,7 +11090,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 785, - "src": "6130:7:2", + "src": "6131:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11102,7 +11101,7 @@ "id": 779, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6130:7:2", + "src": "6131:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11112,20 +11111,20 @@ "visibility": "internal" } ], - "src": "6129:9:2" + "src": "6130:9:2" }, "scope": 786, - "src": "6077:106:2", + "src": "6078:106:2", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], "scope": 787, - "src": "620:5566:2" + "src": "620:5567:2" } ], - "src": "0:6188:2" + "src": "0:6189:2" }, "id": 2 }, @@ -11157,7 +11156,7 @@ "id": 789, "nodeType": "ImportDirective", "scope": 874, - "sourceUnit": 1177, + "sourceUnit": 1182, "src": "28:189:3", "symbolAliases": [], "unitAlias": "" @@ -11182,10 +11181,10 @@ "id": 790, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1176, + "referencedDeclaration": 1181, "src": "262:5:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$1176", + "typeIdentifier": "t_contract$_Roles_$1181", "typeString": "library Roles" } }, @@ -11196,10 +11195,10 @@ "id": 791, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1089, + "referencedDeclaration": 1094, "src": "272:10:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", "typeString": "struct Roles.Role" } } @@ -11214,7 +11213,7 @@ "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1089_storage", + "typeIdentifier": "t_struct$_Role_$1094_storage", "typeString": "struct Roles.Role" }, "typeName": { @@ -11222,10 +11221,10 @@ "id": 793, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1089, + "referencedDeclaration": 1094, "src": "291:10:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -11250,7 +11249,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1532, + "referencedDeclaration": 1537, "src": "381:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -11358,7 +11357,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1532, + "referencedDeclaration": 1537, "src": "466:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -11424,10 +11423,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, + "referencedDeclaration": 1540, "src": "445:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -11512,7 +11511,7 @@ "referencedDeclaration": 794, "src": "590:12:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1089_storage", + "typeIdentifier": "t_struct$_Role_$1094_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -11523,10 +11522,10 @@ "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 1175, + "referencedDeclaration": 1180, "src": "590:16:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1089_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1089_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1094_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1094_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, @@ -11786,7 +11785,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1532, + "referencedDeclaration": 1537, "src": "809:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -11913,7 +11912,7 @@ "referencedDeclaration": 794, "src": "897:12:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1089_storage", + "typeIdentifier": "t_struct$_Role_$1094_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -11924,10 +11923,10 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1121, + "referencedDeclaration": 1126, "src": "897:16:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1089_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1089_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1094_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1094_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -12045,7 +12044,7 @@ "referencedDeclaration": 794, "src": "1002:12:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1089_storage", + "typeIdentifier": "t_struct$_Role_$1094_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -12056,10 +12055,10 @@ "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 1152, + "referencedDeclaration": 1157, "src": "1002:19:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1089_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1089_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1094_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1094_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -12174,7 +12173,7 @@ "id": 876, "nodeType": "ImportDirective", "scope": 961, - "sourceUnit": 1177, + "sourceUnit": 1182, "src": "28:189:4", "symbolAliases": [], "unitAlias": "" @@ -12199,10 +12198,10 @@ "id": 877, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1176, + "referencedDeclaration": 1181, "src": "258:5:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$1176", + "typeIdentifier": "t_contract$_Roles_$1181", "typeString": "library Roles" } }, @@ -12213,10 +12212,10 @@ "id": 878, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1089, + "referencedDeclaration": 1094, "src": "268:10:4", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", "typeString": "struct Roles.Role" } } @@ -12231,7 +12230,7 @@ "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1089_storage", + "typeIdentifier": "t_struct$_Role_$1094_storage", "typeString": "struct Roles.Role" }, "typeName": { @@ -12239,10 +12238,10 @@ "id": 880, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1089, + "referencedDeclaration": 1094, "src": "287:10:4", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -12267,7 +12266,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1532, + "referencedDeclaration": 1537, "src": "375:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -12375,7 +12374,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1532, + "referencedDeclaration": 1537, "src": "452:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -12441,10 +12440,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, + "referencedDeclaration": 1540, "src": "435:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -12529,7 +12528,7 @@ "referencedDeclaration": 881, "src": "572:14:4", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1089_storage", + "typeIdentifier": "t_struct$_Role_$1094_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -12540,10 +12539,10 @@ "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 1175, + "referencedDeclaration": 1180, "src": "572:18:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1089_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1089_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1094_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1094_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, @@ -12803,7 +12802,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1532, + "referencedDeclaration": 1537, "src": "773:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -12930,7 +12929,7 @@ "referencedDeclaration": 881, "src": "857:14:4", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1089_storage", + "typeIdentifier": "t_struct$_Role_$1094_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -12941,10 +12940,10 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1121, + "referencedDeclaration": 1126, "src": "857:18:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1089_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1089_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1094_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1094_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -13062,7 +13061,7 @@ "referencedDeclaration": 881, "src": "960:14:4", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1089_storage", + "typeIdentifier": "t_struct$_Role_$1094_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -13073,10 +13072,10 @@ "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 1152, + "referencedDeclaration": 1157, "src": "960:21:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1089_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1089_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1094_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1094_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -13190,7 +13189,7 @@ "id": 963, "nodeType": "ImportDirective", "scope": 1018, - "sourceUnit": 1374, + "sourceUnit": 1379, "src": "27:195:5", "symbolAliases": [], "unitAlias": "" @@ -13201,7 +13200,7 @@ "id": 964, "nodeType": "ImportDirective", "scope": 1018, - "sourceUnit": 1518, + "sourceUnit": 1523, "src": "224:198:5", "symbolAliases": [], "unitAlias": "" @@ -13212,7 +13211,7 @@ "id": 965, "nodeType": "ImportDirective", "scope": 1018, - "sourceUnit": 1083, + "sourceUnit": 1088, "src": "426:26:5", "symbolAliases": [], "unitAlias": "" @@ -13226,10 +13225,10 @@ "id": 966, "name": "Terminable", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1082, + "referencedDeclaration": 1087, "src": "485:10:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_Terminable_$1082", + "typeIdentifier": "t_contract$_Terminable_$1087", "typeString": "contract Terminable" } }, @@ -13239,7 +13238,7 @@ } ], "contractDependencies": [ - 1082 + 1087 ], "contractKind": "contract", "documentation": null, @@ -13247,7 +13246,7 @@ "id": 1017, "linearizedBaseContracts": [ 1017, - 1082 + 1087 ], "name": "ERC20TokenHolder", "nodeType": "ContractDefinition", @@ -13259,10 +13258,10 @@ "id": 968, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1517, + "referencedDeclaration": 1522, "src": "509:9:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1517", + "typeIdentifier": "t_contract$_SafeERC20_$1522", "typeString": "library SafeERC20" } }, @@ -13273,10 +13272,10 @@ "id": 969, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1373, + "referencedDeclaration": 1378, "src": "523:6:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" } } @@ -13291,7 +13290,7 @@ "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" }, "typeName": { @@ -13299,10 +13298,10 @@ "id": 971, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1373, + "referencedDeclaration": 1378, "src": "538:6:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" } }, @@ -13332,7 +13331,7 @@ "referencedDeclaration": 972, "src": "636:6:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" } }, @@ -13366,10 +13365,10 @@ "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1373, + "referencedDeclaration": 1378, "src": "645:6:5", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$1373_$", + "typeIdentifier": "t_type$_t_contract$_IERC20_$1378_$", "typeString": "type(contract IERC20)" } }, @@ -13383,13 +13382,13 @@ "nodeType": "FunctionCall", "src": "645:20:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" } }, "src": "636:29:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" } }, @@ -13414,10 +13413,10 @@ "name": "Terminable", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1082, + "referencedDeclaration": 1087, "src": "603:10:5", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Terminable_$1082_$", + "typeIdentifier": "t_type$_t_contract$_Terminable_$1087_$", "typeString": "type(contract Terminable)" } }, @@ -13524,7 +13523,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1561, + "referencedDeclaration": 1566, "src": "773:4:5", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20TokenHolder_$1017", @@ -13583,7 +13582,7 @@ "referencedDeclaration": 972, "src": "748:6:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" } }, @@ -13594,7 +13593,7 @@ "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 1318, + "referencedDeclaration": 1323, "src": "748:16:5", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", @@ -13688,7 +13687,7 @@ "name": "_creator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1049, + "referencedDeclaration": 1054, "src": "848:8:5", "typeDescriptions": { "typeIdentifier": "t_address", @@ -13729,7 +13728,7 @@ "referencedDeclaration": 972, "src": "828:6:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" } }, @@ -13740,10 +13739,10 @@ "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1398, + "referencedDeclaration": 1403, "src": "828:19:5", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1373_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1373_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1378_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1378_$", "typeString": "function (contract IERC20,address,uint256)" } }, @@ -13780,10 +13779,10 @@ "name": "Terminable", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1082, + "referencedDeclaration": 1087, "src": "895:10:5", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Terminable_$1082_$", + "typeIdentifier": "t_type$_t_contract$_Terminable_$1087_$", "typeString": "type(contract Terminable)" } }, @@ -13794,7 +13793,7 @@ "lValueRequested": false, "memberName": "_terminate", "nodeType": "MemberAccess", - "referencedDeclaration": 1081, + "referencedDeclaration": 1086, "src": "895:21:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", @@ -13845,7 +13844,7 @@ "scope": 1017, "src": "681:245:5", "stateMutability": "nonpayable", - "superFunction": 1081, + "superFunction": 1086, "visibility": "internal" } ], @@ -13862,10 +13861,10 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", "exportedSymbols": { "IAlgoMiner": [ - 1045 + 1050 ] }, - "id": 1046, + "id": 1051, "nodeType": "SourceUnit", "nodes": [ { @@ -13884,9 +13883,9 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 1045, + "id": 1050, "linearizedBaseContracts": [ - 1045 + 1050 ], "name": "IAlgoMiner", "nodeType": "ContractDefinition", @@ -13941,7 +13940,7 @@ ], "src": "97:6:6" }, - "scope": 1045, + "scope": 1050, "src": "54:50:6", "stateMutability": "pure", "superFunction": null, @@ -13997,7 +13996,7 @@ ], "src": "154:7:6" }, - "scope": 1045, + "scope": 1050, "src": "110:52:6", "stateMutability": "view", "superFunction": null, @@ -14053,7 +14052,7 @@ ], "src": "211:7:6" }, - "scope": 1045, + "scope": 1050, "src": "168:51:6", "stateMutability": "view", "superFunction": null, @@ -14067,7 +14066,7 @@ "isConstructor": false, "isDeclaredConst": true, "modifiers": [], - "name": "isMining", + "name": "getMiner", "nodeType": "FunctionDefinition", "parameters": { "id": 1035, @@ -14086,31 +14085,31 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 1039, - "src": "266:4:6", + "src": "266:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { "id": 1036, - "name": "bool", + "name": "address", "nodeType": "ElementaryTypeName", - "src": "266:4:6", + "src": "266:7:6", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" } }, "value": null, "visibility": "internal" } ], - "src": "265:6:6" + "src": "265:9:6" }, - "scope": 1045, - "src": "225:47:6", + "scope": 1050, + "src": "225:50:6", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -14123,13 +14122,13 @@ "isConstructor": false, "isDeclaredConst": true, "modifiers": [], - "name": "getMiner", + "name": "getReferral", "nodeType": "FunctionDefinition", "parameters": { "id": 1040, "nodeType": "ParameterList", "parameters": [], - "src": "295:2:6" + "src": "301:2:6" }, "payable": false, "returnParameters": { @@ -14142,7 +14141,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 1044, - "src": "319:7:6", + "src": "325:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14153,7 +14152,7 @@ "id": 1041, "name": "address", "nodeType": "ElementaryTypeName", - "src": "319:7:6", + "src": "325:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14163,20 +14162,76 @@ "visibility": "internal" } ], - "src": "318:9:6" + "src": "324:9:6" }, - "scope": 1045, - "src": "278:50:6", + "scope": 1050, + "src": "281:53:6", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 1049, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isMining", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1045, + "nodeType": "ParameterList", + "parameters": [], + "src": "357:2:6" + }, + "payable": false, + "returnParameters": { + "id": 1048, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1047, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1049, + "src": "381:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1046, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "381:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "380:6:6" + }, + "scope": 1050, + "src": "340:47:6", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1046, - "src": "27:304:6" + "scope": 1051, + "src": "27:363:6" } ], - "src": "0:331:6" + "src": "0:390:6" }, "id": 6 }, @@ -14185,14 +14240,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", "exportedSymbols": { "Terminable": [ - 1082 + 1087 ] }, - "id": 1083, + "id": 1088, "nodeType": "SourceUnit", "nodes": [ { - "id": 1047, + "id": 1052, "literals": [ "solidity", "0.4", @@ -14207,19 +14262,19 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 1082, + "id": 1087, "linearizedBaseContracts": [ - 1082 + 1087 ], "name": "Terminable", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 1049, + "id": 1054, "name": "_creator", "nodeType": "VariableDeclaration", - "scope": 1082, + "scope": 1087, "src": "56:25:7", "stateVariable": true, "storageLocation": "default", @@ -14228,7 +14283,7 @@ "typeString": "address" }, "typeName": { - "id": 1048, + "id": 1053, "name": "address", "nodeType": "ElementaryTypeName", "src": "56:7:7", @@ -14242,10 +14297,10 @@ }, { "constant": false, - "id": 1051, + "id": 1056, "name": "_terminated", "nodeType": "VariableDeclaration", - "scope": 1082, + "scope": 1087, "src": "88:25:7", "stateVariable": true, "storageLocation": "default", @@ -14254,7 +14309,7 @@ "typeString": "bool" }, "typeName": { - "id": 1050, + "id": 1055, "name": "bool", "nodeType": "ElementaryTypeName", "src": "88:4:7", @@ -14268,25 +14323,25 @@ }, { "body": { - "id": 1063, + "id": 1068, "nodeType": "Block", "src": "145:70:7", "statements": [ { "expression": { "argumentTypes": null, - "id": 1057, + "id": 1062, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1054, + "id": 1059, "name": "_creator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1049, + "referencedDeclaration": 1054, "src": "156:8:7", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14299,18 +14354,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1055, + "id": 1060, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1532, + "referencedDeclaration": 1537, "src": "167:3:7", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1056, + "id": 1061, "isConstant": false, "isLValue": false, "isPure": false, @@ -14330,25 +14385,25 @@ "typeString": "address" } }, - "id": 1058, + "id": 1063, "nodeType": "ExpressionStatement", "src": "156:21:7" }, { "expression": { "argumentTypes": null, - "id": 1061, + "id": 1066, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1059, + "id": 1064, "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1051, + "referencedDeclaration": 1056, "src": "188:11:7", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -14360,7 +14415,7 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 1060, + "id": 1065, "isConstant": false, "isLValue": false, "isPure": true, @@ -14381,14 +14436,14 @@ "typeString": "bool" } }, - "id": 1062, + "id": 1067, "nodeType": "ExpressionStatement", "src": "188:19:7" } ] }, "documentation": null, - "id": 1064, + "id": 1069, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -14396,19 +14451,19 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1052, + "id": 1057, "nodeType": "ParameterList", "parameters": [], "src": "133:2:7" }, "payable": false, "returnParameters": { - "id": 1053, + "id": 1058, "nodeType": "ParameterList", "parameters": [], "src": "145:0:7" }, - "scope": 1082, + "scope": 1087, "src": "122:93:7", "stateMutability": "nonpayable", "superFunction": null, @@ -14416,7 +14471,7 @@ }, { "body": { - "id": 1072, + "id": 1077, "nodeType": "Block", "src": "248:52:7", "statements": [ @@ -14426,7 +14481,7 @@ "arguments": [ { "argumentTypes": null, - "id": 1068, + "id": 1073, "isConstant": false, "isLValue": false, "isPure": false, @@ -14437,11 +14492,11 @@ "src": "267:12:7", "subExpression": { "argumentTypes": null, - "id": 1067, + "id": 1072, "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1051, + "referencedDeclaration": 1056, "src": "268:11:7", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -14461,21 +14516,21 @@ "typeString": "bool" } ], - "id": 1066, + "id": 1071, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, + "referencedDeclaration": 1540, "src": "259:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1069, + "id": 1074, "isConstant": false, "isLValue": false, "isPure": false, @@ -14489,23 +14544,23 @@ "typeString": "tuple()" } }, - "id": 1070, + "id": 1075, "nodeType": "ExpressionStatement", "src": "259:21:7" }, { - "id": 1071, + "id": 1076, "nodeType": "PlaceholderStatement", "src": "291:1:7" } ] }, "documentation": null, - "id": 1073, + "id": 1078, "name": "notTerminated", "nodeType": "ModifierDefinition", "parameters": { - "id": 1065, + "id": 1070, "nodeType": "ParameterList", "parameters": [], "src": "245:2:7" @@ -14515,25 +14570,25 @@ }, { "body": { - "id": 1080, + "id": 1085, "nodeType": "Block", "src": "339:37:7", "statements": [ { "expression": { "argumentTypes": null, - "id": 1078, + "id": 1083, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1076, + "id": 1081, "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1051, + "referencedDeclaration": 1056, "src": "350:11:7", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -14545,7 +14600,7 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 1077, + "id": 1082, "isConstant": false, "isLValue": false, "isPure": true, @@ -14566,14 +14621,14 @@ "typeString": "bool" } }, - "id": 1079, + "id": 1084, "nodeType": "ExpressionStatement", "src": "350:18:7" } ] }, "documentation": null, - "id": 1081, + "id": 1086, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -14581,26 +14636,26 @@ "name": "_terminate", "nodeType": "FunctionDefinition", "parameters": { - "id": 1074, + "id": 1079, "nodeType": "ParameterList", "parameters": [], "src": "327:2:7" }, "payable": false, "returnParameters": { - "id": 1075, + "id": 1080, "nodeType": "ParameterList", "parameters": [], "src": "339:0:7" }, - "scope": 1082, + "scope": 1087, "src": "308:68:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 1083, + "scope": 1088, "src": "27:352:7" } ], @@ -14613,14 +14668,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "exportedSymbols": { "Roles": [ - 1176 + 1181 ] }, - "id": 1177, + "id": 1182, "nodeType": "SourceUnit", "nodes": [ { - "id": 1084, + "id": 1089, "literals": [ "solidity", "^", @@ -14636,23 +14691,23 @@ "contractKind": "library", "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", "fullyImplemented": true, - "id": 1176, + "id": 1181, "linearizedBaseContracts": [ - 1176 + 1181 ], "name": "Roles", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "Roles.Role", - "id": 1089, + "id": 1094, "members": [ { "constant": false, - "id": 1088, + "id": 1093, "name": "bearer", "nodeType": "VariableDeclaration", - "scope": 1089, + "scope": 1094, "src": "145:32:8", "stateVariable": false, "storageLocation": "default", @@ -14661,9 +14716,9 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 1087, + "id": 1092, "keyType": { - "id": 1085, + "id": 1090, "name": "address", "nodeType": "ElementaryTypeName", "src": "154:7:8", @@ -14679,7 +14734,7 @@ "typeString": "mapping(address => bool)" }, "valueType": { - "id": 1086, + "id": 1091, "name": "bool", "nodeType": "ElementaryTypeName", "src": "165:4:8", @@ -14695,13 +14750,13 @@ ], "name": "Role", "nodeType": "StructDefinition", - "scope": 1176, + "scope": 1181, "src": "127:55:8", "visibility": "public" }, { "body": { - "id": 1120, + "id": 1125, "nodeType": "Block", "src": "302:109:8", "statements": [ @@ -14715,18 +14770,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1101, + "id": 1106, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1097, + "id": 1102, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1093, + "referencedDeclaration": 1098, "src": "316:7:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14741,7 +14796,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1099, + "id": 1104, "isConstant": false, "isLValue": false, "isPure": true, @@ -14764,7 +14819,7 @@ "typeString": "int_const 0" } ], - "id": 1098, + "id": 1103, "isConstant": false, "isLValue": false, "isPure": true, @@ -14777,7 +14832,7 @@ }, "typeName": "address" }, - "id": 1100, + "id": 1105, "isConstant": false, "isLValue": false, "isPure": true, @@ -14805,21 +14860,21 @@ "typeString": "bool" } ], - "id": 1096, + "id": 1101, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, + "referencedDeclaration": 1540, "src": "308:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1102, + "id": 1107, "isConstant": false, "isLValue": false, "isPure": false, @@ -14833,7 +14888,7 @@ "typeString": "tuple()" } }, - "id": 1103, + "id": 1108, "nodeType": "ExpressionStatement", "src": "308:30:8" }, @@ -14843,7 +14898,7 @@ "arguments": [ { "argumentTypes": null, - "id": 1109, + "id": 1114, "isConstant": false, "isLValue": false, "isPure": false, @@ -14857,24 +14912,24 @@ "arguments": [ { "argumentTypes": null, - "id": 1106, + "id": 1111, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1091, + "referencedDeclaration": 1096, "src": "357:4:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, { "argumentTypes": null, - "id": 1107, + "id": 1112, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1093, + "referencedDeclaration": 1098, "src": "363:7:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14885,7 +14940,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", "typeString": "struct Roles.Role storage pointer" }, { @@ -14893,18 +14948,18 @@ "typeString": "address" } ], - "id": 1105, + "id": 1110, "name": "has", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1175, + "referencedDeclaration": 1180, "src": "353:3:8", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1089_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1094_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 1108, + "id": 1113, "isConstant": false, "isLValue": false, "isPure": false, @@ -14931,21 +14986,21 @@ "typeString": "bool" } ], - "id": 1104, + "id": 1109, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, + "referencedDeclaration": 1540, "src": "344:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1110, + "id": 1115, "isConstant": false, "isLValue": false, "isPure": false, @@ -14959,14 +15014,14 @@ "typeString": "tuple()" } }, - "id": 1111, + "id": 1116, "nodeType": "ExpressionStatement", "src": "344:28:8" }, { "expression": { "argumentTypes": null, - "id": 1118, + "id": 1123, "isConstant": false, "isLValue": false, "isPure": false, @@ -14977,39 +15032,39 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1112, + "id": 1117, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1091, + "referencedDeclaration": 1096, "src": "379:4:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 1115, + "id": 1120, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 1088, + "referencedDeclaration": 1093, "src": "379:11:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 1116, + "id": 1121, "indexExpression": { "argumentTypes": null, - "id": 1114, + "id": 1119, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1093, + "referencedDeclaration": 1098, "src": "391:7:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -15032,7 +15087,7 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 1117, + "id": 1122, "isConstant": false, "isLValue": false, "isPure": true, @@ -15053,14 +15108,14 @@ "typeString": "bool" } }, - "id": 1119, + "id": 1124, "nodeType": "ExpressionStatement", "src": "379:27:8" } ] }, "documentation": "@dev give an account access to this role", - "id": 1121, + "id": 1126, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -15068,31 +15123,31 @@ "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 1094, + "id": 1099, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1091, + "id": 1096, "name": "role", "nodeType": "VariableDeclaration", - "scope": 1121, + "scope": 1126, "src": "257:17:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 1090, + "id": 1095, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1089, + "referencedDeclaration": 1094, "src": "257:4:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -15101,10 +15156,10 @@ }, { "constant": false, - "id": 1093, + "id": 1098, "name": "account", "nodeType": "VariableDeclaration", - "scope": 1121, + "scope": 1126, "src": "276:15:8", "stateVariable": false, "storageLocation": "default", @@ -15113,7 +15168,7 @@ "typeString": "address" }, "typeName": { - "id": 1092, + "id": 1097, "name": "address", "nodeType": "ElementaryTypeName", "src": "276:7:8", @@ -15130,12 +15185,12 @@ }, "payable": false, "returnParameters": { - "id": 1095, + "id": 1100, "nodeType": "ParameterList", "parameters": [], "src": "302:0:8" }, - "scope": 1176, + "scope": 1181, "src": "244:167:8", "stateMutability": "nonpayable", "superFunction": null, @@ -15143,7 +15198,7 @@ }, { "body": { - "id": 1151, + "id": 1156, "nodeType": "Block", "src": "538:109:8", "statements": [ @@ -15157,18 +15212,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1133, + "id": 1138, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1129, + "id": 1134, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1125, + "referencedDeclaration": 1130, "src": "552:7:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -15183,7 +15238,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1131, + "id": 1136, "isConstant": false, "isLValue": false, "isPure": true, @@ -15206,7 +15261,7 @@ "typeString": "int_const 0" } ], - "id": 1130, + "id": 1135, "isConstant": false, "isLValue": false, "isPure": true, @@ -15219,7 +15274,7 @@ }, "typeName": "address" }, - "id": 1132, + "id": 1137, "isConstant": false, "isLValue": false, "isPure": true, @@ -15247,21 +15302,21 @@ "typeString": "bool" } ], - "id": 1128, + "id": 1133, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, + "referencedDeclaration": 1540, "src": "544:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1134, + "id": 1139, "isConstant": false, "isLValue": false, "isPure": false, @@ -15275,7 +15330,7 @@ "typeString": "tuple()" } }, - "id": 1135, + "id": 1140, "nodeType": "ExpressionStatement", "src": "544:30:8" }, @@ -15288,24 +15343,24 @@ "arguments": [ { "argumentTypes": null, - "id": 1138, + "id": 1143, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1123, + "referencedDeclaration": 1128, "src": "592:4:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, { "argumentTypes": null, - "id": 1139, + "id": 1144, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1125, + "referencedDeclaration": 1130, "src": "598:7:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -15316,7 +15371,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", "typeString": "struct Roles.Role storage pointer" }, { @@ -15324,18 +15379,18 @@ "typeString": "address" } ], - "id": 1137, + "id": 1142, "name": "has", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1175, + "referencedDeclaration": 1180, "src": "588:3:8", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1089_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1094_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 1140, + "id": 1145, "isConstant": false, "isLValue": false, "isPure": false, @@ -15357,21 +15412,21 @@ "typeString": "bool" } ], - "id": 1136, + "id": 1141, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, + "referencedDeclaration": 1540, "src": "580:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1141, + "id": 1146, "isConstant": false, "isLValue": false, "isPure": false, @@ -15385,14 +15440,14 @@ "typeString": "tuple()" } }, - "id": 1142, + "id": 1147, "nodeType": "ExpressionStatement", "src": "580:27:8" }, { "expression": { "argumentTypes": null, - "id": 1149, + "id": 1154, "isConstant": false, "isLValue": false, "isPure": false, @@ -15403,39 +15458,39 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1143, + "id": 1148, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1123, + "referencedDeclaration": 1128, "src": "614:4:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 1146, + "id": 1151, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 1088, + "referencedDeclaration": 1093, "src": "614:11:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 1147, + "id": 1152, "indexExpression": { "argumentTypes": null, - "id": 1145, + "id": 1150, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1125, + "referencedDeclaration": 1130, "src": "626:7:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -15458,7 +15513,7 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 1148, + "id": 1153, "isConstant": false, "isLValue": false, "isPure": true, @@ -15479,14 +15534,14 @@ "typeString": "bool" } }, - "id": 1150, + "id": 1155, "nodeType": "ExpressionStatement", "src": "614:28:8" } ] }, "documentation": "@dev remove an account's access to this role", - "id": 1152, + "id": 1157, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -15494,31 +15549,31 @@ "name": "remove", "nodeType": "FunctionDefinition", "parameters": { - "id": 1126, + "id": 1131, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1123, + "id": 1128, "name": "role", "nodeType": "VariableDeclaration", - "scope": 1152, + "scope": 1157, "src": "493:17:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 1122, + "id": 1127, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1089, + "referencedDeclaration": 1094, "src": "493:4:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -15527,10 +15582,10 @@ }, { "constant": false, - "id": 1125, + "id": 1130, "name": "account", "nodeType": "VariableDeclaration", - "scope": 1152, + "scope": 1157, "src": "512:15:8", "stateVariable": false, "storageLocation": "default", @@ -15539,7 +15594,7 @@ "typeString": "address" }, "typeName": { - "id": 1124, + "id": 1129, "name": "address", "nodeType": "ElementaryTypeName", "src": "512:7:8", @@ -15556,12 +15611,12 @@ }, "payable": false, "returnParameters": { - "id": 1127, + "id": 1132, "nodeType": "ParameterList", "parameters": [], "src": "538:0:8" }, - "scope": 1176, + "scope": 1181, "src": "477:170:8", "stateMutability": "nonpayable", "superFunction": null, @@ -15569,7 +15624,7 @@ }, { "body": { - "id": 1174, + "id": 1179, "nodeType": "Block", "src": "817:74:8", "statements": [ @@ -15583,18 +15638,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1166, + "id": 1171, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1162, + "id": 1167, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1156, + "referencedDeclaration": 1161, "src": "831:7:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -15609,7 +15664,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1164, + "id": 1169, "isConstant": false, "isLValue": false, "isPure": true, @@ -15632,7 +15687,7 @@ "typeString": "int_const 0" } ], - "id": 1163, + "id": 1168, "isConstant": false, "isLValue": false, "isPure": true, @@ -15645,7 +15700,7 @@ }, "typeName": "address" }, - "id": 1165, + "id": 1170, "isConstant": false, "isLValue": false, "isPure": true, @@ -15673,21 +15728,21 @@ "typeString": "bool" } ], - "id": 1161, + "id": 1166, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, + "referencedDeclaration": 1540, "src": "823:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1167, + "id": 1172, "isConstant": false, "isLValue": false, "isPure": false, @@ -15701,7 +15756,7 @@ "typeString": "tuple()" } }, - "id": 1168, + "id": 1173, "nodeType": "ExpressionStatement", "src": "823:30:8" }, @@ -15712,39 +15767,39 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1169, + "id": 1174, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1154, + "referencedDeclaration": 1159, "src": "866:4:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 1170, + "id": 1175, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 1088, + "referencedDeclaration": 1093, "src": "866:11:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 1172, + "id": 1177, "indexExpression": { "argumentTypes": null, - "id": 1171, + "id": 1176, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1156, + "referencedDeclaration": 1161, "src": "878:7:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -15762,15 +15817,15 @@ "typeString": "bool" } }, - "functionReturnParameters": 1160, - "id": 1173, + "functionReturnParameters": 1165, + "id": 1178, "nodeType": "Return", "src": "859:27:8" } ] }, "documentation": "@dev check if an account has this role\n@return bool", - "id": 1175, + "id": 1180, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -15778,31 +15833,31 @@ "name": "has", "nodeType": "FunctionDefinition", "parameters": { - "id": 1157, + "id": 1162, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1154, + "id": 1159, "name": "role", "nodeType": "VariableDeclaration", - "scope": 1175, + "scope": 1180, "src": "738:17:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 1153, + "id": 1158, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1089, + "referencedDeclaration": 1094, "src": "738:4:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1089_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -15811,10 +15866,10 @@ }, { "constant": false, - "id": 1156, + "id": 1161, "name": "account", "nodeType": "VariableDeclaration", - "scope": 1175, + "scope": 1180, "src": "757:15:8", "stateVariable": false, "storageLocation": "default", @@ -15823,7 +15878,7 @@ "typeString": "address" }, "typeName": { - "id": 1155, + "id": 1160, "name": "address", "nodeType": "ElementaryTypeName", "src": "757:7:8", @@ -15840,15 +15895,15 @@ }, "payable": false, "returnParameters": { - "id": 1160, + "id": 1165, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1159, + "id": 1164, "name": "", "nodeType": "VariableDeclaration", - "scope": 1175, + "scope": 1180, "src": "809:4:8", "stateVariable": false, "storageLocation": "default", @@ -15857,7 +15912,7 @@ "typeString": "bool" }, "typeName": { - "id": 1158, + "id": 1163, "name": "bool", "nodeType": "ElementaryTypeName", "src": "809:4:8", @@ -15872,14 +15927,14 @@ ], "src": "808:6:8" }, - "scope": 1176, + "scope": 1181, "src": "725:166:8", "stateMutability": "view", "superFunction": null, "visibility": "internal" } ], - "scope": 1177, + "scope": 1182, "src": "109:784:8" } ], @@ -15892,14 +15947,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "exportedSymbols": { "SafeMath": [ - 1304 + 1309 ] }, - "id": 1305, + "id": 1310, "nodeType": "SourceUnit", "nodes": [ { - "id": 1178, + "id": 1183, "literals": [ "solidity", "^", @@ -15915,16 +15970,16 @@ "contractKind": "library", "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", "fullyImplemented": true, - "id": 1304, + "id": 1309, "linearizedBaseContracts": [ - 1304 + 1309 ], "name": "SafeMath", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1210, + "id": 1215, "nodeType": "Block", "src": "271:314:9", "statements": [ @@ -15935,18 +15990,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1189, + "id": 1194, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1187, + "id": 1192, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1180, + "referencedDeclaration": 1185, "src": "486:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15958,7 +16013,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1188, + "id": 1193, "isConstant": false, "isLValue": false, "isPure": true, @@ -15980,11 +16035,11 @@ } }, "falseBody": null, - "id": 1193, + "id": 1198, "nodeType": "IfStatement", "src": "482:35:9", "trueBody": { - "id": 1192, + "id": 1197, "nodeType": "Block", "src": "494:23:9", "statements": [ @@ -15992,7 +16047,7 @@ "expression": { "argumentTypes": null, "hexValue": "30", - "id": 1190, + "id": 1195, "isConstant": false, "isLValue": false, "isPure": true, @@ -16007,8 +16062,8 @@ }, "value": "0" }, - "functionReturnParameters": 1186, - "id": 1191, + "functionReturnParameters": 1191, + "id": 1196, "nodeType": "Return", "src": "502:8:9" } @@ -16017,15 +16072,15 @@ }, { "assignments": [ - 1195 + 1200 ], "declarations": [ { "constant": false, - "id": 1195, + "id": 1200, "name": "c", "nodeType": "VariableDeclaration", - "scope": 1211, + "scope": 1216, "src": "523:9:9", "stateVariable": false, "storageLocation": "default", @@ -16034,7 +16089,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1194, + "id": 1199, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "523:7:9", @@ -16047,25 +16102,25 @@ "visibility": "internal" } ], - "id": 1199, + "id": 1204, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1198, + "id": 1203, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1196, + "id": 1201, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1180, + "referencedDeclaration": 1185, "src": "535:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16076,11 +16131,11 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 1197, + "id": 1202, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1182, + "referencedDeclaration": 1187, "src": "539:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16106,7 +16161,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1205, + "id": 1210, "isConstant": false, "isLValue": false, "isPure": false, @@ -16117,18 +16172,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1203, + "id": 1208, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1201, + "id": 1206, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1195, + "referencedDeclaration": 1200, "src": "554:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16139,11 +16194,11 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 1202, + "id": 1207, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1180, + "referencedDeclaration": 1185, "src": "558:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16160,11 +16215,11 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1204, + "id": 1209, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1182, + "referencedDeclaration": 1187, "src": "563:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16185,21 +16240,21 @@ "typeString": "bool" } ], - "id": 1200, + "id": 1205, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, + "referencedDeclaration": 1540, "src": "546:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1206, + "id": 1211, "isConstant": false, "isLValue": false, "isPure": false, @@ -16213,33 +16268,33 @@ "typeString": "tuple()" } }, - "id": 1207, + "id": 1212, "nodeType": "ExpressionStatement", "src": "546:19:9" }, { "expression": { "argumentTypes": null, - "id": 1208, + "id": 1213, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1195, + "referencedDeclaration": 1200, "src": "579:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1186, - "id": 1209, + "functionReturnParameters": 1191, + "id": 1214, "nodeType": "Return", "src": "572:8:9" } ] }, "documentation": "@dev Multiplies two numbers, reverts on overflow.", - "id": 1211, + "id": 1216, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -16247,15 +16302,15 @@ "name": "mul", "nodeType": "FunctionDefinition", "parameters": { - "id": 1183, + "id": 1188, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1180, + "id": 1185, "name": "a", "nodeType": "VariableDeclaration", - "scope": 1211, + "scope": 1216, "src": "217:9:9", "stateVariable": false, "storageLocation": "default", @@ -16264,7 +16319,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1179, + "id": 1184, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "217:7:9", @@ -16278,10 +16333,10 @@ }, { "constant": false, - "id": 1182, + "id": 1187, "name": "b", "nodeType": "VariableDeclaration", - "scope": 1211, + "scope": 1216, "src": "228:9:9", "stateVariable": false, "storageLocation": "default", @@ -16290,7 +16345,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1181, + "id": 1186, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "228:7:9", @@ -16307,15 +16362,15 @@ }, "payable": false, "returnParameters": { - "id": 1186, + "id": 1191, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1185, + "id": 1190, "name": "", "nodeType": "VariableDeclaration", - "scope": 1211, + "scope": 1216, "src": "262:7:9", "stateVariable": false, "storageLocation": "default", @@ -16324,7 +16379,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1184, + "id": 1189, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "262:7:9", @@ -16339,7 +16394,7 @@ ], "src": "261:9:9" }, - "scope": 1304, + "scope": 1309, "src": "204:381:9", "stateMutability": "pure", "superFunction": null, @@ -16347,7 +16402,7 @@ }, { "body": { - "id": 1234, + "id": 1239, "nodeType": "Block", "src": "762:203:9", "statements": [ @@ -16361,18 +16416,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1223, + "id": 1228, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1221, + "id": 1226, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1215, + "referencedDeclaration": 1220, "src": "776:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16384,7 +16439,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1222, + "id": 1227, "isConstant": false, "isLValue": false, "isPure": true, @@ -16413,21 +16468,21 @@ "typeString": "bool" } ], - "id": 1220, + "id": 1225, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, + "referencedDeclaration": 1540, "src": "768:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1224, + "id": 1229, "isConstant": false, "isLValue": false, "isPure": false, @@ -16441,21 +16496,21 @@ "typeString": "tuple()" } }, - "id": 1225, + "id": 1230, "nodeType": "ExpressionStatement", "src": "768:14:9" }, { "assignments": [ - 1227 + 1232 ], "declarations": [ { "constant": false, - "id": 1227, + "id": 1232, "name": "c", "nodeType": "VariableDeclaration", - "scope": 1235, + "scope": 1240, "src": "846:9:9", "stateVariable": false, "storageLocation": "default", @@ -16464,7 +16519,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1226, + "id": 1231, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "846:7:9", @@ -16477,25 +16532,25 @@ "visibility": "internal" } ], - "id": 1231, + "id": 1236, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1230, + "id": 1235, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1228, + "id": 1233, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1213, + "referencedDeclaration": 1218, "src": "858:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16506,11 +16561,11 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 1229, + "id": 1234, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1215, + "referencedDeclaration": 1220, "src": "862:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16529,26 +16584,26 @@ { "expression": { "argumentTypes": null, - "id": 1232, + "id": 1237, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1227, + "referencedDeclaration": 1232, "src": "959:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1219, - "id": 1233, + "functionReturnParameters": 1224, + "id": 1238, "nodeType": "Return", "src": "952:8:9" } ] }, "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", - "id": 1235, + "id": 1240, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -16556,15 +16611,15 @@ "name": "div", "nodeType": "FunctionDefinition", "parameters": { - "id": 1216, + "id": 1221, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1213, + "id": 1218, "name": "a", "nodeType": "VariableDeclaration", - "scope": 1235, + "scope": 1240, "src": "708:9:9", "stateVariable": false, "storageLocation": "default", @@ -16573,7 +16628,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1212, + "id": 1217, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "708:7:9", @@ -16587,10 +16642,10 @@ }, { "constant": false, - "id": 1215, + "id": 1220, "name": "b", "nodeType": "VariableDeclaration", - "scope": 1235, + "scope": 1240, "src": "719:9:9", "stateVariable": false, "storageLocation": "default", @@ -16599,7 +16654,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1214, + "id": 1219, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "719:7:9", @@ -16616,15 +16671,15 @@ }, "payable": false, "returnParameters": { - "id": 1219, + "id": 1224, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1218, + "id": 1223, "name": "", "nodeType": "VariableDeclaration", - "scope": 1235, + "scope": 1240, "src": "753:7:9", "stateVariable": false, "storageLocation": "default", @@ -16633,7 +16688,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1217, + "id": 1222, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "753:7:9", @@ -16648,7 +16703,7 @@ ], "src": "752:9:9" }, - "scope": 1304, + "scope": 1309, "src": "695:270:9", "stateMutability": "pure", "superFunction": null, @@ -16656,7 +16711,7 @@ }, { "body": { - "id": 1258, + "id": 1263, "nodeType": "Block", "src": "1145:64:9", "statements": [ @@ -16670,18 +16725,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1247, + "id": 1252, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1245, + "id": 1250, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1239, + "referencedDeclaration": 1244, "src": "1159:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16692,11 +16747,11 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 1246, + "id": 1251, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1237, + "referencedDeclaration": 1242, "src": "1164:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16717,21 +16772,21 @@ "typeString": "bool" } ], - "id": 1244, + "id": 1249, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, + "referencedDeclaration": 1540, "src": "1151:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1248, + "id": 1253, "isConstant": false, "isLValue": false, "isPure": false, @@ -16745,21 +16800,21 @@ "typeString": "tuple()" } }, - "id": 1249, + "id": 1254, "nodeType": "ExpressionStatement", "src": "1151:15:9" }, { "assignments": [ - 1251 + 1256 ], "declarations": [ { "constant": false, - "id": 1251, + "id": 1256, "name": "c", "nodeType": "VariableDeclaration", - "scope": 1259, + "scope": 1264, "src": "1172:9:9", "stateVariable": false, "storageLocation": "default", @@ -16768,7 +16823,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1250, + "id": 1255, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1172:7:9", @@ -16781,25 +16836,25 @@ "visibility": "internal" } ], - "id": 1255, + "id": 1260, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1254, + "id": 1259, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1252, + "id": 1257, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1237, + "referencedDeclaration": 1242, "src": "1184:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16810,11 +16865,11 @@ "operator": "-", "rightExpression": { "argumentTypes": null, - "id": 1253, + "id": 1258, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1239, + "referencedDeclaration": 1244, "src": "1188:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16833,26 +16888,26 @@ { "expression": { "argumentTypes": null, - "id": 1256, + "id": 1261, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1251, + "referencedDeclaration": 1256, "src": "1203:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1243, - "id": 1257, + "functionReturnParameters": 1248, + "id": 1262, "nodeType": "Return", "src": "1196:8:9" } ] }, "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", - "id": 1259, + "id": 1264, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -16860,15 +16915,15 @@ "name": "sub", "nodeType": "FunctionDefinition", "parameters": { - "id": 1240, + "id": 1245, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1237, + "id": 1242, "name": "a", "nodeType": "VariableDeclaration", - "scope": 1259, + "scope": 1264, "src": "1091:9:9", "stateVariable": false, "storageLocation": "default", @@ -16877,7 +16932,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1236, + "id": 1241, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1091:7:9", @@ -16891,10 +16946,10 @@ }, { "constant": false, - "id": 1239, + "id": 1244, "name": "b", "nodeType": "VariableDeclaration", - "scope": 1259, + "scope": 1264, "src": "1102:9:9", "stateVariable": false, "storageLocation": "default", @@ -16903,7 +16958,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1238, + "id": 1243, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1102:7:9", @@ -16920,15 +16975,15 @@ }, "payable": false, "returnParameters": { - "id": 1243, + "id": 1248, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1242, + "id": 1247, "name": "", "nodeType": "VariableDeclaration", - "scope": 1259, + "scope": 1264, "src": "1136:7:9", "stateVariable": false, "storageLocation": "default", @@ -16937,7 +16992,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1241, + "id": 1246, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1136:7:9", @@ -16952,7 +17007,7 @@ ], "src": "1135:9:9" }, - "scope": 1304, + "scope": 1309, "src": "1078:131:9", "stateMutability": "pure", "superFunction": null, @@ -16960,21 +17015,21 @@ }, { "body": { - "id": 1282, + "id": 1287, "nodeType": "Block", "src": "1339:64:9", "statements": [ { "assignments": [ - 1269 + 1274 ], "declarations": [ { "constant": false, - "id": 1269, + "id": 1274, "name": "c", "nodeType": "VariableDeclaration", - "scope": 1283, + "scope": 1288, "src": "1345:9:9", "stateVariable": false, "storageLocation": "default", @@ -16983,7 +17038,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1268, + "id": 1273, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1345:7:9", @@ -16996,25 +17051,25 @@ "visibility": "internal" } ], - "id": 1273, + "id": 1278, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1272, + "id": 1277, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1270, + "id": 1275, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1261, + "referencedDeclaration": 1266, "src": "1357:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -17025,11 +17080,11 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 1271, + "id": 1276, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1263, + "referencedDeclaration": 1268, "src": "1361:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -17055,18 +17110,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1277, + "id": 1282, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1275, + "id": 1280, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1269, + "referencedDeclaration": 1274, "src": "1376:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -17077,11 +17132,11 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 1276, + "id": 1281, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1261, + "referencedDeclaration": 1266, "src": "1381:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -17102,21 +17157,21 @@ "typeString": "bool" } ], - "id": 1274, + "id": 1279, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, + "referencedDeclaration": 1540, "src": "1368:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1278, + "id": 1283, "isConstant": false, "isLValue": false, "isPure": false, @@ -17130,33 +17185,33 @@ "typeString": "tuple()" } }, - "id": 1279, + "id": 1284, "nodeType": "ExpressionStatement", "src": "1368:15:9" }, { "expression": { "argumentTypes": null, - "id": 1280, + "id": 1285, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1269, + "referencedDeclaration": 1274, "src": "1397:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1267, - "id": 1281, + "functionReturnParameters": 1272, + "id": 1286, "nodeType": "Return", "src": "1390:8:9" } ] }, "documentation": "@dev Adds two numbers, reverts on overflow.", - "id": 1283, + "id": 1288, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -17164,15 +17219,15 @@ "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 1264, + "id": 1269, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1261, + "id": 1266, "name": "a", "nodeType": "VariableDeclaration", - "scope": 1283, + "scope": 1288, "src": "1285:9:9", "stateVariable": false, "storageLocation": "default", @@ -17181,7 +17236,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1260, + "id": 1265, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1285:7:9", @@ -17195,10 +17250,10 @@ }, { "constant": false, - "id": 1263, + "id": 1268, "name": "b", "nodeType": "VariableDeclaration", - "scope": 1283, + "scope": 1288, "src": "1296:9:9", "stateVariable": false, "storageLocation": "default", @@ -17207,7 +17262,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1262, + "id": 1267, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1296:7:9", @@ -17224,15 +17279,15 @@ }, "payable": false, "returnParameters": { - "id": 1267, + "id": 1272, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1266, + "id": 1271, "name": "", "nodeType": "VariableDeclaration", - "scope": 1283, + "scope": 1288, "src": "1330:7:9", "stateVariable": false, "storageLocation": "default", @@ -17241,7 +17296,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1265, + "id": 1270, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1330:7:9", @@ -17256,7 +17311,7 @@ ], "src": "1329:9:9" }, - "scope": 1304, + "scope": 1309, "src": "1272:131:9", "stateMutability": "pure", "superFunction": null, @@ -17264,7 +17319,7 @@ }, { "body": { - "id": 1302, + "id": 1307, "nodeType": "Block", "src": "1602:44:9", "statements": [ @@ -17278,18 +17333,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1295, + "id": 1300, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1293, + "id": 1298, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1287, + "referencedDeclaration": 1292, "src": "1616:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -17301,7 +17356,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1294, + "id": 1299, "isConstant": false, "isLValue": false, "isPure": true, @@ -17330,21 +17385,21 @@ "typeString": "bool" } ], - "id": 1292, + "id": 1297, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, + "referencedDeclaration": 1540, "src": "1608:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1296, + "id": 1301, "isConstant": false, "isLValue": false, "isPure": false, @@ -17358,7 +17413,7 @@ "typeString": "tuple()" } }, - "id": 1297, + "id": 1302, "nodeType": "ExpressionStatement", "src": "1608:15:9" }, @@ -17369,18 +17424,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1300, + "id": 1305, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1298, + "id": 1303, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1285, + "referencedDeclaration": 1290, "src": "1636:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -17391,11 +17446,11 @@ "operator": "%", "rightExpression": { "argumentTypes": null, - "id": 1299, + "id": 1304, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1287, + "referencedDeclaration": 1292, "src": "1640:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -17408,15 +17463,15 @@ "typeString": "uint256" } }, - "functionReturnParameters": 1291, - "id": 1301, + "functionReturnParameters": 1296, + "id": 1306, "nodeType": "Return", "src": "1629:12:9" } ] }, "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", - "id": 1303, + "id": 1308, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -17424,15 +17479,15 @@ "name": "mod", "nodeType": "FunctionDefinition", "parameters": { - "id": 1288, + "id": 1293, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1285, + "id": 1290, "name": "a", "nodeType": "VariableDeclaration", - "scope": 1303, + "scope": 1308, "src": "1548:9:9", "stateVariable": false, "storageLocation": "default", @@ -17441,7 +17496,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1284, + "id": 1289, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1548:7:9", @@ -17455,10 +17510,10 @@ }, { "constant": false, - "id": 1287, + "id": 1292, "name": "b", "nodeType": "VariableDeclaration", - "scope": 1303, + "scope": 1308, "src": "1559:9:9", "stateVariable": false, "storageLocation": "default", @@ -17467,7 +17522,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1286, + "id": 1291, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1559:7:9", @@ -17484,15 +17539,15 @@ }, "payable": false, "returnParameters": { - "id": 1291, + "id": 1296, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1290, + "id": 1295, "name": "", "nodeType": "VariableDeclaration", - "scope": 1303, + "scope": 1308, "src": "1593:7:9", "stateVariable": false, "storageLocation": "default", @@ -17501,7 +17556,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1289, + "id": 1294, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1593:7:9", @@ -17516,14 +17571,14 @@ ], "src": "1592:9:9" }, - "scope": 1304, + "scope": 1309, "src": "1535:111:9", "stateMutability": "pure", "superFunction": null, "visibility": "internal" } ], - "scope": 1305, + "scope": 1310, "src": "117:1531:9" } ], @@ -17536,14 +17591,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "exportedSymbols": { "IERC20": [ - 1373 + 1378 ] }, - "id": 1374, + "id": 1379, "nodeType": "SourceUnit", "nodes": [ { - "id": 1306, + "id": 1311, "literals": [ "solidity", "^", @@ -17559,9 +17614,9 @@ "contractKind": "interface", "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", "fullyImplemented": false, - "id": 1373, + "id": 1378, "linearizedBaseContracts": [ - 1373 + 1378 ], "name": "IERC20", "nodeType": "ContractDefinition", @@ -17569,7 +17624,7 @@ { "body": null, "documentation": null, - "id": 1311, + "id": 1316, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -17577,22 +17632,22 @@ "name": "totalSupply", "nodeType": "FunctionDefinition", "parameters": { - "id": 1307, + "id": 1312, "nodeType": "ParameterList", "parameters": [], "src": "156:2:10" }, "payable": false, "returnParameters": { - "id": 1310, + "id": 1315, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1309, + "id": 1314, "name": "", "nodeType": "VariableDeclaration", - "scope": 1311, + "scope": 1316, "src": "182:7:10", "stateVariable": false, "storageLocation": "default", @@ -17601,7 +17656,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1308, + "id": 1313, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "182:7:10", @@ -17616,7 +17671,7 @@ ], "src": "181:9:10" }, - "scope": 1373, + "scope": 1378, "src": "136:55:10", "stateMutability": "view", "superFunction": null, @@ -17625,7 +17680,7 @@ { "body": null, "documentation": null, - "id": 1318, + "id": 1323, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -17633,15 +17688,15 @@ "name": "balanceOf", "nodeType": "FunctionDefinition", "parameters": { - "id": 1314, + "id": 1319, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1313, + "id": 1318, "name": "who", "nodeType": "VariableDeclaration", - "scope": 1318, + "scope": 1323, "src": "214:11:10", "stateVariable": false, "storageLocation": "default", @@ -17650,7 +17705,7 @@ "typeString": "address" }, "typeName": { - "id": 1312, + "id": 1317, "name": "address", "nodeType": "ElementaryTypeName", "src": "214:7:10", @@ -17667,15 +17722,15 @@ }, "payable": false, "returnParameters": { - "id": 1317, + "id": 1322, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1316, + "id": 1321, "name": "", "nodeType": "VariableDeclaration", - "scope": 1318, + "scope": 1323, "src": "250:7:10", "stateVariable": false, "storageLocation": "default", @@ -17684,7 +17739,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1315, + "id": 1320, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "250:7:10", @@ -17699,7 +17754,7 @@ ], "src": "249:9:10" }, - "scope": 1373, + "scope": 1378, "src": "195:64:10", "stateMutability": "view", "superFunction": null, @@ -17708,7 +17763,7 @@ { "body": null, "documentation": null, - "id": 1327, + "id": 1332, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -17716,15 +17771,15 @@ "name": "allowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1323, + "id": 1328, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1320, + "id": 1325, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1327, + "scope": 1332, "src": "282:13:10", "stateVariable": false, "storageLocation": "default", @@ -17733,7 +17788,7 @@ "typeString": "address" }, "typeName": { - "id": 1319, + "id": 1324, "name": "address", "nodeType": "ElementaryTypeName", "src": "282:7:10", @@ -17747,10 +17802,10 @@ }, { "constant": false, - "id": 1322, + "id": 1327, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1327, + "scope": 1332, "src": "297:15:10", "stateVariable": false, "storageLocation": "default", @@ -17759,7 +17814,7 @@ "typeString": "address" }, "typeName": { - "id": 1321, + "id": 1326, "name": "address", "nodeType": "ElementaryTypeName", "src": "297:7:10", @@ -17776,15 +17831,15 @@ }, "payable": false, "returnParameters": { - "id": 1326, + "id": 1331, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1325, + "id": 1330, "name": "", "nodeType": "VariableDeclaration", - "scope": 1327, + "scope": 1332, "src": "341:7:10", "stateVariable": false, "storageLocation": "default", @@ -17793,7 +17848,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1324, + "id": 1329, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "341:7:10", @@ -17808,7 +17863,7 @@ ], "src": "340:9:10" }, - "scope": 1373, + "scope": 1378, "src": "263:87:10", "stateMutability": "view", "superFunction": null, @@ -17817,7 +17872,7 @@ { "body": null, "documentation": null, - "id": 1336, + "id": 1341, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -17825,15 +17880,15 @@ "name": "transfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 1332, + "id": 1337, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1329, + "id": 1334, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1336, + "scope": 1341, "src": "372:10:10", "stateVariable": false, "storageLocation": "default", @@ -17842,7 +17897,7 @@ "typeString": "address" }, "typeName": { - "id": 1328, + "id": 1333, "name": "address", "nodeType": "ElementaryTypeName", "src": "372:7:10", @@ -17856,10 +17911,10 @@ }, { "constant": false, - "id": 1331, + "id": 1336, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1336, + "scope": 1341, "src": "384:13:10", "stateVariable": false, "storageLocation": "default", @@ -17868,7 +17923,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1330, + "id": 1335, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "384:7:10", @@ -17885,15 +17940,15 @@ }, "payable": false, "returnParameters": { - "id": 1335, + "id": 1340, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1334, + "id": 1339, "name": "", "nodeType": "VariableDeclaration", - "scope": 1336, + "scope": 1341, "src": "417:4:10", "stateVariable": false, "storageLocation": "default", @@ -17902,7 +17957,7 @@ "typeString": "bool" }, "typeName": { - "id": 1333, + "id": 1338, "name": "bool", "nodeType": "ElementaryTypeName", "src": "417:4:10", @@ -17917,7 +17972,7 @@ ], "src": "416:6:10" }, - "scope": 1373, + "scope": 1378, "src": "354:69:10", "stateMutability": "nonpayable", "superFunction": null, @@ -17926,7 +17981,7 @@ { "body": null, "documentation": null, - "id": 1345, + "id": 1350, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -17934,15 +17989,15 @@ "name": "approve", "nodeType": "FunctionDefinition", "parameters": { - "id": 1341, + "id": 1346, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1338, + "id": 1343, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1345, + "scope": 1350, "src": "444:15:10", "stateVariable": false, "storageLocation": "default", @@ -17951,7 +18006,7 @@ "typeString": "address" }, "typeName": { - "id": 1337, + "id": 1342, "name": "address", "nodeType": "ElementaryTypeName", "src": "444:7:10", @@ -17965,10 +18020,10 @@ }, { "constant": false, - "id": 1340, + "id": 1345, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1345, + "scope": 1350, "src": "461:13:10", "stateVariable": false, "storageLocation": "default", @@ -17977,7 +18032,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1339, + "id": 1344, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "461:7:10", @@ -17994,15 +18049,15 @@ }, "payable": false, "returnParameters": { - "id": 1344, + "id": 1349, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1343, + "id": 1348, "name": "", "nodeType": "VariableDeclaration", - "scope": 1345, + "scope": 1350, "src": "498:4:10", "stateVariable": false, "storageLocation": "default", @@ -18011,7 +18066,7 @@ "typeString": "bool" }, "typeName": { - "id": 1342, + "id": 1347, "name": "bool", "nodeType": "ElementaryTypeName", "src": "498:4:10", @@ -18026,7 +18081,7 @@ ], "src": "497:6:10" }, - "scope": 1373, + "scope": 1378, "src": "427:77:10", "stateMutability": "nonpayable", "superFunction": null, @@ -18035,7 +18090,7 @@ { "body": null, "documentation": null, - "id": 1356, + "id": 1361, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -18043,15 +18098,15 @@ "name": "transferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 1352, + "id": 1357, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1347, + "id": 1352, "name": "from", "nodeType": "VariableDeclaration", - "scope": 1356, + "scope": 1361, "src": "530:12:10", "stateVariable": false, "storageLocation": "default", @@ -18060,7 +18115,7 @@ "typeString": "address" }, "typeName": { - "id": 1346, + "id": 1351, "name": "address", "nodeType": "ElementaryTypeName", "src": "530:7:10", @@ -18074,10 +18129,10 @@ }, { "constant": false, - "id": 1349, + "id": 1354, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1356, + "scope": 1361, "src": "544:10:10", "stateVariable": false, "storageLocation": "default", @@ -18086,7 +18141,7 @@ "typeString": "address" }, "typeName": { - "id": 1348, + "id": 1353, "name": "address", "nodeType": "ElementaryTypeName", "src": "544:7:10", @@ -18100,10 +18155,10 @@ }, { "constant": false, - "id": 1351, + "id": 1356, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1356, + "scope": 1361, "src": "556:13:10", "stateVariable": false, "storageLocation": "default", @@ -18112,7 +18167,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1350, + "id": 1355, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "556:7:10", @@ -18129,15 +18184,15 @@ }, "payable": false, "returnParameters": { - "id": 1355, + "id": 1360, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1354, + "id": 1359, "name": "", "nodeType": "VariableDeclaration", - "scope": 1356, + "scope": 1361, "src": "593:4:10", "stateVariable": false, "storageLocation": "default", @@ -18146,7 +18201,7 @@ "typeString": "bool" }, "typeName": { - "id": 1353, + "id": 1358, "name": "bool", "nodeType": "ElementaryTypeName", "src": "593:4:10", @@ -18161,7 +18216,7 @@ ], "src": "592:6:10" }, - "scope": 1373, + "scope": 1378, "src": "508:91:10", "stateMutability": "nonpayable", "superFunction": null, @@ -18170,20 +18225,20 @@ { "anonymous": false, "documentation": null, - "id": 1364, + "id": 1369, "name": "Transfer", "nodeType": "EventDefinition", "parameters": { - "id": 1363, + "id": 1368, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1358, + "id": 1363, "indexed": true, "name": "from", "nodeType": "VariableDeclaration", - "scope": 1364, + "scope": 1369, "src": "623:20:10", "stateVariable": false, "storageLocation": "default", @@ -18192,7 +18247,7 @@ "typeString": "address" }, "typeName": { - "id": 1357, + "id": 1362, "name": "address", "nodeType": "ElementaryTypeName", "src": "623:7:10", @@ -18206,11 +18261,11 @@ }, { "constant": false, - "id": 1360, + "id": 1365, "indexed": true, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1364, + "scope": 1369, "src": "649:18:10", "stateVariable": false, "storageLocation": "default", @@ -18219,7 +18274,7 @@ "typeString": "address" }, "typeName": { - "id": 1359, + "id": 1364, "name": "address", "nodeType": "ElementaryTypeName", "src": "649:7:10", @@ -18233,11 +18288,11 @@ }, { "constant": false, - "id": 1362, + "id": 1367, "indexed": false, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1364, + "scope": 1369, "src": "673:13:10", "stateVariable": false, "storageLocation": "default", @@ -18246,7 +18301,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1361, + "id": 1366, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "673:7:10", @@ -18266,20 +18321,20 @@ { "anonymous": false, "documentation": null, - "id": 1372, + "id": 1377, "name": "Approval", "nodeType": "EventDefinition", "parameters": { - "id": 1371, + "id": 1376, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1366, + "id": 1371, "indexed": true, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1372, + "scope": 1377, "src": "715:21:10", "stateVariable": false, "storageLocation": "default", @@ -18288,7 +18343,7 @@ "typeString": "address" }, "typeName": { - "id": 1365, + "id": 1370, "name": "address", "nodeType": "ElementaryTypeName", "src": "715:7:10", @@ -18302,11 +18357,11 @@ }, { "constant": false, - "id": 1368, + "id": 1373, "indexed": true, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1372, + "scope": 1377, "src": "742:23:10", "stateVariable": false, "storageLocation": "default", @@ -18315,7 +18370,7 @@ "typeString": "address" }, "typeName": { - "id": 1367, + "id": 1372, "name": "address", "nodeType": "ElementaryTypeName", "src": "742:7:10", @@ -18329,11 +18384,11 @@ }, { "constant": false, - "id": 1370, + "id": 1375, "indexed": false, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1372, + "scope": 1377, "src": "771:13:10", "stateVariable": false, "storageLocation": "default", @@ -18342,7 +18397,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1369, + "id": 1374, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "771:7:10", @@ -18360,7 +18415,7 @@ "src": "695:94:10" } ], - "scope": 1374, + "scope": 1379, "src": "115:676:10" } ], @@ -18373,14 +18428,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "exportedSymbols": { "SafeERC20": [ - 1517 + 1522 ] }, - "id": 1518, + "id": 1523, "nodeType": "SourceUnit", "nodes": [ { - "id": 1375, + "id": 1380, "literals": [ "solidity", "^", @@ -18393,10 +18448,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "./IERC20.sol", - "id": 1376, + "id": 1381, "nodeType": "ImportDirective", - "scope": 1518, - "sourceUnit": 1374, + "scope": 1523, + "sourceUnit": 1379, "src": "26:22:11", "symbolAliases": [], "unitAlias": "" @@ -18404,10 +18459,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "file": "../../math/SafeMath.sol", - "id": 1377, + "id": 1382, "nodeType": "ImportDirective", - "scope": 1518, - "sourceUnit": 1305, + "scope": 1523, + "sourceUnit": 1310, "src": "49:33:11", "symbolAliases": [], "unitAlias": "" @@ -18418,31 +18473,31 @@ "contractKind": "library", "documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.", "fullyImplemented": true, - "id": 1517, + "id": 1522, "linearizedBaseContracts": [ - 1517 + 1522 ], "name": "SafeERC20", "nodeType": "ContractDefinition", "nodes": [ { - "id": 1380, + "id": 1385, "libraryName": { "contractScope": null, - "id": 1378, + "id": 1383, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1304, + "referencedDeclaration": 1309, "src": "382:8:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$1304", + "typeIdentifier": "t_contract$_SafeMath_$1309", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", "src": "376:27:11", "typeName": { - "id": 1379, + "id": 1384, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "395:7:11", @@ -18454,7 +18509,7 @@ }, { "body": { - "id": 1397, + "id": 1402, "nodeType": "Block", "src": "501:45:11", "statements": [ @@ -18467,11 +18522,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1392, + "id": 1397, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1384, + "referencedDeclaration": 1389, "src": "530:2:11", "typeDescriptions": { "typeIdentifier": "t_address", @@ -18480,11 +18535,11 @@ }, { "argumentTypes": null, - "id": 1393, + "id": 1398, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1386, + "referencedDeclaration": 1391, "src": "534:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -18505,32 +18560,32 @@ ], "expression": { "argumentTypes": null, - "id": 1390, + "id": 1395, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1382, + "referencedDeclaration": 1387, "src": "515:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" } }, - "id": 1391, + "id": 1396, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1336, + "referencedDeclaration": 1341, "src": "515:14:11", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1394, + "id": 1399, "isConstant": false, "isLValue": false, "isPure": false, @@ -18552,21 +18607,21 @@ "typeString": "bool" } ], - "id": 1389, + "id": 1394, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, + "referencedDeclaration": 1540, "src": "507:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1395, + "id": 1400, "isConstant": false, "isLValue": false, "isPure": false, @@ -18580,14 +18635,14 @@ "typeString": "tuple()" } }, - "id": 1396, + "id": 1401, "nodeType": "ExpressionStatement", "src": "507:34:11" } ] }, "documentation": null, - "id": 1398, + "id": 1403, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -18595,31 +18650,31 @@ "name": "safeTransfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 1387, + "id": 1392, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1382, + "id": 1387, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1398, + "scope": 1403, "src": "434:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1381, + "id": 1386, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1373, + "referencedDeclaration": 1378, "src": "434:6:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" } }, @@ -18628,10 +18683,10 @@ }, { "constant": false, - "id": 1384, + "id": 1389, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1398, + "scope": 1403, "src": "452:10:11", "stateVariable": false, "storageLocation": "default", @@ -18640,7 +18695,7 @@ "typeString": "address" }, "typeName": { - "id": 1383, + "id": 1388, "name": "address", "nodeType": "ElementaryTypeName", "src": "452:7:11", @@ -18654,10 +18709,10 @@ }, { "constant": false, - "id": 1386, + "id": 1391, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1398, + "scope": 1403, "src": "468:13:11", "stateVariable": false, "storageLocation": "default", @@ -18666,7 +18721,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1385, + "id": 1390, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "468:7:11", @@ -18683,12 +18738,12 @@ }, "payable": false, "returnParameters": { - "id": 1388, + "id": 1393, "nodeType": "ParameterList", "parameters": [], "src": "501:0:11" }, - "scope": 1517, + "scope": 1522, "src": "407:139:11", "stateMutability": "nonpayable", "superFunction": null, @@ -18696,7 +18751,7 @@ }, { "body": { - "id": 1418, + "id": 1423, "nodeType": "Block", "src": "666:55:11", "statements": [ @@ -18709,11 +18764,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1412, + "id": 1417, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1402, + "referencedDeclaration": 1407, "src": "699:4:11", "typeDescriptions": { "typeIdentifier": "t_address", @@ -18722,11 +18777,11 @@ }, { "argumentTypes": null, - "id": 1413, + "id": 1418, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1404, + "referencedDeclaration": 1409, "src": "705:2:11", "typeDescriptions": { "typeIdentifier": "t_address", @@ -18735,11 +18790,11 @@ }, { "argumentTypes": null, - "id": 1414, + "id": 1419, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1406, + "referencedDeclaration": 1411, "src": "709:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -18764,32 +18819,32 @@ ], "expression": { "argumentTypes": null, - "id": 1410, + "id": 1415, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1400, + "referencedDeclaration": 1405, "src": "680:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" } }, - "id": 1411, + "id": 1416, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", - "referencedDeclaration": 1356, + "referencedDeclaration": 1361, "src": "680:18:11", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)" } }, - "id": 1415, + "id": 1420, "isConstant": false, "isLValue": false, "isPure": false, @@ -18811,21 +18866,21 @@ "typeString": "bool" } ], - "id": 1409, + "id": 1414, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, + "referencedDeclaration": 1540, "src": "672:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1416, + "id": 1421, "isConstant": false, "isLValue": false, "isPure": false, @@ -18839,14 +18894,14 @@ "typeString": "tuple()" } }, - "id": 1417, + "id": 1422, "nodeType": "ExpressionStatement", "src": "672:44:11" } ] }, "documentation": null, - "id": 1419, + "id": 1424, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -18854,31 +18909,31 @@ "name": "safeTransferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 1407, + "id": 1412, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1400, + "id": 1405, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1419, + "scope": 1424, "src": "581:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1399, + "id": 1404, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1373, + "referencedDeclaration": 1378, "src": "581:6:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" } }, @@ -18887,10 +18942,10 @@ }, { "constant": false, - "id": 1402, + "id": 1407, "name": "from", "nodeType": "VariableDeclaration", - "scope": 1419, + "scope": 1424, "src": "599:12:11", "stateVariable": false, "storageLocation": "default", @@ -18899,7 +18954,7 @@ "typeString": "address" }, "typeName": { - "id": 1401, + "id": 1406, "name": "address", "nodeType": "ElementaryTypeName", "src": "599:7:11", @@ -18913,10 +18968,10 @@ }, { "constant": false, - "id": 1404, + "id": 1409, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1419, + "scope": 1424, "src": "617:10:11", "stateVariable": false, "storageLocation": "default", @@ -18925,7 +18980,7 @@ "typeString": "address" }, "typeName": { - "id": 1403, + "id": 1408, "name": "address", "nodeType": "ElementaryTypeName", "src": "617:7:11", @@ -18939,10 +18994,10 @@ }, { "constant": false, - "id": 1406, + "id": 1411, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1419, + "scope": 1424, "src": "633:13:11", "stateVariable": false, "storageLocation": "default", @@ -18951,7 +19006,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1405, + "id": 1410, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "633:7:11", @@ -18968,12 +19023,12 @@ }, "payable": false, "returnParameters": { - "id": 1408, + "id": 1413, "nodeType": "ParameterList", "parameters": [], "src": "666:0:11" }, - "scope": 1517, + "scope": 1522, "src": "550:171:11", "stateMutability": "nonpayable", "superFunction": null, @@ -18981,7 +19036,7 @@ }, { "body": { - "id": 1453, + "id": 1458, "nodeType": "Block", "src": "823:330:11", "statements": [ @@ -18995,7 +19050,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1442, + "id": 1447, "isConstant": false, "isLValue": false, "isPure": false, @@ -19009,18 +19064,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1431, + "id": 1436, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1429, + "id": 1434, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1425, + "referencedDeclaration": 1430, "src": "1045:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -19032,7 +19087,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1430, + "id": 1435, "isConstant": false, "isLValue": false, "isPure": true, @@ -19054,7 +19109,7 @@ } } ], - "id": 1432, + "id": 1437, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -19078,7 +19133,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1440, + "id": 1445, "isConstant": false, "isLValue": false, "isPure": false, @@ -19090,18 +19145,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1435, + "id": 1440, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1532, + "referencedDeclaration": 1537, "src": "1077:3:11", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1436, + "id": 1441, "isConstant": false, "isLValue": false, "isPure": false, @@ -19117,11 +19172,11 @@ }, { "argumentTypes": null, - "id": 1437, + "id": 1442, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1423, + "referencedDeclaration": 1428, "src": "1089:7:11", "typeDescriptions": { "typeIdentifier": "t_address", @@ -19142,32 +19197,32 @@ ], "expression": { "argumentTypes": null, - "id": 1433, + "id": 1438, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1421, + "referencedDeclaration": 1426, "src": "1061:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" } }, - "id": 1434, + "id": 1439, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 1327, + "referencedDeclaration": 1332, "src": "1061:15:11", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1438, + "id": 1443, "isConstant": false, "isLValue": false, "isPure": false, @@ -19186,7 +19241,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1439, + "id": 1444, "isConstant": false, "isLValue": false, "isPure": true, @@ -19208,7 +19263,7 @@ } } ], - "id": 1441, + "id": 1446, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -19235,21 +19290,21 @@ "typeString": "bool" } ], - "id": 1428, + "id": 1433, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, + "referencedDeclaration": 1540, "src": "1036:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1443, + "id": 1448, "isConstant": false, "isLValue": false, "isPure": false, @@ -19263,7 +19318,7 @@ "typeString": "tuple()" } }, - "id": 1444, + "id": 1449, "nodeType": "ExpressionStatement", "src": "1036:68:11" }, @@ -19276,11 +19331,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1448, + "id": 1453, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1423, + "referencedDeclaration": 1428, "src": "1132:7:11", "typeDescriptions": { "typeIdentifier": "t_address", @@ -19289,11 +19344,11 @@ }, { "argumentTypes": null, - "id": 1449, + "id": 1454, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1425, + "referencedDeclaration": 1430, "src": "1141:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -19314,32 +19369,32 @@ ], "expression": { "argumentTypes": null, - "id": 1446, + "id": 1451, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1421, + "referencedDeclaration": 1426, "src": "1118:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" } }, - "id": 1447, + "id": 1452, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 1345, + "referencedDeclaration": 1350, "src": "1118:13:11", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1450, + "id": 1455, "isConstant": false, "isLValue": false, "isPure": false, @@ -19361,21 +19416,21 @@ "typeString": "bool" } ], - "id": 1445, + "id": 1450, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, + "referencedDeclaration": 1540, "src": "1110:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1451, + "id": 1456, "isConstant": false, "isLValue": false, "isPure": false, @@ -19389,14 +19444,14 @@ "typeString": "tuple()" } }, - "id": 1452, + "id": 1457, "nodeType": "ExpressionStatement", "src": "1110:38:11" } ] }, "documentation": null, - "id": 1454, + "id": 1459, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -19404,31 +19459,31 @@ "name": "safeApprove", "nodeType": "FunctionDefinition", "parameters": { - "id": 1426, + "id": 1431, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1421, + "id": 1426, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1454, + "scope": 1459, "src": "751:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1420, + "id": 1425, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1373, + "referencedDeclaration": 1378, "src": "751:6:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" } }, @@ -19437,10 +19492,10 @@ }, { "constant": false, - "id": 1423, + "id": 1428, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1454, + "scope": 1459, "src": "769:15:11", "stateVariable": false, "storageLocation": "default", @@ -19449,7 +19504,7 @@ "typeString": "address" }, "typeName": { - "id": 1422, + "id": 1427, "name": "address", "nodeType": "ElementaryTypeName", "src": "769:7:11", @@ -19463,10 +19518,10 @@ }, { "constant": false, - "id": 1425, + "id": 1430, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1454, + "scope": 1459, "src": "790:13:11", "stateVariable": false, "storageLocation": "default", @@ -19475,7 +19530,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1424, + "id": 1429, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "790:7:11", @@ -19492,12 +19547,12 @@ }, "payable": false, "returnParameters": { - "id": 1427, + "id": 1432, "nodeType": "ParameterList", "parameters": [], "src": "823:0:11" }, - "scope": 1517, + "scope": 1522, "src": "725:428:11", "stateMutability": "nonpayable", "superFunction": null, @@ -19505,21 +19560,21 @@ }, { "body": { - "id": 1484, + "id": 1489, "nodeType": "Block", "src": "1265:135:11", "statements": [ { "assignments": [ - 1464 + 1469 ], "declarations": [ { "constant": false, - "id": 1464, + "id": 1469, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 1485, + "scope": 1490, "src": "1271:20:11", "stateVariable": false, "storageLocation": "default", @@ -19528,7 +19583,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1463, + "id": 1468, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1271:7:11", @@ -19541,17 +19596,17 @@ "visibility": "internal" } ], - "id": 1475, + "id": 1480, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1473, + "id": 1478, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1460, + "referencedDeclaration": 1465, "src": "1338:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -19574,14 +19629,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1468, + "id": 1473, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1555, + "referencedDeclaration": 1560, "src": "1318:4:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1517", + "typeIdentifier": "t_contract$_SafeERC20_$1522", "typeString": "library SafeERC20" } } @@ -19589,11 +19644,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$1517", + "typeIdentifier": "t_contract$_SafeERC20_$1522", "typeString": "library SafeERC20" } ], - "id": 1467, + "id": 1472, "isConstant": false, "isLValue": false, "isPure": true, @@ -19606,7 +19661,7 @@ }, "typeName": "address" }, - "id": 1469, + "id": 1474, "isConstant": false, "isLValue": false, "isPure": false, @@ -19622,11 +19677,11 @@ }, { "argumentTypes": null, - "id": 1470, + "id": 1475, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1458, + "referencedDeclaration": 1463, "src": "1325:7:11", "typeDescriptions": { "typeIdentifier": "t_address", @@ -19647,32 +19702,32 @@ ], "expression": { "argumentTypes": null, - "id": 1465, + "id": 1470, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1456, + "referencedDeclaration": 1461, "src": "1294:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" } }, - "id": 1466, + "id": 1471, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 1327, + "referencedDeclaration": 1332, "src": "1294:15:11", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1471, + "id": 1476, "isConstant": false, "isLValue": false, "isPure": false, @@ -19686,21 +19741,21 @@ "typeString": "uint256" } }, - "id": 1472, + "id": 1477, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1283, + "referencedDeclaration": 1288, "src": "1294:43:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1474, + "id": 1479, "isConstant": false, "isLValue": false, "isPure": false, @@ -19726,11 +19781,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1479, + "id": 1484, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1458, + "referencedDeclaration": 1463, "src": "1372:7:11", "typeDescriptions": { "typeIdentifier": "t_address", @@ -19739,11 +19794,11 @@ }, { "argumentTypes": null, - "id": 1480, + "id": 1485, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1464, + "referencedDeclaration": 1469, "src": "1381:12:11", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -19764,32 +19819,32 @@ ], "expression": { "argumentTypes": null, - "id": 1477, + "id": 1482, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1456, + "referencedDeclaration": 1461, "src": "1358:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" } }, - "id": 1478, + "id": 1483, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 1345, + "referencedDeclaration": 1350, "src": "1358:13:11", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1481, + "id": 1486, "isConstant": false, "isLValue": false, "isPure": false, @@ -19811,21 +19866,21 @@ "typeString": "bool" } ], - "id": 1476, + "id": 1481, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, + "referencedDeclaration": 1540, "src": "1350:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1482, + "id": 1487, "isConstant": false, "isLValue": false, "isPure": false, @@ -19839,14 +19894,14 @@ "typeString": "tuple()" } }, - "id": 1483, + "id": 1488, "nodeType": "ExpressionStatement", "src": "1350:45:11" } ] }, "documentation": null, - "id": 1485, + "id": 1490, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -19854,31 +19909,31 @@ "name": "safeIncreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1461, + "id": 1466, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1456, + "id": 1461, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1485, + "scope": 1490, "src": "1193:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1455, + "id": 1460, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1373, + "referencedDeclaration": 1378, "src": "1193:6:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" } }, @@ -19887,10 +19942,10 @@ }, { "constant": false, - "id": 1458, + "id": 1463, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1485, + "scope": 1490, "src": "1211:15:11", "stateVariable": false, "storageLocation": "default", @@ -19899,7 +19954,7 @@ "typeString": "address" }, "typeName": { - "id": 1457, + "id": 1462, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:11", @@ -19913,10 +19968,10 @@ }, { "constant": false, - "id": 1460, + "id": 1465, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1485, + "scope": 1490, "src": "1232:13:11", "stateVariable": false, "storageLocation": "default", @@ -19925,7 +19980,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1459, + "id": 1464, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1232:7:11", @@ -19942,12 +19997,12 @@ }, "payable": false, "returnParameters": { - "id": 1462, + "id": 1467, "nodeType": "ParameterList", "parameters": [], "src": "1265:0:11" }, - "scope": 1517, + "scope": 1522, "src": "1157:243:11", "stateMutability": "nonpayable", "superFunction": null, @@ -19955,21 +20010,21 @@ }, { "body": { - "id": 1515, + "id": 1520, "nodeType": "Block", "src": "1512:135:11", "statements": [ { "assignments": [ - 1495 + 1500 ], "declarations": [ { "constant": false, - "id": 1495, + "id": 1500, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 1516, + "scope": 1521, "src": "1518:20:11", "stateVariable": false, "storageLocation": "default", @@ -19978,7 +20033,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1494, + "id": 1499, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1518:7:11", @@ -19991,17 +20046,17 @@ "visibility": "internal" } ], - "id": 1506, + "id": 1511, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1504, + "id": 1509, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1491, + "referencedDeclaration": 1496, "src": "1585:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -20024,14 +20079,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1499, + "id": 1504, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1555, + "referencedDeclaration": 1560, "src": "1565:4:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1517", + "typeIdentifier": "t_contract$_SafeERC20_$1522", "typeString": "library SafeERC20" } } @@ -20039,11 +20094,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$1517", + "typeIdentifier": "t_contract$_SafeERC20_$1522", "typeString": "library SafeERC20" } ], - "id": 1498, + "id": 1503, "isConstant": false, "isLValue": false, "isPure": true, @@ -20056,7 +20111,7 @@ }, "typeName": "address" }, - "id": 1500, + "id": 1505, "isConstant": false, "isLValue": false, "isPure": false, @@ -20072,11 +20127,11 @@ }, { "argumentTypes": null, - "id": 1501, + "id": 1506, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1489, + "referencedDeclaration": 1494, "src": "1572:7:11", "typeDescriptions": { "typeIdentifier": "t_address", @@ -20097,32 +20152,32 @@ ], "expression": { "argumentTypes": null, - "id": 1496, + "id": 1501, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1487, + "referencedDeclaration": 1492, "src": "1541:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" } }, - "id": 1497, + "id": 1502, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 1327, + "referencedDeclaration": 1332, "src": "1541:15:11", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1502, + "id": 1507, "isConstant": false, "isLValue": false, "isPure": false, @@ -20136,21 +20191,21 @@ "typeString": "uint256" } }, - "id": 1503, + "id": 1508, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 1259, + "referencedDeclaration": 1264, "src": "1541:43:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1505, + "id": 1510, "isConstant": false, "isLValue": false, "isPure": false, @@ -20176,11 +20231,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1510, + "id": 1515, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1489, + "referencedDeclaration": 1494, "src": "1619:7:11", "typeDescriptions": { "typeIdentifier": "t_address", @@ -20189,11 +20244,11 @@ }, { "argumentTypes": null, - "id": 1511, + "id": 1516, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1495, + "referencedDeclaration": 1500, "src": "1628:12:11", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -20214,32 +20269,32 @@ ], "expression": { "argumentTypes": null, - "id": 1508, + "id": 1513, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1487, + "referencedDeclaration": 1492, "src": "1605:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" } }, - "id": 1509, + "id": 1514, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 1345, + "referencedDeclaration": 1350, "src": "1605:13:11", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1512, + "id": 1517, "isConstant": false, "isLValue": false, "isPure": false, @@ -20261,21 +20316,21 @@ "typeString": "bool" } ], - "id": 1507, + "id": 1512, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1535, - 1536 + 1540, + 1541 ], - "referencedDeclaration": 1535, + "referencedDeclaration": 1540, "src": "1597:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1513, + "id": 1518, "isConstant": false, "isLValue": false, "isPure": false, @@ -20289,14 +20344,14 @@ "typeString": "tuple()" } }, - "id": 1514, + "id": 1519, "nodeType": "ExpressionStatement", "src": "1597:45:11" } ] }, "documentation": null, - "id": 1516, + "id": 1521, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -20304,31 +20359,31 @@ "name": "safeDecreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1492, + "id": 1497, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1487, + "id": 1492, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1516, + "scope": 1521, "src": "1440:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1486, + "id": 1491, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1373, + "referencedDeclaration": 1378, "src": "1440:6:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1373", + "typeIdentifier": "t_contract$_IERC20_$1378", "typeString": "contract IERC20" } }, @@ -20337,10 +20392,10 @@ }, { "constant": false, - "id": 1489, + "id": 1494, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1516, + "scope": 1521, "src": "1458:15:11", "stateVariable": false, "storageLocation": "default", @@ -20349,7 +20404,7 @@ "typeString": "address" }, "typeName": { - "id": 1488, + "id": 1493, "name": "address", "nodeType": "ElementaryTypeName", "src": "1458:7:11", @@ -20363,10 +20418,10 @@ }, { "constant": false, - "id": 1491, + "id": 1496, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1516, + "scope": 1521, "src": "1479:13:11", "stateVariable": false, "storageLocation": "default", @@ -20375,7 +20430,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1490, + "id": 1495, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1479:7:11", @@ -20392,19 +20447,19 @@ }, "payable": false, "returnParameters": { - "id": 1493, + "id": 1498, "nodeType": "ParameterList", "parameters": [], "src": "1512:0:11" }, - "scope": 1517, + "scope": 1522, "src": "1404:243:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 1518, + "scope": 1523, "src": "353:1296:11" } ], diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.abi b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.abi index 3e4826eae..8f3d1e3d2 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.abi +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.abi @@ -1 +1 @@ -[{"constant":false,"inputs":[],"name":"terminate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pauseMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isAlgoMiner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"isMining","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"startMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMinerAddress","type":"address"}],"name":"migrateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMiner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getReferral","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSystem","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"stopAndRemoveOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentDay","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"resumeMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMinerType","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCategory","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSupervisor","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwnerAddress","type":"address"},{"name":"newReferralAddress","type":"address"}],"name":"resetMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"mine","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deactivateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"activateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"DAYS_PER_YEAR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentYearSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentYear","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"stopMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"minerType","type":"uint8"},{"name":"category","type":"uint8"},{"name":"minerAccountAddress","type":"address"},{"name":"referralAccountAddress","type":"address"},{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file +[{"constant":false,"inputs":[],"name":"terminate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pauseMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isAlgoMiner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"isMining","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"startMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMinerAddress","type":"address"}],"name":"migrateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMiner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getReferral","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSystem","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"stopAndRemoveOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentDay","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"resumeMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMinerType","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCategory","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSupervisor","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwnerAddress","type":"address"},{"name":"newReferralAddress","type":"address"}],"name":"resetMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"mine","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deactivateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"activateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentYearSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentYear","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"stopMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"minerType","type":"uint8"},{"name":"category","type":"uint8"},{"name":"minerAccountAddress","type":"address"},{"name":"referralAccountAddress","type":"address"},{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin index 1b1c9971d..a36c0e042 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b5060405160a080620014f7833981016040908152815160208301519183015160608401516080909401516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790559294919262000087906401000000006200018e810204565b6200009b33640100000000620001ac810204565b620000af33640100000000620001c7810204565b60008460ff1610158015620000c8575060058460ff1611155b1515620000d457600080fd5b600160a060020a0383161515620000ea57600080fd5b6000856001811115620000f957fe5b14156200011657600160a060020a03821615156200011657600080fd5b6005805486919060ff1916600183818111156200012f57fe5b0217905550506005805461ff00191661010060ff9590951694909402939093176201000060b060020a03191662010000600160a060020a03938416021790925560068054600160a060020a031916929091169190911790555062000275565b620001a9600282640100000000620011ac620001e282021704565b50565b620001a9600382640100000000620011ac620001e282021704565b620001a9600482640100000000620011ac620001e282021704565b600160a060020a0381161515620001f857600080fd5b6200020d82826401000000006200023d810204565b156200021857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200025557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61127280620002856000396000f30060806040526004361061017f5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630c08bf888114610184578063162f986d1461019b5780631777fb4b146101b057806319a74ab3146101d957806321b79d98146101ee578063231d4e2a1461020357806329d10b6e146102245780632e6b684914610245578063302c11ca14610266578063329b1c921461029757806334cdcf26146102ac578063363aa6c7146102cd5780633e6968b6146102e2578063427534a41461030e5780634969ae7014610323578063608d3d3d1461034e57806374be75921461036f57806380258e471461039057806381a24459146103a55780638329138f146103c657806399f4b251146103ed5780639e614ca014610402578063b2a32cd514610417578063be9524941461042c578063c6846ef814610441578063cdfd0f6414610468578063ce41607a1461047d578063d43acc7914610492578063da408679146104a7578063e9d61859146104bc575b600080fd5b34801561019057600080fd5b506101996104d1565b005b3480156101a757600080fd5b506101996104ef565b3480156101bc57600080fd5b506101c561055e565b604080519115158252519081900360200190f35b3480156101e557600080fd5b506101c5610563565b3480156101fa57600080fd5b5061019961059a565b34801561020f57600080fd5b50610199600160a060020a0360043516610630565b34801561023057600080fd5b50610199600160a060020a036004351661071c565b34801561025157600080fd5b50610199600160a060020a0360043516610739565b34801561027257600080fd5b5061027b610756565b60408051600160a060020a039092168252519081900360200190f35b3480156102a357600080fd5b5061027b61076b565b3480156102b857600080fd5b506101c5600160a060020a036004351661077a565b3480156102d957600080fd5b50610199610795565b3480156102ee57600080fd5b506102f7610846565b6040805161ffff9092168252519081900360200190f35b34801561031a57600080fd5b50610199610857565b34801561032f57600080fd5b506103386108c3565b6040805160ff9092168252519081900360200190f35b34801561035a57600080fd5b506101c5600160a060020a03600435166108d7565b34801561037b57600080fd5b50610199600160a060020a03600435166108ea565b34801561039c57600080fd5b50610338610907565b3480156103b157600080fd5b506101c5600160a060020a0360043516610915565b3480156103d257600080fd5b50610199600160a060020a0360043581169060243516610928565b3480156103f957600080fd5b506101996109db565b34801561040e57600080fd5b50610199610c1c565b34801561042357600080fd5b50610199610c8d565b34801561043857600080fd5b50610199610deb565b34801561044d57600080fd5b50610456610df4565b60408051918252519081900360200190f35b34801561047457600080fd5b50610456610dfa565b34801561048957600080fd5b50610338610e00565b34801561049e57600080fd5b50610199610e23565b3480156104b357600080fd5b50610199610e2c565b3480156104c857600080fd5b50610199610ebd565b6104da336108d7565b15156104e557600080fd5b6104ed610ec6565b565b60005460a060020a900460ff161561050657600080fd5b61050f33610915565b151561051a57600080fd5b600160065460a060020a900460ff16600381111561053457fe5b1461053e57600080fd5b600680546002919060a060020a60ff02191660a060020a835b0217905550565b600190565b6000600160065460a060020a900460ff16600381111561057f57fe5b148015610595575060065460a860020a900460ff165b905090565b60005460a060020a900460ff16156105b157600080fd5b600554620100009004600160a060020a031633146105ce57600080fd5b600160065460a060020a900460ff1660038111156105e857fe5b146105f257600080fd5b60065460a860020a900460ff161561060957600080fd5b6006805475ff000000000000000000000000000000000000000000191660a860020a179055565b610639336108d7565b151561064457600080fd5b600060065460a060020a900460ff16600381111561065e57fe5b1461066857600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051610719928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b1580156106d457600080fd5b505af11580156106e8573d6000803e3d6000fd5b505050506040513d60208110156106fe57600080fd5b5051600154600160a060020a0316919063ffffffff610f8d16565b50565b61072533610915565b151561073057600080fd5b61071981611045565b610742336108d7565b151561074d57600080fd5b61071981611056565b600554620100009004600160a060020a031690565b600654600160a060020a031690565b600061078d60028363ffffffff61106716565b90505b919050565b60005460a060020a900460ff16156107ac57600080fd5b6107b533610915565b15156107c057600080fd5b600360065460a060020a900460ff1660038111156107da57fe5b14156107e557600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff00001916905560a060020a60ff021916740300000000000000000000000000000000000000001775ff00ffffffffffffffffffffffffffffffffffffffff19169055565b60065460b860020a900461ffff1690565b60005460a060020a900460ff161561086e57600080fd5b61087733610915565b151561088257600080fd5b600260065460a060020a900460ff16600381111561089c57fe5b146108a657600080fd5b600680546001919060a060020a60ff02191660a060020a83610557565b60055460009060ff16600181111561059557fe5b600061078d60038363ffffffff61106716565b6108f33361077a565b15156108fe57600080fd5b6107198161109e565b600554610100900460ff1690565b600061078d60048363ffffffff61106716565b60005460a060020a900460ff161561093f57600080fd5b61094833610915565b151561095357600080fd5b600360065460a060020a900460ff16600381111561096d57fe5b1461097757600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a039687160217905560a060020a60ff02191660a060020a1773ffffffffffffffffffffffffffffffffffffffff191691909216179055565b60008054819060a060020a900460ff16156109f557600080fd5b6109fe3361077a565b1515610a0957600080fd5b600060055460ff166001811115610a1c57fe5b14610a2657600080fd5b600160065460a060020a900460ff166003811115610a4057fe5b14610a4a57600080fd5b60065460a860020a900460ff161515610a6257600080fd5b60065460b860020a900461ffff161515610ad8576006805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610ba0565b60068054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610ba0576006805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600754600290046007555b505060075461016d90046064600a82020460008211610bbe57600080fd5b60008111610bcb57600080fd5b600554600154610bf591600160a060020a039182169162010000909104168463ffffffff610f8d16565b600654600154610c1891600160a060020a0391821691168363ffffffff610f8d16565b5050565b60005460a060020a900460ff1615610c3357600080fd5b610c3c336108d7565b1515610c4757600080fd5b600060065460a060020a900460ff166003811115610c6157fe5b1415610c6c57600080fd5b6006805475ffff000000000000000000000000000000000000000019169055565b600080548190819060a060020a900460ff1615610ca957600080fd5b610cb2336108d7565b1515610cbd57600080fd5b600060065460a060020a900460ff166003811115610cd757fe5b14610ce157600080fd5b600060055460ff166001811115610cf457fe5b148015610d015750600754155b15610dd057600554610d1a90610100900460ff166110af565b92506064600a8402600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519390920486019450600160a060020a0316916370a08231916024808201926020929091908290030181600087803b158015610d8e57600080fd5b505af1158015610da2573d6000803e3d6000fd5b505050506040513d6020811015610db857600080fd5b50519050818114610dc857600080fd5b600283046007555b50506006805460a060020a60ff02191660a060020a17905550565b6104ed33611161565b61016d81565b60075490565b600654760100000000000000000000000000000000000000000000900460ff1690565b6104ed33611172565b60005460a060020a900460ff1615610e4357600080fd5b600554620100009004600160a060020a03163314610e6057600080fd5b600160065460a060020a900460ff166003811115610e7a57fe5b14610e8457600080fd5b60065460a860020a900460ff161515610e9c57600080fd5b6006805475ff00000000000000000000000000000000000000000019169055565b6104ed33611183565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610f2b57600080fd5b505af1158015610f3f573d6000803e3d6000fd5b505050506040513d6020811015610f5557600080fd5b505190506000811115610f8557600054600154610f8591600160a060020a0391821691168363ffffffff610f8d16565b610719611194565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561100957600080fd5b505af115801561101d573d6000803e3d6000fd5b505050506040513d602081101561103357600080fd5b5051151561104057600080fd5b505050565b61071960048263ffffffff6111ac16565b61071960038263ffffffff6111ac16565b6000600160a060020a038216151561107e57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61071960028263ffffffff6111ac16565b600060ff821615156110cc575069152d02c7e14af6800000610790565b8160ff16600114156110e9575069d3c21bcecceda1000000610790565b8160ff166002141561110757506a01a784379d99db42000000610790565b8160ff166003141561112557506a027b46536c66c8e3000000610790565b8160ff166004141561114357506a034f086f3b33b684000000610790565b8160ff166005141561079057506a0422ca8b0a00a425000000610790565b61071960048263ffffffff6111fa16565b61071960038263ffffffff6111fa16565b61071960028263ffffffff6111fa16565b6000805460a060020a60ff02191660a060020a179055565b600160a060020a03811615156111c157600080fd5b6111cb8282611067565b156111d557600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561120f57600080fd5b6112198282611067565b151561122457600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058205f527260d789022d74031e68eb390ff4f3057e6fce4f2adde7c12af38948fde60029 \ No newline at end of file +60806040523480156200001157600080fd5b5060405160a080620014d1833981016040908152815160208301519183015160608401516080909401516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790559294919262000087906401000000006200018e810204565b6200009b33640100000000620001ac810204565b620000af33640100000000620001c7810204565b60008460ff1610158015620000c8575060058460ff1611155b1515620000d457600080fd5b600160a060020a0383161515620000ea57600080fd5b6000856001811115620000f957fe5b14156200011657600160a060020a03821615156200011657600080fd5b6005805486919060ff1916600183818111156200012f57fe5b0217905550506005805461ff00191661010060ff9590951694909402939093176201000060b060020a03191662010000600160a060020a03938416021790925560068054600160a060020a031916929091169190911790555062000275565b620001a960028264010000000062001186620001e282021704565b50565b620001a960038264010000000062001186620001e282021704565b620001a960048264010000000062001186620001e282021704565b600160a060020a0381161515620001f857600080fd5b6200020d82826401000000006200023d810204565b156200021857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200025557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61124c80620002856000396000f3006080604052600436106101745763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630c08bf888114610179578063162f986d146101905780631777fb4b146101a557806319a74ab3146101ce57806321b79d98146101e3578063231d4e2a146101f857806329d10b6e146102195780632e6b68491461023a578063302c11ca1461025b578063329b1c921461028c57806334cdcf26146102a1578063363aa6c7146102c25780633e6968b6146102d7578063427534a4146103035780634969ae7014610318578063608d3d3d1461034357806374be75921461036457806380258e471461038557806381a244591461039a5780638329138f146103bb57806399f4b251146103e25780639e614ca0146103f7578063b2a32cd51461040c578063be95249414610421578063cdfd0f6414610436578063ce41607a1461045d578063d43acc7914610472578063da40867914610487578063e9d618591461049c575b600080fd5b34801561018557600080fd5b5061018e6104b1565b005b34801561019c57600080fd5b5061018e6104cf565b3480156101b157600080fd5b506101ba61053e565b604080519115158252519081900360200190f35b3480156101da57600080fd5b506101ba610543565b3480156101ef57600080fd5b5061018e61057a565b34801561020457600080fd5b5061018e600160a060020a0360043516610610565b34801561022557600080fd5b5061018e600160a060020a03600435166106fc565b34801561024657600080fd5b5061018e600160a060020a0360043516610719565b34801561026757600080fd5b50610270610736565b60408051600160a060020a039092168252519081900360200190f35b34801561029857600080fd5b5061027061074b565b3480156102ad57600080fd5b506101ba600160a060020a036004351661075a565b3480156102ce57600080fd5b5061018e610775565b3480156102e357600080fd5b506102ec610826565b6040805161ffff9092168252519081900360200190f35b34801561030f57600080fd5b5061018e610837565b34801561032457600080fd5b5061032d6108a3565b6040805160ff9092168252519081900360200190f35b34801561034f57600080fd5b506101ba600160a060020a03600435166108b7565b34801561037057600080fd5b5061018e600160a060020a03600435166108ca565b34801561039157600080fd5b5061032d6108e7565b3480156103a657600080fd5b506101ba600160a060020a03600435166108f5565b3480156103c757600080fd5b5061018e600160a060020a0360043581169060243516610908565b3480156103ee57600080fd5b5061018e6109bb565b34801561040357600080fd5b5061018e610bfc565b34801561041857600080fd5b5061018e610c6d565b34801561042d57600080fd5b5061018e610dcb565b34801561044257600080fd5b5061044b610dd4565b60408051918252519081900360200190f35b34801561046957600080fd5b5061032d610dda565b34801561047e57600080fd5b5061018e610dfd565b34801561049357600080fd5b5061018e610e06565b3480156104a857600080fd5b5061018e610e97565b6104ba336108b7565b15156104c557600080fd5b6104cd610ea0565b565b60005460a060020a900460ff16156104e657600080fd5b6104ef336108f5565b15156104fa57600080fd5b600160065460a060020a900460ff16600381111561051457fe5b1461051e57600080fd5b600680546002919060a060020a60ff02191660a060020a835b0217905550565b600190565b6000600160065460a060020a900460ff16600381111561055f57fe5b148015610575575060065460a860020a900460ff165b905090565b60005460a060020a900460ff161561059157600080fd5b600554620100009004600160a060020a031633146105ae57600080fd5b600160065460a060020a900460ff1660038111156105c857fe5b146105d257600080fd5b60065460a860020a900460ff16156105e957600080fd5b6006805475ff000000000000000000000000000000000000000000191660a860020a179055565b610619336108b7565b151561062457600080fd5b600060065460a060020a900460ff16600381111561063e57fe5b1461064857600080fd5b600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516106f9928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d60208110156106de57600080fd5b5051600154600160a060020a0316919063ffffffff610f6716565b50565b610705336108f5565b151561071057600080fd5b6106f98161101f565b610722336108b7565b151561072d57600080fd5b6106f981611030565b600554620100009004600160a060020a031690565b600654600160a060020a031690565b600061076d60028363ffffffff61104116565b90505b919050565b60005460a060020a900460ff161561078c57600080fd5b610795336108f5565b15156107a057600080fd5b600360065460a060020a900460ff1660038111156107ba57fe5b14156107c557600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff00001916905560a060020a60ff021916740300000000000000000000000000000000000000001775ff00ffffffffffffffffffffffffffffffffffffffff19169055565b60065460b860020a900461ffff1690565b60005460a060020a900460ff161561084e57600080fd5b610857336108f5565b151561086257600080fd5b600260065460a060020a900460ff16600381111561087c57fe5b1461088657600080fd5b600680546001919060a060020a60ff02191660a060020a83610537565b60055460009060ff16600181111561057557fe5b600061076d60038363ffffffff61104116565b6108d33361075a565b15156108de57600080fd5b6106f981611078565b600554610100900460ff1690565b600061076d60048363ffffffff61104116565b60005460a060020a900460ff161561091f57600080fd5b610928336108f5565b151561093357600080fd5b600360065460a060020a900460ff16600381111561094d57fe5b1461095757600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a039687160217905560a060020a60ff02191660a060020a1773ffffffffffffffffffffffffffffffffffffffff191691909216179055565b60008054819060a060020a900460ff16156109d557600080fd5b6109de3361075a565b15156109e957600080fd5b600060055460ff1660018111156109fc57fe5b14610a0657600080fd5b600160065460a060020a900460ff166003811115610a2057fe5b14610a2a57600080fd5b60065460a860020a900460ff161515610a4257600080fd5b60065460b860020a900461ffff161515610ab8576006805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610b80565b60068054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610b80576006805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600754600290046007555b505060075461016d90046064600a82020460008211610b9e57600080fd5b60008111610bab57600080fd5b600554600154610bd591600160a060020a039182169162010000909104168463ffffffff610f6716565b600654600154610bf891600160a060020a0391821691168363ffffffff610f6716565b5050565b60005460a060020a900460ff1615610c1357600080fd5b610c1c336108b7565b1515610c2757600080fd5b600060065460a060020a900460ff166003811115610c4157fe5b1415610c4c57600080fd5b6006805475ffff000000000000000000000000000000000000000019169055565b600080548190819060a060020a900460ff1615610c8957600080fd5b610c92336108b7565b1515610c9d57600080fd5b600060065460a060020a900460ff166003811115610cb757fe5b14610cc157600080fd5b600060055460ff166001811115610cd457fe5b148015610ce15750600754155b15610db057600554610cfa90610100900460ff16611089565b92506064600a8402600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519390920486019450600160a060020a0316916370a08231916024808201926020929091908290030181600087803b158015610d6e57600080fd5b505af1158015610d82573d6000803e3d6000fd5b505050506040513d6020811015610d9857600080fd5b50519050818114610da857600080fd5b600283046007555b50506006805460a060020a60ff02191660a060020a17905550565b6104cd3361113b565b60075490565b600654760100000000000000000000000000000000000000000000900460ff1690565b6104cd3361114c565b60005460a060020a900460ff1615610e1d57600080fd5b600554620100009004600160a060020a03163314610e3a57600080fd5b600160065460a060020a900460ff166003811115610e5457fe5b14610e5e57600080fd5b60065460a860020a900460ff161515610e7657600080fd5b6006805475ff00000000000000000000000000000000000000000019169055565b6104cd3361115d565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610f0557600080fd5b505af1158015610f19573d6000803e3d6000fd5b505050506040513d6020811015610f2f57600080fd5b505190506000811115610f5f57600054600154610f5f91600160a060020a0391821691168363ffffffff610f6716565b6106f961116e565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610fe357600080fd5b505af1158015610ff7573d6000803e3d6000fd5b505050506040513d602081101561100d57600080fd5b5051151561101a57600080fd5b505050565b6106f960048263ffffffff61118616565b6106f960038263ffffffff61118616565b6000600160a060020a038216151561105857600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106f960028263ffffffff61118616565b600060ff821615156110a6575069152d02c7e14af6800000610770565b8160ff16600114156110c3575069d3c21bcecceda1000000610770565b8160ff16600214156110e157506a01a784379d99db42000000610770565b8160ff16600314156110ff57506a027b46536c66c8e3000000610770565b8160ff166004141561111d57506a034f086f3b33b684000000610770565b8160ff166005141561077057506a0422ca8b0a00a425000000610770565b6106f960048263ffffffff6111d416565b6106f960038263ffffffff6111d416565b6106f960028263ffffffff6111d416565b6000805460a060020a60ff02191660a060020a179055565b600160a060020a038116151561119b57600080fd5b6111a58282611041565b156111af57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a03811615156111e957600080fd5b6111f38282611041565b15156111fe57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058202935a8fadd5caa8f5a9312cd903c07814b3de5662642cabdc9018c364221db570029 \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json index dd71448e2..8cf00d50a 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json @@ -310,20 +310,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "constant": true, - "inputs": [], - "name": "DAYS_PER_YEAR", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { "constant": true, "inputs": [], @@ -407,9 +393,8 @@ "type": "constructor" } ], - "bytecode": "60806040523480156200001157600080fd5b5060405160a080620014f7833981016040908152815160208301519183015160608401516080909401516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790559294919262000087906401000000006200018e810204565b6200009b33640100000000620001ac810204565b620000af33640100000000620001c7810204565b60008460ff1610158015620000c8575060058460ff1611155b1515620000d457600080fd5b600160a060020a0383161515620000ea57600080fd5b6000856001811115620000f957fe5b14156200011657600160a060020a03821615156200011657600080fd5b6005805486919060ff1916600183818111156200012f57fe5b0217905550506005805461ff00191661010060ff9590951694909402939093176201000060b060020a03191662010000600160a060020a03938416021790925560068054600160a060020a031916929091169190911790555062000275565b620001a9600282640100000000620011ac620001e282021704565b50565b620001a9600382640100000000620011ac620001e282021704565b620001a9600482640100000000620011ac620001e282021704565b600160a060020a0381161515620001f857600080fd5b6200020d82826401000000006200023d810204565b156200021857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200025557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61127280620002856000396000f30060806040526004361061017f5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630c08bf888114610184578063162f986d1461019b5780631777fb4b146101b057806319a74ab3146101d957806321b79d98146101ee578063231d4e2a1461020357806329d10b6e146102245780632e6b684914610245578063302c11ca14610266578063329b1c921461029757806334cdcf26146102ac578063363aa6c7146102cd5780633e6968b6146102e2578063427534a41461030e5780634969ae7014610323578063608d3d3d1461034e57806374be75921461036f57806380258e471461039057806381a24459146103a55780638329138f146103c657806399f4b251146103ed5780639e614ca014610402578063b2a32cd514610417578063be9524941461042c578063c6846ef814610441578063cdfd0f6414610468578063ce41607a1461047d578063d43acc7914610492578063da408679146104a7578063e9d61859146104bc575b600080fd5b34801561019057600080fd5b506101996104d1565b005b3480156101a757600080fd5b506101996104ef565b3480156101bc57600080fd5b506101c561055e565b604080519115158252519081900360200190f35b3480156101e557600080fd5b506101c5610563565b3480156101fa57600080fd5b5061019961059a565b34801561020f57600080fd5b50610199600160a060020a0360043516610630565b34801561023057600080fd5b50610199600160a060020a036004351661071c565b34801561025157600080fd5b50610199600160a060020a0360043516610739565b34801561027257600080fd5b5061027b610756565b60408051600160a060020a039092168252519081900360200190f35b3480156102a357600080fd5b5061027b61076b565b3480156102b857600080fd5b506101c5600160a060020a036004351661077a565b3480156102d957600080fd5b50610199610795565b3480156102ee57600080fd5b506102f7610846565b6040805161ffff9092168252519081900360200190f35b34801561031a57600080fd5b50610199610857565b34801561032f57600080fd5b506103386108c3565b6040805160ff9092168252519081900360200190f35b34801561035a57600080fd5b506101c5600160a060020a03600435166108d7565b34801561037b57600080fd5b50610199600160a060020a03600435166108ea565b34801561039c57600080fd5b50610338610907565b3480156103b157600080fd5b506101c5600160a060020a0360043516610915565b3480156103d257600080fd5b50610199600160a060020a0360043581169060243516610928565b3480156103f957600080fd5b506101996109db565b34801561040e57600080fd5b50610199610c1c565b34801561042357600080fd5b50610199610c8d565b34801561043857600080fd5b50610199610deb565b34801561044d57600080fd5b50610456610df4565b60408051918252519081900360200190f35b34801561047457600080fd5b50610456610dfa565b34801561048957600080fd5b50610338610e00565b34801561049e57600080fd5b50610199610e23565b3480156104b357600080fd5b50610199610e2c565b3480156104c857600080fd5b50610199610ebd565b6104da336108d7565b15156104e557600080fd5b6104ed610ec6565b565b60005460a060020a900460ff161561050657600080fd5b61050f33610915565b151561051a57600080fd5b600160065460a060020a900460ff16600381111561053457fe5b1461053e57600080fd5b600680546002919060a060020a60ff02191660a060020a835b0217905550565b600190565b6000600160065460a060020a900460ff16600381111561057f57fe5b148015610595575060065460a860020a900460ff165b905090565b60005460a060020a900460ff16156105b157600080fd5b600554620100009004600160a060020a031633146105ce57600080fd5b600160065460a060020a900460ff1660038111156105e857fe5b146105f257600080fd5b60065460a860020a900460ff161561060957600080fd5b6006805475ff000000000000000000000000000000000000000000191660a860020a179055565b610639336108d7565b151561064457600080fd5b600060065460a060020a900460ff16600381111561065e57fe5b1461066857600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051610719928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b1580156106d457600080fd5b505af11580156106e8573d6000803e3d6000fd5b505050506040513d60208110156106fe57600080fd5b5051600154600160a060020a0316919063ffffffff610f8d16565b50565b61072533610915565b151561073057600080fd5b61071981611045565b610742336108d7565b151561074d57600080fd5b61071981611056565b600554620100009004600160a060020a031690565b600654600160a060020a031690565b600061078d60028363ffffffff61106716565b90505b919050565b60005460a060020a900460ff16156107ac57600080fd5b6107b533610915565b15156107c057600080fd5b600360065460a060020a900460ff1660038111156107da57fe5b14156107e557600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff00001916905560a060020a60ff021916740300000000000000000000000000000000000000001775ff00ffffffffffffffffffffffffffffffffffffffff19169055565b60065460b860020a900461ffff1690565b60005460a060020a900460ff161561086e57600080fd5b61087733610915565b151561088257600080fd5b600260065460a060020a900460ff16600381111561089c57fe5b146108a657600080fd5b600680546001919060a060020a60ff02191660a060020a83610557565b60055460009060ff16600181111561059557fe5b600061078d60038363ffffffff61106716565b6108f33361077a565b15156108fe57600080fd5b6107198161109e565b600554610100900460ff1690565b600061078d60048363ffffffff61106716565b60005460a060020a900460ff161561093f57600080fd5b61094833610915565b151561095357600080fd5b600360065460a060020a900460ff16600381111561096d57fe5b1461097757600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a039687160217905560a060020a60ff02191660a060020a1773ffffffffffffffffffffffffffffffffffffffff191691909216179055565b60008054819060a060020a900460ff16156109f557600080fd5b6109fe3361077a565b1515610a0957600080fd5b600060055460ff166001811115610a1c57fe5b14610a2657600080fd5b600160065460a060020a900460ff166003811115610a4057fe5b14610a4a57600080fd5b60065460a860020a900460ff161515610a6257600080fd5b60065460b860020a900461ffff161515610ad8576006805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610ba0565b60068054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610ba0576006805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600754600290046007555b505060075461016d90046064600a82020460008211610bbe57600080fd5b60008111610bcb57600080fd5b600554600154610bf591600160a060020a039182169162010000909104168463ffffffff610f8d16565b600654600154610c1891600160a060020a0391821691168363ffffffff610f8d16565b5050565b60005460a060020a900460ff1615610c3357600080fd5b610c3c336108d7565b1515610c4757600080fd5b600060065460a060020a900460ff166003811115610c6157fe5b1415610c6c57600080fd5b6006805475ffff000000000000000000000000000000000000000019169055565b600080548190819060a060020a900460ff1615610ca957600080fd5b610cb2336108d7565b1515610cbd57600080fd5b600060065460a060020a900460ff166003811115610cd757fe5b14610ce157600080fd5b600060055460ff166001811115610cf457fe5b148015610d015750600754155b15610dd057600554610d1a90610100900460ff166110af565b92506064600a8402600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519390920486019450600160a060020a0316916370a08231916024808201926020929091908290030181600087803b158015610d8e57600080fd5b505af1158015610da2573d6000803e3d6000fd5b505050506040513d6020811015610db857600080fd5b50519050818114610dc857600080fd5b600283046007555b50506006805460a060020a60ff02191660a060020a17905550565b6104ed33611161565b61016d81565b60075490565b600654760100000000000000000000000000000000000000000000900460ff1690565b6104ed33611172565b60005460a060020a900460ff1615610e4357600080fd5b600554620100009004600160a060020a03163314610e6057600080fd5b600160065460a060020a900460ff166003811115610e7a57fe5b14610e8457600080fd5b60065460a860020a900460ff161515610e9c57600080fd5b6006805475ff00000000000000000000000000000000000000000019169055565b6104ed33611183565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610f2b57600080fd5b505af1158015610f3f573d6000803e3d6000fd5b505050506040513d6020811015610f5557600080fd5b505190506000811115610f8557600054600154610f8591600160a060020a0391821691168363ffffffff610f8d16565b610719611194565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561100957600080fd5b505af115801561101d573d6000803e3d6000fd5b505050506040513d602081101561103357600080fd5b5051151561104057600080fd5b505050565b61071960048263ffffffff6111ac16565b61071960038263ffffffff6111ac16565b6000600160a060020a038216151561107e57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61071960028263ffffffff6111ac16565b600060ff821615156110cc575069152d02c7e14af6800000610790565b8160ff16600114156110e9575069d3c21bcecceda1000000610790565b8160ff166002141561110757506a01a784379d99db42000000610790565b8160ff166003141561112557506a027b46536c66c8e3000000610790565b8160ff166004141561114357506a034f086f3b33b684000000610790565b8160ff166005141561079057506a0422ca8b0a00a425000000610790565b61071960048263ffffffff6111fa16565b61071960038263ffffffff6111fa16565b61071960028263ffffffff6111fa16565b6000805460a060020a60ff02191660a060020a179055565b600160a060020a03811615156111c157600080fd5b6111cb8282611067565b156111d557600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561120f57600080fd5b6112198282611067565b151561122457600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058205f527260d789022d74031e68eb390ff4f3057e6fce4f2adde7c12af38948fde60029", + "bytecode": "60806040523480156200001157600080fd5b5060405160a080620014d1833981016040908152815160208301519183015160608401516080909401516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790559294919262000087906401000000006200018e810204565b6200009b33640100000000620001ac810204565b620000af33640100000000620001c7810204565b60008460ff1610158015620000c8575060058460ff1611155b1515620000d457600080fd5b600160a060020a0383161515620000ea57600080fd5b6000856001811115620000f957fe5b14156200011657600160a060020a03821615156200011657600080fd5b6005805486919060ff1916600183818111156200012f57fe5b0217905550506005805461ff00191661010060ff9590951694909402939093176201000060b060020a03191662010000600160a060020a03938416021790925560068054600160a060020a031916929091169190911790555062000275565b620001a960028264010000000062001186620001e282021704565b50565b620001a960038264010000000062001186620001e282021704565b620001a960048264010000000062001186620001e282021704565b600160a060020a0381161515620001f857600080fd5b6200020d82826401000000006200023d810204565b156200021857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200025557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61124c80620002856000396000f3006080604052600436106101745763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630c08bf888114610179578063162f986d146101905780631777fb4b146101a557806319a74ab3146101ce57806321b79d98146101e3578063231d4e2a146101f857806329d10b6e146102195780632e6b68491461023a578063302c11ca1461025b578063329b1c921461028c57806334cdcf26146102a1578063363aa6c7146102c25780633e6968b6146102d7578063427534a4146103035780634969ae7014610318578063608d3d3d1461034357806374be75921461036457806380258e471461038557806381a244591461039a5780638329138f146103bb57806399f4b251146103e25780639e614ca0146103f7578063b2a32cd51461040c578063be95249414610421578063cdfd0f6414610436578063ce41607a1461045d578063d43acc7914610472578063da40867914610487578063e9d618591461049c575b600080fd5b34801561018557600080fd5b5061018e6104b1565b005b34801561019c57600080fd5b5061018e6104cf565b3480156101b157600080fd5b506101ba61053e565b604080519115158252519081900360200190f35b3480156101da57600080fd5b506101ba610543565b3480156101ef57600080fd5b5061018e61057a565b34801561020457600080fd5b5061018e600160a060020a0360043516610610565b34801561022557600080fd5b5061018e600160a060020a03600435166106fc565b34801561024657600080fd5b5061018e600160a060020a0360043516610719565b34801561026757600080fd5b50610270610736565b60408051600160a060020a039092168252519081900360200190f35b34801561029857600080fd5b5061027061074b565b3480156102ad57600080fd5b506101ba600160a060020a036004351661075a565b3480156102ce57600080fd5b5061018e610775565b3480156102e357600080fd5b506102ec610826565b6040805161ffff9092168252519081900360200190f35b34801561030f57600080fd5b5061018e610837565b34801561032457600080fd5b5061032d6108a3565b6040805160ff9092168252519081900360200190f35b34801561034f57600080fd5b506101ba600160a060020a03600435166108b7565b34801561037057600080fd5b5061018e600160a060020a03600435166108ca565b34801561039157600080fd5b5061032d6108e7565b3480156103a657600080fd5b506101ba600160a060020a03600435166108f5565b3480156103c757600080fd5b5061018e600160a060020a0360043581169060243516610908565b3480156103ee57600080fd5b5061018e6109bb565b34801561040357600080fd5b5061018e610bfc565b34801561041857600080fd5b5061018e610c6d565b34801561042d57600080fd5b5061018e610dcb565b34801561044257600080fd5b5061044b610dd4565b60408051918252519081900360200190f35b34801561046957600080fd5b5061032d610dda565b34801561047e57600080fd5b5061018e610dfd565b34801561049357600080fd5b5061018e610e06565b3480156104a857600080fd5b5061018e610e97565b6104ba336108b7565b15156104c557600080fd5b6104cd610ea0565b565b60005460a060020a900460ff16156104e657600080fd5b6104ef336108f5565b15156104fa57600080fd5b600160065460a060020a900460ff16600381111561051457fe5b1461051e57600080fd5b600680546002919060a060020a60ff02191660a060020a835b0217905550565b600190565b6000600160065460a060020a900460ff16600381111561055f57fe5b148015610575575060065460a860020a900460ff165b905090565b60005460a060020a900460ff161561059157600080fd5b600554620100009004600160a060020a031633146105ae57600080fd5b600160065460a060020a900460ff1660038111156105c857fe5b146105d257600080fd5b60065460a860020a900460ff16156105e957600080fd5b6006805475ff000000000000000000000000000000000000000000191660a860020a179055565b610619336108b7565b151561062457600080fd5b600060065460a060020a900460ff16600381111561063e57fe5b1461064857600080fd5b600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516106f9928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d60208110156106de57600080fd5b5051600154600160a060020a0316919063ffffffff610f6716565b50565b610705336108f5565b151561071057600080fd5b6106f98161101f565b610722336108b7565b151561072d57600080fd5b6106f981611030565b600554620100009004600160a060020a031690565b600654600160a060020a031690565b600061076d60028363ffffffff61104116565b90505b919050565b60005460a060020a900460ff161561078c57600080fd5b610795336108f5565b15156107a057600080fd5b600360065460a060020a900460ff1660038111156107ba57fe5b14156107c557600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff00001916905560a060020a60ff021916740300000000000000000000000000000000000000001775ff00ffffffffffffffffffffffffffffffffffffffff19169055565b60065460b860020a900461ffff1690565b60005460a060020a900460ff161561084e57600080fd5b610857336108f5565b151561086257600080fd5b600260065460a060020a900460ff16600381111561087c57fe5b1461088657600080fd5b600680546001919060a060020a60ff02191660a060020a83610537565b60055460009060ff16600181111561057557fe5b600061076d60038363ffffffff61104116565b6108d33361075a565b15156108de57600080fd5b6106f981611078565b600554610100900460ff1690565b600061076d60048363ffffffff61104116565b60005460a060020a900460ff161561091f57600080fd5b610928336108f5565b151561093357600080fd5b600360065460a060020a900460ff16600381111561094d57fe5b1461095757600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a039687160217905560a060020a60ff02191660a060020a1773ffffffffffffffffffffffffffffffffffffffff191691909216179055565b60008054819060a060020a900460ff16156109d557600080fd5b6109de3361075a565b15156109e957600080fd5b600060055460ff1660018111156109fc57fe5b14610a0657600080fd5b600160065460a060020a900460ff166003811115610a2057fe5b14610a2a57600080fd5b60065460a860020a900460ff161515610a4257600080fd5b60065460b860020a900461ffff161515610ab8576006805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610b80565b60068054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610b80576006805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600754600290046007555b505060075461016d90046064600a82020460008211610b9e57600080fd5b60008111610bab57600080fd5b600554600154610bd591600160a060020a039182169162010000909104168463ffffffff610f6716565b600654600154610bf891600160a060020a0391821691168363ffffffff610f6716565b5050565b60005460a060020a900460ff1615610c1357600080fd5b610c1c336108b7565b1515610c2757600080fd5b600060065460a060020a900460ff166003811115610c4157fe5b1415610c4c57600080fd5b6006805475ffff000000000000000000000000000000000000000019169055565b600080548190819060a060020a900460ff1615610c8957600080fd5b610c92336108b7565b1515610c9d57600080fd5b600060065460a060020a900460ff166003811115610cb757fe5b14610cc157600080fd5b600060055460ff166001811115610cd457fe5b148015610ce15750600754155b15610db057600554610cfa90610100900460ff16611089565b92506064600a8402600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519390920486019450600160a060020a0316916370a08231916024808201926020929091908290030181600087803b158015610d6e57600080fd5b505af1158015610d82573d6000803e3d6000fd5b505050506040513d6020811015610d9857600080fd5b50519050818114610da857600080fd5b600283046007555b50506006805460a060020a60ff02191660a060020a17905550565b6104cd3361113b565b60075490565b600654760100000000000000000000000000000000000000000000900460ff1690565b6104cd3361114c565b60005460a060020a900460ff1615610e1d57600080fd5b600554620100009004600160a060020a03163314610e3a57600080fd5b600160065460a060020a900460ff166003811115610e5457fe5b14610e5e57600080fd5b60065460a860020a900460ff161515610e7657600080fd5b6006805475ff00000000000000000000000000000000000000000019169055565b6104cd3361115d565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610f0557600080fd5b505af1158015610f19573d6000803e3d6000fd5b505050506040513d6020811015610f2f57600080fd5b505190506000811115610f5f57600054600154610f5f91600160a060020a0391821691168363ffffffff610f6716565b6106f961116e565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610fe357600080fd5b505af1158015610ff7573d6000803e3d6000fd5b505050506040513d602081101561100d57600080fd5b5051151561101a57600080fd5b505050565b6106f960048263ffffffff61118616565b6106f960038263ffffffff61118616565b6000600160a060020a038216151561105857600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106f960028263ffffffff61118616565b600060ff821615156110a6575069152d02c7e14af6800000610770565b8160ff16600114156110c3575069d3c21bcecceda1000000610770565b8160ff16600214156110e157506a01a784379d99db42000000610770565b8160ff16600314156110ff57506a027b46536c66c8e3000000610770565b8160ff166004141561111d57506a034f086f3b33b684000000610770565b8160ff166005141561077057506a0422ca8b0a00a425000000610770565b6106f960048263ffffffff6111d416565b6106f960038263ffffffff6111d416565b6106f960028263ffffffff6111d416565b6000805460a060020a60ff02191660a060020a179055565b600160a060020a038116151561119b57600080fd5b6111a58282611041565b156111af57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a03811615156111e957600080fd5b6111f38282611041565b15156111fe57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058202935a8fadd5caa8f5a9312cd903c07814b3de5662642cabdc9018c364221db570029", "functionHashes": { - "DAYS_PER_YEAR()": "c6846ef8", "activateMiner()": "b2a32cd5", "addCoreTeam(address)": "2e6b6849", "addSupervisor(address)": "29d10b6e", @@ -442,12 +427,11 @@ }, "gasEstimates": { "creation": { - "codeDepositCost": "944400", + "codeDepositCost": "936800", "executionCost": "infinite", "totalCost": "infinite" }, "external": { - "DAYS_PER_YEAR()": "712", "activateMiner()": "infinite", "addCoreTeam(address)": "infinite", "addSupervisor(address)": "infinite", @@ -455,8 +439,8 @@ "deactivateMiner()": "infinite", "getCategory()": "784", "getCurrentDay()": "737", - "getCurrentYear()": "982", - "getCurrentYearSupply()": "934", + "getCurrentYear()": "960", + "getCurrentYearSupply()": "912", "getMiner()": "724", "getMinerType()": "744", "getReferral()": "735", @@ -475,7 +459,7 @@ "resumeMining()": "infinite", "startMining()": "21742", "stopAndRemoveOwnership()": "infinite", - "stopMining()": "22204", + "stopMining()": "22182", "terminate()": "infinite" } } diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json index 037fd2a45..fd6a01337 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json @@ -196,9 +196,9 @@ "evm": { "bytecode": { "linkReferences": {}, - "object": "608060405234801561001057600080fd5b506040516040806107f28339810160405280516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561006f90640100000000610093810204565b6003805483919060ff19166001838181111561008757fe5b0217905550505061013c565b6100ab6002826401000000006105e16100ae82021704565b50565b600160a060020a03811615156100c357600080fd5b6100d68282640100000000610105810204565b156100e057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561011c57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106a78061014b6000396000f3006080604052600436106100535763ffffffff60e060020a6000350416630c08bf8881146100585780632e6b68491461006f578063608d3d3d14610090578063d43acc79146100c5578063fe4028bb146100da575b600080fd5b34801561006457600080fd5b5061006d6100fb565b005b34801561007b57600080fd5b5061006d600160a060020a0360043516610119565b34801561009c57600080fd5b506100b1600160a060020a0360043516610139565b604080519115158252519081900360200190f35b3480156100d157600080fd5b5061006d610154565b3480156100e657600080fd5b5061006d600160a060020a036004351661015d565b61010433610139565b151561010f57600080fd5b610117610339565b565b61012233610139565b151561012d57600080fd5b61013681610400565b50565b600061014c60028363ffffffff61041116565b90505b919050565b61011733610448565b600080548190819074010000000000000000000000000000000000000000900460ff161561018a57600080fd5b61019333610139565b151561019e57600080fd5b600160a060020a03841660009081526004602052604090205460ff16156101c457600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561020557600080fd5b505af1158015610219573d6000803e3d6000fd5b505050506040513d602081101561022f57600080fd5b5051151561023c57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561027a57600080fd5b505af115801561028e573d6000803e3d6000fd5b505050506040513d60208110156102a457600080fd5b50519150600060ff8316108015906102c0575060058260ff1611155b15156102cb57600080fd5b6102d482610459565b9050600160035460ff1660018111156102e957fe5b14156102f9576064600a82020490505b600160a060020a038085166000908152600460205260409020805460ff19166001908117909155546103339116858363ffffffff61050b16565b50505050565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561039e57600080fd5b505af11580156103b2573d6000803e3d6000fd5b505050506040513d60208110156103c857600080fd5b5051905060008111156103f8576000546001546103f891600160a060020a0391821691168363ffffffff61050b16565b6101366105aa565b61013660028263ffffffff6105e116565b6000600160a060020a038216151561042857600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61013660028263ffffffff61062f16565b600060ff82161515610476575069152d02c7e14af680000061014f565b8160ff1660011415610493575069d3c21bcecceda100000061014f565b8160ff16600214156104b157506a01a784379d99db4200000061014f565b8160ff16600314156104cf57506a027b46536c66c8e300000061014f565b8160ff16600414156104ed57506a034f086f3b33b68400000061014f565b8160ff166005141561014f57506a0422ca8b0a00a42500000061014f565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561056e57600080fd5b505af1158015610582573d6000803e3d6000fd5b505050506040513d602081101561059857600080fd5b505115156105a557600080fd5b505050565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a03811615156105f657600080fd5b6106008282610411565b1561060a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561064457600080fd5b61064e8282610411565b151561065957600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820308aff6f9dcaa30d375fb4263114be30ddb9e7b07df39a8a98ba43cf3e23cf7e0029", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 PUSH2 0x7F2 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP2 DUP3 AND DUP2 OR PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND OR SWAP1 SSTORE PUSH2 0x6F SWAP1 PUSH5 0x100000000 PUSH2 0x93 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD DUP4 SWAP2 SWAP1 PUSH1 0xFF NOT AND PUSH1 0x1 DUP4 DUP2 DUP2 GT ISZERO PUSH2 0x87 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP POP POP PUSH2 0x13C JUMP JUMPDEST PUSH2 0xAB PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH2 0x5E1 PUSH2 0xAE DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 DUP3 DUP3 PUSH5 0x100000000 PUSH2 0x105 DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH2 0xE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x11C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x6A7 DUP1 PUSH2 0x14B PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x53 JUMPI PUSH4 0xFFFFFFFF PUSH1 0xE0 PUSH1 0x2 EXP PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0xC08BF88 DUP2 EQ PUSH2 0x58 JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x90 JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0xC5 JUMPI DUP1 PUSH4 0xFE4028BB EQ PUSH2 0xDA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D PUSH2 0xFB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB1 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x139 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D PUSH2 0x154 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x15D JUMP JUMPDEST PUSH2 0x104 CALLER PUSH2 0x139 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x10F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x117 PUSH2 0x339 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x122 CALLER PUSH2 0x139 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x12D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x136 DUP2 PUSH2 0x400 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14C PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x411 AND JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x117 CALLER PUSH2 0x448 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 DUP2 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x18A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x193 CALLER PUSH2 0x139 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 SWAP3 POP DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x219 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x22F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x23C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x28E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP PUSH1 0x0 PUSH1 0xFF DUP4 AND LT DUP1 ISZERO SWAP1 PUSH2 0x2C0 JUMPI POP PUSH1 0x5 DUP3 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2D4 DUP3 PUSH2 0x459 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x3 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x2E9 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x2F9 JUMPI PUSH1 0x64 PUSH1 0xA DUP3 MUL DIV SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x333 SWAP2 AND DUP6 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x50B AND JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0x3F8 JUMPI PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0x3F8 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0x50B AND JUMP JUMPDEST PUSH2 0x136 PUSH2 0x5AA JUMP JUMPDEST PUSH2 0x136 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x5E1 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x136 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x62F AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND ISZERO ISZERO PUSH2 0x476 JUMPI POP PUSH10 0x152D02C7E14AF6800000 PUSH2 0x14F JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x493 JUMPI POP PUSH10 0xD3C21BCECCEDA1000000 PUSH2 0x14F JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x4B1 JUMPI POP PUSH11 0x1A784379D99DB42000000 PUSH2 0x14F JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x4CF JUMPI POP PUSH11 0x27B46536C66C8E3000000 PUSH2 0x14F JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x4ED JUMPI POP PUSH11 0x34F086F3B33B684000000 PUSH2 0x14F JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x14F JUMPI POP PUSH11 0x422CA8B0A00A425000000 PUSH2 0x14F JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x56E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x582 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x598 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x5A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x5F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x600 DUP3 DUP3 PUSH2 0x411 JUMP JUMPDEST ISZERO PUSH2 0x60A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x644 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64E DUP3 DUP3 PUSH2 0x411 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x659 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 ADDRESS DUP11 SELFDESTRUCT PUSH16 0x9DCAA30D375FB4263114BE30DDB9E7B0 PUSH30 0xF39A8A98BA43CF3E23CF7E00290000000000000000000000000000000000 ", - "sourceMap": "552:1251:2:-;;;814:176;8:9:-1;5:2;;;30:1;27;20:12;5:2;814:176:2;;;;;;;;;;;;;;;;;;;156:8:5;:21;;167:10;-1:-1:-1;;;;;;156:21:5;;;;;-1:-1:-1;;;;;;188:19:5;;;;-1:-1:-1;636:29:3;;;;;-1:-1:-1;;;;;636:29:3;;;;;368:24:1;;:12;;;;:24;:::i;:::-;962:9:2;:20;;974:8;;962:9;-1:-1:-1;;962:20:2;;974:8;962:20;;;;;;;;;;;;;814:176;;552:1251;;824:96:1;883:29;:16;904:7;883:20;;;;;;:29;:::i;:::-;824:96;:::o;244:167:6:-;-1:-1:-1;;;;;316:21:6;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:6;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:6;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:6;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:6;:11;:20;;;;;;;;;;;;;;;725:166::o;552:1251:2:-;;;;;;;" + "object": "608060405234801561001057600080fd5b506040516040806107f28339810160405280516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561006f90640100000000610093810204565b6003805483919060ff19166001838181111561008757fe5b0217905550505061013c565b6100ab6002826401000000006105e16100ae82021704565b50565b600160a060020a03811615156100c357600080fd5b6100d68282640100000000610105810204565b156100e057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561011c57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106a78061014b6000396000f3006080604052600436106100535763ffffffff60e060020a6000350416630c08bf8881146100585780632e6b68491461006f578063608d3d3d14610090578063d43acc79146100c5578063fe4028bb146100da575b600080fd5b34801561006457600080fd5b5061006d6100fb565b005b34801561007b57600080fd5b5061006d600160a060020a0360043516610119565b34801561009c57600080fd5b506100b1600160a060020a0360043516610139565b604080519115158252519081900360200190f35b3480156100d157600080fd5b5061006d610154565b3480156100e657600080fd5b5061006d600160a060020a036004351661015d565b61010433610139565b151561010f57600080fd5b610117610339565b565b61012233610139565b151561012d57600080fd5b61013681610400565b50565b600061014c60028363ffffffff61041116565b90505b919050565b61011733610448565b600080548190819074010000000000000000000000000000000000000000900460ff161561018a57600080fd5b61019333610139565b151561019e57600080fd5b600160a060020a03841660009081526004602052604090205460ff16156101c457600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561020557600080fd5b505af1158015610219573d6000803e3d6000fd5b505050506040513d602081101561022f57600080fd5b5051151561023c57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561027a57600080fd5b505af115801561028e573d6000803e3d6000fd5b505050506040513d60208110156102a457600080fd5b50519150600060ff8316108015906102c0575060058260ff1611155b15156102cb57600080fd5b6102d482610459565b9050600160035460ff1660018111156102e957fe5b14156102f9576064600a82020490505b600160a060020a038085166000908152600460205260409020805460ff19166001908117909155546103339116858363ffffffff61050b16565b50505050565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561039e57600080fd5b505af11580156103b2573d6000803e3d6000fd5b505050506040513d60208110156103c857600080fd5b5051905060008111156103f8576000546001546103f891600160a060020a0391821691168363ffffffff61050b16565b6101366105aa565b61013660028263ffffffff6105e116565b6000600160a060020a038216151561042857600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61013660028263ffffffff61062f16565b600060ff82161515610476575069152d02c7e14af680000061014f565b8160ff1660011415610493575069d3c21bcecceda100000061014f565b8160ff16600214156104b157506a01a784379d99db4200000061014f565b8160ff16600314156104cf57506a027b46536c66c8e300000061014f565b8160ff16600414156104ed57506a034f086f3b33b68400000061014f565b8160ff166005141561014f57506a0422ca8b0a00a42500000061014f565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561056e57600080fd5b505af1158015610582573d6000803e3d6000fd5b505050506040513d602081101561059857600080fd5b505115156105a557600080fd5b505050565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a03811615156105f657600080fd5b6106008282610411565b1561060a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561064457600080fd5b61064e8282610411565b151561065957600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820607cdb7d48cff40583123be547a706873bba6b846ef7d5e3d0130e7698d76c6e0029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 PUSH2 0x7F2 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP2 DUP3 AND DUP2 OR PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND OR SWAP1 SSTORE PUSH2 0x6F SWAP1 PUSH5 0x100000000 PUSH2 0x93 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD DUP4 SWAP2 SWAP1 PUSH1 0xFF NOT AND PUSH1 0x1 DUP4 DUP2 DUP2 GT ISZERO PUSH2 0x87 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP POP POP PUSH2 0x13C JUMP JUMPDEST PUSH2 0xAB PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH2 0x5E1 PUSH2 0xAE DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 DUP3 DUP3 PUSH5 0x100000000 PUSH2 0x105 DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH2 0xE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x11C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x6A7 DUP1 PUSH2 0x14B PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x53 JUMPI PUSH4 0xFFFFFFFF PUSH1 0xE0 PUSH1 0x2 EXP PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0xC08BF88 DUP2 EQ PUSH2 0x58 JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x90 JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0xC5 JUMPI DUP1 PUSH4 0xFE4028BB EQ PUSH2 0xDA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D PUSH2 0xFB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB1 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x139 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D PUSH2 0x154 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x15D JUMP JUMPDEST PUSH2 0x104 CALLER PUSH2 0x139 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x10F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x117 PUSH2 0x339 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x122 CALLER PUSH2 0x139 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x12D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x136 DUP2 PUSH2 0x400 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14C PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x411 AND JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x117 CALLER PUSH2 0x448 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 DUP2 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x18A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x193 CALLER PUSH2 0x139 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 SWAP3 POP DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x219 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x22F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x23C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x28E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP PUSH1 0x0 PUSH1 0xFF DUP4 AND LT DUP1 ISZERO SWAP1 PUSH2 0x2C0 JUMPI POP PUSH1 0x5 DUP3 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2D4 DUP3 PUSH2 0x459 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x3 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x2E9 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x2F9 JUMPI PUSH1 0x64 PUSH1 0xA DUP3 MUL DIV SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x333 SWAP2 AND DUP6 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x50B AND JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0x3F8 JUMPI PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0x3F8 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0x50B AND JUMP JUMPDEST PUSH2 0x136 PUSH2 0x5AA JUMP JUMPDEST PUSH2 0x136 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x5E1 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x136 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x62F AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND ISZERO ISZERO PUSH2 0x476 JUMPI POP PUSH10 0x152D02C7E14AF6800000 PUSH2 0x14F JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x493 JUMPI POP PUSH10 0xD3C21BCECCEDA1000000 PUSH2 0x14F JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x4B1 JUMPI POP PUSH11 0x1A784379D99DB42000000 PUSH2 0x14F JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x4CF JUMPI POP PUSH11 0x27B46536C66C8E3000000 PUSH2 0x14F JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x4ED JUMPI POP PUSH11 0x34F086F3B33B684000000 PUSH2 0x14F JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x14F JUMPI POP PUSH11 0x422CA8B0A00A425000000 PUSH2 0x14F JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x56E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x582 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x598 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x5A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x5F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x600 DUP3 DUP3 PUSH2 0x411 JUMP JUMPDEST ISZERO PUSH2 0x60A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x644 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64E DUP3 DUP3 PUSH2 0x411 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x659 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 PUSH1 0x7C 0xdb PUSH30 0x48CFF40583123BE547A706873BBA6B846EF7D5E3D0130E7698D76C6E0029 ", + "sourceMap": "552:1259:2:-;;;822:176;8:9:-1;5:2;;;30:1;27;20:12;5:2;822:176:2;;;;;;;;;;;;;;;;;;;156:8:5;:21;;167:10;-1:-1:-1;;;;;;156:21:5;;;;;-1:-1:-1;;;;;;188:19:5;;;;-1:-1:-1;636:29:3;;;;;-1:-1:-1;;;;;636:29:3;;;;;368:24:1;;:12;;;;:24;:::i;:::-;970:9:2;:20;;982:8;;970:9;-1:-1:-1;;970:20:2;;982:8;970:20;;;;;;;;;;;;;822:176;;552:1259;;824:96:1;883:29;:16;904:7;883:20;;;;;;:29;:::i;:::-;824:96;:::o;244:167:6:-;-1:-1:-1;;;;;316:21:6;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:6;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:6;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:6;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:6;:11;:20;;;;;;;;;;;;;;;725:166::o;552:1259:2:-;;;;;;;" }, "gasEstimates": { "creation": { @@ -222,7 +222,7 @@ "transferToMiner(address)": "fe4028bb" } }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"terminate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"transferToMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"poolType\",\"type\":\"uint8\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":\"AlgoPool\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol\":{\"keccak256\":\"0x2314139702cc63c8daa379e521abea3be32730ba896f68f3f865749907e64539\",\"urls\":[\"bzzr://b945e0ec5a4ca8a52b5e816c5bb00807d0ca43c5363102821b36c8c4ee98a2d5\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":{\"keccak256\":\"0x179545317a5a90b291e06fe2b272fe9a130a477c23e3b697d0c68c3242056541\",\"urls\":[\"bzzr://4c635d92bb64d5df527aaaa1b16ec83bfbbdbe4b2f2b4759fa806d27478be2a3\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol\":{\"keccak256\":\"0x71adbf7f060599239b7a981594e43dc8fbe8597fd2853b6fe9e70ff39883d73a\",\"urls\":[\"bzzr://70691c1638cdc0f744f8c5b5a94e4f857ba40ad053816cfbd15e13ed41a3bc66\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0x1b1359f75f7d5a943ab06caea36824f0a6448c5ffa1a32ed7e26cee81cf3683a\",\"urls\":[\"bzzr://26177d59d0c84fa4e632538fbd44802f219e6501b0828533badcf80701cea0f5\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol\":{\"keccak256\":\"0x29a8fa3204dbd204355714601ce21d7d717a586a4de21009d8f2a3ca7981963f\",\"urls\":[\"bzzr://55d9b762620cef1e6f7b11a26d6cc123f5b608a59e0d36f9bc0a1e8ff0ff5c42\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"terminate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"transferToMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"poolType\",\"type\":\"uint8\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":\"AlgoPool\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol\":{\"keccak256\":\"0x2314139702cc63c8daa379e521abea3be32730ba896f68f3f865749907e64539\",\"urls\":[\"bzzr://b945e0ec5a4ca8a52b5e816c5bb00807d0ca43c5363102821b36c8c4ee98a2d5\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":{\"keccak256\":\"0x044738efccefb3e008461bf78cc7bf52d39172dffd6bde0dd26446fc2e739866\",\"urls\":[\"bzzr://e8c3fa402a1f5c222df47b0b9dd0c10ea6f62afc2d269133a330f0ee7aa7297e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol\":{\"keccak256\":\"0x71adbf7f060599239b7a981594e43dc8fbe8597fd2853b6fe9e70ff39883d73a\",\"urls\":[\"bzzr://70691c1638cdc0f744f8c5b5a94e4f857ba40ad053816cfbd15e13ed41a3bc66\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0x1b1359f75f7d5a943ab06caea36824f0a6448c5ffa1a32ed7e26cee81cf3683a\",\"urls\":[\"bzzr://26177d59d0c84fa4e632538fbd44802f219e6501b0828533badcf80701cea0f5\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol\":{\"keccak256\":\"0x29a8fa3204dbd204355714601ce21d7d717a586a4de21009d8f2a3ca7981963f\",\"urls\":[\"bzzr://55d9b762620cef1e6f7b11a26d6cc123f5b608a59e0d36f9bc0a1e8ff0ff5c42\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -3215,8 +3215,8 @@ ], "contractDependencies": [ 97, - 184, 372, + 184, 442 ], "contractKind": "contract", @@ -3317,7 +3317,7 @@ "name": "_fundedMiners", "nodeType": "VariableDeclaration", "scope": 315, - "src": "767:38:2", + "src": "767:46:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3354,13 +3354,13 @@ } }, "value": null, - "visibility": "internal" + "visibility": "private" }, { "body": { "id": 226, "nodeType": "Block", - "src": "951:39:2", + "src": "959:39:2", "statements": [ { "expression": { @@ -3377,7 +3377,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 206, - "src": "962:9:2", + "src": "970:9:2", "typeDescriptions": { "typeIdentifier": "t_enum$_PoolType_$204", "typeString": "enum AlgoPool.PoolType" @@ -3392,13 +3392,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 212, - "src": "974:8:2", + "src": "982:8:2", "typeDescriptions": { "typeIdentifier": "t_enum$_PoolType_$204", "typeString": "enum AlgoPool.PoolType" } }, - "src": "962:20:2", + "src": "970:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_PoolType_$204", "typeString": "enum AlgoPool.PoolType" @@ -3406,7 +3406,7 @@ }, "id": 225, "nodeType": "ExpressionStatement", - "src": "962:20:2" + "src": "970:20:2" } ] }, @@ -3425,7 +3425,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 214, - "src": "893:12:2", + "src": "901:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3440,14 +3440,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 372, - "src": "876:16:2", + "src": "884:16:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ERC20TokenHolder_$372_$", "typeString": "type(contract ERC20TokenHolder)" } }, "nodeType": "ModifierInvocation", - "src": "876:30:2" + "src": "884:30:2" }, { "arguments": [], @@ -3459,14 +3459,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 184, - "src": "916:16:2", + "src": "924:16:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_AlgoCoreTeamRole_$184_$", "typeString": "type(contract AlgoCoreTeamRole)" } }, "nodeType": "ModifierInvocation", - "src": "916:18:2" + "src": "924:18:2" } ], "name": "", @@ -3481,7 +3481,7 @@ "name": "poolType", "nodeType": "VariableDeclaration", "scope": 227, - "src": "826:17:2", + "src": "834:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3494,7 +3494,7 @@ "name": "PoolType", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 204, - "src": "826:8:2", + "src": "834:8:2", "typeDescriptions": { "typeIdentifier": "t_enum$_PoolType_$204", "typeString": "enum AlgoPool.PoolType" @@ -3509,7 +3509,7 @@ "name": "tokenAddress", "nodeType": "VariableDeclaration", "scope": 227, - "src": "845:20:2", + "src": "853:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3520,7 +3520,7 @@ "id": 213, "name": "address", "nodeType": "ElementaryTypeName", - "src": "845:7:2", + "src": "853:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3530,17 +3530,17 @@ "visibility": "internal" } ], - "src": "825:41:2" + "src": "833:41:2" }, "payable": false, "returnParameters": { "id": 221, "nodeType": "ParameterList", "parameters": [], - "src": "951:0:2" + "src": "959:0:2" }, "scope": 315, - "src": "814:176:2", + "src": "822:176:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -3549,7 +3549,7 @@ "body": { "id": 304, "nodeType": "Block", - "src": "1079:641:2", + "src": "1087:641:2", "statements": [ { "expression": { @@ -3565,7 +3565,7 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1098:28:2", + "src": "1106:28:2", "subExpression": { "argumentTypes": null, "baseExpression": { @@ -3575,7 +3575,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 210, - "src": "1099:13:2", + "src": "1107:13:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" @@ -3589,7 +3589,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 229, - "src": "1113:12:2", + "src": "1121:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3600,7 +3600,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1099:27:2", + "src": "1107:27:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3627,7 +3627,7 @@ 896 ], "referencedDeclaration": 895, - "src": "1090:7:2", + "src": "1098:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -3641,7 +3641,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1090:37:2", + "src": "1098:37:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -3649,7 +3649,7 @@ }, "id": 242, "nodeType": "ExpressionStatement", - "src": "1090:37:2" + "src": "1098:37:2" }, { "assignments": [ @@ -3662,7 +3662,7 @@ "name": "algoMiner", "nodeType": "VariableDeclaration", "scope": 305, - "src": "1140:20:2", + "src": "1148:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3675,7 +3675,7 @@ "name": "IAlgoMiner", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 405, - "src": "1140:10:2", + "src": "1148:10:2", "typeDescriptions": { "typeIdentifier": "t_contract$_IAlgoMiner_$405", "typeString": "contract IAlgoMiner" @@ -3696,7 +3696,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 229, - "src": "1174:12:2", + "src": "1182:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3715,7 +3715,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 405, - "src": "1163:10:2", + "src": "1171:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$405_$", "typeString": "type(contract IAlgoMiner)" @@ -3729,14 +3729,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1163:24:2", + "src": "1171:24:2", "typeDescriptions": { "typeIdentifier": "t_contract$_IAlgoMiner_$405", "typeString": "contract IAlgoMiner" } }, "nodeType": "VariableDeclarationStatement", - "src": "1140:47:2" + "src": "1148:47:2" }, { "expression": { @@ -3754,7 +3754,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 244, - "src": "1216:9:2", + "src": "1224:9:2", "typeDescriptions": { "typeIdentifier": "t_contract$_IAlgoMiner_$405", "typeString": "contract IAlgoMiner" @@ -3768,7 +3768,7 @@ "memberName": "isAlgoMiner", "nodeType": "MemberAccess", "referencedDeclaration": 379, - "src": "1216:21:2", + "src": "1224:21:2", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$__$returns$_t_bool_$", "typeString": "function () pure external returns (bool)" @@ -3782,7 +3782,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1216:23:2", + "src": "1224:23:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3804,7 +3804,7 @@ 896 ], "referencedDeclaration": 895, - "src": "1208:7:2", + "src": "1216:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -3818,7 +3818,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1208:32:2", + "src": "1216:32:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -3826,7 +3826,7 @@ }, "id": 254, "nodeType": "ExpressionStatement", - "src": "1208:32:2" + "src": "1216:32:2" }, { "assignments": [ @@ -3839,7 +3839,7 @@ "name": "minerCategory", "nodeType": "VariableDeclaration", "scope": 305, - "src": "1261:19:2", + "src": "1269:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3850,7 +3850,7 @@ "id": 255, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1261:5:2", + "src": "1269:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3873,7 +3873,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 244, - "src": "1283:9:2", + "src": "1291:9:2", "typeDescriptions": { "typeIdentifier": "t_contract$_IAlgoMiner_$405", "typeString": "contract IAlgoMiner" @@ -3887,7 +3887,7 @@ "memberName": "getCategory", "nodeType": "MemberAccess", "referencedDeclaration": 389, - "src": "1283:21:2", + "src": "1291:21:2", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" @@ -3901,14 +3901,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1283:23:2", + "src": "1291:23:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", - "src": "1261:45:2" + "src": "1269:45:2" }, { "expression": { @@ -3943,7 +3943,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 256, - "src": "1327:13:2", + "src": "1335:13:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3961,7 +3961,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1344:1:2", + "src": "1352:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3969,7 +3969,7 @@ }, "value": "0" }, - "src": "1327:18:2", + "src": "1335:18:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3995,7 +3995,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 256, - "src": "1349:13:2", + "src": "1357:13:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4013,7 +4013,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1366:1:2", + "src": "1374:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -4021,13 +4021,13 @@ }, "value": "5" }, - "src": "1349:18:2", + "src": "1357:18:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1327:40:2", + "src": "1335:40:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4049,7 +4049,7 @@ 896 ], "referencedDeclaration": 895, - "src": "1319:7:2", + "src": "1327:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -4063,7 +4063,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1319:49:2", + "src": "1327:49:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -4071,7 +4071,7 @@ }, "id": 270, "nodeType": "ExpressionStatement", - "src": "1319:49:2" + "src": "1327:49:2" }, { "assignments": [ @@ -4084,7 +4084,7 @@ "name": "value", "nodeType": "VariableDeclaration", "scope": 305, - "src": "1381:13:2", + "src": "1389:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4095,7 +4095,7 @@ "id": 271, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1381:7:2", + "src": "1389:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4116,7 +4116,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 256, - "src": "1419:13:2", + "src": "1427:13:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4135,7 +4135,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, - "src": "1397:21:2", + "src": "1405:21:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint8_$returns$_t_uint256_$", "typeString": "function (uint8) pure returns (uint256)" @@ -4149,14 +4149,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1397:36:2", + "src": "1405:36:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1381:52:2" + "src": "1389:52:2" }, { "condition": { @@ -4177,7 +4177,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 206, - "src": "1528:9:2", + "src": "1536:9:2", "typeDescriptions": { "typeIdentifier": "t_enum$_PoolType_$204", "typeString": "enum AlgoPool.PoolType" @@ -4194,7 +4194,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 204, - "src": "1541:8:2", + "src": "1549:8:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_PoolType_$204_$", "typeString": "type(enum AlgoPool.PoolType)" @@ -4208,13 +4208,13 @@ "memberName": "ReferralPool", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1541:21:2", + "src": "1549:21:2", "typeDescriptions": { "typeIdentifier": "t_enum$_PoolType_$204", "typeString": "enum AlgoPool.PoolType" } }, - "src": "1528:34:2", + "src": "1536:34:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4223,11 +4223,11 @@ "falseBody": null, "id": 290, "nodeType": "IfStatement", - "src": "1525:90:2", + "src": "1533:90:2", "trueBody": { "id": 289, "nodeType": "Block", - "src": "1564:51:2", + "src": "1572:51:2", "statements": [ { "expression": { @@ -4244,7 +4244,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 272, - "src": "1579:5:2", + "src": "1587:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4281,7 +4281,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 272, - "src": "1587:5:2", + "src": "1595:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4299,7 +4299,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1595:2:2", + "src": "1603:2:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", @@ -4307,7 +4307,7 @@ }, "value": "10" }, - "src": "1587:10:2", + "src": "1595:10:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4325,7 +4325,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1600:3:2", + "src": "1608:3:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_100_by_1", @@ -4333,13 +4333,13 @@ }, "value": "100" }, - "src": "1587:16:2", + "src": "1595:16:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1579:24:2", + "src": "1587:24:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4347,7 +4347,7 @@ }, "id": 288, "nodeType": "ExpressionStatement", - "src": "1579:24:2" + "src": "1587:24:2" } ] } @@ -4369,7 +4369,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 210, - "src": "1627:13:2", + "src": "1635:13:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" @@ -4383,7 +4383,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 229, - "src": "1641:12:2", + "src": "1649:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4394,7 +4394,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1627:27:2", + "src": "1635:27:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4412,7 +4412,7 @@ "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1657:4:2", + "src": "1665:4:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4420,7 +4420,7 @@ }, "value": "true" }, - "src": "1627:34:2", + "src": "1635:34:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4428,7 +4428,7 @@ }, "id": 296, "nodeType": "ExpressionStatement", - "src": "1627:34:2" + "src": "1635:34:2" }, { "expression": { @@ -4441,7 +4441,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 229, - "src": "1692:12:2", + "src": "1700:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4454,7 +4454,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 272, - "src": "1706:5:2", + "src": "1714:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4479,7 +4479,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 327, - "src": "1672:6:2", + "src": "1680:6:2", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$733", "typeString": "contract IERC20" @@ -4493,7 +4493,7 @@ "memberName": "safeTransfer", "nodeType": "MemberAccess", "referencedDeclaration": 758, - "src": "1672:19:2", + "src": "1680:19:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$733_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$733_$", "typeString": "function (contract IERC20,address,uint256)" @@ -4507,7 +4507,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1672:40:2", + "src": "1680:40:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -4515,7 +4515,7 @@ }, "id": 303, "nodeType": "ExpressionStatement", - "src": "1672:40:2" + "src": "1680:40:2" } ] }, @@ -4535,14 +4535,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 433, - "src": "1052:13:2", + "src": "1060:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1052:13:2" + "src": "1060:13:2" }, { "arguments": null, @@ -4554,14 +4554,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "1066:12:2", + "src": "1074:12:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1066:12:2" + "src": "1074:12:2" } ], "name": "transferToMiner", @@ -4576,7 +4576,7 @@ "name": "minerAddress", "nodeType": "VariableDeclaration", "scope": 305, - "src": "1023:20:2", + "src": "1031:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4587,7 +4587,7 @@ "id": 228, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1023:7:2", + "src": "1031:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4597,17 +4597,17 @@ "visibility": "internal" } ], - "src": "1022:22:2" + "src": "1030:22:2" }, "payable": false, "returnParameters": { "id": 235, "nodeType": "ParameterList", "parameters": [], - "src": "1079:0:2" + "src": "1087:0:2" }, "scope": 315, - "src": "998:722:2", + "src": "1006:722:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -4616,7 +4616,7 @@ "body": { "id": 313, "nodeType": "Block", - "src": "1769:31:2", + "src": "1777:31:2", "statements": [ { "expression": { @@ -4631,7 +4631,7 @@ 371 ], "referencedDeclaration": 371, - "src": "1780:10:2", + "src": "1788:10:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" @@ -4645,7 +4645,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1780:12:2", + "src": "1788:12:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -4653,7 +4653,7 @@ }, "id": 312, "nodeType": "ExpressionStatement", - "src": "1780:12:2" + "src": "1788:12:2" } ] }, @@ -4673,14 +4673,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "1756:12:2", + "src": "1764:12:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1756:12:2" + "src": "1764:12:2" } ], "name": "terminate", @@ -4689,27 +4689,27 @@ "id": 306, "nodeType": "ParameterList", "parameters": [], - "src": "1746:2:2" + "src": "1754:2:2" }, "payable": false, "returnParameters": { "id": 309, "nodeType": "ParameterList", "parameters": [], - "src": "1769:0:2" + "src": "1777:0:2" }, "scope": 315, - "src": "1728:72:2", + "src": "1736:72:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], "scope": 316, - "src": "552:1251:2" + "src": "552:1259:2" } ], - "src": "0:1805:2" + "src": "0:1813:2" }, "id": 2 }, diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin index 09d3a38b5..e02c608ef 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b506040516040806107f28339810160405280516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561006f90640100000000610093810204565b6003805483919060ff19166001838181111561008757fe5b0217905550505061013c565b6100ab6002826401000000006105e16100ae82021704565b50565b600160a060020a03811615156100c357600080fd5b6100d68282640100000000610105810204565b156100e057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561011c57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106a78061014b6000396000f3006080604052600436106100535763ffffffff60e060020a6000350416630c08bf8881146100585780632e6b68491461006f578063608d3d3d14610090578063d43acc79146100c5578063fe4028bb146100da575b600080fd5b34801561006457600080fd5b5061006d6100fb565b005b34801561007b57600080fd5b5061006d600160a060020a0360043516610119565b34801561009c57600080fd5b506100b1600160a060020a0360043516610139565b604080519115158252519081900360200190f35b3480156100d157600080fd5b5061006d610154565b3480156100e657600080fd5b5061006d600160a060020a036004351661015d565b61010433610139565b151561010f57600080fd5b610117610339565b565b61012233610139565b151561012d57600080fd5b61013681610400565b50565b600061014c60028363ffffffff61041116565b90505b919050565b61011733610448565b600080548190819074010000000000000000000000000000000000000000900460ff161561018a57600080fd5b61019333610139565b151561019e57600080fd5b600160a060020a03841660009081526004602052604090205460ff16156101c457600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561020557600080fd5b505af1158015610219573d6000803e3d6000fd5b505050506040513d602081101561022f57600080fd5b5051151561023c57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561027a57600080fd5b505af115801561028e573d6000803e3d6000fd5b505050506040513d60208110156102a457600080fd5b50519150600060ff8316108015906102c0575060058260ff1611155b15156102cb57600080fd5b6102d482610459565b9050600160035460ff1660018111156102e957fe5b14156102f9576064600a82020490505b600160a060020a038085166000908152600460205260409020805460ff19166001908117909155546103339116858363ffffffff61050b16565b50505050565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561039e57600080fd5b505af11580156103b2573d6000803e3d6000fd5b505050506040513d60208110156103c857600080fd5b5051905060008111156103f8576000546001546103f891600160a060020a0391821691168363ffffffff61050b16565b6101366105aa565b61013660028263ffffffff6105e116565b6000600160a060020a038216151561042857600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61013660028263ffffffff61062f16565b600060ff82161515610476575069152d02c7e14af680000061014f565b8160ff1660011415610493575069d3c21bcecceda100000061014f565b8160ff16600214156104b157506a01a784379d99db4200000061014f565b8160ff16600314156104cf57506a027b46536c66c8e300000061014f565b8160ff16600414156104ed57506a034f086f3b33b68400000061014f565b8160ff166005141561014f57506a0422ca8b0a00a42500000061014f565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561056e57600080fd5b505af1158015610582573d6000803e3d6000fd5b505050506040513d602081101561059857600080fd5b505115156105a557600080fd5b505050565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a03811615156105f657600080fd5b6106008282610411565b1561060a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561064457600080fd5b61064e8282610411565b151561065957600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820308aff6f9dcaa30d375fb4263114be30ddb9e7b07df39a8a98ba43cf3e23cf7e0029 \ No newline at end of file +608060405234801561001057600080fd5b506040516040806107f28339810160405280516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561006f90640100000000610093810204565b6003805483919060ff19166001838181111561008757fe5b0217905550505061013c565b6100ab6002826401000000006105e16100ae82021704565b50565b600160a060020a03811615156100c357600080fd5b6100d68282640100000000610105810204565b156100e057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561011c57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106a78061014b6000396000f3006080604052600436106100535763ffffffff60e060020a6000350416630c08bf8881146100585780632e6b68491461006f578063608d3d3d14610090578063d43acc79146100c5578063fe4028bb146100da575b600080fd5b34801561006457600080fd5b5061006d6100fb565b005b34801561007b57600080fd5b5061006d600160a060020a0360043516610119565b34801561009c57600080fd5b506100b1600160a060020a0360043516610139565b604080519115158252519081900360200190f35b3480156100d157600080fd5b5061006d610154565b3480156100e657600080fd5b5061006d600160a060020a036004351661015d565b61010433610139565b151561010f57600080fd5b610117610339565b565b61012233610139565b151561012d57600080fd5b61013681610400565b50565b600061014c60028363ffffffff61041116565b90505b919050565b61011733610448565b600080548190819074010000000000000000000000000000000000000000900460ff161561018a57600080fd5b61019333610139565b151561019e57600080fd5b600160a060020a03841660009081526004602052604090205460ff16156101c457600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561020557600080fd5b505af1158015610219573d6000803e3d6000fd5b505050506040513d602081101561022f57600080fd5b5051151561023c57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561027a57600080fd5b505af115801561028e573d6000803e3d6000fd5b505050506040513d60208110156102a457600080fd5b50519150600060ff8316108015906102c0575060058260ff1611155b15156102cb57600080fd5b6102d482610459565b9050600160035460ff1660018111156102e957fe5b14156102f9576064600a82020490505b600160a060020a038085166000908152600460205260409020805460ff19166001908117909155546103339116858363ffffffff61050b16565b50505050565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561039e57600080fd5b505af11580156103b2573d6000803e3d6000fd5b505050506040513d60208110156103c857600080fd5b5051905060008111156103f8576000546001546103f891600160a060020a0391821691168363ffffffff61050b16565b6101366105aa565b61013660028263ffffffff6105e116565b6000600160a060020a038216151561042857600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61013660028263ffffffff61062f16565b600060ff82161515610476575069152d02c7e14af680000061014f565b8160ff1660011415610493575069d3c21bcecceda100000061014f565b8160ff16600214156104b157506a01a784379d99db4200000061014f565b8160ff16600314156104cf57506a027b46536c66c8e300000061014f565b8160ff16600414156104ed57506a034f086f3b33b68400000061014f565b8160ff166005141561014f57506a0422ca8b0a00a42500000061014f565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561056e57600080fd5b505af1158015610582573d6000803e3d6000fd5b505050506040513d602081101561059857600080fd5b505115156105a557600080fd5b505050565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a03811615156105f657600080fd5b6106008282610411565b1561060a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561064457600080fd5b61064e8282610411565b151561065957600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820607cdb7d48cff40583123be547a706873bba6b846ef7d5e3d0130e7698d76c6e0029 \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json index 3d3e99dc6..011ad68c3 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json @@ -81,7 +81,7 @@ "type": "constructor" } ], - "bytecode": "608060405234801561001057600080fd5b506040516040806107f28339810160405280516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561006f90640100000000610093810204565b6003805483919060ff19166001838181111561008757fe5b0217905550505061013c565b6100ab6002826401000000006105e16100ae82021704565b50565b600160a060020a03811615156100c357600080fd5b6100d68282640100000000610105810204565b156100e057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561011c57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106a78061014b6000396000f3006080604052600436106100535763ffffffff60e060020a6000350416630c08bf8881146100585780632e6b68491461006f578063608d3d3d14610090578063d43acc79146100c5578063fe4028bb146100da575b600080fd5b34801561006457600080fd5b5061006d6100fb565b005b34801561007b57600080fd5b5061006d600160a060020a0360043516610119565b34801561009c57600080fd5b506100b1600160a060020a0360043516610139565b604080519115158252519081900360200190f35b3480156100d157600080fd5b5061006d610154565b3480156100e657600080fd5b5061006d600160a060020a036004351661015d565b61010433610139565b151561010f57600080fd5b610117610339565b565b61012233610139565b151561012d57600080fd5b61013681610400565b50565b600061014c60028363ffffffff61041116565b90505b919050565b61011733610448565b600080548190819074010000000000000000000000000000000000000000900460ff161561018a57600080fd5b61019333610139565b151561019e57600080fd5b600160a060020a03841660009081526004602052604090205460ff16156101c457600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561020557600080fd5b505af1158015610219573d6000803e3d6000fd5b505050506040513d602081101561022f57600080fd5b5051151561023c57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561027a57600080fd5b505af115801561028e573d6000803e3d6000fd5b505050506040513d60208110156102a457600080fd5b50519150600060ff8316108015906102c0575060058260ff1611155b15156102cb57600080fd5b6102d482610459565b9050600160035460ff1660018111156102e957fe5b14156102f9576064600a82020490505b600160a060020a038085166000908152600460205260409020805460ff19166001908117909155546103339116858363ffffffff61050b16565b50505050565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561039e57600080fd5b505af11580156103b2573d6000803e3d6000fd5b505050506040513d60208110156103c857600080fd5b5051905060008111156103f8576000546001546103f891600160a060020a0391821691168363ffffffff61050b16565b6101366105aa565b61013660028263ffffffff6105e116565b6000600160a060020a038216151561042857600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61013660028263ffffffff61062f16565b600060ff82161515610476575069152d02c7e14af680000061014f565b8160ff1660011415610493575069d3c21bcecceda100000061014f565b8160ff16600214156104b157506a01a784379d99db4200000061014f565b8160ff16600314156104cf57506a027b46536c66c8e300000061014f565b8160ff16600414156104ed57506a034f086f3b33b68400000061014f565b8160ff166005141561014f57506a0422ca8b0a00a42500000061014f565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561056e57600080fd5b505af1158015610582573d6000803e3d6000fd5b505050506040513d602081101561059857600080fd5b505115156105a557600080fd5b505050565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a03811615156105f657600080fd5b6106008282610411565b1561060a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561064457600080fd5b61064e8282610411565b151561065957600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820308aff6f9dcaa30d375fb4263114be30ddb9e7b07df39a8a98ba43cf3e23cf7e0029", + "bytecode": "608060405234801561001057600080fd5b506040516040806107f28339810160405280516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561006f90640100000000610093810204565b6003805483919060ff19166001838181111561008757fe5b0217905550505061013c565b6100ab6002826401000000006105e16100ae82021704565b50565b600160a060020a03811615156100c357600080fd5b6100d68282640100000000610105810204565b156100e057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561011c57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106a78061014b6000396000f3006080604052600436106100535763ffffffff60e060020a6000350416630c08bf8881146100585780632e6b68491461006f578063608d3d3d14610090578063d43acc79146100c5578063fe4028bb146100da575b600080fd5b34801561006457600080fd5b5061006d6100fb565b005b34801561007b57600080fd5b5061006d600160a060020a0360043516610119565b34801561009c57600080fd5b506100b1600160a060020a0360043516610139565b604080519115158252519081900360200190f35b3480156100d157600080fd5b5061006d610154565b3480156100e657600080fd5b5061006d600160a060020a036004351661015d565b61010433610139565b151561010f57600080fd5b610117610339565b565b61012233610139565b151561012d57600080fd5b61013681610400565b50565b600061014c60028363ffffffff61041116565b90505b919050565b61011733610448565b600080548190819074010000000000000000000000000000000000000000900460ff161561018a57600080fd5b61019333610139565b151561019e57600080fd5b600160a060020a03841660009081526004602052604090205460ff16156101c457600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561020557600080fd5b505af1158015610219573d6000803e3d6000fd5b505050506040513d602081101561022f57600080fd5b5051151561023c57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561027a57600080fd5b505af115801561028e573d6000803e3d6000fd5b505050506040513d60208110156102a457600080fd5b50519150600060ff8316108015906102c0575060058260ff1611155b15156102cb57600080fd5b6102d482610459565b9050600160035460ff1660018111156102e957fe5b14156102f9576064600a82020490505b600160a060020a038085166000908152600460205260409020805460ff19166001908117909155546103339116858363ffffffff61050b16565b50505050565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561039e57600080fd5b505af11580156103b2573d6000803e3d6000fd5b505050506040513d60208110156103c857600080fd5b5051905060008111156103f8576000546001546103f891600160a060020a0391821691168363ffffffff61050b16565b6101366105aa565b61013660028263ffffffff6105e116565b6000600160a060020a038216151561042857600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61013660028263ffffffff61062f16565b600060ff82161515610476575069152d02c7e14af680000061014f565b8160ff1660011415610493575069d3c21bcecceda100000061014f565b8160ff16600214156104b157506a01a784379d99db4200000061014f565b8160ff16600314156104cf57506a027b46536c66c8e300000061014f565b8160ff16600414156104ed57506a034f086f3b33b68400000061014f565b8160ff166005141561014f57506a0422ca8b0a00a42500000061014f565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561056e57600080fd5b505af1158015610582573d6000803e3d6000fd5b505050506040513d602081101561059857600080fd5b505115156105a557600080fd5b505050565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a03811615156105f657600080fd5b6106008282610411565b1561060a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561064457600080fd5b61064e8282610411565b151561065957600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820607cdb7d48cff40583123be547a706873bba6b846ef7d5e3d0130e7698d76c6e0029", "functionHashes": { "addCoreTeam(address)": "2e6b6849", "isCoreTeam(address)": "608d3d3d", diff --git a/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest/EthNetwork.cs b/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest/EthNetwork.cs index 908600832..4ff2462e3 100644 --- a/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest/EthNetwork.cs +++ b/labs/framework/src/AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest/EthNetwork.cs @@ -26,7 +26,7 @@ namespace AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest public IGasPriceProvider GasPriceProvider { get; private set; } public BigInteger TxBaseFeeWei => GasPriceProvider.GetGasPrice() * TRANSACTION_BASE_FEE; - public static void UseDefaultTestNet() => UseGethTestNet(); + public static void UseDefaultTestNet() => UseGanacheTestNet(); public static void UseGanacheTestNet() { From 922905d5cad02886145eba2721420c0858d5ddb2 Mon Sep 17 00:00:00 2001 From: pmmax Date: Sat, 2 Mar 2019 11:18:59 -0300 Subject: [PATCH 16/17] Upgraded all contracts to Solidity 0.5.4. Fixed issues #15, #17, #18, #20 --- .../SmartContracts/src/AlgoTokenV1.sol | 2 +- .../src/bin/AlgoTokenV1-sol-output.json | 6637 ++++++------- .../SmartContracts/src/bin/AlgoTokenV1.bin | 2 +- .../SmartContracts/src/bin/AlgoTokenV1.json | 18 +- .../SmartContracts/src/package-lock.json | 514 +- .../SmartContracts/src/package.json | 4 +- .../SmartContracts/src/AlgoCommon.sol | 2 +- .../SmartContracts/src/AlgoCoreTeamRole.sol | 2 +- .../SmartContracts/src/AlgoFees.sol | 19 +- .../SmartContracts/src/AlgoMiner.sol | 4 +- .../SmartContracts/src/AlgoPool.sol | 4 +- .../SmartContracts/src/AlgoSupervisorRole.sol | 2 +- .../SmartContracts/src/AlgoSystemRole.sol | 2 +- .../SmartContracts/src/ERC20TokenHolder.sol | 2 +- .../SmartContracts/src/IAlgoMiner.sol | 2 +- .../SmartContracts/src/Terminable.sol | 2 +- .../src/bin/AlgoFees-sol-output.json | 7981 ++++++++------- .../SmartContracts/src/bin/AlgoFees.bin | 2 +- .../SmartContracts/src/bin/AlgoFees.json | 8 +- .../src/bin/AlgoMiner-sol-output.json | 8784 ++++++++--------- .../SmartContracts/src/bin/AlgoMiner.bin | 2 +- .../SmartContracts/src/bin/AlgoMiner.json | 26 +- .../src/bin/AlgoPool-sol-output.json | 4904 +++++---- .../SmartContracts/src/bin/AlgoPool.bin | 2 +- .../SmartContracts/src/bin/AlgoPool.json | 4 +- .../SmartContracts/src/package-lock.json | 506 +- .../SmartContracts/src/package.json | 4 +- 27 files changed, 14438 insertions(+), 15003 deletions(-) diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/AlgoTokenV1.sol b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/AlgoTokenV1.sol index 654d73592..c670b8d33 100644 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/AlgoTokenV1.sol +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/AlgoTokenV1.sol @@ -1,4 +1,4 @@ -pragma solidity 0.4.24; +pragma solidity 0.5.4; import "openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol"; import "openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol"; diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1-sol-output.json b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1-sol-output.json index 0f9d5373d..0daf3eb06 100644 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1-sol-output.json +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1-sol-output.json @@ -450,32 +450,32 @@ "evm": { "bytecode": { "linkReferences": {}, - "object": "60806040523480156200001157600080fd5b50604080518082018252600581527f416c676f7300000000000000000000000000000000000000000000000000000060208083019182528351808501909452600484527f414c474f00000000000000000000000000000000000000000000000000000000908401528151919291601291620000909160039190620002c1565b508151620000a6906004906020850190620002c1565b506005805460ff191660ff9290921691909117905550620000d290503364010000000062000103810204565b6007805460ff19169055620000fd336b033b2e3c9fd0803ce800000064010000000062000155810204565b62000366565b6200011e60068264010000000062000b226200021482021704565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b600160a060020a03821615156200016b57600080fd5b60025462000188908264010000000062000ac46200026f82021704565b600255600160a060020a038216600090815260208190526040902054620001be908264010000000062000ac46200026f82021704565b600160a060020a0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600160a060020a03811615156200022a57600080fd5b6200023f828264010000000062000289810204565b156200024a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000828201838110156200028257600080fd5b9392505050565b6000600160a060020a0382161515620002a157600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200030457805160ff191683800117855562000334565b8280016001018555821562000334579182015b828111156200033457825182559160200191906001019062000317565b506200034292915062000346565b5090565b6200036391905b808211156200034257600081556001016200034d565b90565b610b9c80620003766000396000f3006080604052600436106100fb5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610100578063095ea7b31461018a57806318160ddd146101c257806323b872dd146101e95780632ff2e9dc14610213578063313ce5671461022857806339509351146102535780633f4ba83a1461027757806346fbf68e1461028e5780635c975abb146102af5780636ef8d66d146102c457806370a08231146102d957806382dc1ec4146102fa5780638456cb591461031b57806395d89b4114610330578063a457c2d714610345578063a9059cbb14610369578063dd62ed3e1461038d575b600080fd5b34801561010c57600080fd5b506101156103b4565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014f578181015183820152602001610137565b50505050905090810190601f16801561017c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561019657600080fd5b506101ae600160a060020a036004351660243561044a565b604080519115158252519081900360200190f35b3480156101ce57600080fd5b506101d761046e565b60408051918252519081900360200190f35b3480156101f557600080fd5b506101ae600160a060020a0360043581169060243516604435610474565b34801561021f57600080fd5b506101d761049a565b34801561023457600080fd5b5061023d6104aa565b6040805160ff9092168252519081900360200190f35b34801561025f57600080fd5b506101ae600160a060020a03600435166024356104b3565b34801561028357600080fd5b5061028c6104d0565b005b34801561029a57600080fd5b506101ae600160a060020a0360043516610534565b3480156102bb57600080fd5b506101ae61054d565b3480156102d057600080fd5b5061028c610556565b3480156102e557600080fd5b506101d7600160a060020a0360043516610561565b34801561030657600080fd5b5061028c600160a060020a036004351661057c565b34801561032757600080fd5b5061028c61059c565b34801561033c57600080fd5b50610115610602565b34801561035157600080fd5b506101ae600160a060020a0360043516602435610663565b34801561037557600080fd5b506101ae600160a060020a0360043516602435610680565b34801561039957600080fd5b506101d7600160a060020a036004358116906024351661069d565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104405780601f1061041557610100808354040283529160200191610440565b820191906000526020600020905b81548152906001019060200180831161042357829003601f168201915b5050505050905090565b60075460009060ff161561045d57600080fd5b61046783836106c8565b9392505050565b60025490565b60075460009060ff161561048757600080fd5b610492848484610746565b949350505050565b6b033b2e3c9fd0803ce800000081565b60055460ff1690565b60075460009060ff16156104c657600080fd5b61046783836107e3565b6104d933610534565b15156104e457600080fd5b60075460ff1615156104f557600080fd5b6007805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b600061054760068363ffffffff61089316565b92915050565b60075460ff1690565b61055f336108ca565b565b600160a060020a031660009081526020819052604090205490565b61058533610534565b151561059057600080fd5b61059981610912565b50565b6105a533610534565b15156105b057600080fd5b60075460ff16156105c057600080fd5b6007805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104405780601f1061041557610100808354040283529160200191610440565b60075460009060ff161561067657600080fd5b610467838361095a565b60075460009060ff161561069357600080fd5b61046783836109a5565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b6000600160a060020a03831615156106df57600080fd5b336000818152600160209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b600160a060020a038316600090815260016020908152604080832033845290915281205482111561077657600080fd5b600160a060020a03841660009081526001602090815260408083203384529091529020546107aa908363ffffffff6109bb16565b600160a060020a03851660009081526001602090815260408083203384529091529020556107d98484846109d2565b5060019392505050565b6000600160a060020a03831615156107fa57600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461082e908363ffffffff610ac416565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b6000600160a060020a03821615156108aa57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6108db60068263ffffffff610ad616565b604051600160a060020a038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b61092360068263ffffffff610b2216565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6000600160a060020a038316151561097157600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461082e908363ffffffff6109bb16565b60006109b23384846109d2565b50600192915050565b600080838311156109cb57600080fd5b5050900390565b600160a060020a0383166000908152602081905260409020548111156109f757600080fd5b600160a060020a0382161515610a0c57600080fd5b600160a060020a038316600090815260208190526040902054610a35908263ffffffff6109bb16565b600160a060020a038085166000908152602081905260408082209390935590841681522054610a6a908263ffffffff610ac416565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282018381101561046757600080fd5b600160a060020a0381161515610aeb57600080fd5b610af58282610893565b1515610b0057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a0381161515610b3757600080fd5b610b418282610893565b15610b4b57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191660011790555600a165627a7a7230582061a190b3074a6fa0ab1f995699a75a855141c91dd51eb835ef565d0c7739360d0029", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x5 DUP2 MSTORE PUSH32 0x416C676F73000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE DUP4 MLOAD DUP1 DUP6 ADD SWAP1 SWAP5 MSTORE PUSH1 0x4 DUP5 MSTORE PUSH32 0x414C474F00000000000000000000000000000000000000000000000000000000 SWAP1 DUP5 ADD MSTORE DUP2 MLOAD SWAP2 SWAP3 SWAP2 PUSH1 0x12 SWAP2 PUSH3 0x90 SWAP2 PUSH1 0x3 SWAP2 SWAP1 PUSH3 0x2C1 JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0xA6 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x2C1 JUMP JUMPDEST POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0xD2 SWAP1 POP CALLER PUSH5 0x100000000 PUSH3 0x103 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH3 0xFD CALLER PUSH12 0x33B2E3C9FD0803CE8000000 PUSH5 0x100000000 PUSH3 0x155 DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x366 JUMP JUMPDEST PUSH3 0x11E PUSH1 0x6 DUP3 PUSH5 0x100000000 PUSH3 0xB22 PUSH3 0x214 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND SWAP1 PUSH32 0x6719D08C1888103BEA251A4ED56406BD0C3E69723C8A1686E017E7BBE159B6F8 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x16B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH3 0x188 SWAP1 DUP3 PUSH5 0x100000000 PUSH3 0xAC4 PUSH3 0x26F DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH3 0x1BE SWAP1 DUP3 PUSH5 0x100000000 PUSH3 0xAC4 PUSH3 0x26F DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH3 0x22A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x23F DUP3 DUP3 PUSH5 0x100000000 PUSH3 0x289 DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH3 0x24A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH3 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x304 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x334 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x334 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x334 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x317 JUMP JUMPDEST POP PUSH3 0x342 SWAP3 SWAP2 POP PUSH3 0x346 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0x363 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x342 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x34D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB9C DUP1 PUSH3 0x376 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xFB JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x6FDDE03 DUP2 EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1E9 JUMPI DUP1 PUSH4 0x2FF2E9DC EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x228 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x277 JUMPI DUP1 PUSH4 0x46FBF68E EQ PUSH2 0x28E JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x2AF JUMPI DUP1 PUSH4 0x6EF8D66D EQ PUSH2 0x2C4 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2D9 JUMPI DUP1 PUSH4 0x82DC1EC4 EQ PUSH2 0x2FA JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x31B JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x330 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x345 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x369 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x38D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x115 PUSH2 0x3B4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x14F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x137 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x17C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x44A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D7 PUSH2 0x46E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH1 0x44 CALLDATALOAD PUSH2 0x474 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D7 PUSH2 0x49A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x234 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23D PUSH2 0x4AA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x4B3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x4D0 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x534 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH2 0x54D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x556 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D7 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x561 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x306 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x57C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x59C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x115 PUSH2 0x602 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x351 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x663 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x375 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x680 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D7 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH2 0x69D JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x440 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x415 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x440 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x423 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x467 DUP4 DUP4 PUSH2 0x6C8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x487 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x492 DUP5 DUP5 DUP5 PUSH2 0x746 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH12 0x33B2E3C9FD0803CE8000000 DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x467 DUP4 DUP4 PUSH2 0x7E3 JUMP JUMPDEST PUSH2 0x4D9 CALLER PUSH2 0x534 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x4E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH2 0x4F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x547 PUSH1 0x6 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x893 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x55F CALLER PUSH2 0x8CA JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x585 CALLER PUSH2 0x534 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x590 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x599 DUP2 PUSH2 0x912 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x5A5 CALLER PUSH2 0x534 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x5B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x5C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x440 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x415 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x440 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x676 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x467 DUP4 DUP4 PUSH2 0x95A JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x693 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x467 DUP4 DUP4 PUSH2 0x9A5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH2 0x6DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP9 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP7 SWAP1 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x776 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x7AA SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x9BB AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE PUSH2 0x7D9 DUP5 DUP5 DUP5 PUSH2 0x9D2 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH2 0x7FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x82E SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xAC4 AND JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP10 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP1 MLOAD SWAP5 DUP6 MSTORE MLOAD SWAP2 SWAP4 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x8AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x8DB PUSH1 0x6 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xAD6 AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND SWAP1 PUSH32 0xCD265EBAF09DF2871CC7BD4133404A235BA12EFF2041BB89D9C714A2621C7C7E SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x923 PUSH1 0x6 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xB22 AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND SWAP1 PUSH32 0x6719D08C1888103BEA251A4ED56406BD0C3E69723C8A1686E017E7BBE159B6F8 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH2 0x971 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x82E SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x9BB AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9B2 CALLER DUP5 DUP5 PUSH2 0x9D2 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 GT ISZERO PUSH2 0x9CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x9F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xA0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xA35 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x9BB AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xA6A SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xAC4 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x467 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xAEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAF5 DUP3 DUP3 PUSH2 0x893 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xB00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xB37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB41 DUP3 DUP3 PUSH2 0x893 JUMP JUMPDEST ISZERO PUSH2 0xB4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 PUSH2 0xA190 0xb3 SMOD 0x4a PUSH16 0xA0AB1F995699A75A855141C91DD51EB8 CALLDATALOAD 0xef JUMP 0x5d 0xc PUSH24 0x39360D002900000000000000000000000000000000000000 ", - "sourceMap": "409:310:0:-;;;560:156;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;398:134:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;467:12;;398:134;;;639:2:0;;467:12:6;;:5;;398:134;467:12;:::i;:::-;-1:-1:-1;485:16:6;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;507:9:6;:20;;-1:-1:-1;;507:20:6;;;;;;;;;;;;-1:-1:-1;260:22:2;;-1:-1:-1;271:10:2;260;;;;:22;:::i;:::-;340:7:3;:15;;-1:-1:-1;;340:15:3;;;675:33:0;681:10;519:32;675:5;;;;:33;:::i;:::-;409:310;;629:108:2;681:20;:7;693;681:11;;;;;;:20;:::i;:::-;712;;-1:-1:-1;;;;;712:20:2;;;;;;;;629:108;:::o;5541:235:5:-;-1:-1:-1;;;;;5611:12:5;;;;5603:21;;;;;;5645:12;;:23;;5662:5;5645:16;;;;;;:23;:::i;:::-;5630:12;:38;-1:-1:-1;;;;;5695:18:5;;:9;:18;;;;;;;;;;;:29;;5718:5;5695:22;;;;;;:29;:::i;:::-;-1:-1:-1;;;;;5674:18:5;;:9;:18;;;;;;;;;;;:50;;;;5735:36;;;;;;;5674:18;;:9;;5735:36;;;;;;;;;;5541:235;;:::o;244:167:1:-;-1:-1:-1;;;;;316:21:1;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:1;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:1;402:4;379:27;;;244:167::o;1272:131:4:-;1330:7;1357:5;;;1376:6;;;;1368:15;;;;;;1397:1;1272:131;-1:-1:-1;;;1272:131:4:o;725:166:1:-;809:4;-1:-1:-1;;;;;831:21:1;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:1;:11;:20;;;;;;;;;;;;;;;725:166::o;409:310:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;409:310:0;;;-1:-1:-1;409:310:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;" + "object": "60806040523480156200001157600080fd5b50604080518082018252600581527f416c676f7300000000000000000000000000000000000000000000000000000060208083019182528351808501909452600484527f414c474f00000000000000000000000000000000000000000000000000000000908401528151919291601291620000909160039190620002c1565b508151620000a6906004906020850190620002c1565b506005805460ff191660ff9290921691909117905550620000d290503364010000000062000103810204565b6007805460ff19169055620000fd336b033b2e3c9fd0803ce800000064010000000062000155810204565b62000366565b6200011e60068264010000000062000b2c6200021482021704565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b600160a060020a03821615156200016b57600080fd5b60025462000188908264010000000062000ace6200026f82021704565b600255600160a060020a038216600090815260208190526040902054620001be908264010000000062000ace6200026f82021704565b600160a060020a0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600160a060020a03811615156200022a57600080fd5b6200023f828264010000000062000289810204565b156200024a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000828201838110156200028257600080fd5b9392505050565b6000600160a060020a0382161515620002a157600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200030457805160ff191683800117855562000334565b8280016001018555821562000334579182015b828111156200033457825182559160200191906001019062000317565b506200034292915062000346565b5090565b6200036391905b808211156200034257600081556001016200034d565b90565b610ba680620003766000396000f3fe608060405234801561001057600080fd5b5060043610610133576000357c0100000000000000000000000000000000000000000000000000000000900480635c975abb116100bf5780638456cb591161008e5780638456cb591461032357806395d89b411461032b578063a457c2d714610333578063a9059cbb1461035f578063dd62ed3e1461038b57610133565b80635c975abb146102c75780636ef8d66d146102cf57806370a08231146102d757806382dc1ec4146102fd57610133565b80632ff2e9dc116101065780632ff2e9dc14610245578063313ce5671461024d578063395093511461026b5780633f4ba83a1461029757806346fbf68e146102a157610133565b806306fdde0314610138578063095ea7b3146101b557806318160ddd146101f557806323b872dd1461020f575b600080fd5b6101406103b9565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017a578181015183820152602001610162565b50505050905090810190601f1680156101a75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101e1600480360360408110156101cb57600080fd5b50600160a060020a03813516906020013561044f565b604080519115158252519081900360200190f35b6101fd610473565b60408051918252519081900360200190f35b6101e16004803603606081101561022557600080fd5b50600160a060020a03813581169160208101359091169060400135610479565b6101fd61049f565b6102556104af565b6040805160ff9092168252519081900360200190f35b6101e16004803603604081101561028157600080fd5b50600160a060020a0381351690602001356104b8565b61029f6104d5565b005b6101e1600480360360208110156102b757600080fd5b5035600160a060020a0316610539565b6101e1610552565b61029f61055b565b6101fd600480360360208110156102ed57600080fd5b5035600160a060020a0316610566565b61029f6004803603602081101561031357600080fd5b5035600160a060020a0316610581565b61029f6105a1565b610140610607565b6101e16004803603604081101561034957600080fd5b50600160a060020a038135169060200135610668565b6101e16004803603604081101561037557600080fd5b50600160a060020a038135169060200135610685565b6101fd600480360360408110156103a157600080fd5b50600160a060020a03813581169160200135166106a2565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104455780601f1061041a57610100808354040283529160200191610445565b820191906000526020600020905b81548152906001019060200180831161042857829003601f168201915b5050505050905090565b60075460009060ff161561046257600080fd5b61046c83836106cd565b9392505050565b60025490565b60075460009060ff161561048c57600080fd5b61049784848461074b565b949350505050565b6b033b2e3c9fd0803ce800000081565b60055460ff1690565b60075460009060ff16156104cb57600080fd5b61046c8383610814565b6104de33610539565b15156104e957600080fd5b60075460ff1615156104fa57600080fd5b6007805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b600061054c60068363ffffffff6108c416565b92915050565b60075460ff1690565b610564336108fb565b565b600160a060020a031660009081526020819052604090205490565b61058a33610539565b151561059557600080fd5b61059e81610943565b50565b6105aa33610539565b15156105b557600080fd5b60075460ff16156105c557600080fd5b6007805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104455780601f1061041a57610100808354040283529160200191610445565b60075460009060ff161561067b57600080fd5b61046c838361098b565b60075460009060ff161561069857600080fd5b61046c83836109d6565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b6000600160a060020a03831615156106e457600080fd5b336000818152600160209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b600160a060020a038316600090815260016020908152604080832033845290915281205461077f908363ffffffff6109ec16565b600160a060020a03851660009081526001602090815260408083203384529091529020556107ae848484610a01565b600160a060020a0384166000818152600160209081526040808320338085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6000600160a060020a038316151561082b57600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461085f908363ffffffff610ace16565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b6000600160a060020a03821615156108db57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61090c60068263ffffffff610ae016565b604051600160a060020a038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b61095460068263ffffffff610b2c16565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6000600160a060020a03831615156109a257600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461085f908363ffffffff6109ec16565b60006109e3338484610a01565b50600192915050565b6000828211156109fb57600080fd5b50900390565b600160a060020a0382161515610a1657600080fd5b600160a060020a038316600090815260208190526040902054610a3f908263ffffffff6109ec16565b600160a060020a038085166000908152602081905260408082209390935590841681522054610a74908263ffffffff610ace16565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282018381101561046c57600080fd5b600160a060020a0381161515610af557600080fd5b610aff82826108c4565b1515610b0a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a0381161515610b4157600080fd5b610b4b82826108c4565b15610b5557600080fd5b600160a060020a0316600090815260209190915260409020805460ff1916600117905556fea165627a7a72305820a8673657c914c80ad8879e073b63b3c05fd0190188d56a14948896f8205677a60029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x5 DUP2 MSTORE PUSH32 0x416C676F73000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE DUP4 MLOAD DUP1 DUP6 ADD SWAP1 SWAP5 MSTORE PUSH1 0x4 DUP5 MSTORE PUSH32 0x414C474F00000000000000000000000000000000000000000000000000000000 SWAP1 DUP5 ADD MSTORE DUP2 MLOAD SWAP2 SWAP3 SWAP2 PUSH1 0x12 SWAP2 PUSH3 0x90 SWAP2 PUSH1 0x3 SWAP2 SWAP1 PUSH3 0x2C1 JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0xA6 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x2C1 JUMP JUMPDEST POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0xD2 SWAP1 POP CALLER PUSH5 0x100000000 PUSH3 0x103 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH3 0xFD CALLER PUSH12 0x33B2E3C9FD0803CE8000000 PUSH5 0x100000000 PUSH3 0x155 DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x366 JUMP JUMPDEST PUSH3 0x11E PUSH1 0x6 DUP3 PUSH5 0x100000000 PUSH3 0xB2C PUSH3 0x214 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND SWAP1 PUSH32 0x6719D08C1888103BEA251A4ED56406BD0C3E69723C8A1686E017E7BBE159B6F8 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x16B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH3 0x188 SWAP1 DUP3 PUSH5 0x100000000 PUSH3 0xACE PUSH3 0x26F DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH3 0x1BE SWAP1 DUP3 PUSH5 0x100000000 PUSH3 0xACE PUSH3 0x26F DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH3 0x22A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x23F DUP3 DUP3 PUSH5 0x100000000 PUSH3 0x289 DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH3 0x24A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH3 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x304 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x334 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x334 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x334 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x317 JUMP JUMPDEST POP PUSH3 0x342 SWAP3 SWAP2 POP PUSH3 0x346 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0x363 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x342 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x34D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xBA6 DUP1 PUSH3 0x376 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x133 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP1 PUSH4 0x5C975ABB GT PUSH2 0xBF JUMPI DUP1 PUSH4 0x8456CB59 GT PUSH2 0x8E JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x323 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x32B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x333 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x35F JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x38B JUMPI PUSH2 0x133 JUMP JUMPDEST DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0x6EF8D66D EQ PUSH2 0x2CF JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x82DC1EC4 EQ PUSH2 0x2FD JUMPI PUSH2 0x133 JUMP JUMPDEST DUP1 PUSH4 0x2FF2E9DC GT PUSH2 0x106 JUMPI DUP1 PUSH4 0x2FF2E9DC EQ PUSH2 0x245 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x24D JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x26B JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x297 JUMPI DUP1 PUSH4 0x46FBF68E EQ PUSH2 0x2A1 JUMPI PUSH2 0x133 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1B5 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1F5 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x20F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x140 PUSH2 0x3B9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x17A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x162 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1A7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1E1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x44F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1FD PUSH2 0x473 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1E1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x225 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x479 JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x49F JUMP JUMPDEST PUSH2 0x255 PUSH2 0x4AF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1E1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x281 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4B8 JUMP JUMPDEST PUSH2 0x29F PUSH2 0x4D5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1E1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH2 0x539 JUMP JUMPDEST PUSH2 0x1E1 PUSH2 0x552 JUMP JUMPDEST PUSH2 0x29F PUSH2 0x55B JUMP JUMPDEST PUSH2 0x1FD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH2 0x566 JUMP JUMPDEST PUSH2 0x29F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x313 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH2 0x581 JUMP JUMPDEST PUSH2 0x29F PUSH2 0x5A1 JUMP JUMPDEST PUSH2 0x140 PUSH2 0x607 JUMP JUMPDEST PUSH2 0x1E1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x349 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x668 JUMP JUMPDEST PUSH2 0x1E1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x375 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x685 JUMP JUMPDEST PUSH2 0x1FD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x6A2 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x445 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x41A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x445 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x428 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x462 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x46C DUP4 DUP4 PUSH2 0x6CD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x48C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x497 DUP5 DUP5 DUP5 PUSH2 0x74B JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH12 0x33B2E3C9FD0803CE8000000 DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x4CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x46C DUP4 DUP4 PUSH2 0x814 JUMP JUMPDEST PUSH2 0x4DE CALLER PUSH2 0x539 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x4E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH2 0x4FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x54C PUSH1 0x6 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x8C4 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x564 CALLER PUSH2 0x8FB JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x58A CALLER PUSH2 0x539 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x595 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59E DUP2 PUSH2 0x943 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x5AA CALLER PUSH2 0x539 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x5B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x5C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x445 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x41A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x445 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x67B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x46C DUP4 DUP4 PUSH2 0x98B JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x698 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x46C DUP4 DUP4 PUSH2 0x9D6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH2 0x6E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP9 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP7 SWAP1 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH2 0x77F SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x9EC AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE PUSH2 0x7AE DUP5 DUP5 DUP5 PUSH2 0xA01 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 SLOAD DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH2 0x82B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x85F SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xACE AND JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP10 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP1 MLOAD SWAP5 DUP6 MSTORE MLOAD SWAP2 SWAP4 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x8DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x90C PUSH1 0x6 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xAE0 AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND SWAP1 PUSH32 0xCD265EBAF09DF2871CC7BD4133404A235BA12EFF2041BB89D9C714A2621C7C7E SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x954 PUSH1 0x6 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xB2C AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND SWAP1 PUSH32 0x6719D08C1888103BEA251A4ED56406BD0C3E69723C8A1686E017E7BBE159B6F8 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH2 0x9A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x85F SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x9EC AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9E3 CALLER DUP5 DUP5 PUSH2 0xA01 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x9FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xA16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xA3F SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x9EC AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xA74 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xACE AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x46C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xAF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAFF DUP3 DUP3 PUSH2 0x8C4 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xB0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xB41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB4B DUP3 DUP3 PUSH2 0x8C4 JUMP JUMPDEST ISZERO PUSH2 0xB55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 0xa8 PUSH8 0x3657C914C80AD887 SWAP15 SMOD EXTCODESIZE PUSH4 0xB3C05FD0 NOT ADD DUP9 0xd5 PUSH11 0x14948896F8205677A60029 ", + "sourceMap": "408:310:0:-;;;559:156;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;405:163:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;493:12;;405:163;;;638:2:0;;493:12:6;;:5;;405:163;493:12;:::i;:::-;-1:-1:-1;515:16:6;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;541:9:6;:20;;-1:-1:-1;;541:20:6;;;;;;;;;;;;-1:-1:-1;275:22:2;;-1:-1:-1;286:10:2;275;;;;:22;:::i;:::-;352:7:3;:15;;-1:-1:-1;;352:15:3;;;674:33:0;680:10;518:32;674:5;;;;:33;:::i;:::-;408:310;;685:119:2;741:21;:8;754:7;741:12;;;;;;:21;:::i;:::-;777:20;;-1:-1:-1;;;;;777:20:2;;;;;;;;685:119;:::o;6198:263:5:-;-1:-1:-1;;;;;6272:21:5;;;;6264:30;;;;;;6320:12;;:23;;6337:5;6320:16;;;;;;:23;:::i;:::-;6305:12;:38;-1:-1:-1;;;;;6374:18:5;;:9;:18;;;;;;;;;;;:29;;6397:5;6374:22;;;;;;:29;:::i;:::-;-1:-1:-1;;;;;6353:18:5;;:9;:18;;;;;;;;;;;:50;;;;6418:36;;;;;;;6353:18;;:9;;6418:36;;;;;;;;;;6198:263;;:::o;259:181:1:-;-1:-1:-1;;;;;335:21:1;;;;327:30;;;;;;376:18;380:4;386:7;376:3;;;;:18;:::i;:::-;375:19;367:28;;;;;;-1:-1:-1;;;;;406:20:1;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;406:27:1;429:4;406:27;;;259:181::o;1431:145:4:-;1489:7;1520:5;;;1543:6;;;;1535:15;;;;;;1568:1;1431:145;-1:-1:-1;;;1431:145:4:o;786:162:1:-;858:4;-1:-1:-1;;;;;882:21:1;;;;874:30;;;;;;-1:-1:-1;;;;;;921:20:1;:11;:20;;;;;;;;;;;;;;;786:162::o;408:310:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;408:310:0;;;-1:-1:-1;408:310:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;" }, "gasEstimates": { "creation": { - "codeDepositCost": "594400", + "codeDepositCost": "596400", "executionCost": "infinite", "totalCost": "infinite" }, "external": { - "INITIAL_SUPPLY()": "272", + "INITIAL_SUPPLY()": "226", "addPauser(address)": "infinite", - "allowance(address,address)": "1082", - "approve(address,uint256)": "22732", - "balanceOf(address)": "851", - "decimals()": "509", + "allowance(address,address)": "879", + "approve(address,uint256)": "22820", + "balanceOf(address)": "731", + "decimals()": "463", "decreaseAllowance(address,uint256)": "infinite", "increaseAllowance(address,uint256)": "infinite", "isPauser(address)": "infinite", "name()": "infinite", "pause()": "infinite", - "paused()": "594", + "paused()": "438", "renouncePauser()": "infinite", "symbol()": "infinite", - "totalSupply()": "428", + "totalSupply()": "471", "transfer(address,uint256)": "infinite", "transferFrom(address,address,uint256)": "infinite", "unpause()": "infinite" @@ -502,7 +502,7 @@ "unpause()": "3f4ba83a" } }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"INITIAL_SUPPLY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPauser\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renouncePauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addPauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"allowance(address,address)\":{\"details\":\"Function to check the amount of tokens that an owner allowed to a spender.\",\"params\":{\"owner\":\"address The address which owns the funds.\",\"spender\":\"address The address which will spend the funds.\"},\"return\":\"A uint256 specifying the amount of tokens still available for the spender.\"},\"balanceOf(address)\":{\"details\":\"Gets the balance of the specified address.\",\"params\":{\"owner\":\"The address to query the balance of.\"},\"return\":\"An uint256 representing the amount owned by the passed address.\"},\"decimals()\":{\"return\":\"the number of decimals of the token.\"},\"name()\":{\"return\":\"the name of the token.\"},\"pause()\":{\"details\":\"called by the owner to pause, triggers stopped state\"},\"paused()\":{\"return\":\"true if the contract is paused, false otherwise.\"},\"symbol()\":{\"return\":\"the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Total number of tokens in existence\"},\"unpause()\":{\"details\":\"called by the owner to unpause, returns to normal state\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/AlgoTokenV1.sol\":\"AlgoTokenV1\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/AlgoTokenV1.sol\":{\"keccak256\":\"0xa3ca532ba89cd9078218c7a33002166565007a192a01ab562dda1b4f64cfde7a\",\"urls\":[\"bzzr://b6dfc4d2318bf62ca3e6e8c65884e5d9bb7bf98667168794f65b4d8090f3ea75\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/roles/PauserRole.sol\":{\"keccak256\":\"0x9c483b37c788ed1f3ce0c29934e5c41b9e84ff954380c04bffdf42c1e215a1a8\",\"urls\":[\"bzzr://1727e08315c67d0203510d5d50e645c80a569df7964715eddaec10bf90d70bab\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/lifecycle/Pausable.sol\":{\"keccak256\":\"0x9cb69bde8cc3efdd07a2c372e78b664e961f505b3e4195ee27f06b358ffef996\",\"urls\":[\"bzzr://13da310cd2989e27357c2912085af0f1925047070f48be175c6b7e2b0299084f\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xaa2cf35177f37a9af9c975a973c813c5520be56ccee3a39b6c9883d4781cd072\",\"urls\":[\"bzzr://2244d517ff73299ad9b6c9dcb7d0788e5e452d8b1624d3027c1fb152135de8f4\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol\":{\"keccak256\":\"0xafff01f07c0aca08e5db86a0f35bcf40cbd0a5da06aeeb9964b06c0bac507866\",\"urls\":[\"bzzr://40bb6c5e5b0c7b20f56eb7bd662e2dbd295f3b8f5f0cbb23cbe5114590110729\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol\":{\"keccak256\":\"0x34ae26a75fc5dd5d3d283d0d95a080212e81734a5cab7be187778e74224d57d1\",\"urls\":[\"bzzr://8ed5c93c550934720a33a387f8272b252b5aa8c5e0e4c6e21d5e92c662632bbb\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.4+commit.9549d8ff\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"INITIAL_SUPPLY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPauser\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renouncePauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addPauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"allowance(address,address)\":{\"details\":\"Function to check the amount of tokens that an owner allowed to a spender.\",\"params\":{\"owner\":\"address The address which owns the funds.\",\"spender\":\"address The address which will spend the funds.\"},\"return\":\"A uint256 specifying the amount of tokens still available for the spender.\"},\"balanceOf(address)\":{\"details\":\"Gets the balance of the specified address.\",\"params\":{\"owner\":\"The address to query the balance of.\"},\"return\":\"An uint256 representing the amount owned by the passed address.\"},\"decimals()\":{\"return\":\"the number of decimals of the token.\"},\"name()\":{\"return\":\"the name of the token.\"},\"pause()\":{\"details\":\"called by the owner to pause, triggers stopped state\"},\"paused()\":{\"return\":\"true if the contract is paused, false otherwise.\"},\"symbol()\":{\"return\":\"the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Total number of tokens in existence\"},\"unpause()\":{\"details\":\"called by the owner to unpause, returns to normal state\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/AlgoTokenV1.sol\":\"AlgoTokenV1\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/AlgoTokenV1.sol\":{\"keccak256\":\"0xdcc3037af0c6df03d255c9499734f93c105ed0243f985fa6a75b52d96e2b5f9d\",\"urls\":[\"bzzr://2be58cc40034bf60a6bb2ef81726c354a2e8cbd63751809a8349697ba26d509d\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0x659ba0f9a3392cd50a8a5fafaf5dfd8c6a0878f6a4613bceff4e90dceddcd865\",\"urls\":[\"bzzr://f704341d520fbc98716541f1b3f67737f0ee6e94adf072a66acb2bd25d593c2b\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/roles/PauserRole.sol\":{\"keccak256\":\"0x6506133e295a7199df2ac5dfc52853d9d767f68450b6d0193e9d8056b164ce86\",\"urls\":[\"bzzr://357744ad2278716087860855e31728d9f99493bb4a3567a2e39a910cb219601a\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/lifecycle/Pausable.sol\":{\"keccak256\":\"0x3b0ed31deeba7e3c6cfbbe8092a6b427084ee390800a06acdea5c17c8185d606\",\"urls\":[\"bzzr://64665e3aefdb15dd5d2ebe3cba5103a150199e27219fc16e9d71815328e6f64f\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x965012d27b4262d7a41f5028cbb30c51ebd9ecd4be8fb30380aaa7a3c64fbc8b\",\"urls\":[\"bzzr://41ca38f6b0fa4b77b0feec43e422cfbec48b7eb38a41edf0b85c77e8d9a296b1\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xba431353cb4fe70777ac026231eb5468e41aa1e81240a2b8136917acc5fff4dc\",\"urls\":[\"bzzr://80cd02a56e6e33504318124d0d645c82e615cc8a4b5829cc9d82d17635c644c8\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol\":{\"keccak256\":\"0xe195405e9993d575173cdb5dd408db7459a026b9a98085c1a3b676f020f46584\",\"urls\":[\"bzzr://4463a0d4f49767f59c02f2a987b90d48e0d31b3ed3424f3e743496f102f96044\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol\":{\"keccak256\":\"0x37b840977505e5f6d74bc8fa3d0217facc7913d0ecf064da3e3b26494acd37de\",\"urls\":[\"bzzr://81265bcdcca15f8a460cef608b40ca729559f2afbd6e6e7124b542d28da1c890\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x079c4e23ee448f529e43bfa3c4e8fb4be52cd0318ee923a276835bedf45b93d8\",\"urls\":[\"bzzr://48248e86f64407a95f241d6c5c8cfea6b4d4ebf4ebb467e5c98c8af3868fafe4\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -512,15 +512,16 @@ "Roles": { "abi": [], "devdoc": { + "details": "Library for managing addresses assigned to a Role.", "methods": {}, "title": "Roles" }, "evm": { "bytecode": { "linkReferences": {}, - "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a723058209944a978f76fff24cc87208ce7f37ff326fbfd8cd7d603831a39790f896d15bc0029", - "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 SWAP10 DIFFICULTY 0xa9 PUSH25 0xF76FFF24CC87208CE7F37FF326FBFD8CD7D603831A39790F89 PUSH14 0x15BC002900000000000000000000 ", - "sourceMap": "109:784:1:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058205d69966d67651bfd2b7c5e5caddd667e55aa5b27b0278c4a8cb13c82ef1921600029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 0x5d PUSH10 0x966D67651BFD2B7C5E5C 0xad 0xdd PUSH7 0x7E55AA5B27B027 DUP13 0x4a DUP13 0xb1 EXTCODECOPY DUP3 0xef NOT 0x21 PUSH1 0x0 0x29 ", + "sourceMap": "108:842:1:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -536,7 +537,7 @@ }, "methodIdentifiers": {} }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"Roles\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":\"Roles\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.4+commit.9549d8ff\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for managing addresses assigned to a Role.\",\"methods\":{},\"title\":\"Roles\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":\"Roles\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0x659ba0f9a3392cd50a8a5fafaf5dfd8c6a0878f6a4613bceff4e90dceddcd865\",\"urls\":[\"bzzr://f704341d520fbc98716541f1b3f67737f0ee6e94adf072a66acb2bd25d593c2b\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -774,6 +775,7 @@ } ], "devdoc": { + "details": "Base contract which allows children to implement an emergency stop mechanism.", "methods": { "pause()": { "details": "called by the owner to pause, triggers stopped state" @@ -814,15 +816,16 @@ "SafeMath": { "abi": [], "devdoc": { + "details": "Unsigned math operations with safety checks that revert on error", "methods": {}, "title": "SafeMath" }, "evm": { "bytecode": { "linkReferences": {}, - "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a7230582058bb1a821f73a50e8c797d9d6c3c6d4818e97d5b10d4a35f2486f49dbe5d83fb0029", - "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 PC 0xbb BYTE DUP3 0x1f PUSH20 0xA50E8C797D9D6C3C6D4818E97D5B10D4A35F2486 DELEGATECALL SWAP14 0xbe 0x5d DUP4 CREATE2 STOP 0x29 ", - "sourceMap": "117:1531:4:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820009f8e16279448e3368b519ea60818fa88fd7d5cf7185ad39cac36325f88401d0029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 STOP SWAP16 DUP15 AND 0x27 SWAP5 0x48 0xe3 CALLDATASIZE DUP12 MLOAD SWAP15 0xa6 ADDMOD XOR STATICCALL DUP9 REVERT PUSH30 0x5CF7185AD39CAC36325F88401D0029000000000000000000000000000000 ", + "sourceMap": "125:1726:4:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -840,7 +843,7 @@ }, "methodIdentifiers": {} }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"SafeMath\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.4+commit.9549d8ff\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Unsigned math operations with safety checks that revert on error\",\"methods\":{},\"title\":\"SafeMath\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x965012d27b4262d7a41f5028cbb30c51ebd9ecd4be8fb30380aaa7a3c64fbc8b\",\"urls\":[\"bzzr://41ca38f6b0fa4b77b0feec43e422cfbec48b7eb38a41edf0b85c77e8d9a296b1\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -1070,6 +1073,7 @@ } ], "devdoc": { + "details": "Implementation of the basic standard token. https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md Originally based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol * This implementation emits additional Approval events, allowing applications to reconstruct the allowance status for all accounts just by listening to said events. Note that this isn't required by the specification, and other compliant implementations may not do it.", "methods": { "allowance(address,address)": { "details": "Function to check the amount of tokens that an owner allowed to a spender.", @@ -1094,14 +1098,14 @@ "return": "An uint256 representing the amount owned by the passed address." }, "decreaseAllowance(address,uint256)": { - "details": "Decrease the amount of tokens that an owner allowed to a spender. approve should be called when allowed_[_spender] == 0. To decrement allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol", + "details": "Decrease the amount of tokens that an owner allowed to a spender. approve should be called when allowed_[_spender] == 0. To decrement allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol Emits an Approval event.", "params": { "spender": "The address which will spend the funds.", "subtractedValue": "The amount of tokens to decrease the allowance by." } }, "increaseAllowance(address,uint256)": { - "details": "Increase the amount of tokens that an owner allowed to a spender. approve should be called when allowed_[_spender] == 0. To increment allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol", + "details": "Increase the amount of tokens that an owner allowed to a spender. approve should be called when allowed_[_spender] == 0. To increment allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol Emits an Approval event.", "params": { "addedValue": "The amount of tokens to increase the allowance by.", "spender": "The address which will spend the funds." @@ -1118,7 +1122,7 @@ } }, "transferFrom(address,address,uint256)": { - "details": "Transfer tokens from one address to another", + "details": "Transfer tokens from one address to another. Note that while this function emits an Approval event, this is not required as per the specification, and other compliant implementations may not emit the event.", "params": { "from": "address The address which you want to send tokens from", "to": "address The address which you want to transfer to", @@ -1131,23 +1135,23 @@ "evm": { "bytecode": { "linkReferences": {}, - "object": "608060405234801561001057600080fd5b50610595806100206000396000f30060806040526004361061008d5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663095ea7b3811461009257806318160ddd146100ca57806323b872dd146100f1578063395093511461011b57806370a082311461013f578063a457c2d714610160578063a9059cbb14610184578063dd62ed3e146101a8575b600080fd5b34801561009e57600080fd5b506100b6600160a060020a03600435166024356101cf565b604080519115158252519081900360200190f35b3480156100d657600080fd5b506100df61024d565b60408051918252519081900360200190f35b3480156100fd57600080fd5b506100b6600160a060020a0360043581169060243516604435610253565b34801561012757600080fd5b506100b6600160a060020a03600435166024356102f0565b34801561014b57600080fd5b506100df600160a060020a03600435166103a0565b34801561016c57600080fd5b506100b6600160a060020a03600435166024356103bb565b34801561019057600080fd5b506100b6600160a060020a0360043516602435610406565b3480156101b457600080fd5b506100df600160a060020a036004358116906024351661041c565b6000600160a060020a03831615156101e657600080fd5b336000818152600160209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b60025490565b600160a060020a038316600090815260016020908152604080832033845290915281205482111561028357600080fd5b600160a060020a03841660009081526001602090815260408083203384529091529020546102b7908363ffffffff61044716565b600160a060020a03851660009081526001602090815260408083203384529091529020556102e684848461045e565b5060019392505050565b6000600160a060020a038316151561030757600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461033b908363ffffffff61055016565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a031660009081526020819052604090205490565b6000600160a060020a03831615156103d257600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461033b908363ffffffff61044716565b600061041333848461045e565b50600192915050565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b6000808383111561045757600080fd5b5050900390565b600160a060020a03831660009081526020819052604090205481111561048357600080fd5b600160a060020a038216151561049857600080fd5b600160a060020a0383166000908152602081905260409020546104c1908263ffffffff61044716565b600160a060020a0380851660009081526020819052604080822093909355908416815220546104f6908263ffffffff61055016565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282018381101561056257600080fd5b93925050505600a165627a7a72305820083071c6150a8cecebb9b0a032aec2e16a0aaadc7643557277a17d1e163e573d0029", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x595 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x8D JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x95EA7B3 DUP2 EQ PUSH2 0x92 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xCA JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xF1 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x11B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x160 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x184 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1A8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB6 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x1CF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xDF PUSH2 0x24D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB6 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH1 0x44 CALLDATALOAD PUSH2 0x253 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x127 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB6 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x2F0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xDF PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x3A0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB6 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x3BB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB6 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x406 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xDF PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH2 0x41C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH2 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP9 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP7 SWAP1 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x2B7 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x447 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE PUSH2 0x2E6 DUP5 DUP5 DUP5 PUSH2 0x45E JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x33B SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x550 AND JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP10 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP1 MLOAD SWAP5 DUP6 MSTORE MLOAD SWAP2 SWAP4 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH2 0x3D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x33B SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x447 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x413 CALLER DUP5 DUP5 PUSH2 0x45E JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 GT ISZERO PUSH2 0x457 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x483 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x4C1 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x447 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x4F6 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x550 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x562 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 ADDMOD ADDRESS PUSH18 0xC6150A8CECEBB9B0A032AEC2E16A0AAADC76 NUMBER SSTORE PUSH19 0x77A17D1E163E573D0029000000000000000000 ", - "sourceMap": "369:6595:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;369:6595:5;;;;;;;" + "object": "608060405234801561001057600080fd5b506105dd806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a5576000357c01000000000000000000000000000000000000000000000000000000009004806370a082311161007857806370a0823114610166578063a457c2d71461018c578063a9059cbb146101b8578063dd62ed3e146101e4576100a5565b8063095ea7b3146100aa57806318160ddd146100ea57806323b872dd14610104578063395093511461013a575b600080fd5b6100d6600480360360408110156100c057600080fd5b50600160a060020a038135169060200135610212565b604080519115158252519081900360200190f35b6100f2610290565b60408051918252519081900360200190f35b6100d66004803603606081101561011a57600080fd5b50600160a060020a03813581169160208101359091169060400135610296565b6100d66004803603604081101561015057600080fd5b50600160a060020a03813516906020013561035f565b6100f26004803603602081101561017c57600080fd5b5035600160a060020a031661040f565b6100d6600480360360408110156101a257600080fd5b50600160a060020a03813516906020013561042a565b6100d6600480360360408110156101ce57600080fd5b50600160a060020a038135169060200135610475565b6100f2600480360360408110156101fa57600080fd5b50600160a060020a038135811691602001351661048b565b6000600160a060020a038316151561022957600080fd5b336000818152600160209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b60025490565b600160a060020a03831660009081526001602090815260408083203384529091528120546102ca908363ffffffff6104b616565b600160a060020a03851660009081526001602090815260408083203384529091529020556102f98484846104cb565b600160a060020a0384166000818152600160209081526040808320338085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6000600160a060020a038316151561037657600080fd5b336000908152600160209081526040808320600160a060020a03871684529091529020546103aa908363ffffffff61059816565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a031660009081526020819052604090205490565b6000600160a060020a038316151561044157600080fd5b336000908152600160209081526040808320600160a060020a03871684529091529020546103aa908363ffffffff6104b616565b60006104823384846104cb565b50600192915050565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b6000828211156104c557600080fd5b50900390565b600160a060020a03821615156104e057600080fd5b600160a060020a038316600090815260208190526040902054610509908263ffffffff6104b616565b600160a060020a03808516600090815260208190526040808220939093559084168152205461053e908263ffffffff61059816565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828201838110156105aa57600080fd5b939250505056fea165627a7a72305820e36c0e5397edd1025b92feed31da1b82b50b4a5f0b779dcf48bc94596302fe170029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5DD DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP1 PUSH4 0x70A08231 GT PUSH2 0x78 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x166 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x18C JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1E4 JUMPI PUSH2 0xA5 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xEA JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x13A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x212 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF2 PUSH2 0x290 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xD6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x11A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x296 JUMP JUMPDEST PUSH2 0xD6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x35F JUMP JUMPDEST PUSH2 0xF2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH2 0x40F JUMP JUMPDEST PUSH2 0xD6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x42A JUMP JUMPDEST PUSH2 0xD6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x475 JUMP JUMPDEST PUSH2 0xF2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x48B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP9 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP7 SWAP1 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH2 0x2CA SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x4B6 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE PUSH2 0x2F9 DUP5 DUP5 DUP5 PUSH2 0x4CB JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 SLOAD DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH2 0x376 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x3AA SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x598 AND JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP10 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP1 MLOAD SWAP5 DUP6 MSTORE MLOAD SWAP2 SWAP4 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH2 0x441 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x3AA SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x4B6 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x482 CALLER DUP5 DUP5 PUSH2 0x4CB JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x4C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x4E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x509 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x4B6 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x53E SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x598 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x5AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 0xe3 PUSH13 0xE5397EDD1025B92FEED31DA1B DUP3 0xb5 SIGNEXTEND 0x4a 0x5f SIGNEXTEND PUSH24 0x9DCF48BC94596302FE170029000000000000000000000000 ", + "sourceMap": "649:6947:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;649:6947:5;;;;;;;" }, "gasEstimates": { "creation": { - "codeDepositCost": "285800", - "executionCost": "324", - "totalCost": "286124" + "codeDepositCost": "300200", + "executionCost": "337", + "totalCost": "300537" }, "external": { - "allowance(address,address)": "862", - "approve(address,uint256)": "22436", - "balanceOf(address)": "697", + "allowance(address,address)": "835", + "approve(address,uint256)": "22501", + "balanceOf(address)": "664", "decreaseAllowance(address,uint256)": "infinite", "increaseAllowance(address,uint256)": "infinite", - "totalSupply()": "406", + "totalSupply()": "426", "transfer(address,uint256)": "infinite", "transferFrom(address,address,uint256)": "infinite" }, @@ -1169,7 +1173,7 @@ "transferFrom(address,address,uint256)": "23b872dd" } }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"allowance(address,address)\":{\"details\":\"Function to check the amount of tokens that an owner allowed to a spender.\",\"params\":{\"owner\":\"address The address which owns the funds.\",\"spender\":\"address The address which will spend the funds.\"},\"return\":\"A uint256 specifying the amount of tokens still available for the spender.\"},\"approve(address,uint256)\":{\"details\":\"Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\",\"params\":{\"spender\":\"The address which will spend the funds.\",\"value\":\"The amount of tokens to be spent.\"}},\"balanceOf(address)\":{\"details\":\"Gets the balance of the specified address.\",\"params\":{\"owner\":\"The address to query the balance of.\"},\"return\":\"An uint256 representing the amount owned by the passed address.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Decrease the amount of tokens that an owner allowed to a spender. approve should be called when allowed_[_spender] == 0. To decrement allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol\",\"params\":{\"spender\":\"The address which will spend the funds.\",\"subtractedValue\":\"The amount of tokens to decrease the allowance by.\"}},\"increaseAllowance(address,uint256)\":{\"details\":\"Increase the amount of tokens that an owner allowed to a spender. approve should be called when allowed_[_spender] == 0. To increment allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol\",\"params\":{\"addedValue\":\"The amount of tokens to increase the allowance by.\",\"spender\":\"The address which will spend the funds.\"}},\"totalSupply()\":{\"details\":\"Total number of tokens in existence\"},\"transfer(address,uint256)\":{\"details\":\"Transfer token for a specified address\",\"params\":{\"to\":\"The address to transfer to.\",\"value\":\"The amount to be transferred.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfer tokens from one address to another\",\"params\":{\"from\":\"address The address which you want to send tokens from\",\"to\":\"address The address which you want to transfer to\",\"value\":\"uint256 the amount of tokens to be transferred\"}}},\"title\":\"Standard ERC20 token\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xaa2cf35177f37a9af9c975a973c813c5520be56ccee3a39b6c9883d4781cd072\",\"urls\":[\"bzzr://2244d517ff73299ad9b6c9dcb7d0788e5e452d8b1624d3027c1fb152135de8f4\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.4+commit.9549d8ff\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Implementation of the basic standard token. https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md Originally based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol * This implementation emits additional Approval events, allowing applications to reconstruct the allowance status for all accounts just by listening to said events. Note that this isn't required by the specification, and other compliant implementations may not do it.\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Function to check the amount of tokens that an owner allowed to a spender.\",\"params\":{\"owner\":\"address The address which owns the funds.\",\"spender\":\"address The address which will spend the funds.\"},\"return\":\"A uint256 specifying the amount of tokens still available for the spender.\"},\"approve(address,uint256)\":{\"details\":\"Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\",\"params\":{\"spender\":\"The address which will spend the funds.\",\"value\":\"The amount of tokens to be spent.\"}},\"balanceOf(address)\":{\"details\":\"Gets the balance of the specified address.\",\"params\":{\"owner\":\"The address to query the balance of.\"},\"return\":\"An uint256 representing the amount owned by the passed address.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Decrease the amount of tokens that an owner allowed to a spender. approve should be called when allowed_[_spender] == 0. To decrement allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol Emits an Approval event.\",\"params\":{\"spender\":\"The address which will spend the funds.\",\"subtractedValue\":\"The amount of tokens to decrease the allowance by.\"}},\"increaseAllowance(address,uint256)\":{\"details\":\"Increase the amount of tokens that an owner allowed to a spender. approve should be called when allowed_[_spender] == 0. To increment allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol Emits an Approval event.\",\"params\":{\"addedValue\":\"The amount of tokens to increase the allowance by.\",\"spender\":\"The address which will spend the funds.\"}},\"totalSupply()\":{\"details\":\"Total number of tokens in existence\"},\"transfer(address,uint256)\":{\"details\":\"Transfer token for a specified address\",\"params\":{\"to\":\"The address to transfer to.\",\"value\":\"The amount to be transferred.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfer tokens from one address to another. Note that while this function emits an Approval event, this is not required as per the specification, and other compliant implementations may not emit the event.\",\"params\":{\"from\":\"address The address which you want to send tokens from\",\"to\":\"address The address which you want to transfer to\",\"value\":\"uint256 the amount of tokens to be transferred\"}}},\"title\":\"Standard ERC20 token\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x965012d27b4262d7a41f5028cbb30c51ebd9ecd4be8fb30380aaa7a3c64fbc8b\",\"urls\":[\"bzzr://41ca38f6b0fa4b77b0feec43e422cfbec48b7eb38a41edf0b85c77e8d9a296b1\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xba431353cb4fe70777ac026231eb5468e41aa1e81240a2b8136917acc5fff4dc\",\"urls\":[\"bzzr://80cd02a56e6e33504318124d0d645c82e615cc8a4b5829cc9d82d17635c644c8\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x079c4e23ee448f529e43bfa3c4e8fb4be52cd0318ee923a276835bedf45b93d8\",\"urls\":[\"bzzr://48248e86f64407a95f241d6c5c8cfea6b4d4ebf4ebb467e5c98c8af3868fafe4\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -1414,6 +1418,7 @@ } ], "devdoc": { + "details": "The decimals are only for visualization purposes. All the operations are done using the smallest and indivisible token unit, just as on Ethereum all the operations are done in wei.", "methods": { "decimals()": { "return": "the number of decimals of the token." @@ -1799,6 +1804,7 @@ } ], "devdoc": { + "details": "ERC20 modified with pausable transfers.*", "methods": { "allowance(address,address)": { "details": "Function to check the amount of tokens that an owner allowed to a spender.", @@ -1833,28 +1839,28 @@ "evm": { "bytecode": { "linkReferences": {}, - "object": "608060405261001633640100000000610025810204565b6004805460ff19169055610102565b61003d60038264010000000061090761007482021704565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b600160a060020a038116151561008957600080fd5b61009c82826401000000006100cb810204565b156100a657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156100e257600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610981806101116000396000f3006080604052600436106100cf5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663095ea7b381146100d457806318160ddd1461010c57806323b872dd14610133578063395093511461015d5780633f4ba83a1461018157806346fbf68e146101985780635c975abb146101b95780636ef8d66d146101ce57806370a08231146101e357806382dc1ec4146102045780638456cb5914610225578063a457c2d71461023a578063a9059cbb1461025e578063dd62ed3e14610282575b600080fd5b3480156100e057600080fd5b506100f8600160a060020a03600435166024356102a9565b604080519115158252519081900360200190f35b34801561011857600080fd5b506101216102cd565b60408051918252519081900360200190f35b34801561013f57600080fd5b506100f8600160a060020a03600435811690602435166044356102d3565b34801561016957600080fd5b506100f8600160a060020a03600435166024356102f9565b34801561018d57600080fd5b50610196610316565b005b3480156101a457600080fd5b506100f8600160a060020a036004351661037a565b3480156101c557600080fd5b506100f8610393565b3480156101da57600080fd5b5061019661039c565b3480156101ef57600080fd5b50610121600160a060020a03600435166103a7565b34801561021057600080fd5b50610196600160a060020a03600435166103c2565b34801561023157600080fd5b506101966103e2565b34801561024657600080fd5b506100f8600160a060020a0360043516602435610448565b34801561026a57600080fd5b506100f8600160a060020a0360043516602435610465565b34801561028e57600080fd5b50610121600160a060020a0360043581169060243516610482565b60045460009060ff16156102bc57600080fd5b6102c683836104ad565b9392505050565b60025490565b60045460009060ff16156102e657600080fd5b6102f184848461052b565b949350505050565b60045460009060ff161561030c57600080fd5b6102c683836105c8565b61031f3361037a565b151561032a57600080fd5b60045460ff16151561033b57600080fd5b6004805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b600061038d60038363ffffffff61067816565b92915050565b60045460ff1690565b6103a5336106af565b565b600160a060020a031660009081526020819052604090205490565b6103cb3361037a565b15156103d657600080fd5b6103df816106f7565b50565b6103eb3361037a565b15156103f657600080fd5b60045460ff161561040657600080fd5b6004805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b60045460009060ff161561045b57600080fd5b6102c6838361073f565b60045460009060ff161561047857600080fd5b6102c6838361078a565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b6000600160a060020a03831615156104c457600080fd5b336000818152600160209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b600160a060020a038316600090815260016020908152604080832033845290915281205482111561055b57600080fd5b600160a060020a038416600090815260016020908152604080832033845290915290205461058f908363ffffffff6107a016565b600160a060020a03851660009081526001602090815260408083203384529091529020556105be8484846107b7565b5060019392505050565b6000600160a060020a03831615156105df57600080fd5b336000908152600160209081526040808320600160a060020a0387168452909152902054610613908363ffffffff6108a916565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b6000600160a060020a038216151561068f57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106c060038263ffffffff6108bb16565b604051600160a060020a038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b61070860038263ffffffff61090716565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6000600160a060020a038316151561075657600080fd5b336000908152600160209081526040808320600160a060020a0387168452909152902054610613908363ffffffff6107a016565b60006107973384846107b7565b50600192915050565b600080838311156107b057600080fd5b5050900390565b600160a060020a0383166000908152602081905260409020548111156107dc57600080fd5b600160a060020a03821615156107f157600080fd5b600160a060020a03831660009081526020819052604090205461081a908263ffffffff6107a016565b600160a060020a03808516600090815260208190526040808220939093559084168152205461084f908263ffffffff6108a916565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828201838110156102c657600080fd5b600160a060020a03811615156108d057600080fd5b6108da8282610678565b15156108e557600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a038116151561091c57600080fd5b6109268282610678565b1561093057600080fd5b600160a060020a0316600090815260209190915260409020805460ff191660011790555600a165627a7a72305820ec68135419984dd2cdc693df9167b633b80c03b7d2dd774f775b3d32098439b90029", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH2 0x16 CALLER PUSH5 0x100000000 PUSH2 0x25 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH2 0x102 JUMP JUMPDEST PUSH2 0x3D PUSH1 0x3 DUP3 PUSH5 0x100000000 PUSH2 0x907 PUSH2 0x74 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND SWAP1 PUSH32 0x6719D08C1888103BEA251A4ED56406BD0C3E69723C8A1686E017E7BBE159B6F8 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9C DUP3 DUP3 PUSH5 0x100000000 PUSH2 0xCB DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH2 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x981 DUP1 PUSH2 0x111 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x95EA7B3 DUP2 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x133 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0x46FBF68E EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x1B9 JUMPI DUP1 PUSH4 0x6EF8D66D EQ PUSH2 0x1CE JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1E3 JUMPI DUP1 PUSH4 0x82DC1EC4 EQ PUSH2 0x204 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x225 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x23A JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x25E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x282 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF8 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x2A9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x121 PUSH2 0x2CD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF8 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH1 0x44 CALLDATALOAD PUSH2 0x2D3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF8 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x2F9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x196 PUSH2 0x316 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF8 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x37A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF8 PUSH2 0x393 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x196 PUSH2 0x39C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x121 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x3A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x210 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x196 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x3C2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x231 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x196 PUSH2 0x3E2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x246 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF8 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x448 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF8 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x465 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x121 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH2 0x482 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x2BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C6 DUP4 DUP4 PUSH2 0x4AD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x2E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2F1 DUP5 DUP5 DUP5 PUSH2 0x52B JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x30C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C6 DUP4 DUP4 PUSH2 0x5C8 JUMP JUMPDEST PUSH2 0x31F CALLER PUSH2 0x37A JUMP JUMPDEST ISZERO ISZERO PUSH2 0x32A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH2 0x33B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38D PUSH1 0x3 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x678 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x3A5 CALLER PUSH2 0x6AF JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x3CB CALLER PUSH2 0x37A JUMP JUMPDEST ISZERO ISZERO PUSH2 0x3D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3DF DUP2 PUSH2 0x6F7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x3EB CALLER PUSH2 0x37A JUMP JUMPDEST ISZERO ISZERO PUSH2 0x3F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x45B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C6 DUP4 DUP4 PUSH2 0x73F JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C6 DUP4 DUP4 PUSH2 0x78A JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH2 0x4C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP9 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP7 SWAP1 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x58F SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x7A0 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE PUSH2 0x5BE DUP5 DUP5 DUP5 PUSH2 0x7B7 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH2 0x5DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x613 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x8A9 AND JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP10 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP1 MLOAD SWAP5 DUP6 MSTORE MLOAD SWAP2 SWAP4 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x68F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x6C0 PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x8BB AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND SWAP1 PUSH32 0xCD265EBAF09DF2871CC7BD4133404A235BA12EFF2041BB89D9C714A2621C7C7E SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x708 PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x907 AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND SWAP1 PUSH32 0x6719D08C1888103BEA251A4ED56406BD0C3E69723C8A1686E017E7BBE159B6F8 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH2 0x756 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x613 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x7A0 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x797 CALLER DUP5 DUP5 PUSH2 0x7B7 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 GT ISZERO PUSH2 0x7B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x7DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x7F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x81A SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x7A0 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x84F SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x8A9 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x2C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x8D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8DA DUP3 DUP3 PUSH2 0x678 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x8E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x91C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x926 DUP3 DUP3 PUSH2 0x678 JUMP JUMPDEST ISZERO PUSH2 0x930 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xec PUSH9 0x135419984DD2CDC693 0xdf SWAP2 PUSH8 0xB633B80C03B7D2DD PUSH24 0x4F775B3D32098439B9002900000000000000000000000000 ", - "sourceMap": "170:951:7:-;;;260:22:2;271:10;260;;;;:22;:::i;:::-;340:7:3;:15;;-1:-1:-1;;340:15:3;;;170:951:7;;629:108:2;681:20;:7;693;681:11;;;;;;:20;:::i;:::-;712;;-1:-1:-1;;;;;712:20:2;;;;;;;;629:108;:::o;244:167:1:-;-1:-1:-1;;;;;316:21:1;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:1;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:1;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:1;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:1;:11;:20;;;;;;;;;;;;;;;725:166::o;170:951:7:-;;;;;;;" + "object": "608060405261001633640100000000610025810204565b6004805460ff19169055610102565b61003d60038264010000000061094561007482021704565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b600160a060020a038116151561008957600080fd5b61009c82826401000000006100cb810204565b156100a657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156100e257600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6109bf806101116000396000f3fe608060405234801561001057600080fd5b5060043610610107576000357c0100000000000000000000000000000000000000000000000000000000900480636ef8d66d116100a95780638456cb59116100835780638456cb5914610254578063a457c2d71461025c578063a9059cbb14610288578063dd62ed3e146102b457610107565b80636ef8d66d1461020057806370a082311461020857806382dc1ec41461022e57610107565b806339509351116100e5578063395093511461019c5780633f4ba83a146101c857806346fbf68e146101d25780635c975abb146101f857610107565b8063095ea7b31461010c57806318160ddd1461014c57806323b872dd14610166575b600080fd5b6101386004803603604081101561012257600080fd5b50600160a060020a0381351690602001356102e2565b604080519115158252519081900360200190f35b610154610306565b60408051918252519081900360200190f35b6101386004803603606081101561017c57600080fd5b50600160a060020a0381358116916020810135909116906040013561030c565b610138600480360360408110156101b257600080fd5b50600160a060020a038135169060200135610332565b6101d061034f565b005b610138600480360360208110156101e857600080fd5b5035600160a060020a03166103b3565b6101386103cc565b6101d06103d5565b6101546004803603602081101561021e57600080fd5b5035600160a060020a03166103e0565b6101d06004803603602081101561024457600080fd5b5035600160a060020a03166103fb565b6101d061041b565b6101386004803603604081101561027257600080fd5b50600160a060020a038135169060200135610481565b6101386004803603604081101561029e57600080fd5b50600160a060020a03813516906020013561049e565b610154600480360360408110156102ca57600080fd5b50600160a060020a03813581169160200135166104bb565b60045460009060ff16156102f557600080fd5b6102ff83836104e6565b9392505050565b60025490565b60045460009060ff161561031f57600080fd5b61032a848484610564565b949350505050565b60045460009060ff161561034557600080fd5b6102ff838361062d565b610358336103b3565b151561036357600080fd5b60045460ff16151561037457600080fd5b6004805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b60006103c660038363ffffffff6106dd16565b92915050565b60045460ff1690565b6103de33610714565b565b600160a060020a031660009081526020819052604090205490565b610404336103b3565b151561040f57600080fd5b6104188161075c565b50565b610424336103b3565b151561042f57600080fd5b60045460ff161561043f57600080fd5b6004805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b60045460009060ff161561049457600080fd5b6102ff83836107a4565b60045460009060ff16156104b157600080fd5b6102ff83836107ef565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b6000600160a060020a03831615156104fd57600080fd5b336000818152600160209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b600160a060020a0383166000908152600160209081526040808320338452909152812054610598908363ffffffff61080516565b600160a060020a03851660009081526001602090815260408083203384529091529020556105c784848461081a565b600160a060020a0384166000818152600160209081526040808320338085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6000600160a060020a038316151561064457600080fd5b336000908152600160209081526040808320600160a060020a0387168452909152902054610678908363ffffffff6108e716565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b6000600160a060020a03821615156106f457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61072560038263ffffffff6108f916565b604051600160a060020a038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b61076d60038263ffffffff61094516565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6000600160a060020a03831615156107bb57600080fd5b336000908152600160209081526040808320600160a060020a0387168452909152902054610678908363ffffffff61080516565b60006107fc33848461081a565b50600192915050565b60008282111561081457600080fd5b50900390565b600160a060020a038216151561082f57600080fd5b600160a060020a038316600090815260208190526040902054610858908263ffffffff61080516565b600160a060020a03808516600090815260208190526040808220939093559084168152205461088d908263ffffffff6108e716565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828201838110156102ff57600080fd5b600160a060020a038116151561090e57600080fd5b61091882826106dd565b151561092357600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a038116151561095a57600080fd5b61096482826106dd565b1561096e57600080fd5b600160a060020a0316600090815260209190915260409020805460ff1916600117905556fea165627a7a723058209b9f6d57f3339392d2370056a1b0d3f8b34a52c54183a75740f4e2c02a5001f60029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH2 0x16 CALLER PUSH5 0x100000000 PUSH2 0x25 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH2 0x102 JUMP JUMPDEST PUSH2 0x3D PUSH1 0x3 DUP3 PUSH5 0x100000000 PUSH2 0x945 PUSH2 0x74 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND SWAP1 PUSH32 0x6719D08C1888103BEA251A4ED56406BD0C3E69723C8A1686E017E7BBE159B6F8 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9C DUP3 DUP3 PUSH5 0x100000000 PUSH2 0xCB DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH2 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x9BF DUP1 PUSH2 0x111 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x107 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP1 PUSH4 0x6EF8D66D GT PUSH2 0xA9 JUMPI DUP1 PUSH4 0x8456CB59 GT PUSH2 0x83 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x254 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x288 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2B4 JUMPI PUSH2 0x107 JUMP JUMPDEST DUP1 PUSH4 0x6EF8D66D EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0x82DC1EC4 EQ PUSH2 0x22E JUMPI PUSH2 0x107 JUMP JUMPDEST DUP1 PUSH4 0x39509351 GT PUSH2 0xE5 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x19C JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x46FBF68E EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x1F8 JUMPI PUSH2 0x107 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x14C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x166 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2E2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x154 PUSH2 0x306 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x30C JUMP JUMPDEST PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x332 JUMP JUMPDEST PUSH2 0x1D0 PUSH2 0x34F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x3CC JUMP JUMPDEST PUSH2 0x1D0 PUSH2 0x3D5 JUMP JUMPDEST PUSH2 0x154 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH2 0x3E0 JUMP JUMPDEST PUSH2 0x1D0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH2 0x3FB JUMP JUMPDEST PUSH2 0x1D0 PUSH2 0x41B JUMP JUMPDEST PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x481 JUMP JUMPDEST PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x29E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x49E JUMP JUMPDEST PUSH2 0x154 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x4BB JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x2F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2FF DUP4 DUP4 PUSH2 0x4E6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x32A DUP5 DUP5 DUP5 PUSH2 0x564 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x345 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2FF DUP4 DUP4 PUSH2 0x62D JUMP JUMPDEST PUSH2 0x358 CALLER PUSH2 0x3B3 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x363 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C6 PUSH1 0x3 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x6DD AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x3DE CALLER PUSH2 0x714 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x404 CALLER PUSH2 0x3B3 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x40F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x418 DUP2 PUSH2 0x75C JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x424 CALLER PUSH2 0x3B3 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x42F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x43F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x494 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2FF DUP4 DUP4 PUSH2 0x7A4 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x4B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2FF DUP4 DUP4 PUSH2 0x7EF JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH2 0x4FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP9 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP7 SWAP1 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH2 0x598 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x805 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE PUSH2 0x5C7 DUP5 DUP5 DUP5 PUSH2 0x81A JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 SLOAD DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH2 0x644 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x678 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x8E7 AND JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP10 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP1 MLOAD SWAP5 DUP6 MSTORE MLOAD SWAP2 SWAP4 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x6F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x725 PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x8F9 AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND SWAP1 PUSH32 0xCD265EBAF09DF2871CC7BD4133404A235BA12EFF2041BB89D9C714A2621C7C7E SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x76D PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x945 AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND SWAP1 PUSH32 0x6719D08C1888103BEA251A4ED56406BD0C3E69723C8A1686E017E7BBE159B6F8 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH2 0x7BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x678 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x805 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7FC CALLER DUP5 DUP5 PUSH2 0x81A JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x814 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x82F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x858 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x805 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x88D SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x8E7 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x2FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x90E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x918 DUP3 DUP3 PUSH2 0x6DD JUMP JUMPDEST ISZERO ISZERO PUSH2 0x923 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x95A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x964 DUP3 DUP3 PUSH2 0x6DD JUMP JUMPDEST ISZERO PUSH2 0x96E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 SWAP12 SWAP16 PUSH14 0x57F3339392D2370056A1B0D3F8B3 0x4a MSTORE 0xc5 COINBASE DUP4 0xa7 JUMPI BLOCKHASH DELEGATECALL 0xe2 0xc0 0x2a POP ADD 0xf6 STOP 0x29 ", + "sourceMap": "169:856:7:-;;;275:22:2;286:10;275;;;;:22;:::i;:::-;352:7:3;:15;;-1:-1:-1;;352:15:3;;;169:856:7;;685:119:2;741:21;:8;754:7;741:12;;;;;;:21;:::i;:::-;777:20;;-1:-1:-1;;;;;777:20:2;;;;;;;;685:119;:::o;259:181:1:-;-1:-1:-1;;;;;335:21:1;;;;327:30;;;;;;376:18;380:4;386:7;376:3;;;;:18;:::i;:::-;375:19;367:28;;;;;;-1:-1:-1;;;;;406:20:1;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;406:27:1;429:4;406:27;;;259:181::o;786:162::-;858:4;-1:-1:-1;;;;;882:21:1;;;;874:30;;;;;;-1:-1:-1;;;;;;921:20:1;:11;:20;;;;;;;;;;;;;;;786:162::o;169:856:7:-;;;;;;;" }, "gasEstimates": { "creation": { - "codeDepositCost": "486600", + "codeDepositCost": "499000", "executionCost": "infinite", "totalCost": "infinite" }, "external": { "addPauser(address)": "infinite", - "allowance(address,address)": "994", - "approve(address,uint256)": "22710", - "balanceOf(address)": "785", + "allowance(address,address)": "857", + "approve(address,uint256)": "22798", + "balanceOf(address)": "709", "decreaseAllowance(address,uint256)": "infinite", "increaseAllowance(address,uint256)": "infinite", "isPauser(address)": "infinite", "pause()": "infinite", - "paused()": "528", + "paused()": "504", "renouncePauser()": "infinite", - "totalSupply()": "406", + "totalSupply()": "449", "transfer(address,uint256)": "infinite", "transferFrom(address,address,uint256)": "infinite", "unpause()": "infinite" @@ -1877,7 +1883,7 @@ "unpause()": "3f4ba83a" } }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPauser\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renouncePauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addPauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"allowance(address,address)\":{\"details\":\"Function to check the amount of tokens that an owner allowed to a spender.\",\"params\":{\"owner\":\"address The address which owns the funds.\",\"spender\":\"address The address which will spend the funds.\"},\"return\":\"A uint256 specifying the amount of tokens still available for the spender.\"},\"balanceOf(address)\":{\"details\":\"Gets the balance of the specified address.\",\"params\":{\"owner\":\"The address to query the balance of.\"},\"return\":\"An uint256 representing the amount owned by the passed address.\"},\"pause()\":{\"details\":\"called by the owner to pause, triggers stopped state\"},\"paused()\":{\"return\":\"true if the contract is paused, false otherwise.\"},\"totalSupply()\":{\"details\":\"Total number of tokens in existence\"},\"unpause()\":{\"details\":\"called by the owner to unpause, returns to normal state\"}},\"title\":\"Pausable token\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol\":\"ERC20Pausable\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/roles/PauserRole.sol\":{\"keccak256\":\"0x9c483b37c788ed1f3ce0c29934e5c41b9e84ff954380c04bffdf42c1e215a1a8\",\"urls\":[\"bzzr://1727e08315c67d0203510d5d50e645c80a569df7964715eddaec10bf90d70bab\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/lifecycle/Pausable.sol\":{\"keccak256\":\"0x9cb69bde8cc3efdd07a2c372e78b664e961f505b3e4195ee27f06b358ffef996\",\"urls\":[\"bzzr://13da310cd2989e27357c2912085af0f1925047070f48be175c6b7e2b0299084f\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xaa2cf35177f37a9af9c975a973c813c5520be56ccee3a39b6c9883d4781cd072\",\"urls\":[\"bzzr://2244d517ff73299ad9b6c9dcb7d0788e5e452d8b1624d3027c1fb152135de8f4\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol\":{\"keccak256\":\"0x34ae26a75fc5dd5d3d283d0d95a080212e81734a5cab7be187778e74224d57d1\",\"urls\":[\"bzzr://8ed5c93c550934720a33a387f8272b252b5aa8c5e0e4c6e21d5e92c662632bbb\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.4+commit.9549d8ff\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPauser\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renouncePauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addPauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"ERC20 modified with pausable transfers.*\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Function to check the amount of tokens that an owner allowed to a spender.\",\"params\":{\"owner\":\"address The address which owns the funds.\",\"spender\":\"address The address which will spend the funds.\"},\"return\":\"A uint256 specifying the amount of tokens still available for the spender.\"},\"balanceOf(address)\":{\"details\":\"Gets the balance of the specified address.\",\"params\":{\"owner\":\"The address to query the balance of.\"},\"return\":\"An uint256 representing the amount owned by the passed address.\"},\"pause()\":{\"details\":\"called by the owner to pause, triggers stopped state\"},\"paused()\":{\"return\":\"true if the contract is paused, false otherwise.\"},\"totalSupply()\":{\"details\":\"Total number of tokens in existence\"},\"unpause()\":{\"details\":\"called by the owner to unpause, returns to normal state\"}},\"title\":\"Pausable token\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol\":\"ERC20Pausable\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0x659ba0f9a3392cd50a8a5fafaf5dfd8c6a0878f6a4613bceff4e90dceddcd865\",\"urls\":[\"bzzr://f704341d520fbc98716541f1b3f67737f0ee6e94adf072a66acb2bd25d593c2b\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/roles/PauserRole.sol\":{\"keccak256\":\"0x6506133e295a7199df2ac5dfc52853d9d767f68450b6d0193e9d8056b164ce86\",\"urls\":[\"bzzr://357744ad2278716087860855e31728d9f99493bb4a3567a2e39a910cb219601a\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/lifecycle/Pausable.sol\":{\"keccak256\":\"0x3b0ed31deeba7e3c6cfbbe8092a6b427084ee390800a06acdea5c17c8185d606\",\"urls\":[\"bzzr://64665e3aefdb15dd5d2ebe3cba5103a150199e27219fc16e9d71815328e6f64f\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x965012d27b4262d7a41f5028cbb30c51ebd9ecd4be8fb30380aaa7a3c64fbc8b\",\"urls\":[\"bzzr://41ca38f6b0fa4b77b0feec43e422cfbec48b7eb38a41edf0b85c77e8d9a296b1\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xba431353cb4fe70777ac026231eb5468e41aa1e81240a2b8136917acc5fff4dc\",\"urls\":[\"bzzr://80cd02a56e6e33504318124d0d645c82e615cc8a4b5829cc9d82d17635c644c8\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol\":{\"keccak256\":\"0x37b840977505e5f6d74bc8fa3d0217facc7913d0ecf064da3e3b26494acd37de\",\"urls\":[\"bzzr://81265bcdcca15f8a460cef608b40ca729559f2afbd6e6e7124b542d28da1c890\"]},\"d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x079c4e23ee448f529e43bfa3c4e8fb4be52cd0318ee923a276835bedf45b93d8\",\"urls\":[\"bzzr://48248e86f64407a95f241d6c5c8cfea6b4d4ebf4ebb467e5c98c8af3868fafe4\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -2061,6 +2067,7 @@ } ], "devdoc": { + "details": "see https://github.com/ethereum/EIPs/issues/20", "methods": {}, "title": "ERC20 interface" }, @@ -2104,11 +2111,11 @@ "id": 1, "literals": [ "solidity", - "0.4", - ".24" + "0.5", + ".4" ], "nodeType": "PragmaDirective", - "src": "0:23:0" + "src": "0:22:0" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol", @@ -2116,8 +2123,8 @@ "id": 2, "nodeType": "ImportDirective", "scope": 38, - "sourceUnit": 948, - "src": "27:188:0", + "sourceUnit": 936, + "src": "26:188:0", "symbolAliases": [], "unitAlias": "" }, @@ -2127,8 +2134,8 @@ "id": 3, "nodeType": "ImportDirective", "scope": 38, - "sourceUnit": 1050, - "src": "217:188:0", + "sourceUnit": 1038, + "src": "216:188:0", "symbolAliases": [], "unitAlias": "" }, @@ -2141,16 +2148,16 @@ "id": 4, "name": "ERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 889, - "src": "433:5:0", + "referencedDeclaration": 877, + "src": "432:5:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$889", + "typeIdentifier": "t_contract$_ERC20_$877", "typeString": "contract ERC20" } }, "id": 5, "nodeType": "InheritanceSpecifier", - "src": "433:5:0" + "src": "432:5:0" }, { "arguments": null, @@ -2159,16 +2166,16 @@ "id": 6, "name": "ERC20Detailed", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 947, - "src": "440:13:0", + "referencedDeclaration": 935, + "src": "439:13:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Detailed_$947", + "typeIdentifier": "t_contract$_ERC20Detailed_$935", "typeString": "contract ERC20Detailed" } }, "id": 7, "nodeType": "InheritanceSpecifier", - "src": "440:13:0" + "src": "439:13:0" }, { "arguments": null, @@ -2177,25 +2184,25 @@ "id": 8, "name": "ERC20Pausable", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1049, - "src": "455:13:0", + "referencedDeclaration": 1037, + "src": "454:13:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Pausable_$1049", + "typeIdentifier": "t_contract$_ERC20Pausable_$1037", "typeString": "contract ERC20Pausable" } }, "id": 9, "nodeType": "InheritanceSpecifier", - "src": "455:13:0" + "src": "454:13:0" } ], "contractDependencies": [ 234, 317, - 889, - 947, - 1049, - 1118 + 877, + 935, + 1037, + 1106 ], "contractKind": "contract", "documentation": null, @@ -2203,12 +2210,12 @@ "id": 37, "linearizedBaseContracts": [ 37, - 1049, + 1037, 317, 234, - 947, - 889, - 1118 + 935, + 877, + 1106 ], "name": "AlgoTokenV1", "nodeType": "ContractDefinition", @@ -2219,7 +2226,7 @@ "name": "INITIAL_SUPPLY", "nodeType": "VariableDeclaration", "scope": 37, - "src": "478:73:0", + "src": "477:73:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2230,7 +2237,7 @@ "id": 10, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "478:7:0", + "src": "477:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2257,7 +2264,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "519:10:0", + "src": "518:10:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000000000_by_1", @@ -2291,7 +2298,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "533:2:0", + "src": "532:2:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", @@ -2314,7 +2321,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "547:2:0", + "src": "546:2:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_18_by_1", @@ -2336,7 +2343,7 @@ "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "539:7:0", + "src": "538:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" @@ -2351,13 +2358,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "539:11:0", + "src": "538:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "533:17:0", + "src": "532:17:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2371,13 +2378,13 @@ "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "532:19:0", + "src": "531:19:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "519:32:0", + "src": "518:32:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2389,7 +2396,7 @@ "body": { "id": 35, "nodeType": "Block", - "src": "664:52:0", + "src": "663:52:0", "statements": [ { "expression": { @@ -2403,8 +2410,8 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "681:3:0", + "referencedDeclaration": 1121, + "src": "680:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" @@ -2418,10 +2425,10 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "681:10:0", + "src": "680:10:0", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, { @@ -2431,7 +2438,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 19, - "src": "693:14:0", + "src": "692:14:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2441,8 +2448,8 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" }, { "typeIdentifier": "t_uint256", @@ -2453,8 +2460,8 @@ "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 799, - "src": "675:5:0", + "referencedDeclaration": 792, + "src": "674:5:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" @@ -2468,7 +2475,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "675:33:0", + "src": "674:33:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -2476,15 +2483,14 @@ }, "id": 34, "nodeType": "ExpressionStatement", - "src": "675:33:0" + "src": "674:33:0" } ] }, "documentation": null, "id": 36, "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, + "kind": "constructor", "modifiers": [ { "arguments": [], @@ -2495,15 +2501,15 @@ "name": "ERC20Pausable", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1049, - "src": "583:13:0", + "referencedDeclaration": 1037, + "src": "582:13:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20Pausable_$1049_$", + "typeIdentifier": "t_type$_t_contract$_ERC20Pausable_$1037_$", "typeString": "type(contract ERC20Pausable)" } }, "nodeType": "ModifierInvocation", - "src": "583:15:0" + "src": "582:15:0" }, { "arguments": [ @@ -2517,7 +2523,7 @@ "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "622:7:0", + "src": "621:7:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_f431b25e990e179f4656b6db11d387ab1d3ba961e80647281b655f4c6f523207", @@ -2535,7 +2541,7 @@ "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "631:6:0", + "src": "630:6:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_fef8132823c3ac25abf2126d6030ba0dd95564834b498fa7005f7c43e8b10551", @@ -2553,7 +2559,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "639:2:0", + "src": "638:2:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_18_by_1", @@ -2569,15 +2575,15 @@ "name": "ERC20Detailed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 947, - "src": "608:13:0", + "referencedDeclaration": 935, + "src": "607:13:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20Detailed_$947_$", + "typeIdentifier": "t_type$_t_contract$_ERC20Detailed_$935_$", "typeString": "type(contract ERC20Detailed)" } }, "nodeType": "ModifierInvocation", - "src": "608:34:0" + "src": "607:34:0" } ], "name": "", @@ -2586,27 +2592,26 @@ "id": 20, "nodeType": "ParameterList", "parameters": [], - "src": "571:2:0" + "src": "570:2:0" }, - "payable": false, "returnParameters": { "id": 28, "nodeType": "ParameterList", "parameters": [], - "src": "664:0:0" + "src": "663:0:0" }, "scope": 37, - "src": "560:156:0", + "src": "559:156:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], "scope": 38, - "src": "409:310:0" + "src": "408:310:0" } ], - "src": "0:721:0" + "src": "0:720:0" }, "id": 0 }, @@ -2626,11 +2631,11 @@ "literals": [ "solidity", "^", - "0.4", - ".24" + "0.5", + ".0" ], "nodeType": "PragmaDirective", - "src": "0:24:1" + "src": "0:23:1" }, { "baseContracts": [], @@ -2655,7 +2660,7 @@ "name": "bearer", "nodeType": "VariableDeclaration", "scope": 44, - "src": "145:32:1", + "src": "150:32:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2668,14 +2673,14 @@ "id": 40, "name": "address", "nodeType": "ElementaryTypeName", - "src": "154:7:1", + "src": "159:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "145:25:1", + "src": "150:25:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" @@ -2684,7 +2689,7 @@ "id": 41, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "165:4:1", + "src": "170:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2698,14 +2703,14 @@ "name": "Role", "nodeType": "StructDefinition", "scope": 131, - "src": "127:55:1", + "src": "128:61:1", "visibility": "public" }, { "body": { "id": 75, "nodeType": "Block", - "src": "302:109:1", + "src": "317:123:1", "statements": [ { "expression": { @@ -2729,7 +2734,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 48, - "src": "316:7:1", + "src": "335:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2750,7 +2755,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "335:1:1", + "src": "354:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2772,7 +2777,7 @@ "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "327:7:1", + "src": "346:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" @@ -2787,13 +2792,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "327:10:1", + "src": "346:10:1", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "src": "316:21:1", + "src": "335:21:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2811,11 +2816,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1136, - 1137 + 1124, + 1125 ], - "referencedDeclaration": 1136, - "src": "308:7:1", + "referencedDeclaration": 1124, + "src": "327:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -2829,7 +2834,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "308:30:1", + "src": "327:30:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -2837,7 +2842,7 @@ }, "id": 58, "nodeType": "ExpressionStatement", - "src": "308:30:1" + "src": "327:30:1" }, { "expression": { @@ -2853,7 +2858,7 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "352:19:1", + "src": "375:19:1", "subExpression": { "argumentTypes": null, "arguments": [ @@ -2864,7 +2869,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 46, - "src": "357:4:1", + "src": "380:4:1", "typeDescriptions": { "typeIdentifier": "t_struct$_Role_$44_storage_ptr", "typeString": "struct Roles.Role storage pointer" @@ -2877,7 +2882,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 48, - "src": "363:7:1", + "src": "386:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2900,7 +2905,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 130, - "src": "353:3:1", + "src": "376:3:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$44_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" @@ -2914,7 +2919,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "353:18:1", + "src": "376:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2937,11 +2942,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1136, - 1137 + 1124, + 1125 ], - "referencedDeclaration": 1136, - "src": "344:7:1", + "referencedDeclaration": 1124, + "src": "367:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -2955,7 +2960,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "344:28:1", + "src": "367:28:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -2963,7 +2968,7 @@ }, "id": 66, "nodeType": "ExpressionStatement", - "src": "344:28:1" + "src": "367:28:1" }, { "expression": { @@ -2984,7 +2989,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 46, - "src": "379:4:1", + "src": "406:4:1", "typeDescriptions": { "typeIdentifier": "t_struct$_Role_$44_storage_ptr", "typeString": "struct Roles.Role storage pointer" @@ -2998,7 +3003,7 @@ "memberName": "bearer", "nodeType": "MemberAccess", "referencedDeclaration": 43, - "src": "379:11:1", + "src": "406:11:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" @@ -3012,7 +3017,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 48, - "src": "391:7:1", + "src": "418:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3023,7 +3028,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "379:20:1", + "src": "406:20:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3041,7 +3046,7 @@ "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "402:4:1", + "src": "429:4:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3049,7 +3054,7 @@ }, "value": "true" }, - "src": "379:27:1", + "src": "406:27:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3057,15 +3062,14 @@ }, "id": 74, "nodeType": "ExpressionStatement", - "src": "379:27:1" + "src": "406:27:1" } ] }, "documentation": "@dev give an account access to this role", "id": 76, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "add", "nodeType": "FunctionDefinition", @@ -3079,7 +3083,7 @@ "name": "role", "nodeType": "VariableDeclaration", "scope": 76, - "src": "257:17:1", + "src": "272:17:1", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { @@ -3092,7 +3096,7 @@ "name": "Role", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 44, - "src": "257:4:1", + "src": "272:4:1", "typeDescriptions": { "typeIdentifier": "t_struct$_Role_$44_storage_ptr", "typeString": "struct Roles.Role" @@ -3107,7 +3111,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 76, - "src": "276:15:1", + "src": "291:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3118,7 +3122,8 @@ "id": 47, "name": "address", "nodeType": "ElementaryTypeName", - "src": "276:7:1", + "src": "291:7:1", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3128,17 +3133,16 @@ "visibility": "internal" } ], - "src": "256:36:1" + "src": "271:36:1" }, - "payable": false, "returnParameters": { "id": 50, "nodeType": "ParameterList", "parameters": [], - "src": "302:0:1" + "src": "317:0:1" }, "scope": 131, - "src": "244:167:1", + "src": "259:181:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" @@ -3147,7 +3151,7 @@ "body": { "id": 106, "nodeType": "Block", - "src": "538:109:1", + "src": "575:123:1", "statements": [ { "expression": { @@ -3171,7 +3175,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 80, - "src": "552:7:1", + "src": "593:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3192,7 +3196,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "571:1:1", + "src": "612:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3214,7 +3218,7 @@ "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "563:7:1", + "src": "604:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" @@ -3229,13 +3233,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "563:10:1", + "src": "604:10:1", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "src": "552:21:1", + "src": "593:21:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3253,11 +3257,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1136, - 1137 + 1124, + 1125 ], - "referencedDeclaration": 1136, - "src": "544:7:1", + "referencedDeclaration": 1124, + "src": "585:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -3271,7 +3275,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "544:30:1", + "src": "585:30:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -3279,7 +3283,7 @@ }, "id": 90, "nodeType": "ExpressionStatement", - "src": "544:30:1" + "src": "585:30:1" }, { "expression": { @@ -3295,7 +3299,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 78, - "src": "592:4:1", + "src": "637:4:1", "typeDescriptions": { "typeIdentifier": "t_struct$_Role_$44_storage_ptr", "typeString": "struct Roles.Role storage pointer" @@ -3308,7 +3312,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 80, - "src": "598:7:1", + "src": "643:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3331,7 +3335,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 130, - "src": "588:3:1", + "src": "633:3:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$44_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" @@ -3345,7 +3349,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "588:18:1", + "src": "633:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3363,11 +3367,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1136, - 1137 + 1124, + 1125 ], - "referencedDeclaration": 1136, - "src": "580:7:1", + "referencedDeclaration": 1124, + "src": "625:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -3381,7 +3385,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "580:27:1", + "src": "625:27:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -3389,7 +3393,7 @@ }, "id": 97, "nodeType": "ExpressionStatement", - "src": "580:27:1" + "src": "625:27:1" }, { "expression": { @@ -3410,7 +3414,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 78, - "src": "614:4:1", + "src": "663:4:1", "typeDescriptions": { "typeIdentifier": "t_struct$_Role_$44_storage_ptr", "typeString": "struct Roles.Role storage pointer" @@ -3424,7 +3428,7 @@ "memberName": "bearer", "nodeType": "MemberAccess", "referencedDeclaration": 43, - "src": "614:11:1", + "src": "663:11:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" @@ -3438,7 +3442,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 80, - "src": "626:7:1", + "src": "675:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3449,7 +3453,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "614:20:1", + "src": "663:20:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3467,7 +3471,7 @@ "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "637:5:1", + "src": "686:5:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3475,7 +3479,7 @@ }, "value": "false" }, - "src": "614:28:1", + "src": "663:28:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3483,15 +3487,14 @@ }, "id": 105, "nodeType": "ExpressionStatement", - "src": "614:28:1" + "src": "663:28:1" } ] }, "documentation": "@dev remove an account's access to this role", "id": 107, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "remove", "nodeType": "FunctionDefinition", @@ -3505,7 +3508,7 @@ "name": "role", "nodeType": "VariableDeclaration", "scope": 107, - "src": "493:17:1", + "src": "530:17:1", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { @@ -3518,7 +3521,7 @@ "name": "Role", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 44, - "src": "493:4:1", + "src": "530:4:1", "typeDescriptions": { "typeIdentifier": "t_struct$_Role_$44_storage_ptr", "typeString": "struct Roles.Role" @@ -3533,7 +3536,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 107, - "src": "512:15:1", + "src": "549:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3544,7 +3547,8 @@ "id": 79, "name": "address", "nodeType": "ElementaryTypeName", - "src": "512:7:1", + "src": "549:7:1", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3554,17 +3558,16 @@ "visibility": "internal" } ], - "src": "492:36:1" + "src": "529:36:1" }, - "payable": false, "returnParameters": { "id": 82, "nodeType": "ParameterList", "parameters": [], - "src": "538:0:1" + "src": "575:0:1" }, "scope": 131, - "src": "477:170:1", + "src": "514:184:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" @@ -3573,7 +3576,7 @@ "body": { "id": 129, "nodeType": "Block", - "src": "817:74:1", + "src": "864:84:1", "statements": [ { "expression": { @@ -3597,7 +3600,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 111, - "src": "831:7:1", + "src": "882:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3618,7 +3621,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "850:1:1", + "src": "901:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3640,7 +3643,7 @@ "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "842:7:1", + "src": "893:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" @@ -3655,13 +3658,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "842:10:1", + "src": "893:10:1", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "src": "831:21:1", + "src": "882:21:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3679,11 +3682,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1136, - 1137 + 1124, + 1125 ], - "referencedDeclaration": 1136, - "src": "823:7:1", + "referencedDeclaration": 1124, + "src": "874:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -3697,7 +3700,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "823:30:1", + "src": "874:30:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -3705,7 +3708,7 @@ }, "id": 123, "nodeType": "ExpressionStatement", - "src": "823:30:1" + "src": "874:30:1" }, { "expression": { @@ -3719,7 +3722,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109, - "src": "866:4:1", + "src": "921:4:1", "typeDescriptions": { "typeIdentifier": "t_struct$_Role_$44_storage_ptr", "typeString": "struct Roles.Role storage pointer" @@ -3733,7 +3736,7 @@ "memberName": "bearer", "nodeType": "MemberAccess", "referencedDeclaration": 43, - "src": "866:11:1", + "src": "921:11:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" @@ -3747,7 +3750,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 111, - "src": "878:7:1", + "src": "933:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3758,7 +3761,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "866:20:1", + "src": "921:20:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3767,15 +3770,14 @@ "functionReturnParameters": 115, "id": 128, "nodeType": "Return", - "src": "859:27:1" + "src": "914:27:1" } ] }, "documentation": "@dev check if an account has this role\n@return bool", "id": 130, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "has", "nodeType": "FunctionDefinition", @@ -3789,7 +3791,7 @@ "name": "role", "nodeType": "VariableDeclaration", "scope": 130, - "src": "738:17:1", + "src": "799:17:1", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { @@ -3802,7 +3804,7 @@ "name": "Role", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 44, - "src": "738:4:1", + "src": "799:4:1", "typeDescriptions": { "typeIdentifier": "t_struct$_Role_$44_storage_ptr", "typeString": "struct Roles.Role" @@ -3817,7 +3819,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 130, - "src": "757:15:1", + "src": "818:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3828,7 +3830,8 @@ "id": 110, "name": "address", "nodeType": "ElementaryTypeName", - "src": "757:7:1", + "src": "818:7:1", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3838,9 +3841,8 @@ "visibility": "internal" } ], - "src": "737:36:1" + "src": "798:36:1" }, - "payable": false, "returnParameters": { "id": 115, "nodeType": "ParameterList", @@ -3851,7 +3853,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 130, - "src": "809:4:1", + "src": "858:4:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3862,7 +3864,7 @@ "id": 113, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "809:4:1", + "src": "858:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3872,20 +3874,20 @@ "visibility": "internal" } ], - "src": "808:6:1" + "src": "857:6:1" }, "scope": 131, - "src": "725:166:1", + "src": "786:162:1", "stateMutability": "view", "superFunction": null, "visibility": "internal" } ], "scope": 132, - "src": "109:784:1" + "src": "108:842:1" } ], - "src": "0:894:1" + "src": "0:951:1" }, "id": 1 }, @@ -3905,11 +3907,11 @@ "literals": [ "solidity", "^", - "0.4", - ".24" + "0.5", + ".0" ], "nodeType": "PragmaDirective", - "src": "0:24:2" + "src": "0:23:2" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", @@ -3918,7 +3920,7 @@ "nodeType": "ImportDirective", "scope": 235, "sourceUnit": 132, - "src": "26:22:2", + "src": "25:22:2", "symbolAliases": [], "unitAlias": "" }, @@ -3943,21 +3945,21 @@ "name": "Roles", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 131, - "src": "80:5:2", + "src": "81:5:2", "typeDescriptions": { "typeIdentifier": "t_contract$_Roles_$131", "typeString": "library Roles" } }, "nodeType": "UsingForDirective", - "src": "74:27:2", + "src": "75:27:2", "typeName": { "contractScope": null, "id": 136, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 44, - "src": "90:10:2", + "src": "91:10:2", "typeDescriptions": { "typeIdentifier": "t_struct$_Role_$44_storage_ptr", "typeString": "struct Roles.Role" @@ -3981,7 +3983,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 141, - "src": "123:23:2", + "src": "126:23:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3992,7 +3994,8 @@ "id": 138, "name": "address", "nodeType": "ElementaryTypeName", - "src": "123:7:2", + "src": "126:7:2", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4002,9 +4005,9 @@ "visibility": "internal" } ], - "src": "122:25:2" + "src": "125:25:2" }, - "src": "105:43:2" + "src": "108:43:2" }, { "anonymous": false, @@ -4023,7 +4026,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 145, - "src": "171:23:2", + "src": "176:23:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4034,7 +4037,8 @@ "id": 142, "name": "address", "nodeType": "ElementaryTypeName", - "src": "171:7:2", + "src": "176:7:2", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4044,17 +4048,17 @@ "visibility": "internal" } ], - "src": "170:25:2" + "src": "175:25:2" }, - "src": "151:45:2" + "src": "156:45:2" }, { "constant": false, "id": 147, - "name": "pausers", + "name": "_pausers", "nodeType": "VariableDeclaration", "scope": 234, - "src": "200:26:2", + "src": "207:27:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4067,7 +4071,7 @@ "name": "Roles.Role", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 44, - "src": "200:10:2", + "src": "207:10:2", "typeDescriptions": { "typeIdentifier": "t_struct$_Role_$44_storage_ptr", "typeString": "struct Roles.Role" @@ -4080,7 +4084,7 @@ "body": { "id": 155, "nodeType": "Block", - "src": "254:33:2", + "src": "265:39:2", "statements": [ { "expression": { @@ -4094,8 +4098,8 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "271:3:2", + "referencedDeclaration": 1121, + "src": "286:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" @@ -4109,18 +4113,18 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "271:10:2", + "src": "286:10:2", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } ], "id": 150, @@ -4128,7 +4132,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 217, - "src": "260:10:2", + "src": "275:10:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" @@ -4142,7 +4146,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "260:22:2", + "src": "275:22:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -4150,15 +4154,14 @@ }, "id": 154, "nodeType": "ExpressionStatement", - "src": "260:22:2" + "src": "275:22:2" } ] }, "documentation": null, "id": 156, "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, + "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", @@ -4166,17 +4169,16 @@ "id": 148, "nodeType": "ParameterList", "parameters": [], - "src": "242:2:2" + "src": "253:2:2" }, - "payable": false, "returnParameters": { "id": 149, "nodeType": "ParameterList", "parameters": [], - "src": "254:0:2" + "src": "265:0:2" }, "scope": 234, - "src": "231:56:2", + "src": "241:63:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" @@ -4185,7 +4187,7 @@ "body": { "id": 166, "nodeType": "Block", - "src": "313:47:2", + "src": "332:57:2", "statements": [ { "expression": { @@ -4202,8 +4204,8 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "336:3:2", + "referencedDeclaration": 1121, + "src": "359:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" @@ -4217,18 +4219,18 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "336:10:2", + "src": "359:10:2", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } ], "id": 159, @@ -4236,7 +4238,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 180, - "src": "327:8:2", + "src": "350:8:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)" @@ -4250,7 +4252,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "327:20:2", + "src": "350:20:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4268,11 +4270,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1136, - 1137 + 1124, + 1125 ], - "referencedDeclaration": 1136, - "src": "319:7:2", + "referencedDeclaration": 1124, + "src": "342:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -4286,7 +4288,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "319:29:2", + "src": "342:29:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -4294,12 +4296,12 @@ }, "id": 164, "nodeType": "ExpressionStatement", - "src": "319:29:2" + "src": "342:29:2" }, { "id": 165, "nodeType": "PlaceholderStatement", - "src": "354:1:2" + "src": "381:1:2" } ] }, @@ -4311,16 +4313,16 @@ "id": 157, "nodeType": "ParameterList", "parameters": [], - "src": "310:2:2" + "src": "329:2:2" }, - "src": "291:69:2", + "src": "310:79:2", "visibility": "internal" }, { "body": { "id": 179, "nodeType": "Block", - "src": "426:38:2", + "src": "457:45:2", "statements": [ { "expression": { @@ -4333,7 +4335,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 169, - "src": "451:7:2", + "src": "487:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4350,11 +4352,11 @@ "expression": { "argumentTypes": null, "id": 174, - "name": "pausers", + "name": "_pausers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 147, - "src": "439:7:2", + "src": "474:8:2", "typeDescriptions": { "typeIdentifier": "t_struct$_Role_$44_storage", "typeString": "struct Roles.Role storage ref" @@ -4368,7 +4370,7 @@ "memberName": "has", "nodeType": "MemberAccess", "referencedDeclaration": 130, - "src": "439:11:2", + "src": "474:12:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$44_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$44_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" @@ -4382,7 +4384,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "439:20:2", + "src": "474:21:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4391,15 +4393,14 @@ "functionReturnParameters": 173, "id": 178, "nodeType": "Return", - "src": "432:27:2" + "src": "467:28:2" } ] }, "documentation": null, "id": 180, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "isPauser", "nodeType": "FunctionDefinition", @@ -4413,7 +4414,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 180, - "src": "382:15:2", + "src": "413:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4424,7 +4425,8 @@ "id": 168, "name": "address", "nodeType": "ElementaryTypeName", - "src": "382:7:2", + "src": "413:7:2", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4434,9 +4436,8 @@ "visibility": "internal" } ], - "src": "381:17:2" + "src": "412:17:2" }, - "payable": false, "returnParameters": { "id": 173, "nodeType": "ParameterList", @@ -4447,7 +4448,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 180, - "src": "420:4:2", + "src": "451:4:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4458,7 +4459,7 @@ "id": 171, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "420:4:2", + "src": "451:4:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4468,10 +4469,10 @@ "visibility": "internal" } ], - "src": "419:6:2" + "src": "450:6:2" }, "scope": 234, - "src": "364:100:2", + "src": "395:107:2", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -4480,7 +4481,7 @@ "body": { "id": 191, "nodeType": "Block", - "src": "522:30:2", + "src": "562:36:2", "statements": [ { "expression": { @@ -4493,7 +4494,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 182, - "src": "539:7:2", + "src": "583:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4512,7 +4513,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 217, - "src": "528:10:2", + "src": "572:10:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" @@ -4526,7 +4527,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "528:19:2", + "src": "572:19:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -4534,15 +4535,14 @@ }, "id": 190, "nodeType": "ExpressionStatement", - "src": "528:19:2" + "src": "572:19:2" } ] }, "documentation": null, "id": 192, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, @@ -4554,14 +4554,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 167, - "src": "511:10:2", + "src": "551:10:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "511:10:2" + "src": "551:10:2" } ], "name": "addPauser", @@ -4576,7 +4576,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 192, - "src": "487:15:2", + "src": "527:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4587,7 +4587,8 @@ "id": 181, "name": "address", "nodeType": "ElementaryTypeName", - "src": "487:7:2", + "src": "527:7:2", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4597,17 +4598,16 @@ "visibility": "internal" } ], - "src": "486:17:2" + "src": "526:17:2" }, - "payable": false, "returnParameters": { "id": 186, "nodeType": "ParameterList", "parameters": [], - "src": "522:0:2" + "src": "562:0:2" }, "scope": 234, - "src": "468:84:2", + "src": "508:90:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -4616,7 +4616,7 @@ "body": { "id": 200, "nodeType": "Block", - "src": "589:36:2", + "src": "637:42:2", "statements": [ { "expression": { @@ -4630,8 +4630,8 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "609:3:2", + "referencedDeclaration": 1121, + "src": "661:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" @@ -4645,18 +4645,18 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "609:10:2", + "src": "661:10:2", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } ], "id": 195, @@ -4664,7 +4664,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 233, - "src": "595:13:2", + "src": "647:13:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" @@ -4678,7 +4678,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "595:25:2", + "src": "647:25:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -4686,15 +4686,14 @@ }, "id": 199, "nodeType": "ExpressionStatement", - "src": "595:25:2" + "src": "647:25:2" } ] }, "documentation": null, "id": 201, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "renouncePauser", "nodeType": "FunctionDefinition", @@ -4702,17 +4701,16 @@ "id": 193, "nodeType": "ParameterList", "parameters": [], - "src": "579:2:2" + "src": "627:2:2" }, - "payable": false, "returnParameters": { "id": 194, "nodeType": "ParameterList", "parameters": [], - "src": "589:0:2" + "src": "637:0:2" }, "scope": 234, - "src": "556:69:2", + "src": "604:75:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -4721,7 +4719,7 @@ "body": { "id": 216, "nodeType": "Block", - "src": "675:62:2", + "src": "731:73:2", "statements": [ { "expression": { @@ -4734,7 +4732,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 203, - "src": "693:7:2", + "src": "754:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4751,11 +4749,11 @@ "expression": { "argumentTypes": null, "id": 206, - "name": "pausers", + "name": "_pausers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 147, - "src": "681:7:2", + "src": "741:8:2", "typeDescriptions": { "typeIdentifier": "t_struct$_Role_$44_storage", "typeString": "struct Roles.Role storage ref" @@ -4769,7 +4767,7 @@ "memberName": "add", "nodeType": "MemberAccess", "referencedDeclaration": 76, - "src": "681:11:2", + "src": "741:12:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$44_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$44_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" @@ -4783,7 +4781,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "681:20:2", + "src": "741:21:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -4791,7 +4789,7 @@ }, "id": 211, "nodeType": "ExpressionStatement", - "src": "681:20:2" + "src": "741:21:2" }, { "eventCall": { @@ -4804,7 +4802,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 203, - "src": "724:7:2", + "src": "789:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4823,7 +4821,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 141, - "src": "712:11:2", + "src": "777:11:2", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" @@ -4837,7 +4835,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "712:20:2", + "src": "777:20:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -4845,15 +4843,14 @@ }, "id": 215, "nodeType": "EmitStatement", - "src": "707:25:2" + "src": "772:25:2" } ] }, "documentation": null, "id": 217, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "_addPauser", "nodeType": "FunctionDefinition", @@ -4867,7 +4864,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 217, - "src": "649:15:2", + "src": "705:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4878,7 +4875,8 @@ "id": 202, "name": "address", "nodeType": "ElementaryTypeName", - "src": "649:7:2", + "src": "705:7:2", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4888,17 +4886,16 @@ "visibility": "internal" } ], - "src": "648:17:2" + "src": "704:17:2" }, - "payable": false, "returnParameters": { "id": 205, "nodeType": "ParameterList", "parameters": [], - "src": "675:0:2" + "src": "731:0:2" }, "scope": 234, - "src": "629:108:2", + "src": "685:119:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" @@ -4907,7 +4904,7 @@ "body": { "id": 232, "nodeType": "Block", - "src": "790:67:2", + "src": "859:78:2", "statements": [ { "expression": { @@ -4920,7 +4917,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 219, - "src": "811:7:2", + "src": "885:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4937,11 +4934,11 @@ "expression": { "argumentTypes": null, "id": 222, - "name": "pausers", + "name": "_pausers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 147, - "src": "796:7:2", + "src": "869:8:2", "typeDescriptions": { "typeIdentifier": "t_struct$_Role_$44_storage", "typeString": "struct Roles.Role storage ref" @@ -4955,7 +4952,7 @@ "memberName": "remove", "nodeType": "MemberAccess", "referencedDeclaration": 107, - "src": "796:14:2", + "src": "869:15:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$44_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$44_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" @@ -4969,7 +4966,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "796:23:2", + "src": "869:24:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -4977,7 +4974,7 @@ }, "id": 227, "nodeType": "ExpressionStatement", - "src": "796:23:2" + "src": "869:24:2" }, { "eventCall": { @@ -4990,7 +4987,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 219, - "src": "844:7:2", + "src": "922:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5009,7 +5006,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 145, - "src": "830:13:2", + "src": "908:13:2", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" @@ -5023,7 +5020,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "830:22:2", + "src": "908:22:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -5031,15 +5028,14 @@ }, "id": 231, "nodeType": "EmitStatement", - "src": "825:27:2" + "src": "903:27:2" } ] }, "documentation": null, "id": 233, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "_removePauser", "nodeType": "FunctionDefinition", @@ -5053,7 +5049,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 233, - "src": "764:15:2", + "src": "833:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5064,7 +5060,8 @@ "id": 218, "name": "address", "nodeType": "ElementaryTypeName", - "src": "764:7:2", + "src": "833:7:2", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5074,27 +5071,26 @@ "visibility": "internal" } ], - "src": "763:17:2" + "src": "832:17:2" }, - "payable": false, "returnParameters": { "id": 221, "nodeType": "ParameterList", "parameters": [], - "src": "790:0:2" + "src": "859:0:2" }, "scope": 234, - "src": "741:116:2", + "src": "810:127:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], "scope": 235, - "src": "50:809:2" + "src": "49:890:2" } ], - "src": "0:860:2" + "src": "0:940:2" }, "id": 2 }, @@ -5114,11 +5110,11 @@ "literals": [ "solidity", "^", - "0.4", - ".24" + "0.5", + ".0" ], "nodeType": "PragmaDirective", - "src": "0:24:3" + "src": "0:23:3" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/roles/PauserRole.sol", @@ -5127,7 +5123,7 @@ "nodeType": "ImportDirective", "scope": 318, "sourceUnit": 235, - "src": "26:40:3", + "src": "25:40:3", "symbolAliases": [], "unitAlias": "" }, @@ -5141,7 +5137,7 @@ "name": "PauserRole", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 234, - "src": "202:10:3", + "src": "201:10:3", "typeDescriptions": { "typeIdentifier": "t_contract$_PauserRole_$234", "typeString": "contract PauserRole" @@ -5149,7 +5145,7 @@ }, "id": 239, "nodeType": "InheritanceSpecifier", - "src": "202:10:3" + "src": "201:10:3" } ], "contractDependencies": [ @@ -5183,7 +5179,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 243, - "src": "230:15:3", + "src": "231:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5194,7 +5190,8 @@ "id": 240, "name": "address", "nodeType": "ElementaryTypeName", - "src": "230:7:3", + "src": "231:7:3", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5204,9 +5201,9 @@ "visibility": "internal" } ], - "src": "229:17:3" + "src": "230:17:3" }, - "src": "217:30:3" + "src": "218:30:3" }, { "anonymous": false, @@ -5225,7 +5222,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 247, - "src": "265:15:3", + "src": "268:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5236,7 +5233,8 @@ "id": 244, "name": "address", "nodeType": "ElementaryTypeName", - "src": "265:7:3", + "src": "268:7:3", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5246,9 +5244,9 @@ "visibility": "internal" } ], - "src": "264:17:3" + "src": "267:17:3" }, - "src": "250:32:3" + "src": "253:32:3" }, { "constant": false, @@ -5256,7 +5254,7 @@ "name": "_paused", "nodeType": "VariableDeclaration", "scope": 317, - "src": "286:20:3", + "src": "291:20:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -5267,7 +5265,7 @@ "id": 248, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "286:4:3", + "src": "291:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5280,7 +5278,7 @@ "body": { "id": 256, "nodeType": "Block", - "src": "334:26:3", + "src": "342:32:3", "statements": [ { "expression": { @@ -5297,7 +5295,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 249, - "src": "340:7:3", + "src": "352:7:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5315,7 +5313,7 @@ "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "350:5:3", + "src": "362:5:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5323,7 +5321,7 @@ }, "value": "false" }, - "src": "340:15:3", + "src": "352:15:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5331,15 +5329,14 @@ }, "id": 255, "nodeType": "ExpressionStatement", - "src": "340:15:3" + "src": "352:15:3" } ] }, "documentation": null, "id": 257, "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, + "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", @@ -5347,17 +5344,16 @@ "id": 250, "nodeType": "ParameterList", "parameters": [], - "src": "322:2:3" + "src": "330:2:3" }, - "payable": false, "returnParameters": { "id": 251, "nodeType": "ParameterList", "parameters": [], - "src": "334:0:3" + "src": "342:0:3" }, "scope": 317, - "src": "311:49:3", + "src": "318:56:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" @@ -5366,7 +5362,7 @@ "body": { "id": 264, "nodeType": "Block", - "src": "482:25:3", + "src": "505:31:3", "statements": [ { "expression": { @@ -5376,7 +5372,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 249, - "src": "495:7:3", + "src": "522:7:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5385,15 +5381,14 @@ "functionReturnParameters": 261, "id": 263, "nodeType": "Return", - "src": "488:14:3" + "src": "515:14:3" } ] }, "documentation": "@return true if the contract is paused, false otherwise.", "id": 265, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "paused", "nodeType": "FunctionDefinition", @@ -5401,9 +5396,8 @@ "id": 258, "nodeType": "ParameterList", "parameters": [], - "src": "453:2:3" + "src": "475:2:3" }, - "payable": false, "returnParameters": { "id": 261, "nodeType": "ParameterList", @@ -5414,7 +5408,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 265, - "src": "476:4:3", + "src": "499:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5425,7 +5419,7 @@ "id": 259, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "476:4:3", + "src": "499:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5435,10 +5429,10 @@ "visibility": "internal" } ], - "src": "475:6:3" + "src": "498:6:3" }, "scope": 317, - "src": "438:69:3", + "src": "460:76:3", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -5447,7 +5441,7 @@ "body": { "id": 273, "nodeType": "Block", - "src": "633:35:3", + "src": "670:45:3", "statements": [ { "expression": { @@ -5463,7 +5457,7 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "647:8:3", + "src": "688:8:3", "subExpression": { "argumentTypes": null, "id": 268, @@ -5471,7 +5465,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 249, - "src": "648:7:3", + "src": "689:7:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5494,11 +5488,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1136, - 1137 + 1124, + 1125 ], - "referencedDeclaration": 1136, - "src": "639:7:3", + "referencedDeclaration": 1124, + "src": "680:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -5512,7 +5506,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "639:17:3", + "src": "680:17:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -5520,12 +5514,12 @@ }, "id": 271, "nodeType": "ExpressionStatement", - "src": "639:17:3" + "src": "680:17:3" }, { "id": 272, "nodeType": "PlaceholderStatement", - "src": "662:1:3" + "src": "707:1:3" } ] }, @@ -5537,16 +5531,16 @@ "id": 266, "nodeType": "ParameterList", "parameters": [], - "src": "630:2:3" + "src": "667:2:3" }, - "src": "608:60:3", + "src": "645:70:3", "visibility": "internal" }, { "body": { "id": 281, "nodeType": "Block", - "src": "787:34:3", + "src": "842:44:3", "statements": [ { "expression": { @@ -5559,7 +5553,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 249, - "src": "801:7:3", + "src": "860:7:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5577,11 +5571,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1136, - 1137 + 1124, + 1125 ], - "referencedDeclaration": 1136, - "src": "793:7:3", + "referencedDeclaration": 1124, + "src": "852:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -5595,7 +5589,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "793:16:3", + "src": "852:16:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -5603,12 +5597,12 @@ }, "id": 279, "nodeType": "ExpressionStatement", - "src": "793:16:3" + "src": "852:16:3" }, { "id": 280, "nodeType": "PlaceholderStatement", - "src": "815:1:3" + "src": "878:1:3" } ] }, @@ -5620,16 +5614,16 @@ "id": 275, "nodeType": "ParameterList", "parameters": [], - "src": "784:2:3" + "src": "839:2:3" }, - "src": "765:56:3", + "src": "820:66:3", "visibility": "internal" }, { "body": { "id": 298, "nodeType": "Block", - "src": "949:54:3", + "src": "1022:64:3", "statements": [ { "expression": { @@ -5646,7 +5640,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 249, - "src": "955:7:3", + "src": "1032:7:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5664,7 +5658,7 @@ "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "965:4:3", + "src": "1042:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5672,7 +5666,7 @@ }, "value": "true" }, - "src": "955:14:3", + "src": "1032:14:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5680,7 +5674,7 @@ }, "id": 292, "nodeType": "ExpressionStatement", - "src": "955:14:3" + "src": "1032:14:3" }, { "eventCall": { @@ -5694,8 +5688,8 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "987:3:3", + "referencedDeclaration": 1121, + "src": "1068:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" @@ -5709,18 +5703,18 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "987:10:3", + "src": "1068:10:3", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } ], "id": 293, @@ -5728,7 +5722,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 243, - "src": "980:6:3", + "src": "1061:6:3", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" @@ -5742,7 +5736,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "980:18:3", + "src": "1061:18:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -5750,15 +5744,14 @@ }, "id": 297, "nodeType": "EmitStatement", - "src": "975:23:3" + "src": "1056:23:3" } ] }, "documentation": "@dev called by the owner to pause, triggers stopped state", "id": 299, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, @@ -5770,14 +5763,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 167, - "src": "924:10:3", + "src": "997:10:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "924:10:3" + "src": "997:10:3" }, { "arguments": null, @@ -5789,14 +5782,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 274, - "src": "935:13:3", + "src": "1008:13:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "935:13:3" + "src": "1008:13:3" } ], "name": "pause", @@ -5805,17 +5798,16 @@ "id": 283, "nodeType": "ParameterList", "parameters": [], - "src": "914:2:3" + "src": "987:2:3" }, - "payable": false, "returnParameters": { "id": 288, "nodeType": "ParameterList", "parameters": [], - "src": "949:0:3" + "src": "1022:0:3" }, "scope": 317, - "src": "900:103:3", + "src": "973:113:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -5824,7 +5816,7 @@ "body": { "id": 315, "nodeType": "Block", - "src": "1133:57:3", + "src": "1224:67:3", "statements": [ { "expression": { @@ -5841,7 +5833,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 249, - "src": "1139:7:3", + "src": "1234:7:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5859,7 +5851,7 @@ "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1149:5:3", + "src": "1244:5:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5867,7 +5859,7 @@ }, "value": "false" }, - "src": "1139:15:3", + "src": "1234:15:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5875,7 +5867,7 @@ }, "id": 309, "nodeType": "ExpressionStatement", - "src": "1139:15:3" + "src": "1234:15:3" }, { "eventCall": { @@ -5889,8 +5881,8 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "1174:3:3", + "referencedDeclaration": 1121, + "src": "1273:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" @@ -5904,18 +5896,18 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1174:10:3", + "src": "1273:10:3", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } ], "id": 310, @@ -5923,7 +5915,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 247, - "src": "1165:8:3", + "src": "1264:8:3", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" @@ -5937,7 +5929,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1165:20:3", + "src": "1264:20:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -5945,15 +5937,14 @@ }, "id": 314, "nodeType": "EmitStatement", - "src": "1160:25:3" + "src": "1259:25:3" } ] }, "documentation": "@dev called by the owner to unpause, returns to normal state", "id": 316, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, @@ -5965,14 +5956,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 167, - "src": "1111:10:3", + "src": "1202:10:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1111:10:3" + "src": "1202:10:3" }, { "arguments": null, @@ -5984,14 +5975,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 282, - "src": "1122:10:3", + "src": "1213:10:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1122:10:3" + "src": "1213:10:3" } ], "name": "unpause", @@ -6000,27 +5991,26 @@ "id": 300, "nodeType": "ParameterList", "parameters": [], - "src": "1101:2:3" + "src": "1192:2:3" }, - "payable": false, "returnParameters": { "id": 305, "nodeType": "ParameterList", "parameters": [], - "src": "1133:0:3" + "src": "1224:0:3" }, "scope": 317, - "src": "1085:105:3", + "src": "1176:115:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], "scope": 318, - "src": "181:1011:3" + "src": "180:1113:3" } ], - "src": "0:1193:3" + "src": "0:1294:3" }, "id": 3 }, @@ -6040,17 +6030,17 @@ "literals": [ "solidity", "^", - "0.4", - ".24" + "0.5", + ".0" ], "nodeType": "PragmaDirective", - "src": "0:24:4" + "src": "0:23:4" }, { "baseContracts": [], "contractDependencies": [], "contractKind": "library", - "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", + "documentation": "@title SafeMath\n@dev Unsigned math operations with safety checks that revert on error", "fullyImplemented": true, "id": 445, "linearizedBaseContracts": [ @@ -6063,7 +6053,7 @@ "body": { "id": 351, "nodeType": "Block", - "src": "271:314:4", + "src": "296:354:4", "statements": [ { "condition": { @@ -6084,7 +6074,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 321, - "src": "486:1:4", + "src": "527:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6102,7 +6092,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "491:1:4", + "src": "532:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6110,7 +6100,7 @@ }, "value": "0" }, - "src": "486:6:4", + "src": "527:6:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6119,11 +6109,11 @@ "falseBody": null, "id": 334, "nodeType": "IfStatement", - "src": "482:35:4", + "src": "523:45:4", "trueBody": { "id": 333, "nodeType": "Block", - "src": "494:23:4", + "src": "535:33:4", "statements": [ { "expression": { @@ -6136,7 +6126,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "509:1:4", + "src": "556:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6147,7 +6137,7 @@ "functionReturnParameters": 327, "id": 332, "nodeType": "Return", - "src": "502:8:4" + "src": "549:8:4" } ] } @@ -6162,8 +6152,8 @@ "id": 336, "name": "c", "nodeType": "VariableDeclaration", - "scope": 352, - "src": "523:9:4", + "scope": 351, + "src": "578:9:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6174,7 +6164,7 @@ "id": 335, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "523:7:4", + "src": "578:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6203,7 +6193,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 321, - "src": "535:1:4", + "src": "590:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6218,20 +6208,20 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 323, - "src": "539:1:4", + "src": "594:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "535:5:4", + "src": "590:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "523:17:4" + "src": "578:17:4" }, { "expression": { @@ -6266,7 +6256,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 336, - "src": "554:1:4", + "src": "613:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6281,13 +6271,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 321, - "src": "558:1:4", + "src": "617:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "554:5:4", + "src": "613:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6302,13 +6292,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 323, - "src": "563:1:4", + "src": "622:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "554:10:4", + "src": "613:10:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6326,11 +6316,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1136, - 1137 + 1124, + 1125 ], - "referencedDeclaration": 1136, - "src": "546:7:4", + "referencedDeclaration": 1124, + "src": "605:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -6344,7 +6334,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "546:19:4", + "src": "605:19:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -6352,7 +6342,7 @@ }, "id": 348, "nodeType": "ExpressionStatement", - "src": "546:19:4" + "src": "605:19:4" }, { "expression": { @@ -6362,7 +6352,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 336, - "src": "579:1:4", + "src": "642:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6371,15 +6361,14 @@ "functionReturnParameters": 327, "id": 350, "nodeType": "Return", - "src": "572:8:4" + "src": "635:8:4" } ] }, - "documentation": "@dev Multiplies two numbers, reverts on overflow.", + "documentation": "@dev Multiplies two unsigned integers, reverts on overflow.", "id": 352, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "mul", "nodeType": "FunctionDefinition", @@ -6393,7 +6382,7 @@ "name": "a", "nodeType": "VariableDeclaration", "scope": 352, - "src": "217:9:4", + "src": "242:9:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6404,7 +6393,7 @@ "id": 320, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "217:7:4", + "src": "242:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6419,7 +6408,7 @@ "name": "b", "nodeType": "VariableDeclaration", "scope": 352, - "src": "228:9:4", + "src": "253:9:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6430,7 +6419,7 @@ "id": 322, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "228:7:4", + "src": "253:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6440,9 +6429,8 @@ "visibility": "internal" } ], - "src": "216:22:4" + "src": "241:22:4" }, - "payable": false, "returnParameters": { "id": 327, "nodeType": "ParameterList", @@ -6453,7 +6441,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 352, - "src": "262:7:4", + "src": "287:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6464,7 +6452,7 @@ "id": 325, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "262:7:4", + "src": "287:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6474,10 +6462,10 @@ "visibility": "internal" } ], - "src": "261:9:4" + "src": "286:9:4" }, "scope": 445, - "src": "204:381:4", + "src": "229:421:4", "stateMutability": "pure", "superFunction": null, "visibility": "internal" @@ -6486,7 +6474,7 @@ "body": { "id": 375, "nodeType": "Block", - "src": "762:203:4", + "src": "845:229:4", "statements": [ { "expression": { @@ -6510,7 +6498,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 356, - "src": "776:1:4", + "src": "929:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6528,7 +6516,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "780:1:4", + "src": "933:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6536,7 +6524,7 @@ }, "value": "0" }, - "src": "776:5:4", + "src": "929:5:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6554,11 +6542,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1136, - 1137 + 1124, + 1125 ], - "referencedDeclaration": 1136, - "src": "768:7:4", + "referencedDeclaration": 1124, + "src": "921:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -6572,7 +6560,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "768:14:4", + "src": "921:14:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -6580,7 +6568,7 @@ }, "id": 366, "nodeType": "ExpressionStatement", - "src": "768:14:4" + "src": "921:14:4" }, { "assignments": [ @@ -6592,8 +6580,8 @@ "id": 368, "name": "c", "nodeType": "VariableDeclaration", - "scope": 376, - "src": "846:9:4", + "scope": 375, + "src": "945:9:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6604,7 +6592,7 @@ "id": 367, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "846:7:4", + "src": "945:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6633,7 +6621,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 354, - "src": "858:1:4", + "src": "957:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6648,20 +6636,20 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 356, - "src": "862:1:4", + "src": "961:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "858:5:4", + "src": "957:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "846:17:4" + "src": "945:17:4" }, { "expression": { @@ -6671,7 +6659,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 368, - "src": "959:1:4", + "src": "1066:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6680,15 +6668,14 @@ "functionReturnParameters": 360, "id": 374, "nodeType": "Return", - "src": "952:8:4" + "src": "1059:8:4" } ] }, - "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", + "documentation": "@dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.", "id": 376, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "div", "nodeType": "FunctionDefinition", @@ -6702,7 +6689,7 @@ "name": "a", "nodeType": "VariableDeclaration", "scope": 376, - "src": "708:9:4", + "src": "791:9:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6713,7 +6700,7 @@ "id": 353, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "708:7:4", + "src": "791:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6728,7 +6715,7 @@ "name": "b", "nodeType": "VariableDeclaration", "scope": 376, - "src": "719:9:4", + "src": "802:9:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6739,7 +6726,7 @@ "id": 355, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "719:7:4", + "src": "802:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6749,9 +6736,8 @@ "visibility": "internal" } ], - "src": "707:22:4" + "src": "790:22:4" }, - "payable": false, "returnParameters": { "id": 360, "nodeType": "ParameterList", @@ -6762,7 +6748,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 376, - "src": "753:7:4", + "src": "836:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6773,7 +6759,7 @@ "id": 358, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "753:7:4", + "src": "836:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6783,10 +6769,10 @@ "visibility": "internal" } ], - "src": "752:9:4" + "src": "835:9:4" }, "scope": 445, - "src": "695:270:4", + "src": "778:296:4", "stateMutability": "pure", "superFunction": null, "visibility": "internal" @@ -6795,7 +6781,7 @@ "body": { "id": 399, "nodeType": "Block", - "src": "1145:64:4", + "src": "1272:78:4", "statements": [ { "expression": { @@ -6819,7 +6805,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 380, - "src": "1159:1:4", + "src": "1290:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6834,13 +6820,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 378, - "src": "1164:1:4", + "src": "1295:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1159:6:4", + "src": "1290:6:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6858,11 +6844,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1136, - 1137 + 1124, + 1125 ], - "referencedDeclaration": 1136, - "src": "1151:7:4", + "referencedDeclaration": 1124, + "src": "1282:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -6876,7 +6862,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1151:15:4", + "src": "1282:15:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -6884,7 +6870,7 @@ }, "id": 390, "nodeType": "ExpressionStatement", - "src": "1151:15:4" + "src": "1282:15:4" }, { "assignments": [ @@ -6896,8 +6882,8 @@ "id": 392, "name": "c", "nodeType": "VariableDeclaration", - "scope": 400, - "src": "1172:9:4", + "scope": 399, + "src": "1307:9:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6908,7 +6894,7 @@ "id": 391, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1172:7:4", + "src": "1307:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6937,7 +6923,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 378, - "src": "1184:1:4", + "src": "1319:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6952,20 +6938,20 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 380, - "src": "1188:1:4", + "src": "1323:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1184:5:4", + "src": "1319:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1172:17:4" + "src": "1307:17:4" }, { "expression": { @@ -6975,7 +6961,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 392, - "src": "1203:1:4", + "src": "1342:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6984,15 +6970,14 @@ "functionReturnParameters": 384, "id": 398, "nodeType": "Return", - "src": "1196:8:4" + "src": "1335:8:4" } ] }, - "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", + "documentation": "@dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).", "id": 400, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "sub", "nodeType": "FunctionDefinition", @@ -7006,7 +6991,7 @@ "name": "a", "nodeType": "VariableDeclaration", "scope": 400, - "src": "1091:9:4", + "src": "1218:9:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7017,7 +7002,7 @@ "id": 377, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1091:7:4", + "src": "1218:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7032,7 +7017,7 @@ "name": "b", "nodeType": "VariableDeclaration", "scope": 400, - "src": "1102:9:4", + "src": "1229:9:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7043,7 +7028,7 @@ "id": 379, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1102:7:4", + "src": "1229:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7053,9 +7038,8 @@ "visibility": "internal" } ], - "src": "1090:22:4" + "src": "1217:22:4" }, - "payable": false, "returnParameters": { "id": 384, "nodeType": "ParameterList", @@ -7066,7 +7050,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 400, - "src": "1136:7:4", + "src": "1263:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7077,7 +7061,7 @@ "id": 382, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1136:7:4", + "src": "1263:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7087,10 +7071,10 @@ "visibility": "internal" } ], - "src": "1135:9:4" + "src": "1262:9:4" }, "scope": 445, - "src": "1078:131:4", + "src": "1205:145:4", "stateMutability": "pure", "superFunction": null, "visibility": "internal" @@ -7099,7 +7083,7 @@ "body": { "id": 423, "nodeType": "Block", - "src": "1339:64:4", + "src": "1498:78:4", "statements": [ { "assignments": [ @@ -7111,8 +7095,8 @@ "id": 410, "name": "c", "nodeType": "VariableDeclaration", - "scope": 424, - "src": "1345:9:4", + "scope": 423, + "src": "1508:9:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7123,7 +7107,7 @@ "id": 409, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1345:7:4", + "src": "1508:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7152,7 +7136,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 402, - "src": "1357:1:4", + "src": "1520:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7167,20 +7151,20 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 404, - "src": "1361:1:4", + "src": "1524:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1357:5:4", + "src": "1520:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1345:17:4" + "src": "1508:17:4" }, { "expression": { @@ -7204,7 +7188,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 410, - "src": "1376:1:4", + "src": "1543:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7219,13 +7203,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 402, - "src": "1381:1:4", + "src": "1548:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1376:6:4", + "src": "1543:6:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7243,11 +7227,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1136, - 1137 + 1124, + 1125 ], - "referencedDeclaration": 1136, - "src": "1368:7:4", + "referencedDeclaration": 1124, + "src": "1535:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -7261,7 +7245,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1368:15:4", + "src": "1535:15:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -7269,7 +7253,7 @@ }, "id": 420, "nodeType": "ExpressionStatement", - "src": "1368:15:4" + "src": "1535:15:4" }, { "expression": { @@ -7279,7 +7263,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 410, - "src": "1397:1:4", + "src": "1568:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7288,15 +7272,14 @@ "functionReturnParameters": 408, "id": 422, "nodeType": "Return", - "src": "1390:8:4" + "src": "1561:8:4" } ] }, - "documentation": "@dev Adds two numbers, reverts on overflow.", + "documentation": "@dev Adds two unsigned integers, reverts on overflow.", "id": 424, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "add", "nodeType": "FunctionDefinition", @@ -7310,7 +7293,7 @@ "name": "a", "nodeType": "VariableDeclaration", "scope": 424, - "src": "1285:9:4", + "src": "1444:9:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7321,7 +7304,7 @@ "id": 401, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1285:7:4", + "src": "1444:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7336,7 +7319,7 @@ "name": "b", "nodeType": "VariableDeclaration", "scope": 424, - "src": "1296:9:4", + "src": "1455:9:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7347,7 +7330,7 @@ "id": 403, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1296:7:4", + "src": "1455:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7357,9 +7340,8 @@ "visibility": "internal" } ], - "src": "1284:22:4" + "src": "1443:22:4" }, - "payable": false, "returnParameters": { "id": 408, "nodeType": "ParameterList", @@ -7370,7 +7352,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 424, - "src": "1330:7:4", + "src": "1489:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7381,7 +7363,7 @@ "id": 406, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1330:7:4", + "src": "1489:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7391,10 +7373,10 @@ "visibility": "internal" } ], - "src": "1329:9:4" + "src": "1488:9:4" }, "scope": 445, - "src": "1272:131:4", + "src": "1431:145:4", "stateMutability": "pure", "superFunction": null, "visibility": "internal" @@ -7403,7 +7385,7 @@ "body": { "id": 443, "nodeType": "Block", - "src": "1602:44:4", + "src": "1795:54:4", "statements": [ { "expression": { @@ -7427,7 +7409,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 428, - "src": "1616:1:4", + "src": "1813:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7445,7 +7427,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1621:1:4", + "src": "1818:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7453,7 +7435,7 @@ }, "value": "0" }, - "src": "1616:6:4", + "src": "1813:6:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7471,11 +7453,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1136, - 1137 + 1124, + 1125 ], - "referencedDeclaration": 1136, - "src": "1608:7:4", + "referencedDeclaration": 1124, + "src": "1805:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -7489,7 +7471,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1608:15:4", + "src": "1805:15:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -7497,7 +7479,7 @@ }, "id": 438, "nodeType": "ExpressionStatement", - "src": "1608:15:4" + "src": "1805:15:4" }, { "expression": { @@ -7518,7 +7500,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 426, - "src": "1636:1:4", + "src": "1837:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7533,13 +7515,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 428, - "src": "1640:1:4", + "src": "1841:1:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1636:5:4", + "src": "1837:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7548,15 +7530,14 @@ "functionReturnParameters": 432, "id": 442, "nodeType": "Return", - "src": "1629:12:4" + "src": "1830:12:4" } ] }, - "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", + "documentation": "@dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", "id": 444, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "mod", "nodeType": "FunctionDefinition", @@ -7570,7 +7551,7 @@ "name": "a", "nodeType": "VariableDeclaration", "scope": 444, - "src": "1548:9:4", + "src": "1741:9:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7581,7 +7562,7 @@ "id": 425, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1548:7:4", + "src": "1741:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7596,7 +7577,7 @@ "name": "b", "nodeType": "VariableDeclaration", "scope": 444, - "src": "1559:9:4", + "src": "1752:9:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7607,7 +7588,7 @@ "id": 427, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1559:7:4", + "src": "1752:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7617,9 +7598,8 @@ "visibility": "internal" } ], - "src": "1547:22:4" + "src": "1740:22:4" }, - "payable": false, "returnParameters": { "id": 432, "nodeType": "ParameterList", @@ -7630,7 +7610,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 444, - "src": "1593:7:4", + "src": "1786:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7641,7 +7621,7 @@ "id": 430, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1593:7:4", + "src": "1786:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7651,20 +7631,20 @@ "visibility": "internal" } ], - "src": "1592:9:4" + "src": "1785:9:4" }, "scope": 445, - "src": "1535:111:4", + "src": "1728:121:4", "stateMutability": "pure", "superFunction": null, "visibility": "internal" } ], "scope": 446, - "src": "117:1531:4" + "src": "125:1726:4" } ], - "src": "0:1649:4" + "src": "0:1852:4" }, "id": 4 }, @@ -7673,10 +7653,10 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", "exportedSymbols": { "ERC20": [ - 889 + 877 ] }, - "id": 890, + "id": 878, "nodeType": "SourceUnit", "nodes": [ { @@ -7684,20 +7664,20 @@ "literals": [ "solidity", "^", - "0.4", - ".24" + "0.5", + ".0" ], "nodeType": "PragmaDirective", - "src": "0:24:5" + "src": "0:23:5" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "./IERC20.sol", "id": 448, "nodeType": "ImportDirective", - "scope": 890, - "sourceUnit": 1119, - "src": "26:22:5", + "scope": 878, + "sourceUnit": 1107, + "src": "25:22:5", "symbolAliases": [], "unitAlias": "" }, @@ -7706,9 +7686,9 @@ "file": "../../math/SafeMath.sol", "id": 449, "nodeType": "ImportDirective", - "scope": 890, + "scope": 878, "sourceUnit": 446, - "src": "49:33:5", + "src": "48:33:5", "symbolAliases": [], "unitAlias": "" }, @@ -7721,28 +7701,28 @@ "id": 450, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1118, - "src": "387:6:5", + "referencedDeclaration": 1106, + "src": "667:6:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1118", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" } }, "id": 451, "nodeType": "InheritanceSpecifier", - "src": "387:6:5" + "src": "667:6:5" } ], "contractDependencies": [ - 1118 + 1106 ], "contractKind": "contract", - "documentation": "@title Standard ERC20 token\n * @dev Implementation of the basic standard token.\nhttps://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md\nOriginally based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol", + "documentation": "@title Standard ERC20 token\n * @dev Implementation of the basic standard token.\nhttps://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md\nOriginally based on code by FirstBlood:\nhttps://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol\n * This implementation emits additional Approval events, allowing applications to reconstruct the allowance status for\nall accounts just by listening to said events. Note that this isn't required by the specification, and other\ncompliant implementations may not do it.", "fullyImplemented": true, - "id": 889, + "id": 877, "linearizedBaseContracts": [ - 889, - 1118 + 877, + 1106 ], "name": "ERC20", "nodeType": "ContractDefinition", @@ -7755,19 +7735,19 @@ "name": "SafeMath", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 445, - "src": "404:8:5", + "src": "686:8:5", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeMath_$445", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", - "src": "398:27:5", + "src": "680:27:5", "typeName": { "id": 453, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "417:7:5", + "src": "699:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7779,8 +7759,8 @@ "id": 458, "name": "_balances", "nodeType": "VariableDeclaration", - "scope": 889, - "src": "429:46:5", + "scope": 877, + "src": "713:46:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -7793,14 +7773,14 @@ "id": 455, "name": "address", "nodeType": "ElementaryTypeName", - "src": "438:7:5", + "src": "722:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "429:28:5", + "src": "713:28:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" @@ -7809,7 +7789,7 @@ "id": 456, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "449:7:5", + "src": "733:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7824,8 +7804,8 @@ "id": 464, "name": "_allowed", "nodeType": "VariableDeclaration", - "scope": 889, - "src": "480:66:5", + "scope": 877, + "src": "766:66:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -7838,14 +7818,14 @@ "id": 459, "name": "address", "nodeType": "ElementaryTypeName", - "src": "489:7:5", + "src": "775:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "480:49:5", + "src": "766:49:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" @@ -7856,14 +7836,14 @@ "id": 460, "name": "address", "nodeType": "ElementaryTypeName", - "src": "509:7:5", + "src": "795:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "500:28:5", + "src": "786:28:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" @@ -7872,7 +7852,7 @@ "id": 461, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "520:7:5", + "src": "806:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7888,8 +7868,8 @@ "id": 466, "name": "_totalSupply", "nodeType": "VariableDeclaration", - "scope": 889, - "src": "551:28:5", + "scope": 877, + "src": "839:28:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -7900,7 +7880,7 @@ "id": 465, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "551:7:5", + "src": "839:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7913,7 +7893,7 @@ "body": { "id": 473, "nodeType": "Block", - "src": "693:30:5", + "src": "989:36:5", "statements": [ { "expression": { @@ -7923,7 +7903,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 466, - "src": "706:12:5", + "src": "1006:12:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7932,15 +7912,14 @@ "functionReturnParameters": 470, "id": 472, "nodeType": "Return", - "src": "699:19:5" + "src": "999:19:5" } ] }, "documentation": "@dev Total number of tokens in existence", "id": 474, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "totalSupply", "nodeType": "FunctionDefinition", @@ -7948,9 +7927,8 @@ "id": 467, "nodeType": "ParameterList", "parameters": [], - "src": "660:2:5" + "src": "956:2:5" }, - "payable": false, "returnParameters": { "id": 470, "nodeType": "ParameterList", @@ -7961,7 +7939,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 474, - "src": "684:7:5", + "src": "980:7:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7972,7 +7950,7 @@ "id": 468, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "684:7:5", + "src": "980:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7982,19 +7960,19 @@ "visibility": "internal" } ], - "src": "683:9:5" + "src": "979:9:5" }, - "scope": 889, - "src": "640:83:5", + "scope": 877, + "src": "936:89:5", "stateMutability": "view", - "superFunction": 1056, + "superFunction": 1073, "visibility": "public" }, { "body": { "id": 485, "nodeType": "Block", - "src": "984:34:5", + "src": "1298:40:5", "statements": [ { "expression": { @@ -8006,7 +7984,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 458, - "src": "997:9:5", + "src": "1315:9:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" @@ -8020,7 +7998,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 476, - "src": "1007:5:5", + "src": "1325:5:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8031,7 +8009,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "997:16:5", + "src": "1315:16:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8040,15 +8018,14 @@ "functionReturnParameters": 480, "id": 484, "nodeType": "Return", - "src": "990:23:5" + "src": "1308:23:5" } ] }, "documentation": "@dev Gets the balance of the specified address.\n@param owner The address to query the balance of.\n@return An uint256 representing the amount owned by the passed address.", "id": 486, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "balanceOf", "nodeType": "FunctionDefinition", @@ -8062,7 +8039,7 @@ "name": "owner", "nodeType": "VariableDeclaration", "scope": 486, - "src": "939:13:5", + "src": "1253:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8073,7 +8050,8 @@ "id": 475, "name": "address", "nodeType": "ElementaryTypeName", - "src": "939:7:5", + "src": "1253:7:5", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8083,9 +8061,8 @@ "visibility": "internal" } ], - "src": "938:15:5" + "src": "1252:15:5" }, - "payable": false, "returnParameters": { "id": 480, "nodeType": "ParameterList", @@ -8096,7 +8073,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 486, - "src": "975:7:5", + "src": "1289:7:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8107,7 +8084,7 @@ "id": 478, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "975:7:5", + "src": "1289:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8117,19 +8094,19 @@ "visibility": "internal" } ], - "src": "974:9:5" + "src": "1288:9:5" }, - "scope": 889, - "src": "920:98:5", + "scope": 877, + "src": "1234:104:5", "stateMutability": "view", - "superFunction": 1063, + "superFunction": 1080, "visibility": "public" }, { "body": { "id": 501, "nodeType": "Block", - "src": "1443:42:5", + "src": "1750:48:5", "statements": [ { "expression": { @@ -8143,7 +8120,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 464, - "src": "1456:8:5", + "src": "1767:8:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" @@ -8157,7 +8134,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 488, - "src": "1465:5:5", + "src": "1776:5:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8168,7 +8145,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1456:15:5", + "src": "1767:15:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" @@ -8182,7 +8159,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 490, - "src": "1472:7:5", + "src": "1783:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8193,7 +8170,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1456:24:5", + "src": "1767:24:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8202,15 +8179,14 @@ "functionReturnParameters": 494, "id": 500, "nodeType": "Return", - "src": "1449:31:5" + "src": "1760:31:5" } ] }, "documentation": "@dev Function to check the amount of tokens that an owner allowed to a spender.\n@param owner address The address which owns the funds.\n@param spender address The address which will spend the funds.\n@return A uint256 specifying the amount of tokens still available for the spender.", "id": 502, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "allowance", "nodeType": "FunctionDefinition", @@ -8224,7 +8200,7 @@ "name": "owner", "nodeType": "VariableDeclaration", "scope": 502, - "src": "1359:13:5", + "src": "1688:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8235,7 +8211,8 @@ "id": 487, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1359:7:5", + "src": "1688:7:5", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8250,7 +8227,7 @@ "name": "spender", "nodeType": "VariableDeclaration", "scope": 502, - "src": "1378:15:5", + "src": "1703:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8261,7 +8238,8 @@ "id": 489, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1378:7:5", + "src": "1703:7:5", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8271,9 +8249,8 @@ "visibility": "internal" } ], - "src": "1353:45:5" + "src": "1687:32:5" }, - "payable": false, "returnParameters": { "id": 494, "nodeType": "ParameterList", @@ -8284,7 +8261,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 502, - "src": "1432:7:5", + "src": "1741:7:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8295,7 +8272,7 @@ "id": 492, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1432:7:5", + "src": "1741:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8305,19 +8282,19 @@ "visibility": "internal" } ], - "src": "1431:9:5" + "src": "1740:9:5" }, - "scope": 889, - "src": "1335:150:5", + "scope": 877, + "src": "1669:129:5", "stateMutability": "view", - "superFunction": 1072, + "superFunction": 1089, "visibility": "public" }, { "body": { "id": 520, "nodeType": "Block", - "src": "1704:60:5", + "src": "2029:70:5", "statements": [ { "expression": { @@ -8331,8 +8308,8 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "1720:3:5", + "referencedDeclaration": 1121, + "src": "2049:3:5", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" @@ -8346,10 +8323,10 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1720:10:5", + "src": "2049:10:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, { @@ -8359,7 +8336,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 504, - "src": "1732:2:5", + "src": "2061:2:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8372,7 +8349,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 506, - "src": "1736:5:5", + "src": "2065:5:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8382,8 +8359,8 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" }, { "typeIdentifier": "t_address", @@ -8398,8 +8375,8 @@ "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 759, - "src": "1710:9:5", + "referencedDeclaration": 750, + "src": "2039:9:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" @@ -8413,7 +8390,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1710:32:5", + "src": "2039:32:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -8421,7 +8398,7 @@ }, "id": 517, "nodeType": "ExpressionStatement", - "src": "1710:32:5" + "src": "2039:32:5" }, { "expression": { @@ -8434,7 +8411,7 @@ "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1755:4:5", + "src": "2088:4:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -8445,15 +8422,14 @@ "functionReturnParameters": 510, "id": 519, "nodeType": "Return", - "src": "1748:11:5" + "src": "2081:11:5" } ] }, "documentation": "@dev Transfer token for a specified address\n@param to The address to transfer to.\n@param value The amount to be transferred.", "id": 521, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "transfer", "nodeType": "FunctionDefinition", @@ -8467,7 +8443,7 @@ "name": "to", "nodeType": "VariableDeclaration", "scope": 521, - "src": "1655:10:5", + "src": "1980:10:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8478,7 +8454,8 @@ "id": 503, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1655:7:5", + "src": "1980:7:5", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8493,7 +8470,7 @@ "name": "value", "nodeType": "VariableDeclaration", "scope": 521, - "src": "1667:13:5", + "src": "1992:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8504,7 +8481,7 @@ "id": 505, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1667:7:5", + "src": "1992:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8514,9 +8491,8 @@ "visibility": "internal" } ], - "src": "1654:27:5" + "src": "1979:27:5" }, - "payable": false, "returnParameters": { "id": 510, "nodeType": "ParameterList", @@ -8527,7 +8503,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 521, - "src": "1698:4:5", + "src": "2023:4:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8538,7 +8514,7 @@ "id": 508, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1698:4:5", + "src": "2023:4:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8548,19 +8524,19 @@ "visibility": "internal" } ], - "src": "1697:6:5" + "src": "2022:6:5" }, - "scope": 889, - "src": "1637:127:5", + "scope": 877, + "src": "1962:137:5", "stateMutability": "nonpayable", - "superFunction": 1081, + "superFunction": 1048, "visibility": "public" }, { "body": { "id": 556, "nodeType": "Block", - "src": "2451:149:5", + "src": "2806:167:5", "statements": [ { "expression": { @@ -8584,7 +8560,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 523, - "src": "2465:7:5", + "src": "2824:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8605,7 +8581,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2484:1:5", + "src": "2843:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -8627,7 +8603,7 @@ "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2476:7:5", + "src": "2835:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" @@ -8642,13 +8618,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2476:10:5", + "src": "2835:10:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "src": "2465:21:5", + "src": "2824:21:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8666,11 +8642,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1136, - 1137 + 1124, + 1125 ], - "referencedDeclaration": 1136, - "src": "2457:7:5", + "referencedDeclaration": 1124, + "src": "2816:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -8684,7 +8660,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2457:30:5", + "src": "2816:30:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -8692,7 +8668,7 @@ }, "id": 537, "nodeType": "ExpressionStatement", - "src": "2457:30:5" + "src": "2816:30:5" }, { "expression": { @@ -8713,7 +8689,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 464, - "src": "2494:8:5", + "src": "2857:8:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" @@ -8728,8 +8704,8 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "2503:3:5", + "referencedDeclaration": 1121, + "src": "2866:3:5", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" @@ -8743,10 +8719,10 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2503:10:5", + "src": "2866:10:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, "isConstant": false, @@ -8754,7 +8730,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2494:20:5", + "src": "2857:20:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" @@ -8768,7 +8744,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 523, - "src": "2515:7:5", + "src": "2878:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8779,7 +8755,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2494:29:5", + "src": "2857:29:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8794,13 +8770,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 525, - "src": "2526:5:5", + "src": "2889:5:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2494:37:5", + "src": "2857:37:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8808,7 +8784,7 @@ }, "id": 546, "nodeType": "ExpressionStatement", - "src": "2494:37:5" + "src": "2857:37:5" }, { "eventCall": { @@ -8822,8 +8798,8 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "2551:3:5", + "referencedDeclaration": 1121, + "src": "2918:3:5", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" @@ -8837,10 +8813,10 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2551:10:5", + "src": "2918:10:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, { @@ -8850,7 +8826,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 523, - "src": "2563:7:5", + "src": "2930:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8863,7 +8839,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 525, - "src": "2572:5:5", + "src": "2939:5:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8873,8 +8849,8 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" }, { "typeIdentifier": "t_address", @@ -8889,8 +8865,8 @@ "name": "Approval", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1117, - "src": "2542:8:5", + "referencedDeclaration": 1105, + "src": "2909:8:5", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" @@ -8904,7 +8880,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2542:36:5", + "src": "2909:36:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -8912,7 +8888,7 @@ }, "id": 553, "nodeType": "EmitStatement", - "src": "2537:41:5" + "src": "2904:41:5" }, { "expression": { @@ -8925,7 +8901,7 @@ "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2591:4:5", + "src": "2962:4:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -8936,15 +8912,14 @@ "functionReturnParameters": 529, "id": 555, "nodeType": "Return", - "src": "2584:11:5" + "src": "2955:11:5" } ] }, "documentation": "@dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.\nBeware that changing an allowance with this method brings the risk that someone may use both the old\nand the new allowance by unfortunate transaction ordering. One possible solution to mitigate this\nrace condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:\nhttps://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n@param spender The address which will spend the funds.\n@param value The amount of tokens to be spent.", "id": 557, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "approve", "nodeType": "FunctionDefinition", @@ -8958,7 +8933,7 @@ "name": "spender", "nodeType": "VariableDeclaration", "scope": 557, - "src": "2397:15:5", + "src": "2752:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8969,7 +8944,8 @@ "id": 522, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2397:7:5", + "src": "2752:7:5", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8984,7 +8960,7 @@ "name": "value", "nodeType": "VariableDeclaration", "scope": 557, - "src": "2414:13:5", + "src": "2769:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8995,7 +8971,7 @@ "id": 524, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2414:7:5", + "src": "2769:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9005,9 +8981,8 @@ "visibility": "internal" } ], - "src": "2396:32:5" + "src": "2751:32:5" }, - "payable": false, "returnParameters": { "id": 529, "nodeType": "ParameterList", @@ -9018,7 +8993,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 557, - "src": "2445:4:5", + "src": "2800:4:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9029,7 +9004,7 @@ "id": 527, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2445:4:5", + "src": "2800:4:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9039,183 +9014,24 @@ "visibility": "internal" } ], - "src": "2444:6:5" + "src": "2799:6:5" }, - "scope": 889, - "src": "2380:220:5", + "scope": 877, + "src": "2735:238:5", "stateMutability": "nonpayable", - "superFunction": 1090, + "superFunction": 1057, "visibility": "public" }, { "body": { - "id": 604, + "id": 605, "nodeType": "Block", - "src": "2983:177:5", + "src": "3521:209:5", "statements": [ { "expression": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 576, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 569, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 563, - "src": "2997:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 570, - "name": "_allowed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 464, - "src": "3006:8:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" - } - }, - "id": 572, - "indexExpression": { - "argumentTypes": null, - "id": 571, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "3015:4:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3006:14:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 575, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 573, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "3021:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 574, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3021:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3006:26:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2997:35:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 568, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1136, - 1137 - ], - "referencedDeclaration": 1136, - "src": "2989:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 577, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2989:44:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 578, - "nodeType": "ExpressionStatement", - "src": "2989:44:5" - }, - { - "expression": { - "argumentTypes": null, - "id": 594, + "id": 583, "isConstant": false, "isLValue": false, "isPure": false, @@ -9226,26 +9042,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 579, + "id": 568, "name": "_allowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 464, - "src": "3040:8:5", + "src": "3531:8:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, - "id": 583, + "id": 572, "indexExpression": { "argumentTypes": null, - "id": 580, + "id": 569, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 559, - "src": "3049:4:5", + "src": "3540:4:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9256,29 +9072,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3040:14:5", + "src": "3531:14:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 584, + "id": 573, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 581, + "id": 570, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "3055:3:5", + "referencedDeclaration": 1121, + "src": "3546:3:5", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 582, + "id": 571, "isConstant": false, "isLValue": false, "isPure": false, @@ -9286,10 +9102,10 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3055:10:5", + "src": "3546:10:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, "isConstant": false, @@ -9297,7 +9113,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3040:26:5", + "src": "3531:26:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9310,12 +9126,12 @@ "arguments": [ { "argumentTypes": null, - "id": 592, + "id": 581, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 563, - "src": "3100:5:5", + "src": "3591:5:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9335,26 +9151,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 585, + "id": 574, "name": "_allowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 464, - "src": "3069:8:5", + "src": "3560:8:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, - "id": 587, + "id": 576, "indexExpression": { "argumentTypes": null, - "id": 586, + "id": 575, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 559, - "src": "3078:4:5", + "src": "3569:4:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9365,29 +9181,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3069:14:5", + "src": "3560:14:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 590, + "id": 579, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 588, + "id": 577, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "3084:3:5", + "referencedDeclaration": 1121, + "src": "3575:3:5", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 589, + "id": 578, "isConstant": false, "isLValue": false, "isPure": false, @@ -9395,10 +9211,10 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3084:10:5", + "src": "3575:10:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, "isConstant": false, @@ -9406,13 +9222,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3069:26:5", + "src": "3560:26:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 591, + "id": 580, "isConstant": false, "isLValue": false, "isPure": false, @@ -9420,13 +9236,13 @@ "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 400, - "src": "3069:30:5", + "src": "3560:30:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 593, + "id": 582, "isConstant": false, "isLValue": false, "isPure": false, @@ -9434,21 +9250,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3069:37:5", + "src": "3560:37:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3040:66:5", + "src": "3531:66:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 595, + "id": 584, "nodeType": "ExpressionStatement", - "src": "3040:66:5" + "src": "3531:66:5" }, { "expression": { @@ -9456,12 +9272,12 @@ "arguments": [ { "argumentTypes": null, - "id": 597, + "id": 586, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 559, - "src": "3122:4:5", + "src": "3617:4:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9469,12 +9285,12 @@ }, { "argumentTypes": null, - "id": 598, + "id": 587, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 561, - "src": "3128:2:5", + "src": "3623:2:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9482,12 +9298,12 @@ }, { "argumentTypes": null, - "id": 599, + "id": 588, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 563, - "src": "3132:5:5", + "src": "3627:5:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9509,18 +9325,18 @@ "typeString": "uint256" } ], - "id": 596, + "id": 585, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 759, - "src": "3112:9:5", + "referencedDeclaration": 750, + "src": "3607:9:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 600, + "id": 589, "isConstant": false, "isLValue": false, "isPure": false, @@ -9528,28 +9344,202 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3112:26:5", + "src": "3607:26:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 601, + "id": 590, "nodeType": "ExpressionStatement", - "src": "3112:26:5" + "src": "3607:26:5" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 592, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "3657:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 593, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1121, + "src": "3663:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 594, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3663:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 595, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "3675:8:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 597, + "indexExpression": { + "argumentTypes": null, + "id": 596, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "3684:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3675:14:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 600, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 598, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1121, + "src": "3690:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3690:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3675:26:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 591, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1105, + "src": "3648:8:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3648:54:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 602, + "nodeType": "EmitStatement", + "src": "3643:59:5" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 602, + "id": 603, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3151:4:5", + "src": "3719:4:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -9558,17 +9548,16 @@ "value": "true" }, "functionReturnParameters": 567, - "id": 603, + "id": 604, "nodeType": "Return", - "src": "3144:11:5" + "src": "3712:11:5" } ] }, - "documentation": "@dev Transfer tokens from one address to another\n@param from address The address which you want to send tokens from\n@param to address The address which you want to transfer to\n@param value uint256 the amount of tokens to be transferred", - "id": 605, + "documentation": "@dev Transfer tokens from one address to another.\nNote that while this function emits an Approval event, this is not required as per the specification,\nand other compliant implementations may not emit the event.\n@param from address The address which you want to send tokens from\n@param to address The address which you want to transfer to\n@param value uint256 the amount of tokens to be transferred", + "id": 606, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "transferFrom", "nodeType": "FunctionDefinition", @@ -9581,8 +9570,8 @@ "id": 559, "name": "from", "nodeType": "VariableDeclaration", - "scope": 605, - "src": "2899:12:5", + "scope": 606, + "src": "3458:12:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9593,7 +9582,8 @@ "id": 558, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2899:7:5", + "src": "3458:7:5", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9607,8 +9597,8 @@ "id": 561, "name": "to", "nodeType": "VariableDeclaration", - "scope": 605, - "src": "2917:10:5", + "scope": 606, + "src": "3472:10:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9619,7 +9609,8 @@ "id": 560, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2917:7:5", + "src": "3472:7:5", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9633,8 +9624,8 @@ "id": 563, "name": "value", "nodeType": "VariableDeclaration", - "scope": 605, - "src": "2933:13:5", + "scope": 606, + "src": "3484:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9645,7 +9636,7 @@ "id": 562, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2933:7:5", + "src": "3484:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9655,9 +9646,8 @@ "visibility": "internal" } ], - "src": "2893:57:5" + "src": "3457:41:5" }, - "payable": false, "returnParameters": { "id": 567, "nodeType": "ParameterList", @@ -9667,8 +9657,8 @@ "id": 566, "name": "", "nodeType": "VariableDeclaration", - "scope": 605, - "src": "2975:4:5", + "scope": 606, + "src": "3515:4:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9679,7 +9669,7 @@ "id": 565, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2975:4:5", + "src": "3515:4:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9689,19 +9679,19 @@ "visibility": "internal" } ], - "src": "2974:6:5" + "src": "3514:6:5" }, - "scope": 889, - "src": "2872:288:5", + "scope": 877, + "src": "3436:294:5", "stateMutability": "nonpayable", - "superFunction": 1101, + "superFunction": 1068, "visibility": "public" }, { "body": { "id": 654, "nodeType": "Block", - "src": "3719:222:5", + "src": "4319:231:5", "statements": [ { "expression": { @@ -9713,19 +9703,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 619, + "id": 620, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 615, + "id": 616, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 607, - "src": "3733:7:5", + "referencedDeclaration": 608, + "src": "4337:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9739,14 +9729,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 617, + "id": 618, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3752:1:5", + "src": "4356:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9762,20 +9752,20 @@ "typeString": "int_const 0" } ], - "id": 616, + "id": 617, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3744:7:5", + "src": "4348:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 618, + "id": 619, "isConstant": false, "isLValue": false, "isPure": true, @@ -9783,13 +9773,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3744:10:5", + "src": "4348:10:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "src": "3733:21:5", + "src": "4337:21:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9803,21 +9793,21 @@ "typeString": "bool" } ], - "id": 614, + "id": 615, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1136, - 1137 + 1124, + 1125 ], - "referencedDeclaration": 1136, - "src": "3725:7:5", + "referencedDeclaration": 1124, + "src": "4329:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 620, + "id": 621, "isConstant": false, "isLValue": false, "isPure": false, @@ -9825,15 +9815,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3725:30:5", + "src": "4329:30:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 621, + "id": 622, "nodeType": "ExpressionStatement", - "src": "3725:30:5" + "src": "4329:30:5" }, { "expression": { @@ -9849,34 +9839,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 622, + "id": 623, "name": "_allowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 464, - "src": "3762:8:5", + "src": "4370:8:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, - "id": 626, + "id": 627, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 623, + "id": 624, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "3771:3:5", + "referencedDeclaration": 1121, + "src": "4379:3:5", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 624, + "id": 625, "isConstant": false, "isLValue": false, "isPure": false, @@ -9884,10 +9874,10 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3771:10:5", + "src": "4379:10:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, "isConstant": false, @@ -9895,21 +9885,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3762:20:5", + "src": "4370:20:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 627, + "id": 628, "indexExpression": { "argumentTypes": null, - "id": 625, + "id": 626, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 607, - "src": "3783:7:5", + "referencedDeclaration": 608, + "src": "4391:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9920,7 +9910,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3762:29:5", + "src": "4370:29:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9930,157 +9920,140 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "components": [ + "arguments": [ { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 635, - "name": "addedValue", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 609, - "src": "3836:10:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 628, - "name": "_allowed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 464, - "src": "3802:8:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" - } - }, - "id": 631, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 629, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "3811:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 630, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3811:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3802:20:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 633, - "indexExpression": { - "argumentTypes": null, - "id": 632, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 607, - "src": "3823:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3802:29:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 634, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 424, - "src": "3802:33:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, "id": 636, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3802:45:5", + "name": "addedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 610, + "src": "4436:10:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 629, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "4402:8:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 632, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 630, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1121, + "src": "4411:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4411:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4402:20:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 634, + "indexExpression": { + "argumentTypes": null, + "id": 633, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 608, + "src": "4423:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4402:29:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 424, + "src": "4402:33:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, "id": 637, "isConstant": false, - "isInlineArray": false, "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3794:54:5", + "names": [], + "nodeType": "FunctionCall", + "src": "4402:45:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3762:86:5", + "src": "4370:77:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10088,7 +10061,7 @@ }, "id": 639, "nodeType": "ExpressionStatement", - "src": "3762:86:5" + "src": "4370:77:5" }, { "eventCall": { @@ -10102,8 +10075,8 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "3868:3:5", + "referencedDeclaration": 1121, + "src": "4471:3:5", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" @@ -10117,10 +10090,10 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3868:10:5", + "src": "4471:10:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, { @@ -10129,8 +10102,8 @@ "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 607, - "src": "3880:7:5", + "referencedDeclaration": 608, + "src": "4483:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10147,7 +10120,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 464, - "src": "3889:8:5", + "src": "4492:8:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" @@ -10162,8 +10135,8 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "3898:3:5", + "referencedDeclaration": 1121, + "src": "4501:3:5", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" @@ -10177,10 +10150,10 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3898:10:5", + "src": "4501:10:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, "isConstant": false, @@ -10188,7 +10161,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3889:20:5", + "src": "4492:20:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" @@ -10201,8 +10174,8 @@ "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 607, - "src": "3910:7:5", + "referencedDeclaration": 608, + "src": "4513:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10213,7 +10186,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3889:29:5", + "src": "4492:29:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10223,8 +10196,8 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" }, { "typeIdentifier": "t_address", @@ -10239,8 +10212,8 @@ "name": "Approval", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1117, - "src": "3859:8:5", + "referencedDeclaration": 1105, + "src": "4462:8:5", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" @@ -10254,7 +10227,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3859:60:5", + "src": "4462:60:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -10262,7 +10235,7 @@ }, "id": 651, "nodeType": "EmitStatement", - "src": "3854:65:5" + "src": "4457:65:5" }, { "expression": { @@ -10275,7 +10248,7 @@ "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3932:4:5", + "src": "4539:4:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -10283,32 +10256,31 @@ }, "value": "true" }, - "functionReturnParameters": 613, + "functionReturnParameters": 614, "id": 653, "nodeType": "Return", - "src": "3925:11:5" + "src": "4532:11:5" } ] }, - "documentation": "@dev Increase the amount of tokens that an owner allowed to a spender.\napprove should be called when allowed_[_spender] == 0. To increment\nallowed value is better to use this function to avoid 2 calls (and wait until\nthe first transaction is mined)\nFrom MonolithDAO Token.sol\n@param spender The address which will spend the funds.\n@param addedValue The amount of tokens to increase the allowance by.", + "documentation": "@dev Increase the amount of tokens that an owner allowed to a spender.\napprove should be called when allowed_[_spender] == 0. To increment\nallowed value is better to use this function to avoid 2 calls (and wait until\nthe first transaction is mined)\nFrom MonolithDAO Token.sol\nEmits an Approval event.\n@param spender The address which will spend the funds.\n@param addedValue The amount of tokens to increase the allowance by.", "id": 655, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "increaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 610, + "id": 611, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 607, + "id": 608, "name": "spender", "nodeType": "VariableDeclaration", "scope": 655, - "src": "3643:15:5", + "src": "4260:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10316,10 +10288,11 @@ "typeString": "address" }, "typeName": { - "id": 606, + "id": 607, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3643:7:5", + "src": "4260:7:5", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10330,11 +10303,11 @@ }, { "constant": false, - "id": 609, + "id": 610, "name": "addedValue", "nodeType": "VariableDeclaration", "scope": 655, - "src": "3664:18:5", + "src": "4277:18:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10342,10 +10315,10 @@ "typeString": "uint256" }, "typeName": { - "id": 608, + "id": 609, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3664:7:5", + "src": "4277:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10355,20 +10328,19 @@ "visibility": "internal" } ], - "src": "3637:49:5" + "src": "4259:37:5" }, - "payable": false, "returnParameters": { - "id": 613, + "id": 614, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 612, + "id": 613, "name": "", "nodeType": "VariableDeclaration", "scope": 655, - "src": "3711:4:5", + "src": "4313:4:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10376,10 +10348,10 @@ "typeString": "bool" }, "typeName": { - "id": 611, + "id": 612, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3711:4:5", + "src": "4313:4:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10389,19 +10361,19 @@ "visibility": "internal" } ], - "src": "3710:6:5" + "src": "4312:6:5" }, - "scope": 889, - "src": "3611:330:5", + "scope": 877, + "src": "4233:317:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 704, + "id": 703, "nodeType": "Block", - "src": "4510:227:5", + "src": "5149:236:5", "statements": [ { "expression": { @@ -10425,7 +10397,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 657, - "src": "4524:7:5", + "src": "5167:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10446,7 +10418,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4543:1:5", + "src": "5186:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -10468,7 +10440,7 @@ "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4535:7:5", + "src": "5178:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" @@ -10483,13 +10455,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4535:10:5", + "src": "5178:10:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "src": "4524:21:5", + "src": "5167:21:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10507,11 +10479,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1136, - 1137 + 1124, + 1125 ], - "referencedDeclaration": 1136, - "src": "4516:7:5", + "referencedDeclaration": 1124, + "src": "5159:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -10525,7 +10497,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4516:30:5", + "src": "5159:30:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -10533,12 +10505,12 @@ }, "id": 671, "nodeType": "ExpressionStatement", - "src": "4516:30:5" + "src": "5159:30:5" }, { "expression": { "argumentTypes": null, - "id": 688, + "id": 687, "isConstant": false, "isLValue": false, "isPure": false, @@ -10554,7 +10526,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 464, - "src": "4553:8:5", + "src": "5200:8:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" @@ -10569,8 +10541,8 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "4562:3:5", + "referencedDeclaration": 1121, + "src": "5209:3:5", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" @@ -10584,10 +10556,10 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4562:10:5", + "src": "5209:10:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, "isConstant": false, @@ -10595,7 +10567,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4553:20:5", + "src": "5200:20:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" @@ -10609,7 +10581,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 657, - "src": "4574:7:5", + "src": "5221:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10620,7 +10592,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4553:29:5", + "src": "5200:29:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10630,165 +10602,148 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "components": [ + "arguments": [ { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 685, - "name": "subtractedValue", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 659, - "src": "4627:15:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 678, - "name": "_allowed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 464, - "src": "4593:8:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" - } - }, - "id": 681, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 679, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "4602:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 680, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4602:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4593:20:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 683, - "indexExpression": { - "argumentTypes": null, - "id": 682, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 657, - "src": "4614:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4593:29:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 684, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sub", - "nodeType": "MemberAccess", - "referencedDeclaration": 400, - "src": "4593:33:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 686, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4593:50:5", + "id": 685, + "name": "subtractedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 659, + "src": "5266:15:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 687, + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 678, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "5232:8:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 681, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 679, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1121, + "src": "5241:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5241:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5232:20:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 683, + "indexExpression": { + "argumentTypes": null, + "id": 682, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 657, + "src": "5253:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5232:29:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 684, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 400, + "src": "5232:33:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 686, "isConstant": false, - "isInlineArray": false, "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "4585:59:5", + "names": [], + "nodeType": "FunctionCall", + "src": "5232:50:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4553:91:5", + "src": "5200:82:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 689, + "id": 688, "nodeType": "ExpressionStatement", - "src": "4553:91:5" + "src": "5200:82:5" }, { "eventCall": { @@ -10798,18 +10753,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 691, + "id": 690, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "4664:3:5", + "referencedDeclaration": 1121, + "src": "5306:3:5", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 692, + "id": 691, "isConstant": false, "isLValue": false, "isPure": false, @@ -10817,20 +10772,20 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4664:10:5", + "src": "5306:10:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, { "argumentTypes": null, - "id": 693, + "id": 692, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 657, - "src": "4676:7:5", + "src": "5318:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10842,34 +10797,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 694, + "id": 693, "name": "_allowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 464, - "src": "4685:8:5", + "src": "5327:8:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, - "id": 697, + "id": 696, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 695, + "id": 694, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "4694:3:5", + "referencedDeclaration": 1121, + "src": "5336:3:5", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 696, + "id": 695, "isConstant": false, "isLValue": false, "isPure": false, @@ -10877,10 +10832,10 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4694:10:5", + "src": "5336:10:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, "isConstant": false, @@ -10888,21 +10843,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4685:20:5", + "src": "5327:20:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 699, + "id": 698, "indexExpression": { "argumentTypes": null, - "id": 698, + "id": 697, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 657, - "src": "4706:7:5", + "src": "5348:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10913,7 +10868,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4685:29:5", + "src": "5327:29:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10923,8 +10878,8 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" }, { "typeIdentifier": "t_address", @@ -10935,18 +10890,18 @@ "typeString": "uint256" } ], - "id": 690, + "id": 689, "name": "Approval", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1117, - "src": "4655:8:5", + "referencedDeclaration": 1105, + "src": "5297:8:5", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 700, + "id": 699, "isConstant": false, "isLValue": false, "isPure": false, @@ -10954,28 +10909,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4655:60:5", + "src": "5297:60:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 701, + "id": 700, "nodeType": "EmitStatement", - "src": "4650:65:5" + "src": "5292:65:5" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 702, + "id": 701, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "4728:4:5", + "src": "5374:4:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -10984,17 +10939,16 @@ "value": "true" }, "functionReturnParameters": 663, - "id": 703, + "id": 702, "nodeType": "Return", - "src": "4721:11:5" + "src": "5367:11:5" } ] }, - "documentation": "@dev Decrease the amount of tokens that an owner allowed to a spender.\napprove should be called when allowed_[_spender] == 0. To decrement\nallowed value is better to use this function to avoid 2 calls (and wait until\nthe first transaction is mined)\nFrom MonolithDAO Token.sol\n@param spender The address which will spend the funds.\n@param subtractedValue The amount of tokens to decrease the allowance by.", - "id": 705, + "documentation": "@dev Decrease the amount of tokens that an owner allowed to a spender.\napprove should be called when allowed_[_spender] == 0. To decrement\nallowed value is better to use this function to avoid 2 calls (and wait until\nthe first transaction is mined)\nFrom MonolithDAO Token.sol\nEmits an Approval event.\n@param spender The address which will spend the funds.\n@param subtractedValue The amount of tokens to decrease the allowance by.", + "id": 704, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "decreaseAllowance", "nodeType": "FunctionDefinition", @@ -11007,8 +10961,8 @@ "id": 657, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 705, - "src": "4429:15:5", + "scope": 704, + "src": "5085:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11019,7 +10973,8 @@ "id": 656, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4429:7:5", + "src": "5085:7:5", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11033,8 +10988,8 @@ "id": 659, "name": "subtractedValue", "nodeType": "VariableDeclaration", - "scope": 705, - "src": "4450:23:5", + "scope": 704, + "src": "5102:23:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11045,7 +11000,7 @@ "id": 658, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4450:7:5", + "src": "5102:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11055,9 +11010,8 @@ "visibility": "internal" } ], - "src": "4423:54:5" + "src": "5084:42:5" }, - "payable": false, "returnParameters": { "id": 663, "nodeType": "ParameterList", @@ -11067,8 +11021,8 @@ "id": 662, "name": "", "nodeType": "VariableDeclaration", - "scope": 705, - "src": "4502:4:5", + "scope": 704, + "src": "5143:4:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11079,7 +11033,7 @@ "id": 661, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4502:4:5", + "src": "5143:4:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11089,136 +11043,20 @@ "visibility": "internal" } ], - "src": "4501:6:5" + "src": "5142:6:5" }, - "scope": 889, - "src": "4397:340:5", + "scope": 877, + "src": "5058:327:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 758, + "id": 749, "nodeType": "Block", - "src": "5006:208:5", + "src": "5668:187:5", "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 719, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 715, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 711, - "src": "5020:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 716, - "name": "_balances", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 458, - "src": "5029:9:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 718, - "indexExpression": { - "argumentTypes": null, - "id": 717, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 707, - "src": "5039:4:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5029:15:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5020:24:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 714, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1136, - 1137 - ], - "referencedDeclaration": 1136, - "src": "5012:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 720, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5012:33:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 721, - "nodeType": "ExpressionStatement", - "src": "5012:33:5" - }, { "expression": { "argumentTypes": null, @@ -11229,19 +11067,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 727, + "id": 718, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 723, + "id": 714, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 709, - "src": "5059:2:5", + "referencedDeclaration": 708, + "src": "5686:2:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11255,14 +11093,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 725, + "id": 716, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5073:1:5", + "src": "5700:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -11278,20 +11116,20 @@ "typeString": "int_const 0" } ], - "id": 724, + "id": 715, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "5065:7:5", + "src": "5692:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 726, + "id": 717, "isConstant": false, "isLValue": false, "isPure": true, @@ -11299,13 +11137,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5065:10:5", + "src": "5692:10:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "src": "5059:16:5", + "src": "5686:16:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11319,21 +11157,21 @@ "typeString": "bool" } ], - "id": 722, + "id": 713, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1136, - 1137 + 1124, + 1125 ], - "referencedDeclaration": 1136, - "src": "5051:7:5", + "referencedDeclaration": 1124, + "src": "5678:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 728, + "id": 719, "isConstant": false, "isLValue": false, "isPure": false, @@ -11341,20 +11179,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5051:25:5", + "src": "5678:25:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 729, + "id": 720, "nodeType": "ExpressionStatement", - "src": "5051:25:5" + "src": "5678:25:5" }, { "expression": { "argumentTypes": null, - "id": 739, + "id": 730, "isConstant": false, "isLValue": false, "isPure": false, @@ -11363,26 +11201,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 730, + "id": 721, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 458, - "src": "5083:9:5", + "src": "5714:9:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 732, + "id": 723, "indexExpression": { "argumentTypes": null, - "id": 731, + "id": 722, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 707, - "src": "5093:4:5", + "referencedDeclaration": 706, + "src": "5724:4:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11393,7 +11231,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "5083:15:5", + "src": "5714:15:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11406,12 +11244,12 @@ "arguments": [ { "argumentTypes": null, - "id": 737, + "id": 728, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 711, - "src": "5121:5:5", + "referencedDeclaration": 710, + "src": "5752:5:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11429,26 +11267,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 733, + "id": 724, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 458, - "src": "5101:9:5", + "src": "5732:9:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 735, + "id": 726, "indexExpression": { "argumentTypes": null, - "id": 734, + "id": 725, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 707, - "src": "5111:4:5", + "referencedDeclaration": 706, + "src": "5742:4:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11459,13 +11297,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5101:15:5", + "src": "5732:15:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 736, + "id": 727, "isConstant": false, "isLValue": false, "isPure": false, @@ -11473,13 +11311,13 @@ "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 400, - "src": "5101:19:5", + "src": "5732:19:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 738, + "id": 729, "isConstant": false, "isLValue": false, "isPure": false, @@ -11487,26 +11325,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5101:26:5", + "src": "5732:26:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5083:44:5", + "src": "5714:44:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 740, + "id": 731, "nodeType": "ExpressionStatement", - "src": "5083:44:5" + "src": "5714:44:5" }, { "expression": { "argumentTypes": null, - "id": 750, + "id": 741, "isConstant": false, "isLValue": false, "isPure": false, @@ -11515,26 +11353,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 741, + "id": 732, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 458, - "src": "5133:9:5", + "src": "5768:9:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 743, + "id": 734, "indexExpression": { "argumentTypes": null, - "id": 742, + "id": 733, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 709, - "src": "5143:2:5", + "referencedDeclaration": 708, + "src": "5778:2:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11545,7 +11383,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "5133:13:5", + "src": "5768:13:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11558,12 +11396,12 @@ "arguments": [ { "argumentTypes": null, - "id": 748, + "id": 739, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 711, - "src": "5167:5:5", + "referencedDeclaration": 710, + "src": "5802:5:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11581,26 +11419,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 744, + "id": 735, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 458, - "src": "5149:9:5", + "src": "5784:9:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 746, + "id": 737, "indexExpression": { "argumentTypes": null, - "id": 745, + "id": 736, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 709, - "src": "5159:2:5", + "referencedDeclaration": 708, + "src": "5794:2:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11611,13 +11449,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5149:13:5", + "src": "5784:13:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 747, + "id": 738, "isConstant": false, "isLValue": false, "isPure": false, @@ -11625,13 +11463,13 @@ "memberName": "add", "nodeType": "MemberAccess", "referencedDeclaration": 424, - "src": "5149:17:5", + "src": "5784:17:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 749, + "id": 740, "isConstant": false, "isLValue": false, "isPure": false, @@ -11639,21 +11477,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5149:24:5", + "src": "5784:24:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5133:40:5", + "src": "5768:40:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 751, + "id": 742, "nodeType": "ExpressionStatement", - "src": "5133:40:5" + "src": "5768:40:5" }, { "eventCall": { @@ -11661,12 +11499,12 @@ "arguments": [ { "argumentTypes": null, - "id": 753, + "id": 744, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 707, - "src": "5193:4:5", + "referencedDeclaration": 706, + "src": "5832:4:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11674,12 +11512,12 @@ }, { "argumentTypes": null, - "id": 754, + "id": 745, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 709, - "src": "5199:2:5", + "referencedDeclaration": 708, + "src": "5838:2:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11687,12 +11525,12 @@ }, { "argumentTypes": null, - "id": 755, + "id": 746, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 711, - "src": "5203:5:5", + "referencedDeclaration": 710, + "src": "5842:5:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11714,18 +11552,18 @@ "typeString": "uint256" } ], - "id": 752, + "id": 743, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1109, - "src": "5184:8:5", + "referencedDeclaration": 1097, + "src": "5823:8:5", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 756, + "id": 747, "isConstant": false, "isLValue": false, "isPure": false, @@ -11733,37 +11571,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5184:25:5", + "src": "5823:25:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 757, + "id": 748, "nodeType": "EmitStatement", - "src": "5179:30:5" + "src": "5818:30:5" } ] }, "documentation": "@dev Transfer token for a specified addresses\n@param from The address to transfer from.\n@param to The address to transfer to.\n@param value The amount to be transferred.", - "id": 759, + "id": 750, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "_transfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 712, + "id": 711, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 707, + "id": 706, "name": "from", "nodeType": "VariableDeclaration", - "scope": 759, - "src": "4956:12:5", + "scope": 750, + "src": "5618:12:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11771,10 +11608,11 @@ "typeString": "address" }, "typeName": { - "id": 706, + "id": 705, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4956:7:5", + "src": "5618:7:5", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11785,11 +11623,11 @@ }, { "constant": false, - "id": 709, + "id": 708, "name": "to", "nodeType": "VariableDeclaration", - "scope": 759, - "src": "4970:10:5", + "scope": 750, + "src": "5632:10:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11797,10 +11635,11 @@ "typeString": "address" }, "typeName": { - "id": 708, + "id": 707, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4970:7:5", + "src": "5632:7:5", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11811,11 +11650,11 @@ }, { "constant": false, - "id": 711, + "id": 710, "name": "value", "nodeType": "VariableDeclaration", - "scope": 759, - "src": "4982:13:5", + "scope": 750, + "src": "5644:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11823,10 +11662,10 @@ "typeString": "uint256" }, "typeName": { - "id": 710, + "id": 709, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4982:7:5", + "src": "5644:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11836,26 +11675,25 @@ "visibility": "internal" } ], - "src": "4955:41:5" + "src": "5617:41:5" }, - "payable": false, "returnParameters": { - "id": 713, + "id": 712, "nodeType": "ParameterList", "parameters": [], - "src": "5006:0:5" + "src": "5668:0:5" }, - "scope": 889, - "src": "4937:277:5", + "scope": 877, + "src": "5599:256:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 798, + "id": 791, "nodeType": "Block", - "src": "5597:179:5", + "src": "6254:207:5", "statements": [ { "expression": { @@ -11867,19 +11705,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 769, + "id": 762, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 767, + "id": 758, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 761, - "src": "5611:7:5", + "referencedDeclaration": 752, + "src": "6272:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11889,23 +11727,61 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "hexValue": "30", - "id": 768, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 760, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6291:1:5", + "subdenomination": null, + "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": 759, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6283:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 761, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", + "kind": "typeConversion", "lValueRequested": false, - "nodeType": "Literal", - "src": "5622:1:5", - "subdenomination": null, + "names": [], + "nodeType": "FunctionCall", + "src": "6283:10:5", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } }, - "src": "5611:12:5", + "src": "6272:21:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11919,21 +11795,21 @@ "typeString": "bool" } ], - "id": 766, + "id": 757, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1136, - 1137 + 1124, + 1125 ], - "referencedDeclaration": 1136, - "src": "5603:7:5", + "referencedDeclaration": 1124, + "src": "6264:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 770, + "id": 763, "isConstant": false, "isLValue": false, "isPure": false, @@ -11941,32 +11817,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5603:21:5", + "src": "6264:30:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 771, + "id": 764, "nodeType": "ExpressionStatement", - "src": "5603:21:5" + "src": "6264:30:5" }, { "expression": { "argumentTypes": null, - "id": 777, + "id": 770, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 772, + "id": 765, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 466, - "src": "5630:12:5", + "src": "6305:12:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11979,12 +11855,12 @@ "arguments": [ { "argumentTypes": null, - "id": 775, + "id": 768, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 763, - "src": "5662:5:5", + "referencedDeclaration": 754, + "src": "6337:5:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12000,18 +11876,18 @@ ], "expression": { "argumentTypes": null, - "id": 773, + "id": 766, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 466, - "src": "5645:12:5", + "src": "6320:12:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 774, + "id": 767, "isConstant": false, "isLValue": false, "isPure": false, @@ -12019,13 +11895,13 @@ "memberName": "add", "nodeType": "MemberAccess", "referencedDeclaration": 424, - "src": "5645:16:5", + "src": "6320:16:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 776, + "id": 769, "isConstant": false, "isLValue": false, "isPure": false, @@ -12033,26 +11909,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5645:23:5", + "src": "6320:23:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5630:38:5", + "src": "6305:38:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 778, + "id": 771, "nodeType": "ExpressionStatement", - "src": "5630:38:5" + "src": "6305:38:5" }, { "expression": { "argumentTypes": null, - "id": 788, + "id": 781, "isConstant": false, "isLValue": false, "isPure": false, @@ -12061,26 +11937,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 779, + "id": 772, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 458, - "src": "5674:9:5", + "src": "6353:9:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 781, + "id": 774, "indexExpression": { "argumentTypes": null, - "id": 780, + "id": 773, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 761, - "src": "5684:7:5", + "referencedDeclaration": 752, + "src": "6363:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12091,7 +11967,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "5674:18:5", + "src": "6353:18:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12104,12 +11980,12 @@ "arguments": [ { "argumentTypes": null, - "id": 786, + "id": 779, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 763, - "src": "5718:5:5", + "referencedDeclaration": 754, + "src": "6397:5:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12127,26 +12003,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 782, + "id": 775, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 458, - "src": "5695:9:5", + "src": "6374:9:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 784, + "id": 777, "indexExpression": { "argumentTypes": null, - "id": 783, + "id": 776, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 761, - "src": "5705:7:5", + "referencedDeclaration": 752, + "src": "6384:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12157,13 +12033,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5695:18:5", + "src": "6374:18:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 785, + "id": 778, "isConstant": false, "isLValue": false, "isPure": false, @@ -12171,13 +12047,13 @@ "memberName": "add", "nodeType": "MemberAccess", "referencedDeclaration": 424, - "src": "5695:22:5", + "src": "6374:22:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 787, + "id": 780, "isConstant": false, "isLValue": false, "isPure": false, @@ -12185,21 +12061,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5695:29:5", + "src": "6374:29:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5674:50:5", + "src": "6353:50:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 789, + "id": 782, "nodeType": "ExpressionStatement", - "src": "5674:50:5" + "src": "6353:50:5" }, { "eventCall": { @@ -12211,14 +12087,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 792, + "id": 785, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5752:1:5", + "src": "6435:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -12234,20 +12110,20 @@ "typeString": "int_const 0" } ], - "id": 791, + "id": 784, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "5744:7:5", + "src": "6427:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 793, + "id": 786, "isConstant": false, "isLValue": false, "isPure": true, @@ -12255,20 +12131,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5744:10:5", + "src": "6427:10:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, { "argumentTypes": null, - "id": 794, + "id": 787, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 761, - "src": "5756:7:5", + "referencedDeclaration": 752, + "src": "6439:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12276,12 +12152,12 @@ }, { "argumentTypes": null, - "id": 795, + "id": 788, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 763, - "src": "5765:5:5", + "referencedDeclaration": 754, + "src": "6448:5:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12291,8 +12167,8 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" }, { "typeIdentifier": "t_address", @@ -12303,18 +12179,18 @@ "typeString": "uint256" } ], - "id": 790, + "id": 783, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1109, - "src": "5735:8:5", + "referencedDeclaration": 1097, + "src": "6418:8:5", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 796, + "id": 789, "isConstant": false, "isLValue": false, "isPure": false, @@ -12322,37 +12198,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5735:36:5", + "src": "6418:36:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 797, + "id": 790, "nodeType": "EmitStatement", - "src": "5730:41:5" + "src": "6413:41:5" } ] }, "documentation": "@dev Internal function that mints an amount of the token and assigns it to\nan account. This encapsulates the modification of balances such that the\nproper events are emitted.\n@param account The account that will receive the created tokens.\n@param value The amount that will be created.", - "id": 799, + "id": 792, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "_mint", "nodeType": "FunctionDefinition", "parameters": { - "id": 764, + "id": 755, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 761, + "id": 752, "name": "account", "nodeType": "VariableDeclaration", - "scope": 799, - "src": "5556:15:5", + "scope": 792, + "src": "6213:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12360,10 +12235,11 @@ "typeString": "address" }, "typeName": { - "id": 760, + "id": 751, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5556:7:5", + "src": "6213:7:5", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12374,11 +12250,11 @@ }, { "constant": false, - "id": 763, + "id": 754, "name": "value", "nodeType": "VariableDeclaration", - "scope": 799, - "src": "5573:13:5", + "scope": 792, + "src": "6230:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12386,10 +12262,10 @@ "typeString": "uint256" }, "typeName": { - "id": 762, + "id": 753, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5573:7:5", + "src": "6230:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12399,26 +12275,25 @@ "visibility": "internal" } ], - "src": "5555:32:5" + "src": "6212:32:5" }, - "payable": false, "returnParameters": { - "id": 765, + "id": 756, "nodeType": "ParameterList", "parameters": [], - "src": "5597:0:5" + "src": "6254:0:5" }, - "scope": 889, - "src": "5541:235:5", + "scope": 877, + "src": "6198:263:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 846, + "id": 833, "nodeType": "Block", - "src": "6044:222:5", + "src": "6743:207:5", "statements": [ { "expression": { @@ -12430,281 +12305,203 @@ "typeIdentifier": "t_address", "typeString": "address" }, + "id": 804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 800, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 794, + "src": "6761:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 802, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6780:1:5", + "subdenomination": null, + "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": 801, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6772:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 803, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6772:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "6761:21:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 799, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1124, + 1125 + ], + "referencedDeclaration": 1124, + "src": "6753:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6753:30:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 806, + "nodeType": "ExpressionStatement", + "src": "6753:30:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 807, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 466, + "src": "6794:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 810, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 796, + "src": "6826:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 808, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 466, + "src": "6809:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, "id": 809, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 807, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 801, - "src": "6058:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 808, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6069:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "6058:12:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 806, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1136, - 1137 - ], - "referencedDeclaration": 1136, - "src": "6050:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 810, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6050:21:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 811, - "nodeType": "ExpressionStatement", - "src": "6050:21:5" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 817, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 813, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 803, - "src": "6085:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 814, - "name": "_balances", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 458, - "src": "6094:9:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 816, - "indexExpression": { - "argumentTypes": null, - "id": 815, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 801, - "src": "6104:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6094:18:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6085:27:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 812, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1136, - 1137 - ], - "referencedDeclaration": 1136, - "src": "6077:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 818, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6077:36:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 819, - "nodeType": "ExpressionStatement", - "src": "6077:36:5" - }, - { - "expression": { - "argumentTypes": null, - "id": 825, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 820, - "name": "_totalSupply", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 466, - "src": "6120:12:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 823, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 803, - "src": "6152:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 821, - "name": "_totalSupply", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 466, - "src": "6135:12:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 822, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 400, - "src": "6135:16:5", + "src": "6809:16:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 824, + "id": 811, "isConstant": false, "isLValue": false, "isPure": false, @@ -12712,26 +12509,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6135:23:5", + "src": "6809:23:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "6120:38:5", + "src": "6794:38:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 826, + "id": 813, "nodeType": "ExpressionStatement", - "src": "6120:38:5" + "src": "6794:38:5" }, { "expression": { "argumentTypes": null, - "id": 836, + "id": 823, "isConstant": false, "isLValue": false, "isPure": false, @@ -12740,26 +12537,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 827, + "id": 814, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 458, - "src": "6164:9:5", + "src": "6842:9:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 829, + "id": 816, "indexExpression": { "argumentTypes": null, - "id": 828, + "id": 815, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 801, - "src": "6174:7:5", + "referencedDeclaration": 794, + "src": "6852:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12770,7 +12567,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "6164:18:5", + "src": "6842:18:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12783,12 +12580,12 @@ "arguments": [ { "argumentTypes": null, - "id": 834, + "id": 821, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 803, - "src": "6208:5:5", + "referencedDeclaration": 796, + "src": "6886:5:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12806,26 +12603,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 830, + "id": 817, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 458, - "src": "6185:9:5", + "src": "6863:9:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 832, + "id": 819, "indexExpression": { "argumentTypes": null, - "id": 831, + "id": 818, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 801, - "src": "6195:7:5", + "referencedDeclaration": 794, + "src": "6873:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12836,13 +12633,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "6185:18:5", + "src": "6863:18:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 833, + "id": 820, "isConstant": false, "isLValue": false, "isPure": false, @@ -12850,13 +12647,13 @@ "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 400, - "src": "6185:22:5", + "src": "6863:22:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 835, + "id": 822, "isConstant": false, "isLValue": false, "isPure": false, @@ -12864,21 +12661,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6185:29:5", + "src": "6863:29:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "6164:50:5", + "src": "6842:50:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 837, + "id": 824, "nodeType": "ExpressionStatement", - "src": "6164:50:5" + "src": "6842:50:5" }, { "eventCall": { @@ -12886,12 +12683,12 @@ "arguments": [ { "argumentTypes": null, - "id": 839, + "id": 826, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 801, - "src": "6234:7:5", + "referencedDeclaration": 794, + "src": "6916:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12903,14 +12700,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 841, + "id": 828, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6251:1:5", + "src": "6933:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -12926,20 +12723,20 @@ "typeString": "int_const 0" } ], - "id": 840, + "id": 827, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6243:7:5", + "src": "6925:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 842, + "id": 829, "isConstant": false, "isLValue": false, "isPure": true, @@ -12947,20 +12744,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6243:10:5", + "src": "6925:10:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, { "argumentTypes": null, - "id": 843, + "id": 830, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 803, - "src": "6255:5:5", + "referencedDeclaration": 796, + "src": "6937:5:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12974,26 +12771,26 @@ "typeString": "address" }, { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], - "id": 838, + "id": 825, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1109, - "src": "6225:8:5", + "referencedDeclaration": 1097, + "src": "6907:8:5", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 844, + "id": 831, "isConstant": false, "isLValue": false, "isPure": false, @@ -13001,37 +12798,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6225:36:5", + "src": "6907:36:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 845, + "id": 832, "nodeType": "EmitStatement", - "src": "6220:41:5" + "src": "6902:41:5" } ] }, "documentation": "@dev Internal function that burns an amount of the token of a given\naccount.\n@param account The account whose tokens will be burnt.\n@param value The amount that will be burnt.", - "id": 847, + "id": 834, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "_burn", "nodeType": "FunctionDefinition", "parameters": { - "id": 804, + "id": 797, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 801, + "id": 794, "name": "account", "nodeType": "VariableDeclaration", - "scope": 847, - "src": "6003:15:5", + "scope": 834, + "src": "6702:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13039,10 +12835,11 @@ "typeString": "address" }, "typeName": { - "id": 800, + "id": 793, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6003:7:5", + "src": "6702:7:5", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13053,11 +12850,11 @@ }, { "constant": false, - "id": 803, + "id": 796, "name": "value", "nodeType": "VariableDeclaration", - "scope": 847, - "src": "6020:13:5", + "scope": 834, + "src": "6719:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13065,10 +12862,10 @@ "typeString": "uint256" }, "typeName": { - "id": 802, + "id": 795, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6020:7:5", + "src": "6719:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13078,190 +12875,30 @@ "visibility": "internal" } ], - "src": "6002:32:5" + "src": "6701:32:5" }, - "payable": false, "returnParameters": { - "id": 805, + "id": 798, "nodeType": "ParameterList", "parameters": [], - "src": "6044:0:5" + "src": "6743:0:5" }, - "scope": 889, - "src": "5988:278:5", + "scope": 877, + "src": "6687:263:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 887, + "id": 875, "nodeType": "Block", - "src": "6632:330:5", + "src": "7399:195:5", "statements": [ { "expression": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 862, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 855, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 851, - "src": "6646:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 856, - "name": "_allowed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 464, - "src": "6655:8:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" - } - }, - "id": 858, - "indexExpression": { - "argumentTypes": null, - "id": 857, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 849, - "src": "6664:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6655:17:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 861, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 859, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "6673:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 860, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "6673:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6655:29:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6646:38:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 854, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1136, - 1137 - ], - "referencedDeclaration": 1136, - "src": "6638:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 863, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6638:47:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 864, - "nodeType": "ExpressionStatement", - "src": "6638:47:5" - }, - { - "expression": { - "argumentTypes": null, - "id": 880, + "id": 856, "isConstant": false, "isLValue": false, "isPure": false, @@ -13272,26 +12909,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 865, + "id": 841, "name": "_allowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 464, - "src": "6851:8:5", + "src": "7409:8:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, - "id": 869, + "id": 845, "indexExpression": { "argumentTypes": null, - "id": 866, + "id": 842, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 849, - "src": "6860:7:5", + "referencedDeclaration": 836, + "src": "7418:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13302,29 +12939,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "6851:17:5", + "src": "7409:17:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 870, + "id": 846, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 867, + "id": 843, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "6869:3:5", + "referencedDeclaration": 1121, + "src": "7427:3:5", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 868, + "id": 844, "isConstant": false, "isLValue": false, "isPure": false, @@ -13332,10 +12969,10 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "6869:10:5", + "src": "7427:10:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, "isConstant": false, @@ -13343,7 +12980,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "6851:29:5", + "src": "7409:29:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13356,12 +12993,12 @@ "arguments": [ { "argumentTypes": null, - "id": 878, + "id": 854, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 851, - "src": "6924:5:5", + "referencedDeclaration": 838, + "src": "7475:5:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13381,26 +13018,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 871, + "id": 847, "name": "_allowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 464, - "src": "6883:8:5", + "src": "7441:8:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, - "id": 873, + "id": 849, "indexExpression": { "argumentTypes": null, - "id": 872, + "id": 848, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 849, - "src": "6892:7:5", + "referencedDeclaration": 836, + "src": "7450:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13411,29 +13048,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "6883:17:5", + "src": "7441:17:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 876, + "id": 852, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 874, + "id": 850, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "6901:3:5", + "referencedDeclaration": 1121, + "src": "7459:3:5", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 875, + "id": 851, "isConstant": false, "isLValue": false, "isPure": false, @@ -13441,7 +13078,204 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "6901:10:5", + "src": "7459:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7441:29:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 400, + "src": "7441:33:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7441:40:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7409:72:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 857, + "nodeType": "ExpressionStatement", + "src": "7409:72:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 859, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 836, + "src": "7497:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 860, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 838, + "src": "7506:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 858, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 834, + "src": "7491:5:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7491:21:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 862, + "nodeType": "ExpressionStatement", + "src": "7491:21:5" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 864, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 836, + "src": "7536:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 865, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1121, + "src": "7545:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7545:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 867, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "7557:8:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 869, + "indexExpression": { + "argumentTypes": null, + "id": 868, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 836, + "src": "7566:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13452,75 +13286,48 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "6883:29:5", + "src": "7557:17:5", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 872, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 870, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1121, + "src": "7575:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7575:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "id": 877, "isConstant": false, - "isLValue": false, + "isLValue": true, "isPure": false, "lValueRequested": false, - "memberName": "sub", - "nodeType": "MemberAccess", - "referencedDeclaration": 400, - "src": "6883:33:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 879, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6883:47:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6851:79:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 881, - "nodeType": "ExpressionStatement", - "src": "6851:79:5" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 883, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 849, - "src": "6942:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 884, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 851, - "src": "6951:5:5", + "nodeType": "IndexAccess", + "src": "7557:29:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13533,23 +13340,27 @@ "typeIdentifier": "t_address", "typeString": "address" }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], - "id": 882, - "name": "_burn", + "id": 863, + "name": "Approval", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 847, - "src": "6936:5:5", + "referencedDeclaration": 1105, + "src": "7527:8:5", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" } }, - "id": 885, + "id": 873, "isConstant": false, "isLValue": false, "isPure": false, @@ -13557,37 +13368,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6936:21:5", + "src": "7527:60:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 886, - "nodeType": "ExpressionStatement", - "src": "6936:21:5" + "id": 874, + "nodeType": "EmitStatement", + "src": "7522:65:5" } ] }, - "documentation": "@dev Internal function that burns an amount of the token of a given\naccount, deducting from the sender's allowance for said account. Uses the\ninternal burn function.\n@param account The account whose tokens will be burnt.\n@param value The amount that will be burnt.", - "id": 888, + "documentation": "@dev Internal function that burns an amount of the token of a given\naccount, deducting from the sender's allowance for said account. Uses the\ninternal burn function.\nEmits an Approval event (reflecting the reduced allowance).\n@param account The account whose tokens will be burnt.\n@param value The amount that will be burnt.", + "id": 876, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "_burnFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 852, + "id": 839, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 849, + "id": 836, "name": "account", "nodeType": "VariableDeclaration", - "scope": 888, - "src": "6591:15:5", + "scope": 876, + "src": "7358:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13595,10 +13405,11 @@ "typeString": "address" }, "typeName": { - "id": 848, + "id": 835, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6591:7:5", + "src": "7358:7:5", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13609,11 +13420,11 @@ }, { "constant": false, - "id": 851, + "id": 838, "name": "value", "nodeType": "VariableDeclaration", - "scope": 888, - "src": "6608:13:5", + "scope": 876, + "src": "7375:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13621,10 +13432,10 @@ "typeString": "uint256" }, "typeName": { - "id": 850, + "id": 837, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6608:7:5", + "src": "7375:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13634,27 +13445,26 @@ "visibility": "internal" } ], - "src": "6590:32:5" + "src": "7357:32:5" }, - "payable": false, "returnParameters": { - "id": 853, + "id": 840, "nodeType": "ParameterList", "parameters": [], - "src": "6632:0:5" + "src": "7399:0:5" }, - "scope": 889, - "src": "6572:390:5", + "scope": 877, + "src": "7339:255:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 890, - "src": "369:6595:5" + "scope": 878, + "src": "649:6947:5" } ], - "src": "0:6965:5" + "src": "0:7597:5" }, "id": 5 }, @@ -13663,31 +13473,31 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol", "exportedSymbols": { "ERC20Detailed": [ - 947 + 935 ] }, - "id": 948, + "id": 936, "nodeType": "SourceUnit", "nodes": [ { - "id": 891, + "id": 879, "literals": [ "solidity", "^", - "0.4", - ".24" + "0.5", + ".0" ], "nodeType": "PragmaDirective", - "src": "0:24:6" + "src": "0:23:6" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "./IERC20.sol", - "id": 892, + "id": 880, "nodeType": "ImportDirective", - "scope": 948, - "sourceUnit": 1119, - "src": "26:22:6", + "scope": 936, + "sourceUnit": 1107, + "src": "25:22:6", "symbolAliases": [], "unitAlias": "" }, @@ -13697,42 +13507,42 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 893, + "id": 881, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1118, - "src": "309:6:6", + "referencedDeclaration": 1106, + "src": "308:6:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1118", + "typeIdentifier": "t_contract$_IERC20_$1106", "typeString": "contract IERC20" } }, - "id": 894, + "id": 882, "nodeType": "InheritanceSpecifier", - "src": "309:6:6" + "src": "308:6:6" } ], "contractDependencies": [ - 1118 + 1106 ], "contractKind": "contract", "documentation": "@title ERC20Detailed token\n@dev The decimals are only for visualization purposes.\nAll the operations are done using the smallest and indivisible token unit,\njust as on Ethereum all the operations are done in wei.", "fullyImplemented": false, - "id": 947, + "id": 935, "linearizedBaseContracts": [ - 947, - 1118 + 935, + 1106 ], "name": "ERC20Detailed", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 896, + "id": 884, "name": "_name", "nodeType": "VariableDeclaration", - "scope": 947, - "src": "320:20:6", + "scope": 935, + "src": "321:20:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -13740,10 +13550,10 @@ "typeString": "string" }, "typeName": { - "id": 895, + "id": 883, "name": "string", "nodeType": "ElementaryTypeName", - "src": "320:6:6", + "src": "321:6:6", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -13754,11 +13564,11 @@ }, { "constant": false, - "id": 898, + "id": 886, "name": "_symbol", "nodeType": "VariableDeclaration", - "scope": 947, - "src": "344:22:6", + "scope": 935, + "src": "347:22:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -13766,10 +13576,10 @@ "typeString": "string" }, "typeName": { - "id": 897, + "id": 885, "name": "string", "nodeType": "ElementaryTypeName", - "src": "344:6:6", + "src": "347:6:6", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -13780,11 +13590,11 @@ }, { "constant": false, - "id": 900, + "id": 888, "name": "_decimals", "nodeType": "VariableDeclaration", - "scope": 947, - "src": "370:23:6", + "scope": 935, + "src": "375:23:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -13792,10 +13602,10 @@ "typeString": "uint8" }, "typeName": { - "id": 899, + "id": 887, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "370:5:6", + "src": "375:5:6", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -13806,26 +13616,26 @@ }, { "body": { - "id": 921, + "id": 909, "nodeType": "Block", - "src": "461:71:6", + "src": "483:85:6", "statements": [ { "expression": { "argumentTypes": null, - "id": 911, + "id": 899, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 909, + "id": 897, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 896, - "src": "467:5:6", + "referencedDeclaration": 884, + "src": "493:5:6", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" @@ -13835,43 +13645,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 910, + "id": 898, "name": "name", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 902, - "src": "475:4:6", + "referencedDeclaration": 890, + "src": "501:4:6", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, - "src": "467:12:6", + "src": "493:12:6", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, - "id": 912, + "id": 900, "nodeType": "ExpressionStatement", - "src": "467:12:6" + "src": "493:12:6" }, { "expression": { "argumentTypes": null, - "id": 915, + "id": 903, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 913, + "id": 901, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 898, - "src": "485:7:6", + "referencedDeclaration": 886, + "src": "515:7:6", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" @@ -13881,43 +13691,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 914, + "id": 902, "name": "symbol", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "495:6:6", + "referencedDeclaration": 892, + "src": "525:6:6", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, - "src": "485:16:6", + "src": "515:16:6", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, - "id": 916, + "id": 904, "nodeType": "ExpressionStatement", - "src": "485:16:6" + "src": "515:16:6" }, { "expression": { "argumentTypes": null, - "id": 919, + "id": 907, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 917, + "id": 905, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 900, - "src": "507:9:6", + "referencedDeclaration": 888, + "src": "541:9:6", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -13927,59 +13737,58 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 918, + "id": 906, "name": "decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 906, - "src": "519:8:6", + "referencedDeclaration": 894, + "src": "553:8:6", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "507:20:6", + "src": "541:20:6", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 920, + "id": 908, "nodeType": "ExpressionStatement", - "src": "507:20:6" + "src": "541:20:6" } ] }, "documentation": null, - "id": 922, + "id": 910, "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, + "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 907, + "id": 895, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 902, + "id": 890, "name": "name", "nodeType": "VariableDeclaration", - "scope": 922, - "src": "410:11:6", + "scope": 910, + "src": "418:18:6", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { - "id": 901, + "id": 889, "name": "string", "nodeType": "ElementaryTypeName", - "src": "410:6:6", + "src": "418:6:6", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -13990,22 +13799,22 @@ }, { "constant": false, - "id": 904, + "id": 892, "name": "symbol", "nodeType": "VariableDeclaration", - "scope": 922, - "src": "423:13:6", + "scope": 910, + "src": "438:20:6", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { - "id": 903, + "id": 891, "name": "string", "nodeType": "ElementaryTypeName", - "src": "423:6:6", + "src": "438:6:6", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -14016,11 +13825,11 @@ }, { "constant": false, - "id": 906, + "id": 894, "name": "decimals", "nodeType": "VariableDeclaration", - "scope": 922, - "src": "438:14:6", + "scope": 910, + "src": "460:14:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14028,10 +13837,10 @@ "typeString": "uint8" }, "typeName": { - "id": 905, + "id": 893, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "438:5:6", + "src": "460:5:6", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -14041,85 +13850,82 @@ "visibility": "internal" } ], - "src": "409:44:6" + "src": "417:58:6" }, - "payable": false, "returnParameters": { - "id": 908, + "id": 896, "nodeType": "ParameterList", "parameters": [], - "src": "461:0:6" + "src": "483:0:6" }, - "scope": 947, - "src": "398:134:6", + "scope": 935, + "src": "405:163:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 929, + "id": 917, "nodeType": "Block", - "src": "628:23:6", + "src": "680:29:6", "statements": [ { "expression": { "argumentTypes": null, - "id": 927, + "id": 915, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 896, - "src": "641:5:6", + "referencedDeclaration": 884, + "src": "697:5:6", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, - "functionReturnParameters": 926, - "id": 928, + "functionReturnParameters": 914, + "id": 916, "nodeType": "Return", - "src": "634:12:6" + "src": "690:12:6" } ] }, "documentation": "@return the name of the token.", - "id": 930, + "id": 918, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "name", "nodeType": "FunctionDefinition", "parameters": { - "id": 923, + "id": 911, "nodeType": "ParameterList", "parameters": [], - "src": "597:2:6" + "src": "641:2:6" }, - "payable": false, "returnParameters": { - "id": 926, + "id": 914, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 925, + "id": 913, "name": "", "nodeType": "VariableDeclaration", - "scope": 930, - "src": "620:6:6", + "scope": 918, + "src": "665:13:6", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { - "id": 924, + "id": 912, "name": "string", "nodeType": "ElementaryTypeName", - "src": "620:6:6", + "src": "665:6:6", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -14129,78 +13935,76 @@ "visibility": "internal" } ], - "src": "619:8:6" + "src": "664:15:6" }, - "scope": 947, - "src": "584:67:6", + "scope": 935, + "src": "628:81:6", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 937, + "id": 925, "nodeType": "Block", - "src": "751:25:6", + "src": "825:31:6", "statements": [ { "expression": { "argumentTypes": null, - "id": 935, + "id": 923, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 898, - "src": "764:7:6", + "referencedDeclaration": 886, + "src": "842:7:6", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, - "functionReturnParameters": 934, - "id": 936, + "functionReturnParameters": 922, + "id": 924, "nodeType": "Return", - "src": "757:14:6" + "src": "835:14:6" } ] }, "documentation": "@return the symbol of the token.", - "id": 938, + "id": 926, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "symbol", "nodeType": "FunctionDefinition", "parameters": { - "id": 931, + "id": 919, "nodeType": "ParameterList", "parameters": [], - "src": "720:2:6" + "src": "786:2:6" }, - "payable": false, "returnParameters": { - "id": 934, + "id": 922, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 933, + "id": 921, "name": "", "nodeType": "VariableDeclaration", - "scope": 938, - "src": "743:6:6", + "scope": 926, + "src": "810:13:6", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { - "id": 932, + "id": 920, "name": "string", "nodeType": "ElementaryTypeName", - "src": "743:6:6", + "src": "810:6:6", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -14210,67 +14014,65 @@ "visibility": "internal" } ], - "src": "742:8:6" + "src": "809:15:6" }, - "scope": 947, - "src": "705:71:6", + "scope": 935, + "src": "771:85:6", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 945, + "id": 933, "nodeType": "Block", - "src": "889:27:6", + "src": "978:33:6", "statements": [ { "expression": { "argumentTypes": null, - "id": 943, + "id": 931, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 900, - "src": "902:9:6", + "referencedDeclaration": 888, + "src": "995:9:6", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "functionReturnParameters": 942, - "id": 944, + "functionReturnParameters": 930, + "id": 932, "nodeType": "Return", - "src": "895:16:6" + "src": "988:16:6" } ] }, "documentation": "@return the number of decimals of the token.", - "id": 946, + "id": 934, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "decimals", "nodeType": "FunctionDefinition", "parameters": { - "id": 939, + "id": 927, "nodeType": "ParameterList", "parameters": [], - "src": "859:2:6" + "src": "947:2:6" }, - "payable": false, "returnParameters": { - "id": 942, + "id": 930, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 941, + "id": 929, "name": "", "nodeType": "VariableDeclaration", - "scope": 946, - "src": "882:5:6", + "scope": 934, + "src": "971:5:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14278,10 +14080,10 @@ "typeString": "uint8" }, "typeName": { - "id": 940, + "id": 928, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "882:5:6", + "src": "971:5:6", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -14291,20 +14093,20 @@ "visibility": "internal" } ], - "src": "881:7:6" + "src": "970:7:6" }, - "scope": 947, - "src": "842:74:6", + "scope": 935, + "src": "930:81:6", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 948, - "src": "283:635:6" + "scope": 936, + "src": "282:731:6" } ], - "src": "0:919:6" + "src": "0:1014:6" }, "id": 6 }, @@ -14313,42 +14115,42 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol", "exportedSymbols": { "ERC20Pausable": [ - 1049 + 1037 ] }, - "id": 1050, + "id": 1038, "nodeType": "SourceUnit", "nodes": [ { - "id": 949, + "id": 937, "literals": [ "solidity", "^", - "0.4", - ".24" + "0.5", + ".0" ], "nodeType": "PragmaDirective", - "src": "0:24:7" + "src": "0:23:7" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", "file": "./ERC20.sol", - "id": 950, + "id": 938, "nodeType": "ImportDirective", - "scope": 1050, - "sourceUnit": 890, - "src": "26:21:7", + "scope": 1038, + "sourceUnit": 878, + "src": "25:21:7", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/lifecycle/Pausable.sol", "file": "../../lifecycle/Pausable.sol", - "id": 951, + "id": 939, "nodeType": "ImportDirective", - "scope": 1050, + "scope": 1038, "sourceUnit": 318, - "src": "48:38:7", + "src": "47:38:7", "symbolAliases": [], "unitAlias": "" }, @@ -14358,64 +14160,64 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 952, + "id": 940, "name": "ERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 889, - "src": "196:5:7", + "referencedDeclaration": 877, + "src": "195:5:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$889", + "typeIdentifier": "t_contract$_ERC20_$877", "typeString": "contract ERC20" } }, - "id": 953, + "id": 941, "nodeType": "InheritanceSpecifier", - "src": "196:5:7" + "src": "195:5:7" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 954, + "id": 942, "name": "Pausable", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 317, - "src": "203:8:7", + "src": "202:8:7", "typeDescriptions": { "typeIdentifier": "t_contract$_Pausable_$317", "typeString": "contract Pausable" } }, - "id": 955, + "id": 943, "nodeType": "InheritanceSpecifier", - "src": "203:8:7" + "src": "202:8:7" } ], "contractDependencies": [ 234, 317, - 889, - 1118 + 877, + 1106 ], "contractKind": "contract", "documentation": "@title Pausable token\n@dev ERC20 modified with pausable transfers.*", "fullyImplemented": true, - "id": 1049, + "id": 1037, "linearizedBaseContracts": [ - 1049, + 1037, 317, 234, - 889, - 1118 + 877, + 1106 ], "name": "ERC20Pausable", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 972, + "id": 960, "nodeType": "Block", - "src": "324:43:7", + "src": "298:49:7", "statements": [ { "expression": { @@ -14423,12 +14225,12 @@ "arguments": [ { "argumentTypes": null, - "id": 968, + "id": 956, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 957, - "src": "352:2:7", + "referencedDeclaration": 945, + "src": "330:2:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14436,12 +14238,12 @@ }, { "argumentTypes": null, - "id": 969, + "id": 957, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "356:5:7", + "referencedDeclaration": 947, + "src": "334:5:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14461,18 +14263,18 @@ ], "expression": { "argumentTypes": null, - "id": 966, + "id": 954, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "337:5:7", + "referencedDeclaration": 1150, + "src": "315:5:7", "typeDescriptions": { - "typeIdentifier": "t_super$_ERC20Pausable_$1049", + "typeIdentifier": "t_super$_ERC20Pausable_$1037", "typeString": "contract super ERC20Pausable" } }, - "id": 967, + "id": 955, "isConstant": false, "isLValue": false, "isPure": false, @@ -14480,13 +14282,13 @@ "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 521, - "src": "337:14:7", + "src": "315:14:7", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) returns (bool)" } }, - "id": 970, + "id": 958, "isConstant": false, "isLValue": false, "isPure": false, @@ -14494,58 +14296,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "337:25:7", + "src": "315:25:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 965, - "id": 971, + "functionReturnParameters": 953, + "id": 959, "nodeType": "Return", - "src": "330:32:7" + "src": "308:32:7" } ] }, "documentation": null, - "id": 973, + "id": 961, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, - "id": 962, + "id": 950, "modifierName": { "argumentTypes": null, - "id": 961, + "id": 949, "name": "whenNotPaused", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 274, - "src": "289:13:7", + "src": "269:13:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "289:13:7" + "src": "269:13:7" } ], "name": "transfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 960, + "id": 948, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 957, + "id": 945, "name": "to", "nodeType": "VariableDeclaration", - "scope": 973, - "src": "240:10:7", + "scope": 961, + "src": "235:10:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14553,10 +14354,11 @@ "typeString": "address" }, "typeName": { - "id": 956, + "id": 944, "name": "address", "nodeType": "ElementaryTypeName", - "src": "240:7:7", + "src": "235:7:7", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14567,11 +14369,11 @@ }, { "constant": false, - "id": 959, + "id": 947, "name": "value", "nodeType": "VariableDeclaration", - "scope": 973, - "src": "256:13:7", + "scope": 961, + "src": "247:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14579,10 +14381,10 @@ "typeString": "uint256" }, "typeName": { - "id": 958, + "id": 946, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "256:7:7", + "src": "247:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14592,20 +14394,19 @@ "visibility": "internal" } ], - "src": "234:39:7" + "src": "234:27:7" }, - "payable": false, "returnParameters": { - "id": 965, + "id": 953, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 964, + "id": 952, "name": "", "nodeType": "VariableDeclaration", - "scope": 973, - "src": "316:4:7", + "scope": 961, + "src": "292:4:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14613,10 +14414,10 @@ "typeString": "bool" }, "typeName": { - "id": 963, + "id": 951, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "316:4:7", + "src": "292:4:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14626,19 +14427,19 @@ "visibility": "internal" } ], - "src": "315:6:7" + "src": "291:6:7" }, - "scope": 1049, - "src": "217:150:7", + "scope": 1037, + "src": "217:130:7", "stateMutability": "nonpayable", "superFunction": 521, "visibility": "public" }, { "body": { - "id": 993, + "id": 981, "nodeType": "Block", - "src": "500:53:7", + "src": "452:59:7", "statements": [ { "expression": { @@ -14646,12 +14447,12 @@ "arguments": [ { "argumentTypes": null, - "id": 988, + "id": 976, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 975, - "src": "532:4:7", + "referencedDeclaration": 963, + "src": "488:4:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14659,12 +14460,12 @@ }, { "argumentTypes": null, - "id": 989, + "id": 977, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 977, - "src": "538:2:7", + "referencedDeclaration": 965, + "src": "494:2:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14672,12 +14473,12 @@ }, { "argumentTypes": null, - "id": 990, + "id": 978, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 979, - "src": "542:5:7", + "referencedDeclaration": 967, + "src": "498:5:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14701,32 +14502,32 @@ ], "expression": { "argumentTypes": null, - "id": 986, + "id": 974, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "513:5:7", + "referencedDeclaration": 1150, + "src": "469:5:7", "typeDescriptions": { - "typeIdentifier": "t_super$_ERC20Pausable_$1049", + "typeIdentifier": "t_super$_ERC20Pausable_$1037", "typeString": "contract super ERC20Pausable" } }, - "id": 987, + "id": 975, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", - "referencedDeclaration": 605, - "src": "513:18:7", + "referencedDeclaration": 606, + "src": "469:18:7", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) returns (bool)" } }, - "id": 991, + "id": 979, "isConstant": false, "isLValue": false, "isPure": false, @@ -14734,58 +14535,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "513:35:7", + "src": "469:35:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 985, - "id": 992, + "functionReturnParameters": 973, + "id": 980, "nodeType": "Return", - "src": "506:42:7" + "src": "462:42:7" } ] }, "documentation": null, - "id": 994, + "id": 982, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, - "id": 982, + "id": 970, "modifierName": { "argumentTypes": null, - "id": 981, + "id": 969, "name": "whenNotPaused", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 274, - "src": "465:13:7", + "src": "423:13:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "465:13:7" + "src": "423:13:7" } ], "name": "transferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 980, + "id": 968, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 975, + "id": 963, "name": "from", "nodeType": "VariableDeclaration", - "scope": 994, - "src": "398:12:7", + "scope": 982, + "src": "375:12:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14793,10 +14593,11 @@ "typeString": "address" }, "typeName": { - "id": 974, + "id": 962, "name": "address", "nodeType": "ElementaryTypeName", - "src": "398:7:7", + "src": "375:7:7", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14807,11 +14608,11 @@ }, { "constant": false, - "id": 977, + "id": 965, "name": "to", "nodeType": "VariableDeclaration", - "scope": 994, - "src": "416:10:7", + "scope": 982, + "src": "389:10:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14819,10 +14620,11 @@ "typeString": "address" }, "typeName": { - "id": 976, + "id": 964, "name": "address", "nodeType": "ElementaryTypeName", - "src": "416:7:7", + "src": "389:7:7", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14833,11 +14635,11 @@ }, { "constant": false, - "id": 979, + "id": 967, "name": "value", "nodeType": "VariableDeclaration", - "scope": 994, - "src": "432:13:7", + "scope": 982, + "src": "401:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14845,10 +14647,10 @@ "typeString": "uint256" }, "typeName": { - "id": 978, + "id": 966, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "432:7:7", + "src": "401:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14858,20 +14660,19 @@ "visibility": "internal" } ], - "src": "392:57:7" + "src": "374:41:7" }, - "payable": false, "returnParameters": { - "id": 985, + "id": 973, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 984, + "id": 972, "name": "", "nodeType": "VariableDeclaration", - "scope": 994, - "src": "492:4:7", + "scope": 982, + "src": "446:4:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14879,10 +14680,10 @@ "typeString": "bool" }, "typeName": { - "id": 983, + "id": 971, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "492:4:7", + "src": "446:4:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14892,19 +14693,19 @@ "visibility": "internal" } ], - "src": "491:6:7" + "src": "445:6:7" }, - "scope": 1049, - "src": "371:182:7", + "scope": 1037, + "src": "353:158:7", "stateMutability": "nonpayable", - "superFunction": 605, + "superFunction": 606, "visibility": "public" }, { "body": { - "id": 1011, + "id": 999, "nodeType": "Block", - "src": "668:47:7", + "src": "602:53:7", "statements": [ { "expression": { @@ -14912,12 +14713,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1007, + "id": 995, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 996, - "src": "695:7:7", + "referencedDeclaration": 984, + "src": "633:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14925,12 +14726,12 @@ }, { "argumentTypes": null, - "id": 1008, + "id": 996, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 998, - "src": "704:5:7", + "referencedDeclaration": 986, + "src": "642:5:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14950,18 +14751,18 @@ ], "expression": { "argumentTypes": null, - "id": 1005, + "id": 993, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "681:5:7", + "referencedDeclaration": 1150, + "src": "619:5:7", "typeDescriptions": { - "typeIdentifier": "t_super$_ERC20Pausable_$1049", + "typeIdentifier": "t_super$_ERC20Pausable_$1037", "typeString": "contract super ERC20Pausable" } }, - "id": 1006, + "id": 994, "isConstant": false, "isLValue": false, "isPure": false, @@ -14969,13 +14770,13 @@ "memberName": "approve", "nodeType": "MemberAccess", "referencedDeclaration": 557, - "src": "681:13:7", + "src": "619:13:7", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) returns (bool)" } }, - "id": 1009, + "id": 997, "isConstant": false, "isLValue": false, "isPure": false, @@ -14983,58 +14784,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "681:29:7", + "src": "619:29:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 1004, - "id": 1010, + "functionReturnParameters": 992, + "id": 998, "nodeType": "Return", - "src": "674:36:7" + "src": "612:36:7" } ] }, "documentation": null, - "id": 1012, + "id": 1000, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, - "id": 1001, + "id": 989, "modifierName": { "argumentTypes": null, - "id": 1000, + "id": 988, "name": "whenNotPaused", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 274, - "src": "633:13:7", + "src": "573:13:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "633:13:7" + "src": "573:13:7" } ], "name": "approve", "nodeType": "FunctionDefinition", "parameters": { - "id": 999, + "id": 987, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 996, + "id": 984, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1012, - "src": "579:15:7", + "scope": 1000, + "src": "534:15:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15042,10 +14842,11 @@ "typeString": "address" }, "typeName": { - "id": 995, + "id": 983, "name": "address", "nodeType": "ElementaryTypeName", - "src": "579:7:7", + "src": "534:7:7", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15056,11 +14857,11 @@ }, { "constant": false, - "id": 998, + "id": 986, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1012, - "src": "600:13:7", + "scope": 1000, + "src": "551:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15068,10 +14869,10 @@ "typeString": "uint256" }, "typeName": { - "id": 997, + "id": 985, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "600:7:7", + "src": "551:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15081,20 +14882,19 @@ "visibility": "internal" } ], - "src": "573:44:7" + "src": "533:32:7" }, - "payable": false, "returnParameters": { - "id": 1004, + "id": 992, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1003, + "id": 991, "name": "", "nodeType": "VariableDeclaration", - "scope": 1012, - "src": "660:4:7", + "scope": 1000, + "src": "596:4:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15102,10 +14902,10 @@ "typeString": "bool" }, "typeName": { - "id": 1002, + "id": 990, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "660:4:7", + "src": "596:4:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -15115,19 +14915,19 @@ "visibility": "internal" } ], - "src": "659:6:7" + "src": "595:6:7" }, - "scope": 1049, - "src": "557:158:7", + "scope": 1037, + "src": "517:138:7", "stateMutability": "nonpayable", "superFunction": 557, "visibility": "public" }, { "body": { - "id": 1029, + "id": 1017, "nodeType": "Block", - "src": "850:62:7", + "src": "766:68:7", "statements": [ { "expression": { @@ -15135,12 +14935,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1025, + "id": 1013, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1014, - "src": "887:7:7", + "referencedDeclaration": 1002, + "src": "807:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15148,12 +14948,12 @@ }, { "argumentTypes": null, - "id": 1026, + "id": 1014, "name": "addedValue", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1016, - "src": "896:10:7", + "referencedDeclaration": 1004, + "src": "816:10:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15173,18 +14973,18 @@ ], "expression": { "argumentTypes": null, - "id": 1023, + "id": 1011, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "863:5:7", + "referencedDeclaration": 1150, + "src": "783:5:7", "typeDescriptions": { - "typeIdentifier": "t_super$_ERC20Pausable_$1049", + "typeIdentifier": "t_super$_ERC20Pausable_$1037", "typeString": "contract super ERC20Pausable" } }, - "id": 1024, + "id": 1012, "isConstant": false, "isLValue": false, "isPure": false, @@ -15192,13 +14992,13 @@ "memberName": "increaseAllowance", "nodeType": "MemberAccess", "referencedDeclaration": 655, - "src": "863:23:7", + "src": "783:23:7", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) returns (bool)" } }, - "id": 1027, + "id": 1015, "isConstant": false, "isLValue": false, "isPure": false, @@ -15206,58 +15006,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "863:44:7", + "src": "783:44:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 1022, - "id": 1028, + "functionReturnParameters": 1010, + "id": 1016, "nodeType": "Return", - "src": "856:51:7" + "src": "776:51:7" } ] }, "documentation": null, - "id": 1030, + "id": 1018, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, - "id": 1019, + "id": 1007, "modifierName": { "argumentTypes": null, - "id": 1018, + "id": 1006, "name": "whenNotPaused", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 274, - "src": "807:13:7", + "src": "729:13:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "807:13:7" + "src": "729:13:7" } ], "name": "increaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1017, + "id": 1005, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1014, + "id": 1002, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1030, - "src": "751:15:7", + "scope": 1018, + "src": "688:15:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15265,10 +15064,11 @@ "typeString": "address" }, "typeName": { - "id": 1013, + "id": 1001, "name": "address", "nodeType": "ElementaryTypeName", - "src": "751:7:7", + "src": "688:7:7", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15279,11 +15079,11 @@ }, { "constant": false, - "id": 1016, + "id": 1004, "name": "addedValue", "nodeType": "VariableDeclaration", - "scope": 1030, - "src": "772:15:7", + "scope": 1018, + "src": "705:15:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15291,10 +15091,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1015, + "id": 1003, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "772:4:7", + "src": "705:4:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15304,20 +15104,19 @@ "visibility": "internal" } ], - "src": "745:46:7" + "src": "687:34:7" }, - "payable": false, "returnParameters": { - "id": 1022, + "id": 1010, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1021, + "id": 1009, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1030, - "src": "834:12:7", + "scope": 1018, + "src": "752:12:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15325,10 +15124,10 @@ "typeString": "bool" }, "typeName": { - "id": 1020, + "id": 1008, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "834:4:7", + "src": "752:4:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -15338,19 +15137,19 @@ "visibility": "internal" } ], - "src": "833:14:7" + "src": "751:14:7" }, - "scope": 1049, - "src": "719:193:7", + "scope": 1037, + "src": "661:173:7", "stateMutability": "nonpayable", "superFunction": 655, "visibility": "public" }, { "body": { - "id": 1047, + "id": 1035, "nodeType": "Block", - "src": "1052:67:7", + "src": "950:73:7", "statements": [ { "expression": { @@ -15358,12 +15157,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1043, + "id": 1031, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "1089:7:7", + "referencedDeclaration": 1020, + "src": "991:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15371,12 +15170,12 @@ }, { "argumentTypes": null, - "id": 1044, + "id": 1032, "name": "subtractedValue", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1034, - "src": "1098:15:7", + "referencedDeclaration": 1022, + "src": "1000:15:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15396,32 +15195,32 @@ ], "expression": { "argumentTypes": null, - "id": 1041, + "id": 1029, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "1065:5:7", + "referencedDeclaration": 1150, + "src": "967:5:7", "typeDescriptions": { - "typeIdentifier": "t_super$_ERC20Pausable_$1049", + "typeIdentifier": "t_super$_ERC20Pausable_$1037", "typeString": "contract super ERC20Pausable" } }, - "id": 1042, + "id": 1030, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "decreaseAllowance", "nodeType": "MemberAccess", - "referencedDeclaration": 705, - "src": "1065:23:7", + "referencedDeclaration": 704, + "src": "967:23:7", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) returns (bool)" } }, - "id": 1045, + "id": 1033, "isConstant": false, "isLValue": false, "isPure": false, @@ -15429,58 +15228,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1065:49:7", + "src": "967:49:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 1040, - "id": 1046, + "functionReturnParameters": 1028, + "id": 1034, "nodeType": "Return", - "src": "1058:56:7" + "src": "960:56:7" } ] }, "documentation": null, - "id": 1048, + "id": 1036, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, - "id": 1037, + "id": 1025, "modifierName": { "argumentTypes": null, - "id": 1036, + "id": 1024, "name": "whenNotPaused", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 274, - "src": "1009:13:7", + "src": "913:13:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1009:13:7" + "src": "913:13:7" } ], "name": "decreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1035, + "id": 1023, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1032, + "id": 1020, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1048, - "src": "948:15:7", + "scope": 1036, + "src": "867:15:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15488,10 +15286,11 @@ "typeString": "address" }, "typeName": { - "id": 1031, + "id": 1019, "name": "address", "nodeType": "ElementaryTypeName", - "src": "948:7:7", + "src": "867:7:7", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15502,11 +15301,11 @@ }, { "constant": false, - "id": 1034, + "id": 1022, "name": "subtractedValue", "nodeType": "VariableDeclaration", - "scope": 1048, - "src": "969:20:7", + "scope": 1036, + "src": "884:20:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15514,10 +15313,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1033, + "id": 1021, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "969:4:7", + "src": "884:4:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15527,20 +15326,19 @@ "visibility": "internal" } ], - "src": "942:51:7" + "src": "866:39:7" }, - "payable": false, "returnParameters": { - "id": 1040, + "id": 1028, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1039, + "id": 1027, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1048, - "src": "1036:12:7", + "scope": 1036, + "src": "936:12:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15548,10 +15346,10 @@ "typeString": "bool" }, "typeName": { - "id": 1038, + "id": 1026, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1036:4:7", + "src": "936:4:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -15561,20 +15359,20 @@ "visibility": "internal" } ], - "src": "1035:14:7" + "src": "935:14:7" }, - "scope": 1049, - "src": "916:203:7", + "scope": 1037, + "src": "840:183:7", "stateMutability": "nonpayable", - "superFunction": 705, + "superFunction": 704, "visibility": "public" } ], - "scope": 1050, - "src": "170:951:7" + "scope": 1038, + "src": "169:856:7" } ], - "src": "0:1122:7" + "src": "0:1026:7" }, "id": 7 }, @@ -15583,22 +15381,22 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "exportedSymbols": { "IERC20": [ - 1118 + 1106 ] }, - "id": 1119, + "id": 1107, "nodeType": "SourceUnit", "nodes": [ { - "id": 1051, + "id": 1039, "literals": [ "solidity", "^", - "0.4", - ".24" + "0.5", + ".0" ], "nodeType": "PragmaDirective", - "src": "0:24:8" + "src": "0:23:8" }, { "baseContracts": [], @@ -15606,9 +15404,9 @@ "contractKind": "interface", "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", "fullyImplemented": false, - "id": 1118, + "id": 1106, "linearizedBaseContracts": [ - 1118 + 1106 ], "name": "IERC20", "nodeType": "ContractDefinition", @@ -15616,272 +15414,23 @@ { "body": null, "documentation": null, - "id": 1056, + "id": 1048, "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "totalSupply", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1052, - "nodeType": "ParameterList", - "parameters": [], - "src": "156:2:8" - }, - "payable": false, - "returnParameters": { - "id": 1055, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1054, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1056, - "src": "182:7:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1053, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "182:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "181:9:8" - }, - "scope": 1118, - "src": "136:55:8", - "stateMutability": "view", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 1063, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "balanceOf", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1059, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1058, - "name": "who", - "nodeType": "VariableDeclaration", - "scope": 1063, - "src": "214:11:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1057, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "214:7:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "213:13:8" - }, - "payable": false, - "returnParameters": { - "id": 1062, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1061, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1063, - "src": "250:7:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1060, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "250:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "249:9:8" - }, - "scope": 1118, - "src": "195:64:8", - "stateMutability": "view", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 1072, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "allowance", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1068, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1065, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 1072, - "src": "282:13:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1064, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "282:7:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1067, - "name": "spender", - "nodeType": "VariableDeclaration", - "scope": 1072, - "src": "297:15:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1066, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "297:7:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "281:32:8" - }, - "payable": false, - "returnParameters": { - "id": 1071, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1070, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1072, - "src": "341:7:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1069, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "341:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "340:9:8" - }, - "scope": 1118, - "src": "263:87:8", - "stateMutability": "view", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 1081, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "transfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 1077, + "id": 1044, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1074, + "id": 1041, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1081, - "src": "372:10:8", + "scope": 1048, + "src": "155:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15889,10 +15438,11 @@ "typeString": "address" }, "typeName": { - "id": 1073, + "id": 1040, "name": "address", "nodeType": "ElementaryTypeName", - "src": "372:7:8", + "src": "155:7:8", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15903,11 +15453,11 @@ }, { "constant": false, - "id": 1076, + "id": 1043, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1081, - "src": "384:13:8", + "scope": 1048, + "src": "167:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15915,10 +15465,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1075, + "id": 1042, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "384:7:8", + "src": "167:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15928,20 +15478,19 @@ "visibility": "internal" } ], - "src": "371:27:8" + "src": "154:27:8" }, - "payable": false, "returnParameters": { - "id": 1080, + "id": 1047, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1079, + "id": 1046, "name": "", "nodeType": "VariableDeclaration", - "scope": 1081, - "src": "417:4:8", + "scope": 1048, + "src": "200:4:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15949,10 +15498,10 @@ "typeString": "bool" }, "typeName": { - "id": 1078, + "id": 1045, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "417:4:8", + "src": "200:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -15962,10 +15511,10 @@ "visibility": "internal" } ], - "src": "416:6:8" + "src": "199:6:8" }, - "scope": 1118, - "src": "354:69:8", + "scope": 1106, + "src": "137:69:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" @@ -15973,24 +15522,23 @@ { "body": null, "documentation": null, - "id": 1090, + "id": 1057, "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "approve", "nodeType": "FunctionDefinition", "parameters": { - "id": 1086, + "id": 1053, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1083, + "id": 1050, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1090, - "src": "444:15:8", + "scope": 1057, + "src": "229:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15998,10 +15546,11 @@ "typeString": "address" }, "typeName": { - "id": 1082, + "id": 1049, "name": "address", "nodeType": "ElementaryTypeName", - "src": "444:7:8", + "src": "229:7:8", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -16012,11 +15561,11 @@ }, { "constant": false, - "id": 1085, + "id": 1052, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1090, - "src": "461:13:8", + "scope": 1057, + "src": "246:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16024,10 +15573,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1084, + "id": 1051, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "461:7:8", + "src": "246:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16037,20 +15586,19 @@ "visibility": "internal" } ], - "src": "443:32:8" + "src": "228:32:8" }, - "payable": false, "returnParameters": { - "id": 1089, + "id": 1056, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1088, + "id": 1055, "name": "", "nodeType": "VariableDeclaration", - "scope": 1090, - "src": "498:4:8", + "scope": 1057, + "src": "279:4:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16058,10 +15606,10 @@ "typeString": "bool" }, "typeName": { - "id": 1087, + "id": 1054, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "498:4:8", + "src": "279:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -16071,10 +15619,10 @@ "visibility": "internal" } ], - "src": "497:6:8" + "src": "278:6:8" }, - "scope": 1118, - "src": "427:77:8", + "scope": 1106, + "src": "212:73:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" @@ -16082,24 +15630,23 @@ { "body": null, "documentation": null, - "id": 1101, + "id": 1068, "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "transferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 1097, + "id": 1064, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1092, + "id": 1059, "name": "from", "nodeType": "VariableDeclaration", - "scope": 1101, - "src": "530:12:8", + "scope": 1068, + "src": "313:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16107,10 +15654,11 @@ "typeString": "address" }, "typeName": { - "id": 1091, + "id": 1058, "name": "address", "nodeType": "ElementaryTypeName", - "src": "530:7:8", + "src": "313:7:8", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -16121,11 +15669,11 @@ }, { "constant": false, - "id": 1094, + "id": 1061, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1101, - "src": "544:10:8", + "scope": 1068, + "src": "327:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16133,10 +15681,11 @@ "typeString": "address" }, "typeName": { - "id": 1093, + "id": 1060, "name": "address", "nodeType": "ElementaryTypeName", - "src": "544:7:8", + "src": "327:7:8", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -16147,11 +15696,11 @@ }, { "constant": false, - "id": 1096, + "id": 1063, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1101, - "src": "556:13:8", + "scope": 1068, + "src": "339:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16159,10 +15708,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1095, + "id": 1062, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "556:7:8", + "src": "339:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16172,162 +15721,408 @@ "visibility": "internal" } ], - "src": "529:41:8" + "src": "312:41:8" }, - "payable": false, "returnParameters": { - "id": 1100, + "id": 1067, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1066, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1068, + "src": "372:4:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1065, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "372:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "371:6:8" + }, + "scope": 1106, + "src": "291:87:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1073, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1069, + "nodeType": "ParameterList", + "parameters": [], + "src": "404:2:8" + }, + "returnParameters": { + "id": 1072, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1071, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1073, + "src": "430:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1070, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "430:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "429:9:8" + }, + "scope": 1106, + "src": "384:55:8", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1080, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1076, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1075, + "name": "who", + "nodeType": "VariableDeclaration", + "scope": 1080, + "src": "464:11:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1074, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "464:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "463:13:8" + }, + "returnParameters": { + "id": 1079, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1078, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1080, + "src": "500:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1077, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "500:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "499:9:8" + }, + "scope": 1106, + "src": "445:64:8", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1089, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1085, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1082, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1089, + "src": "534:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1081, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "534:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1084, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1089, + "src": "549:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1083, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "549:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "533:32:8" + }, + "returnParameters": { + "id": 1088, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1087, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1089, + "src": "589:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1086, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "589:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "588:9:8" + }, + "scope": 1106, + "src": "515:83:8", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": null, + "id": 1097, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 1096, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1091, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 1097, + "src": "619:20:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1090, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "619:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1093, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1097, + "src": "641:18:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1092, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "641:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1095, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1097, + "src": "661:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1094, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "661:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "618:57:8" + }, + "src": "604:72:8" + }, + { + "anonymous": false, + "documentation": null, + "id": 1105, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 1104, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1099, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1101, - "src": "593:4:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1098, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "593:4:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "592:6:8" - }, - "scope": 1118, - "src": "508:91:8", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" - }, - { - "anonymous": false, - "documentation": null, - "id": 1109, - "name": "Transfer", - "nodeType": "EventDefinition", - "parameters": { - "id": 1108, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1103, - "indexed": true, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 1109, - "src": "623:20:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1102, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "623:7:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1105, - "indexed": true, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1109, - "src": "649:18:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1104, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "649:7:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1107, - "indexed": false, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1109, - "src": "673:13:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1106, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "673:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "617:73:8" - }, - "src": "603:88:8" - }, - { - "anonymous": false, - "documentation": null, - "id": 1117, - "name": "Approval", - "nodeType": "EventDefinition", - "parameters": { - "id": 1116, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1111, "indexed": true, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1117, - "src": "715:21:8", + "scope": 1105, + "src": "697:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16335,10 +16130,11 @@ "typeString": "address" }, "typeName": { - "id": 1110, + "id": 1098, "name": "address", "nodeType": "ElementaryTypeName", - "src": "715:7:8", + "src": "697:7:8", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -16349,12 +16145,12 @@ }, { "constant": false, - "id": 1113, + "id": 1101, "indexed": true, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1117, - "src": "742:23:8", + "scope": 1105, + "src": "720:23:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16362,10 +16158,11 @@ "typeString": "address" }, "typeName": { - "id": 1112, + "id": 1100, "name": "address", "nodeType": "ElementaryTypeName", - "src": "742:7:8", + "src": "720:7:8", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -16376,12 +16173,12 @@ }, { "constant": false, - "id": 1115, + "id": 1103, "indexed": false, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1117, - "src": "771:13:8", + "scope": 1105, + "src": "745:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16389,10 +16186,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1114, + "id": 1102, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "771:7:8", + "src": "745:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16402,16 +16199,16 @@ "visibility": "internal" } ], - "src": "709:79:8" + "src": "696:63:8" }, - "src": "695:94:8" + "src": "682:78:8" } ], - "scope": 1119, - "src": "115:676:8" + "scope": 1107, + "src": "114:648:8" } ], - "src": "0:792:8" + "src": "0:763:8" }, "id": 8 } diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.bin b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.bin index a78738611..0bcdf427e 100644 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.bin +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b50604080518082018252600581527f416c676f7300000000000000000000000000000000000000000000000000000060208083019182528351808501909452600484527f414c474f00000000000000000000000000000000000000000000000000000000908401528151919291601291620000909160039190620002c1565b508151620000a6906004906020850190620002c1565b506005805460ff191660ff9290921691909117905550620000d290503364010000000062000103810204565b6007805460ff19169055620000fd336b033b2e3c9fd0803ce800000064010000000062000155810204565b62000366565b6200011e60068264010000000062000b226200021482021704565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b600160a060020a03821615156200016b57600080fd5b60025462000188908264010000000062000ac46200026f82021704565b600255600160a060020a038216600090815260208190526040902054620001be908264010000000062000ac46200026f82021704565b600160a060020a0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600160a060020a03811615156200022a57600080fd5b6200023f828264010000000062000289810204565b156200024a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000828201838110156200028257600080fd5b9392505050565b6000600160a060020a0382161515620002a157600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200030457805160ff191683800117855562000334565b8280016001018555821562000334579182015b828111156200033457825182559160200191906001019062000317565b506200034292915062000346565b5090565b6200036391905b808211156200034257600081556001016200034d565b90565b610b9c80620003766000396000f3006080604052600436106100fb5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610100578063095ea7b31461018a57806318160ddd146101c257806323b872dd146101e95780632ff2e9dc14610213578063313ce5671461022857806339509351146102535780633f4ba83a1461027757806346fbf68e1461028e5780635c975abb146102af5780636ef8d66d146102c457806370a08231146102d957806382dc1ec4146102fa5780638456cb591461031b57806395d89b4114610330578063a457c2d714610345578063a9059cbb14610369578063dd62ed3e1461038d575b600080fd5b34801561010c57600080fd5b506101156103b4565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014f578181015183820152602001610137565b50505050905090810190601f16801561017c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561019657600080fd5b506101ae600160a060020a036004351660243561044a565b604080519115158252519081900360200190f35b3480156101ce57600080fd5b506101d761046e565b60408051918252519081900360200190f35b3480156101f557600080fd5b506101ae600160a060020a0360043581169060243516604435610474565b34801561021f57600080fd5b506101d761049a565b34801561023457600080fd5b5061023d6104aa565b6040805160ff9092168252519081900360200190f35b34801561025f57600080fd5b506101ae600160a060020a03600435166024356104b3565b34801561028357600080fd5b5061028c6104d0565b005b34801561029a57600080fd5b506101ae600160a060020a0360043516610534565b3480156102bb57600080fd5b506101ae61054d565b3480156102d057600080fd5b5061028c610556565b3480156102e557600080fd5b506101d7600160a060020a0360043516610561565b34801561030657600080fd5b5061028c600160a060020a036004351661057c565b34801561032757600080fd5b5061028c61059c565b34801561033c57600080fd5b50610115610602565b34801561035157600080fd5b506101ae600160a060020a0360043516602435610663565b34801561037557600080fd5b506101ae600160a060020a0360043516602435610680565b34801561039957600080fd5b506101d7600160a060020a036004358116906024351661069d565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104405780601f1061041557610100808354040283529160200191610440565b820191906000526020600020905b81548152906001019060200180831161042357829003601f168201915b5050505050905090565b60075460009060ff161561045d57600080fd5b61046783836106c8565b9392505050565b60025490565b60075460009060ff161561048757600080fd5b610492848484610746565b949350505050565b6b033b2e3c9fd0803ce800000081565b60055460ff1690565b60075460009060ff16156104c657600080fd5b61046783836107e3565b6104d933610534565b15156104e457600080fd5b60075460ff1615156104f557600080fd5b6007805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b600061054760068363ffffffff61089316565b92915050565b60075460ff1690565b61055f336108ca565b565b600160a060020a031660009081526020819052604090205490565b61058533610534565b151561059057600080fd5b61059981610912565b50565b6105a533610534565b15156105b057600080fd5b60075460ff16156105c057600080fd5b6007805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104405780601f1061041557610100808354040283529160200191610440565b60075460009060ff161561067657600080fd5b610467838361095a565b60075460009060ff161561069357600080fd5b61046783836109a5565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b6000600160a060020a03831615156106df57600080fd5b336000818152600160209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b600160a060020a038316600090815260016020908152604080832033845290915281205482111561077657600080fd5b600160a060020a03841660009081526001602090815260408083203384529091529020546107aa908363ffffffff6109bb16565b600160a060020a03851660009081526001602090815260408083203384529091529020556107d98484846109d2565b5060019392505050565b6000600160a060020a03831615156107fa57600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461082e908363ffffffff610ac416565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b6000600160a060020a03821615156108aa57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6108db60068263ffffffff610ad616565b604051600160a060020a038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b61092360068263ffffffff610b2216565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6000600160a060020a038316151561097157600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461082e908363ffffffff6109bb16565b60006109b23384846109d2565b50600192915050565b600080838311156109cb57600080fd5b5050900390565b600160a060020a0383166000908152602081905260409020548111156109f757600080fd5b600160a060020a0382161515610a0c57600080fd5b600160a060020a038316600090815260208190526040902054610a35908263ffffffff6109bb16565b600160a060020a038085166000908152602081905260408082209390935590841681522054610a6a908263ffffffff610ac416565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282018381101561046757600080fd5b600160a060020a0381161515610aeb57600080fd5b610af58282610893565b1515610b0057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a0381161515610b3757600080fd5b610b418282610893565b15610b4b57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191660011790555600a165627a7a7230582061a190b3074a6fa0ab1f995699a75a855141c91dd51eb835ef565d0c7739360d0029 \ No newline at end of file +60806040523480156200001157600080fd5b50604080518082018252600581527f416c676f7300000000000000000000000000000000000000000000000000000060208083019182528351808501909452600484527f414c474f00000000000000000000000000000000000000000000000000000000908401528151919291601291620000909160039190620002c1565b508151620000a6906004906020850190620002c1565b506005805460ff191660ff9290921691909117905550620000d290503364010000000062000103810204565b6007805460ff19169055620000fd336b033b2e3c9fd0803ce800000064010000000062000155810204565b62000366565b6200011e60068264010000000062000b2c6200021482021704565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b600160a060020a03821615156200016b57600080fd5b60025462000188908264010000000062000ace6200026f82021704565b600255600160a060020a038216600090815260208190526040902054620001be908264010000000062000ace6200026f82021704565b600160a060020a0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600160a060020a03811615156200022a57600080fd5b6200023f828264010000000062000289810204565b156200024a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000828201838110156200028257600080fd5b9392505050565b6000600160a060020a0382161515620002a157600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200030457805160ff191683800117855562000334565b8280016001018555821562000334579182015b828111156200033457825182559160200191906001019062000317565b506200034292915062000346565b5090565b6200036391905b808211156200034257600081556001016200034d565b90565b610ba680620003766000396000f3fe608060405234801561001057600080fd5b5060043610610133576000357c0100000000000000000000000000000000000000000000000000000000900480635c975abb116100bf5780638456cb591161008e5780638456cb591461032357806395d89b411461032b578063a457c2d714610333578063a9059cbb1461035f578063dd62ed3e1461038b57610133565b80635c975abb146102c75780636ef8d66d146102cf57806370a08231146102d757806382dc1ec4146102fd57610133565b80632ff2e9dc116101065780632ff2e9dc14610245578063313ce5671461024d578063395093511461026b5780633f4ba83a1461029757806346fbf68e146102a157610133565b806306fdde0314610138578063095ea7b3146101b557806318160ddd146101f557806323b872dd1461020f575b600080fd5b6101406103b9565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017a578181015183820152602001610162565b50505050905090810190601f1680156101a75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101e1600480360360408110156101cb57600080fd5b50600160a060020a03813516906020013561044f565b604080519115158252519081900360200190f35b6101fd610473565b60408051918252519081900360200190f35b6101e16004803603606081101561022557600080fd5b50600160a060020a03813581169160208101359091169060400135610479565b6101fd61049f565b6102556104af565b6040805160ff9092168252519081900360200190f35b6101e16004803603604081101561028157600080fd5b50600160a060020a0381351690602001356104b8565b61029f6104d5565b005b6101e1600480360360208110156102b757600080fd5b5035600160a060020a0316610539565b6101e1610552565b61029f61055b565b6101fd600480360360208110156102ed57600080fd5b5035600160a060020a0316610566565b61029f6004803603602081101561031357600080fd5b5035600160a060020a0316610581565b61029f6105a1565b610140610607565b6101e16004803603604081101561034957600080fd5b50600160a060020a038135169060200135610668565b6101e16004803603604081101561037557600080fd5b50600160a060020a038135169060200135610685565b6101fd600480360360408110156103a157600080fd5b50600160a060020a03813581169160200135166106a2565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104455780601f1061041a57610100808354040283529160200191610445565b820191906000526020600020905b81548152906001019060200180831161042857829003601f168201915b5050505050905090565b60075460009060ff161561046257600080fd5b61046c83836106cd565b9392505050565b60025490565b60075460009060ff161561048c57600080fd5b61049784848461074b565b949350505050565b6b033b2e3c9fd0803ce800000081565b60055460ff1690565b60075460009060ff16156104cb57600080fd5b61046c8383610814565b6104de33610539565b15156104e957600080fd5b60075460ff1615156104fa57600080fd5b6007805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b600061054c60068363ffffffff6108c416565b92915050565b60075460ff1690565b610564336108fb565b565b600160a060020a031660009081526020819052604090205490565b61058a33610539565b151561059557600080fd5b61059e81610943565b50565b6105aa33610539565b15156105b557600080fd5b60075460ff16156105c557600080fd5b6007805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104455780601f1061041a57610100808354040283529160200191610445565b60075460009060ff161561067b57600080fd5b61046c838361098b565b60075460009060ff161561069857600080fd5b61046c83836109d6565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b6000600160a060020a03831615156106e457600080fd5b336000818152600160209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b600160a060020a038316600090815260016020908152604080832033845290915281205461077f908363ffffffff6109ec16565b600160a060020a03851660009081526001602090815260408083203384529091529020556107ae848484610a01565b600160a060020a0384166000818152600160209081526040808320338085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6000600160a060020a038316151561082b57600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461085f908363ffffffff610ace16565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b6000600160a060020a03821615156108db57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61090c60068263ffffffff610ae016565b604051600160a060020a038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b61095460068263ffffffff610b2c16565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6000600160a060020a03831615156109a257600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461085f908363ffffffff6109ec16565b60006109e3338484610a01565b50600192915050565b6000828211156109fb57600080fd5b50900390565b600160a060020a0382161515610a1657600080fd5b600160a060020a038316600090815260208190526040902054610a3f908263ffffffff6109ec16565b600160a060020a038085166000908152602081905260408082209390935590841681522054610a74908263ffffffff610ace16565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282018381101561046c57600080fd5b600160a060020a0381161515610af557600080fd5b610aff82826108c4565b1515610b0a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a0381161515610b4157600080fd5b610b4b82826108c4565b15610b5557600080fd5b600160a060020a0316600090815260209190915260409020805460ff1916600117905556fea165627a7a72305820a8673657c914c80ad8879e073b63b3c05fd0190188d56a14948896f8205677a60029 \ No newline at end of file diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.json b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.json index 35d25c374..7ffc522e5 100644 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.json +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/bin/AlgoTokenV1.json @@ -404,7 +404,7 @@ "type": "event" } ], - "bytecode": "60806040523480156200001157600080fd5b50604080518082018252600581527f416c676f7300000000000000000000000000000000000000000000000000000060208083019182528351808501909452600484527f414c474f00000000000000000000000000000000000000000000000000000000908401528151919291601291620000909160039190620002c1565b508151620000a6906004906020850190620002c1565b506005805460ff191660ff9290921691909117905550620000d290503364010000000062000103810204565b6007805460ff19169055620000fd336b033b2e3c9fd0803ce800000064010000000062000155810204565b62000366565b6200011e60068264010000000062000b226200021482021704565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b600160a060020a03821615156200016b57600080fd5b60025462000188908264010000000062000ac46200026f82021704565b600255600160a060020a038216600090815260208190526040902054620001be908264010000000062000ac46200026f82021704565b600160a060020a0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600160a060020a03811615156200022a57600080fd5b6200023f828264010000000062000289810204565b156200024a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000828201838110156200028257600080fd5b9392505050565b6000600160a060020a0382161515620002a157600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200030457805160ff191683800117855562000334565b8280016001018555821562000334579182015b828111156200033457825182559160200191906001019062000317565b506200034292915062000346565b5090565b6200036391905b808211156200034257600081556001016200034d565b90565b610b9c80620003766000396000f3006080604052600436106100fb5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610100578063095ea7b31461018a57806318160ddd146101c257806323b872dd146101e95780632ff2e9dc14610213578063313ce5671461022857806339509351146102535780633f4ba83a1461027757806346fbf68e1461028e5780635c975abb146102af5780636ef8d66d146102c457806370a08231146102d957806382dc1ec4146102fa5780638456cb591461031b57806395d89b4114610330578063a457c2d714610345578063a9059cbb14610369578063dd62ed3e1461038d575b600080fd5b34801561010c57600080fd5b506101156103b4565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014f578181015183820152602001610137565b50505050905090810190601f16801561017c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561019657600080fd5b506101ae600160a060020a036004351660243561044a565b604080519115158252519081900360200190f35b3480156101ce57600080fd5b506101d761046e565b60408051918252519081900360200190f35b3480156101f557600080fd5b506101ae600160a060020a0360043581169060243516604435610474565b34801561021f57600080fd5b506101d761049a565b34801561023457600080fd5b5061023d6104aa565b6040805160ff9092168252519081900360200190f35b34801561025f57600080fd5b506101ae600160a060020a03600435166024356104b3565b34801561028357600080fd5b5061028c6104d0565b005b34801561029a57600080fd5b506101ae600160a060020a0360043516610534565b3480156102bb57600080fd5b506101ae61054d565b3480156102d057600080fd5b5061028c610556565b3480156102e557600080fd5b506101d7600160a060020a0360043516610561565b34801561030657600080fd5b5061028c600160a060020a036004351661057c565b34801561032757600080fd5b5061028c61059c565b34801561033c57600080fd5b50610115610602565b34801561035157600080fd5b506101ae600160a060020a0360043516602435610663565b34801561037557600080fd5b506101ae600160a060020a0360043516602435610680565b34801561039957600080fd5b506101d7600160a060020a036004358116906024351661069d565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104405780601f1061041557610100808354040283529160200191610440565b820191906000526020600020905b81548152906001019060200180831161042357829003601f168201915b5050505050905090565b60075460009060ff161561045d57600080fd5b61046783836106c8565b9392505050565b60025490565b60075460009060ff161561048757600080fd5b610492848484610746565b949350505050565b6b033b2e3c9fd0803ce800000081565b60055460ff1690565b60075460009060ff16156104c657600080fd5b61046783836107e3565b6104d933610534565b15156104e457600080fd5b60075460ff1615156104f557600080fd5b6007805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b600061054760068363ffffffff61089316565b92915050565b60075460ff1690565b61055f336108ca565b565b600160a060020a031660009081526020819052604090205490565b61058533610534565b151561059057600080fd5b61059981610912565b50565b6105a533610534565b15156105b057600080fd5b60075460ff16156105c057600080fd5b6007805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104405780601f1061041557610100808354040283529160200191610440565b60075460009060ff161561067657600080fd5b610467838361095a565b60075460009060ff161561069357600080fd5b61046783836109a5565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b6000600160a060020a03831615156106df57600080fd5b336000818152600160209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b600160a060020a038316600090815260016020908152604080832033845290915281205482111561077657600080fd5b600160a060020a03841660009081526001602090815260408083203384529091529020546107aa908363ffffffff6109bb16565b600160a060020a03851660009081526001602090815260408083203384529091529020556107d98484846109d2565b5060019392505050565b6000600160a060020a03831615156107fa57600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461082e908363ffffffff610ac416565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b6000600160a060020a03821615156108aa57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6108db60068263ffffffff610ad616565b604051600160a060020a038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b61092360068263ffffffff610b2216565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6000600160a060020a038316151561097157600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461082e908363ffffffff6109bb16565b60006109b23384846109d2565b50600192915050565b600080838311156109cb57600080fd5b5050900390565b600160a060020a0383166000908152602081905260409020548111156109f757600080fd5b600160a060020a0382161515610a0c57600080fd5b600160a060020a038316600090815260208190526040902054610a35908263ffffffff6109bb16565b600160a060020a038085166000908152602081905260408082209390935590841681522054610a6a908263ffffffff610ac416565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282018381101561046757600080fd5b600160a060020a0381161515610aeb57600080fd5b610af58282610893565b1515610b0057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a0381161515610b3757600080fd5b610b418282610893565b15610b4b57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191660011790555600a165627a7a7230582061a190b3074a6fa0ab1f995699a75a855141c91dd51eb835ef565d0c7739360d0029", + "bytecode": "60806040523480156200001157600080fd5b50604080518082018252600581527f416c676f7300000000000000000000000000000000000000000000000000000060208083019182528351808501909452600484527f414c474f00000000000000000000000000000000000000000000000000000000908401528151919291601291620000909160039190620002c1565b508151620000a6906004906020850190620002c1565b506005805460ff191660ff9290921691909117905550620000d290503364010000000062000103810204565b6007805460ff19169055620000fd336b033b2e3c9fd0803ce800000064010000000062000155810204565b62000366565b6200011e60068264010000000062000b2c6200021482021704565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b600160a060020a03821615156200016b57600080fd5b60025462000188908264010000000062000ace6200026f82021704565b600255600160a060020a038216600090815260208190526040902054620001be908264010000000062000ace6200026f82021704565b600160a060020a0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600160a060020a03811615156200022a57600080fd5b6200023f828264010000000062000289810204565b156200024a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000828201838110156200028257600080fd5b9392505050565b6000600160a060020a0382161515620002a157600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200030457805160ff191683800117855562000334565b8280016001018555821562000334579182015b828111156200033457825182559160200191906001019062000317565b506200034292915062000346565b5090565b6200036391905b808211156200034257600081556001016200034d565b90565b610ba680620003766000396000f3fe608060405234801561001057600080fd5b5060043610610133576000357c0100000000000000000000000000000000000000000000000000000000900480635c975abb116100bf5780638456cb591161008e5780638456cb591461032357806395d89b411461032b578063a457c2d714610333578063a9059cbb1461035f578063dd62ed3e1461038b57610133565b80635c975abb146102c75780636ef8d66d146102cf57806370a08231146102d757806382dc1ec4146102fd57610133565b80632ff2e9dc116101065780632ff2e9dc14610245578063313ce5671461024d578063395093511461026b5780633f4ba83a1461029757806346fbf68e146102a157610133565b806306fdde0314610138578063095ea7b3146101b557806318160ddd146101f557806323b872dd1461020f575b600080fd5b6101406103b9565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017a578181015183820152602001610162565b50505050905090810190601f1680156101a75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101e1600480360360408110156101cb57600080fd5b50600160a060020a03813516906020013561044f565b604080519115158252519081900360200190f35b6101fd610473565b60408051918252519081900360200190f35b6101e16004803603606081101561022557600080fd5b50600160a060020a03813581169160208101359091169060400135610479565b6101fd61049f565b6102556104af565b6040805160ff9092168252519081900360200190f35b6101e16004803603604081101561028157600080fd5b50600160a060020a0381351690602001356104b8565b61029f6104d5565b005b6101e1600480360360208110156102b757600080fd5b5035600160a060020a0316610539565b6101e1610552565b61029f61055b565b6101fd600480360360208110156102ed57600080fd5b5035600160a060020a0316610566565b61029f6004803603602081101561031357600080fd5b5035600160a060020a0316610581565b61029f6105a1565b610140610607565b6101e16004803603604081101561034957600080fd5b50600160a060020a038135169060200135610668565b6101e16004803603604081101561037557600080fd5b50600160a060020a038135169060200135610685565b6101fd600480360360408110156103a157600080fd5b50600160a060020a03813581169160200135166106a2565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104455780601f1061041a57610100808354040283529160200191610445565b820191906000526020600020905b81548152906001019060200180831161042857829003601f168201915b5050505050905090565b60075460009060ff161561046257600080fd5b61046c83836106cd565b9392505050565b60025490565b60075460009060ff161561048c57600080fd5b61049784848461074b565b949350505050565b6b033b2e3c9fd0803ce800000081565b60055460ff1690565b60075460009060ff16156104cb57600080fd5b61046c8383610814565b6104de33610539565b15156104e957600080fd5b60075460ff1615156104fa57600080fd5b6007805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b600061054c60068363ffffffff6108c416565b92915050565b60075460ff1690565b610564336108fb565b565b600160a060020a031660009081526020819052604090205490565b61058a33610539565b151561059557600080fd5b61059e81610943565b50565b6105aa33610539565b15156105b557600080fd5b60075460ff16156105c557600080fd5b6007805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104455780601f1061041a57610100808354040283529160200191610445565b60075460009060ff161561067b57600080fd5b61046c838361098b565b60075460009060ff161561069857600080fd5b61046c83836109d6565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b6000600160a060020a03831615156106e457600080fd5b336000818152600160209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b600160a060020a038316600090815260016020908152604080832033845290915281205461077f908363ffffffff6109ec16565b600160a060020a03851660009081526001602090815260408083203384529091529020556107ae848484610a01565b600160a060020a0384166000818152600160209081526040808320338085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6000600160a060020a038316151561082b57600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461085f908363ffffffff610ace16565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b6000600160a060020a03821615156108db57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61090c60068263ffffffff610ae016565b604051600160a060020a038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b61095460068263ffffffff610b2c16565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6000600160a060020a03831615156109a257600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461085f908363ffffffff6109ec16565b60006109e3338484610a01565b50600192915050565b6000828211156109fb57600080fd5b50900390565b600160a060020a0382161515610a1657600080fd5b600160a060020a038316600090815260208190526040902054610a3f908263ffffffff6109ec16565b600160a060020a038085166000908152602081905260408082209390935590841681522054610a74908263ffffffff610ace16565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282018381101561046c57600080fd5b600160a060020a0381161515610af557600080fd5b610aff82826108c4565b1515610b0a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a0381161515610b4157600080fd5b610b4b82826108c4565b15610b5557600080fd5b600160a060020a0316600090815260209190915260409020805460ff1916600117905556fea165627a7a72305820a8673657c914c80ad8879e073b63b3c05fd0190188d56a14948896f8205677a60029", "functionHashes": { "INITIAL_SUPPLY()": "2ff2e9dc", "addPauser(address)": "82dc1ec4", @@ -427,26 +427,26 @@ }, "gasEstimates": { "creation": { - "codeDepositCost": "594400", + "codeDepositCost": "596400", "executionCost": "infinite", "totalCost": "infinite" }, "external": { - "INITIAL_SUPPLY()": "272", + "INITIAL_SUPPLY()": "226", "addPauser(address)": "infinite", - "allowance(address,address)": "1082", - "approve(address,uint256)": "22732", - "balanceOf(address)": "851", - "decimals()": "509", + "allowance(address,address)": "879", + "approve(address,uint256)": "22820", + "balanceOf(address)": "731", + "decimals()": "463", "decreaseAllowance(address,uint256)": "infinite", "increaseAllowance(address,uint256)": "infinite", "isPauser(address)": "infinite", "name()": "infinite", "pause()": "infinite", - "paused()": "594", + "paused()": "438", "renouncePauser()": "infinite", "symbol()": "infinite", - "totalSupply()": "428", + "totalSupply()": "471", "transfer(address,uint256)": "infinite", "transferFrom(address,address,uint256)": "infinite", "unpause()": "infinite" diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/package-lock.json b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/package-lock.json index 4273dd66c..58a232dee 100644 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/package-lock.json +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/package-lock.json @@ -5,15 +5,23 @@ "requires": true, "dependencies": { "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -23,23 +31,18 @@ "concat-map": "0.0.1" } }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" - }, "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" }, "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", "wrap-ansi": "^2.0.0" } }, @@ -48,36 +51,61 @@ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, + "command-exists": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.8.tgz", + "integrity": "sha512-PM54PkseWbiiD/mMsbvW351/u+dafwTJ0ye2qB60G1aGQP9j3xK2gmMDc+R34L3nDtx4qMCitXT75mkbkGJDLw==" + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "requires": { - "is-arrayish": "^0.2.1" + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "locate-path": "^2.0.0" } }, "fs-extra": { "version": "0.30.0", - "resolved": "http://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", "requires": { "graceful-fs": "^4.1.2", @@ -97,6 +125,11 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, "glob": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", @@ -115,11 +148,6 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -139,40 +167,40 @@ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "requires": { - "builtin-modules": "^1.0.0" - } - }, "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "jsonfile": { "version": "2.4.0", - "resolved": "http://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", "requires": { "graceful-fs": "^4.1.6" } }, + "keccak": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-1.4.0.tgz", + "integrity": "sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw==", + "requires": { + "bindings": "^1.2.1", + "inherits": "^2.0.3", + "nan": "^2.2.1", + "safe-buffer": "^5.1.0" + } + }, "klaw": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", @@ -189,28 +217,42 @@ "invert-kv": "^1.0.0" } }, - "load-json-file": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" } }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "requires": { + "mimic-fn": "^1.0.0" + } }, "memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=" }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -219,15 +261,17 @@ "brace-expansion": "^1.1.7" } }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "nan": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", + "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==" + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "path-key": "^2.0.0" } }, "number-is-nan": { @@ -244,85 +288,70 @@ } }, "openzeppelin-solidity": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/openzeppelin-solidity/-/openzeppelin-solidity-2.0.0.tgz", - "integrity": "sha512-SolpxQFArtiYnlSNg3dZ9sz0WVlKtPqSOcJkXRllaZp4+Lpfqz3vxF0yoh7g75TszKPyadqoJmU7+GM/vwh9SA==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/openzeppelin-solidity/-/openzeppelin-solidity-2.1.3.tgz", + "integrity": "sha512-Zz595xw6w4ZrNU3JJJTlPd8bHFbHv5OkJlkqsM2i+NBs6CzImoHI3dZ+nmhkfR+p52cGXKmayAGbnfdCum1SMg==" }, "os-locale": { - "version": "1.4.0", - "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "requires": { - "lcid": "^1.0.0" + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" } }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "requires": { - "error-ex": "^1.2.0" + "p-try": "^1.0.0" } }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "^2.0.0" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" }, "path-is-absolute": { "version": "1.0.1", - "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { + "path-key": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "^2.0.0" - } + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, "require-directory": { "version": "2.1.1", @@ -330,9 +359,9 @@ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, "require-from-string": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", - "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" }, "require-main-filename": { "version": "1.0.1", @@ -340,13 +369,18 @@ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" }, "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "requires": { - "glob": "^7.0.5" + "glob": "^7.1.3" } }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "semver": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", @@ -357,98 +391,122 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, "solc": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.24.tgz", - "integrity": "sha512-2xd7Cf1HeVwrIb6Bu1cwY2/TaLRodrppCq3l7rhLimFQgmxptXhTC3+/wesVLpB09F1A2kZgvbMOgH7wvhFnBQ==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.5.4.tgz", + "integrity": "sha512-Jz3yz2mct0AYzR83/jBgxDqrLXTHhYUg2G2PVJbMMt5Vu+8e3Of1Mn3nvjPw5mh46jrzt8l4fBN7vHqG5ZF0cw==", "requires": { + "command-exists": "^1.2.8", "fs-extra": "^0.30.0", + "keccak": "^1.0.2", "memorystream": "^0.3.1", - "require-from-string": "^1.1.0", - "semver": "^5.3.0", - "yargs": "^4.7.1" + "require-from-string": "^2.0.0", + "semver": "^5.5.0", + "tmp": "0.0.33", + "yargs": "^11.0.0" } }, - "spdx-correct": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz", - "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==", - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz", - "integrity": "sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg==" - }, "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { - "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^3.0.0" } }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "requires": { - "is-utf8": "^0.2.0" + "os-tmpdir": "~1.0.2" } }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "isexe": "^2.0.0" } }, "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" - }, - "window-size": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", - "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, "wrap-ansi": { "version": "2.1.0", - "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } } }, "wrappy": { @@ -461,34 +519,36 @@ "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, "yargs": { - "version": "4.8.1", - "resolved": "http://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", - "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", "requires": { - "cliui": "^3.2.0", + "cliui": "^4.0.0", "decamelize": "^1.1.1", + "find-up": "^2.1.0", "get-caller-file": "^1.0.1", - "lodash.assign": "^4.0.3", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", + "os-locale": "^2.0.0", "require-directory": "^2.1.1", "require-main-filename": "^1.0.1", "set-blocking": "^2.0.0", - "string-width": "^1.0.1", - "which-module": "^1.0.0", - "window-size": "^0.2.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", "y18n": "^3.2.1", - "yargs-parser": "^2.4.1" + "yargs-parser": "^9.0.2" } }, "yargs-parser": { - "version": "2.4.1", - "resolved": "http://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", - "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", "requires": { - "camelcase": "^3.0.0", - "lodash.assign": "^4.0.6" + "camelcase": "^4.1.0" } } } diff --git a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/package.json b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/package.json index 2d72520d7..4233f45c1 100644 --- a/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/package.json +++ b/labs/algo-erc20-token/src/AdvancedAlgos.AlgoToken.AlgoErc20Token/SmartContracts/src/package.json @@ -9,7 +9,7 @@ "author": "", "license": "ISC", "dependencies": { - "openzeppelin-solidity": "^2.0.0", - "solc": "^0.4.24" + "openzeppelin-solidity": "^2.1.3", + "solc": "^0.5.4" } } diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol index 72a9392ea..8345392c8 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol @@ -1,4 +1,4 @@ -pragma solidity 0.4.24; +pragma solidity 0.5.4; contract AlgoCommon { diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol index 7c147587d..1fdc24fa8 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.24; +pragma solidity 0.5.4; import "openzeppelin-solidity/contracts/access/Roles.sol"; diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol index 26773a58a..893907ca8 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol @@ -1,4 +1,4 @@ -pragma solidity 0.4.24; +pragma solidity 0.5.4; import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol"; import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol"; @@ -39,7 +39,7 @@ contract AlgoFees is ERC20TokenHolder, AlgoSystemRole, AlgoCoreTeamRole { uint8 minerCategory = algoMiner.getCategory(); - require(minerCategory >= 0 && minerCategory <= 5); + require(minerCategory <= 5); _minersByAddress[minerAddress] = _miners.length; _miners.push(minerAddress); @@ -51,8 +51,7 @@ contract AlgoFees is ERC20TokenHolder, AlgoSystemRole, AlgoCoreTeamRole { if(_miners.length == 2) { // Just remove the only registered miner... - delete _miners[1]; - _miners.length = 1; + _miners.pop(); delete _minersByAddress[minerAddress]; } else { @@ -62,8 +61,7 @@ contract AlgoFees is ERC20TokenHolder, AlgoSystemRole, AlgoCoreTeamRole { _miners[_minersByAddress[minerAddress]] = _miners[_miners.length - 1]; } - delete _miners[_miners.length - 1]; - _miners.length--; + _miners.pop(); delete _minersByAddress[minerAddress]; } } @@ -77,8 +75,9 @@ contract AlgoFees is ERC20TokenHolder, AlgoSystemRole, AlgoCoreTeamRole { // Count how many ENABLED miners we have for each category... uint256[6] memory miners; + uint256 minerCount = _miners.length; - for(uint256 i = 1; i < _miners.length; i++) { + for(uint256 i = 1; i < minerCount; i++) { IAlgoMiner algoMiner = IAlgoMiner(_miners[i]); if(!algoMiner.isMining()) continue; @@ -118,12 +117,12 @@ contract AlgoFees is ERC20TokenHolder, AlgoSystemRole, AlgoCoreTeamRole { feePerMiner[5] = currentFeesBalance * CAT_5_VALUE_PROPORTION / totalProportion; // Transfer the fees to ENABLED miners... - for(i = 1; i < _miners.length; i++) { - algoMiner = IAlgoMiner(_miners[i]); + for(uint256 i = 1; i < minerCount; i++) { + IAlgoMiner algoMiner = IAlgoMiner(_miners[i]); if(!algoMiner.isMining()) continue; - minerCategory = algoMiner.getCategory(); + uint8 minerCategory = algoMiner.getCategory(); _token.safeTransfer(algoMiner.getMiner(), feePerMiner[minerCategory]); } diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol index 3a70d76f9..ad0f595d7 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol @@ -1,4 +1,4 @@ -pragma solidity 0.4.24; +pragma solidity 0.5.4; import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol"; import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol"; @@ -45,7 +45,7 @@ contract AlgoMiner is AlgoCommon, ERC20TokenHolder, AlgoSystemRole, AlgoCoreTeam AlgoSupervisorRole() public { - require(category >= 0 && category <= 5); + require(category <= 5); require(minerAccountAddress != address(0)); if(minerType == MinerType.PoolBased) { diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol index 523febd74..7902be9ce 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol @@ -1,4 +1,4 @@ -pragma solidity 0.4.24; +pragma solidity 0.5.4; import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol"; import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol"; @@ -35,7 +35,7 @@ contract AlgoPool is AlgoCommon, ERC20TokenHolder, AlgoCoreTeamRole { uint8 minerCategory = algoMiner.getCategory(); - require(minerCategory >= 0 && minerCategory <= 5); + require(minerCategory <= 5); uint256 value = getCapacityByCategory(minerCategory); diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol index 5e6d5d7c1..53a60e63b 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.24; +pragma solidity 0.5.4; import "openzeppelin-solidity/contracts/access/Roles.sol"; diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol index 5cf39703c..95cdc21e8 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.24; +pragma solidity 0.5.4; import "openzeppelin-solidity/contracts/access/Roles.sol"; diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol index 21d79497f..c24ee8c2e 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol @@ -1,4 +1,4 @@ -pragma solidity 0.4.24; +pragma solidity 0.5.4; import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol"; import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol"; diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol index 4d737f9f5..3129f26d6 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol @@ -1,4 +1,4 @@ -pragma solidity 0.4.24; +pragma solidity 0.5.4; contract IAlgoMiner { function isAlgoMiner() public pure returns (bool); diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol index 1e773f3f3..30bfa1e64 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol @@ -1,4 +1,4 @@ -pragma solidity 0.4.24; +pragma solidity 0.5.4; contract Terminable { diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json index 324b8aec5..f23b82c36 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json @@ -259,21 +259,21 @@ "evm": { "bytecode": { "linkReferences": {}, - "object": "60806040523480156200001157600080fd5b50604051602080620010d083398101604052516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790556200006c90640100000000620000c7810204565b6200008033640100000000620000e5810204565b50600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054600160a060020a031916905562000193565b620000e260028264010000000062000e066200010082021704565b50565b620000e260038264010000000062000e066200010082021704565b600160a060020a03811615156200011657600080fd5b6200012b82826401000000006200015b810204565b156200013657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200017357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610f2d80620001a36000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632e6b6849146100bc578063341ccfcb146100dd57806334cdcf26146100fe5780633d19ab1314610133578063608d3d3d1461016757806374be75921461018857806381f909f3146101a957806399f4b251146101ca578063bb52c137146101df578063d43acc7914610206578063e9d618591461021b575b600080fd5b3480156100b157600080fd5b506100ba610230565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661024e565b3480156100e957600080fd5b506100ba600160a060020a036004351661026e565b34801561010a57600080fd5b5061011f600160a060020a0360043516610457565b604080519115158252519081900360200190f35b34801561013f57600080fd5b5061014b600435610470565b60408051600160a060020a039092168252519081900360200190f35b34801561017357600080fd5b5061011f600160a060020a036004351661049f565b34801561019457600080fd5b506100ba600160a060020a03600435166104b2565b3480156101b557600080fd5b506100ba600160a060020a03600435166104cf565b3480156101d657600080fd5b506100ba610686565b3480156101eb57600080fd5b506101f4610bd1565b60408051918252519081900360200190f35b34801561021257600080fd5b506100ba610bdc565b34801561022757600080fd5b506100ba610be5565b6102393361049f565b151561024457600080fd5b61024c610bee565b565b6102573361049f565b151561026257600080fd5b61026b81610cb5565b50565b60008054819074010000000000000000000000000000000000000000900460ff161561029957600080fd5b6102a23361049f565b15156102ad57600080fd5b6004546103e8116102bd57600080fd5b600160a060020a038316600090815260056020526040902054156102e057600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032157600080fd5b505af1158015610335573d6000803e3d6000fd5b505050506040513d602081101561034b57600080fd5b5051151561035857600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b505050506040513d60208110156103c057600080fd5b50519050600060ff8216108015906103dc575060058160ff1611155b15156103e757600080fd5b505060048054600160a060020a039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b600061046a60028363ffffffff610cc616565b92915050565b600060048260010181548110151561048457fe5b600091825260209091200154600160a060020a031692915050565b600061046a60038363ffffffff610cc616565b6104bb33610457565b15156104c657600080fd5b61026b81610cfd565b60005474010000000000000000000000000000000000000000900460ff16156104f757600080fd5b6105003361049f565b151561050b57600080fd5b60045460011061051a57600080fd5b600454600214156105865760048054600190811061053457fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff191690556001610567600482610ea0565b50600160a060020a03811660009081526005602052604081205561026b565b600454600160a060020a03821660009081526005602052604090205414610620576004805460001981019081106105b957fe5b6000918252602080832090910154600160a060020a03848116845260059092526040909220546004805492909316929181106105f157fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60048054600019810190811061063257fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff19169055600480549061066b906000198301610ea0565b50600160a060020a0316600090815260056020526040812055565b6000610690610ec4565b60008060008061069e610ec4565b60005474010000000000000000000000000000000000000000900460ff16156106c657600080fd5b6106cf33610457565b15156106da57600080fd5b6004546001106106e957600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b505050506040513d602081101561077957600080fd5b505196506000871161078a57600080fd5b600194505b6004548510156109395760048054869081106107a757fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561080557600080fd5b505af1158015610819573d6000803e3d6000fd5b505050506040513d602081101561082f57600080fd5b5051151561083c5761092e565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561087a57600080fd5b505af115801561088e573d6000803e3d6000fd5b505050506040513d60208110156108a457600080fd5b5051925060ff831615156108c6578560005b602002018051600101905261092e565b8260ff16600114156108da578560016108b6565b8260ff16600214156108ee578560026108b6565b8260ff1660031415610902578560036108b6565b8260ff1660041415610916578560046108b6565b8260ff166005141561092e5760a08601805160010190525b60019094019361078f565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e909102016028909102016032909102019150818781151561097f57fe5b04815281600a880281151561099057fe5b04602082015281601488028115156109a457fe5b04604082015281601e88028115156109b857fe5b04606082015281602888028115156109cc57fe5b04608082015281603288028115156109e057fe5b0460a0820152600194505b600454851015610bc8576004805486908110610a0357fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a6157600080fd5b505af1158015610a75573d6000803e3d6000fd5b505050506040513d6020811015610a8b57600080fd5b50511515610a9857610bbd565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b505050506040513d6020811015610b0057600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610bbd91600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610b6457600080fd5b505af1158015610b78573d6000803e3d6000fd5b505050506040513d6020811015610b8e57600080fd5b50518260ff861660068110610b9f57fe5b6020020151600154600160a060020a0316919063ffffffff610d0e16565b6001909401936109eb565b50505050505050565b600454600019015b90565b61024c33610dad565b61024c33610dbe565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b505050506040513d6020811015610c7d57600080fd5b505190506000811115610cad57600054600154610cad91600160a060020a0391821691168363ffffffff610d0e16565b61026b610dcf565b61026b60038263ffffffff610e0616565b6000600160a060020a0382161515610cdd57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61026b60028263ffffffff610e0616565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610d7157600080fd5b505af1158015610d85573d6000803e3d6000fd5b505050506040513d6020811015610d9b57600080fd5b50511515610da857600080fd5b505050565b61026b60038263ffffffff610e5416565b61026b60028263ffffffff610e5416565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a0381161515610e1b57600080fd5b610e258282610cc6565b15610e2f57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610e6957600080fd5b610e738282610cc6565b1515610e7e57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610da857600083815260209020610da8918101908301610ee3565b60c0604051908101604052806006906020820280388339509192915050565b610bd991905b80821115610efd5760008155600101610ee9565b50905600a165627a7a7230582095e26f90cc3199aca464eb563533fc93a77d60dc52f6506d09a60413c4ab2d960029", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP1 PUSH3 0x10D0 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE MLOAD PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP2 DUP3 AND DUP2 OR PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND OR SWAP1 SSTORE PUSH3 0x6C SWAP1 PUSH5 0x100000000 PUSH3 0xC7 DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x80 CALLER PUSH5 0x100000000 PUSH3 0xE5 DUP2 MUL DIV JUMP JUMPDEST POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT AND SWAP1 SSTORE PUSH3 0x193 JUMP JUMPDEST PUSH3 0xE2 PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH3 0xE06 PUSH3 0x100 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0xE2 PUSH1 0x3 DUP3 PUSH5 0x100000000 PUSH3 0xE06 PUSH3 0x100 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH3 0x116 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x12B DUP3 DUP3 PUSH5 0x100000000 PUSH3 0x15B DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH3 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xF2D DUP1 PUSH3 0x1A3 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA0 JUMPI PUSH4 0xFFFFFFFF PUSH1 0xE0 PUSH1 0x2 EXP PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0xC08BF88 DUP2 EQ PUSH2 0xA5 JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0xBC JUMPI DUP1 PUSH4 0x341CCFCB EQ PUSH2 0xDD JUMPI DUP1 PUSH4 0x34CDCF26 EQ PUSH2 0xFE JUMPI DUP1 PUSH4 0x3D19AB13 EQ PUSH2 0x133 JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0x74BE7592 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0x81F909F3 EQ PUSH2 0x1A9 JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x1CA JUMPI DUP1 PUSH4 0xBB52C137 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x206 JUMPI DUP1 PUSH4 0xE9D61859 EQ PUSH2 0x21B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0x230 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x24E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x26E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11F PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x457 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14B PUSH1 0x4 CALLDATALOAD PUSH2 0x470 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11F PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x49F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x194 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x4B2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x4CF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0x686 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F4 PUSH2 0xBD1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x212 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0xBDC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x227 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0xBE5 JUMP JUMPDEST PUSH2 0x239 CALLER PUSH2 0x49F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24C PUSH2 0xBEE JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x257 CALLER PUSH2 0x49F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x26B DUP2 PUSH2 0xCB5 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A2 CALLER PUSH2 0x49F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x2AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x3E8 GT PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x2E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x321 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x335 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x358 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0xFF DUP3 AND LT DUP1 ISZERO SWAP1 PUSH2 0x3DC JUMPI POP PUSH1 0x5 DUP2 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0x3E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP5 SWAP1 SSTORE PUSH1 0x1 DUP5 ADD DUP4 SSTORE SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B SWAP1 SWAP2 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46A PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xCC6 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 DUP3 PUSH1 0x1 ADD DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x484 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46A PUSH1 0x3 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xCC6 AND JUMP JUMPDEST PUSH2 0x4BB CALLER PUSH2 0x457 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x26B DUP2 PUSH2 0xCFD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x4F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x500 CALLER PUSH2 0x49F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x50B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 LT PUSH2 0x51A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x2 EQ ISZERO PUSH2 0x586 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 SWAP1 DUP2 LT PUSH2 0x534 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE PUSH1 0x1 PUSH2 0x567 PUSH1 0x4 DUP3 PUSH2 0xEA0 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH2 0x26B JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ PUSH2 0x620 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x5B9 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 DUP2 AND DUP5 MSTORE PUSH1 0x5 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 SWAP3 KECCAK256 SLOAD PUSH1 0x4 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP3 SWAP2 DUP2 LT PUSH2 0x5F1 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x632 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD SWAP1 PUSH2 0x66B SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0xEA0 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x690 PUSH2 0xEC4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x69E PUSH2 0xEC4 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x6C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6CF CALLER PUSH2 0x457 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x6DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 LT PUSH2 0x6E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x74F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x763 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x779 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP7 POP PUSH1 0x0 DUP8 GT PUSH2 0x78A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SWAP5 POP JUMPDEST PUSH1 0x4 SLOAD DUP6 LT ISZERO PUSH2 0x939 JUMPI PUSH1 0x4 DUP1 SLOAD DUP7 SWAP1 DUP2 LT PUSH2 0x7A7 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP4 POP DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x19A74AB3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x805 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x819 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x82F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x83C JUMPI PUSH2 0x92E JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x87A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x88E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP PUSH1 0xFF DUP4 AND ISZERO ISZERO PUSH2 0x8C6 JUMPI DUP6 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE PUSH2 0x92E JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x8DA JUMPI DUP6 PUSH1 0x1 PUSH2 0x8B6 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x8EE JUMPI DUP6 PUSH1 0x2 PUSH2 0x8B6 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x902 JUMPI DUP6 PUSH1 0x3 PUSH2 0x8B6 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x916 JUMPI DUP6 PUSH1 0x4 PUSH2 0x8B6 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x92E JUMPI PUSH1 0xA0 DUP7 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE JUMPDEST PUSH1 0x1 SWAP1 SWAP5 ADD SWAP4 PUSH2 0x78F JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x40 DUP10 ADD MLOAD PUSH1 0x20 DUP11 ADD MLOAD DUP11 MLOAD PUSH1 0xA SWAP1 SWAP2 MUL ADD PUSH1 0x14 SWAP1 SWAP2 MUL ADD PUSH1 0x1E SWAP1 SWAP2 MUL ADD PUSH1 0x28 SWAP1 SWAP2 MUL ADD PUSH1 0x32 SWAP1 SWAP2 MUL ADD SWAP2 POP DUP2 DUP8 DUP2 ISZERO ISZERO PUSH2 0x97F JUMPI INVALID JUMPDEST DIV DUP2 MSTORE DUP2 PUSH1 0xA DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x990 JUMPI INVALID JUMPDEST DIV PUSH1 0x20 DUP3 ADD MSTORE DUP2 PUSH1 0x14 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x9A4 JUMPI INVALID JUMPDEST DIV PUSH1 0x40 DUP3 ADD MSTORE DUP2 PUSH1 0x1E DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x9B8 JUMPI INVALID JUMPDEST DIV PUSH1 0x60 DUP3 ADD MSTORE DUP2 PUSH1 0x28 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x9CC JUMPI INVALID JUMPDEST DIV PUSH1 0x80 DUP3 ADD MSTORE DUP2 PUSH1 0x32 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x9E0 JUMPI INVALID JUMPDEST DIV PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x1 SWAP5 POP JUMPDEST PUSH1 0x4 SLOAD DUP6 LT ISZERO PUSH2 0xBC8 JUMPI PUSH1 0x4 DUP1 SLOAD DUP7 SWAP1 DUP2 LT PUSH2 0xA03 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP4 POP DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x19A74AB3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA75 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xA98 JUMPI PUSH2 0xBBD JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAEA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x302C11CA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP5 POP PUSH2 0xBBD SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND SWAP2 PUSH4 0x302C11CA SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB78 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 PUSH1 0xFF DUP7 AND PUSH1 0x6 DUP2 LT PUSH2 0xB9F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xD0E AND JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP5 ADD SWAP4 PUSH2 0x9EB JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 NOT ADD JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24C CALLER PUSH2 0xDAD JUMP JUMPDEST PUSH2 0x24C CALLER PUSH2 0xDBE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC67 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0xCAD JUMPI PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0xCAD SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xD0E AND JUMP JUMPDEST PUSH2 0x26B PUSH2 0xDCF JUMP JUMPDEST PUSH2 0x26B PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE06 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xCDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x26B PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE06 AND JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD85 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xDA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x26B PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE54 AND JUMP JUMPDEST PUSH2 0x26B PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE54 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xE1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE25 DUP3 DUP3 PUSH2 0xCC6 JUMP JUMPDEST ISZERO PUSH2 0xE2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xE69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE73 DUP3 DUP3 PUSH2 0xCC6 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xE7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0xDA8 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH2 0xDA8 SWAP2 DUP2 ADD SWAP1 DUP4 ADD PUSH2 0xEE3 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xBD9 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xEFD JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xEE9 JUMP JUMPDEST POP SWAP1 JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 SWAP6 0xe2 PUSH16 0x90CC3199ACA464EB563533FC93A77D60 0xdc MSTORE 0xf6 POP PUSH14 0x9A60413C4AB2D96002900000000 ", - "sourceMap": "556:4772:1:-;;;1118:235;8:9:-1;5:2;;;30:1;27;20:12;5:2;1118:235:1;;;;;;;;;;;;;156:8:5;:21;;167:10;-1:-1:-1;;;;;;156:21:5;;;;;-1:-1:-1;;;;;;188:19:5;;;;-1:-1:-1;636:29:3;;;;;-1:-1:-1;;;;;636:29:3;;;;;364:22:2;;:10;;;;:22;:::i;:::-;368:24:0;381:10;368:12;;;;:24;:::i;:::-;-1:-1:-1;1273:7:1;27:10:-1;;39:1;23:18;;45:23;;1294:1:1;1273:24;;;;;;;;-1:-1:-1;;;;;;1273:24:1;;;556:4772;;800:92:2;857:27;:14;876:7;857:18;;;;;;:27;:::i;:::-;800:92;:::o;824:96:0:-;883:29;:16;904:7;883:20;;;;;;:29;:::i;244:167:6:-;-1:-1:-1;;;;;316:21:6;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:6;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:6;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:6;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:6;:11;:20;;;;;;;;;;;;;;;725:166::o;556:4772:1:-;;;;;;;" + "object": "60806040523480156200001157600080fd5b5060405160208062001070833981018060405260208110156200003357600080fd5b50516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790556200007d90640100000000620000d8810204565b6200009133640100000000620000f6810204565b50600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054600160a060020a0319169055620001a4565b620000f360028264010000000062000dd76200011182021704565b50565b620000f360038264010000000062000dd76200011182021704565b600160a060020a03811615156200012757600080fd5b6200013c82826401000000006200016c810204565b156200014757600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200018457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610ebc80620001b46000396000f3fe608060405234801561001057600080fd5b50600436106100b85760003560e060020a9004806374be75921161007557806374be7592146101ac57806381f909f3146101d257806399f4b251146101f8578063bb52c13714610200578063d43acc791461021a578063e9d6185914610222576100b8565b80630c08bf88146100bd5780632e6b6849146100c7578063341ccfcb146100ed57806334cdcf26146101135780633d19ab131461014d578063608d3d3d14610186575b600080fd5b6100c561022a565b005b6100c5600480360360208110156100dd57600080fd5b5035600160a060020a0316610248565b6100c56004803603602081101561010357600080fd5b5035600160a060020a0316610268565b6101396004803603602081101561012957600080fd5b5035600160a060020a031661043c565b604080519115158252519081900360200190f35b61016a6004803603602081101561016357600080fd5b5035610455565b60408051600160a060020a039092168252519081900360200190f35b6101396004803603602081101561019c57600080fd5b5035600160a060020a0316610484565b6100c5600480360360208110156101c257600080fd5b5035600160a060020a0316610497565b6100c5600480360360208110156101e857600080fd5b5035600160a060020a03166104b4565b6100c5610656565b610208610ba4565b60408051918252519081900360200190f35b6100c5610bae565b6100c5610bb7565b61023333610484565b151561023e57600080fd5b610246610bc0565b565b61025133610484565b151561025c57600080fd5b61026581610c86565b50565b60005474010000000000000000000000000000000000000000900460ff161561029057600080fd5b61029933610484565b15156102a457600080fd5b6004546103e8116102b457600080fd5b600160a060020a038116600090815260056020526040902054156102d757600080fd5b600081905080600160a060020a0316631777fb4b6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561031857600080fd5b505afa15801561032c573d6000803e3d6000fd5b505050506040513d602081101561034257600080fd5b5051151561034f57600080fd5b600081600160a060020a03166380258e476040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561038d57600080fd5b505afa1580156103a1573d6000803e3d6000fd5b505050506040513d60208110156103b757600080fd5b50519050600560ff821611156103cc57600080fd5b505060048054600160a060020a039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b600061044f60028363ffffffff610c9716565b92915050565b600060048260010181548110151561046957fe5b600091825260209091200154600160a060020a031692915050565b600061044f60038363ffffffff610c9716565b6104a03361043c565b15156104ab57600080fd5b61026581610cce565b60005474010000000000000000000000000000000000000000900460ff16156104dc57600080fd5b6104e533610484565b15156104f057600080fd5b6004546001106104ff57600080fd5b60045460021415610564576004805480151561051757fe5b600082815260208082208301600019908101805473ffffffffffffffffffffffffffffffffffffffff19169055909201909255600160a060020a0383168252600590526040812055610265565b600454600160a060020a038216600090815260056020526040902054146105fe5760048054600019810190811061059757fe5b6000918252602080832090910154600160a060020a03848116845260059092526040909220546004805492909316929181106105cf57fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b6004805480151561060b57fe5b600082815260208082208301600019908101805473ffffffffffffffffffffffffffffffffffffffff19169055909201909255600160a060020a038316825260059052604081205550565b60005474010000000000000000000000000000000000000000900460ff161561067e57600080fd5b6106873361043c565b151561069257600080fd5b6004546001106106a157600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a08231916024808301926020929190829003018186803b15801561070557600080fd5b505afa158015610719573d6000803e3d6000fd5b505050506040513d602081101561072f57600080fd5b505190506000811161074057600080fd5b610748610e71565b60045460015b8181101561090157600060048281548110151561076757fe5b60009182526020918290200154604080517f19a74ab30000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216935083926319a74ab392600480840193829003018186803b1580156107cc57600080fd5b505afa1580156107e0573d6000803e3d6000fd5b505050506040513d60208110156107f657600080fd5b5051151561080457506108f9565b600081600160a060020a03166380258e476040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561084257600080fd5b505afa158015610856573d6000803e3d6000fd5b505050506040513d602081101561086c57600080fd5b5051905060ff8116151561088e578460005b60200201805160010190526108f6565b8060ff16600114156108a25784600161087e565b8060ff16600214156108b65784600261087e565b8060ff16600314156108ca5784600361087e565b8060ff16600414156108de5784600461087e565b8060ff16600514156108f65760a08501805160010190525b50505b60010161074e565b5060a082015160808301516060840151604085015160208601518651600a90910201601490910201601e90910201602890910201603290910201610943610e71565b818581151561094e57fe5b04815281600a860281151561095f57fe5b046020820152816014860281151561097357fe5b04604082015281601e860281151561098757fe5b046060820152816028860281151561099b57fe5b04608082015281603286028115156109af57fe5b0460a082015260015b83811015610b9c5760006004828154811015156109d157fe5b60009182526020918290200154604080517f19a74ab30000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216935083926319a74ab392600480840193829003018186803b158015610a3657600080fd5b505afa158015610a4a573d6000803e3d6000fd5b505050506040513d6020811015610a6057600080fd5b50511515610a6e5750610b94565b600081600160a060020a03166380258e476040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610aac57600080fd5b505afa158015610ac0573d6000803e3d6000fd5b505050506040513d6020811015610ad657600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919250610b9191600160a060020a0385169163302c11ca916004808301926020929190829003018186803b158015610b3857600080fd5b505afa158015610b4c573d6000803e3d6000fd5b505050506040513d6020811015610b6257600080fd5b50518560ff841660068110610b7357fe5b6020020151600154600160a060020a0316919063ffffffff610cdf16565b50505b6001016109b8565b505050505050565b6004546000190190565b61024633610d7e565b61024633610d8f565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a08231916024808301926020929190829003018186803b158015610c2457600080fd5b505afa158015610c38573d6000803e3d6000fd5b505050506040513d6020811015610c4e57600080fd5b505190506000811115610c7e57600054600154610c7e91600160a060020a0391821691168363ffffffff610cdf16565b610265610da0565b61026560038263ffffffff610dd716565b6000600160a060020a0382161515610cae57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61026560028263ffffffff610dd716565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610d4257600080fd5b505af1158015610d56573d6000803e3d6000fd5b505050506040513d6020811015610d6c57600080fd5b50511515610d7957600080fd5b505050565b61026560038263ffffffff610e2516565b61026560028263ffffffff610e2516565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a0381161515610dec57600080fd5b610df68282610c97565b15610e0057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610e3a57600080fd5b610e448282610c97565b1515610e4f57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b60c060405190810160405280600690602082028038833950919291505056fea165627a7a72305820d93c57fe9a496ba0db433cb631bbbbe57a53bb63720b63023ea0e465cf5c1d200029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP1 PUSH3 0x1070 DUP4 CODECOPY DUP2 ADD DUP1 PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP2 DUP3 AND DUP2 OR PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND OR SWAP1 SSTORE PUSH3 0x7D SWAP1 PUSH5 0x100000000 PUSH3 0xD8 DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x91 CALLER PUSH5 0x100000000 PUSH3 0xF6 DUP2 MUL DIV JUMP JUMPDEST POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT AND SWAP1 SSTORE PUSH3 0x1A4 JUMP JUMPDEST PUSH3 0xF3 PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH3 0xDD7 PUSH3 0x111 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0xF3 PUSH1 0x3 DUP3 PUSH5 0x100000000 PUSH3 0xDD7 PUSH3 0x111 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH3 0x127 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x13C DUP3 DUP3 PUSH5 0x100000000 PUSH3 0x16C DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH3 0x147 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x184 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xEBC DUP1 PUSH3 0x1B4 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 PUSH1 0x2 EXP SWAP1 DIV DUP1 PUSH4 0x74BE7592 GT PUSH2 0x75 JUMPI DUP1 PUSH4 0x74BE7592 EQ PUSH2 0x1AC JUMPI DUP1 PUSH4 0x81F909F3 EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x1F8 JUMPI DUP1 PUSH4 0xBB52C137 EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x21A JUMPI DUP1 PUSH4 0xE9D61859 EQ PUSH2 0x222 JUMPI PUSH2 0xB8 JUMP JUMPDEST DUP1 PUSH4 0xC08BF88 EQ PUSH2 0xBD JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0xC7 JUMPI DUP1 PUSH4 0x341CCFCB EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x34CDCF26 EQ PUSH2 0x113 JUMPI DUP1 PUSH4 0x3D19AB13 EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x186 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC5 PUSH2 0x22A JUMP JUMPDEST STOP JUMPDEST PUSH2 0xC5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH2 0x248 JUMP JUMPDEST PUSH2 0xC5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x103 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH2 0x268 JUMP JUMPDEST PUSH2 0x139 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x129 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH2 0x43C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x16A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x455 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x139 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x19C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH2 0x484 JUMP JUMPDEST PUSH2 0xC5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH2 0x497 JUMP JUMPDEST PUSH2 0xC5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH2 0x4B4 JUMP JUMPDEST PUSH2 0xC5 PUSH2 0x656 JUMP JUMPDEST PUSH2 0x208 PUSH2 0xBA4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH2 0xBAE JUMP JUMPDEST PUSH2 0xC5 PUSH2 0xBB7 JUMP JUMPDEST PUSH2 0x233 CALLER PUSH2 0x484 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x246 PUSH2 0xBC0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x251 CALLER PUSH2 0x484 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x265 DUP2 PUSH2 0xC86 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x290 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x299 CALLER PUSH2 0x484 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x3E8 GT PUSH2 0x2B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x2D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x318 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x32C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x342 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x34F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x38D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3A1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x5 PUSH1 0xFF DUP3 AND GT ISZERO PUSH2 0x3CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP5 SWAP1 SSTORE PUSH1 0x1 DUP5 ADD DUP4 SSTORE SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B SWAP1 SWAP2 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44F PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xC97 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 DUP3 PUSH1 0x1 ADD DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x469 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44F PUSH1 0x3 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xC97 AND JUMP JUMPDEST PUSH2 0x4A0 CALLER PUSH2 0x43C JUMP JUMPDEST ISZERO ISZERO PUSH2 0x4AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x265 DUP2 PUSH2 0xCCE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x4DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E5 CALLER PUSH2 0x484 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x4F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 LT PUSH2 0x4FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x2 EQ ISZERO PUSH2 0x564 JUMPI PUSH1 0x4 DUP1 SLOAD DUP1 ISZERO ISZERO PUSH2 0x517 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH1 0x0 NOT SWAP1 DUP2 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND DUP3 MSTORE PUSH1 0x5 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH2 0x265 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ PUSH2 0x5FE JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x597 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 DUP2 AND DUP5 MSTORE PUSH1 0x5 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 SWAP3 KECCAK256 SLOAD PUSH1 0x4 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP3 SWAP2 DUP2 LT PUSH2 0x5CF JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x4 DUP1 SLOAD DUP1 ISZERO ISZERO PUSH2 0x60B JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH1 0x0 NOT SWAP1 DUP2 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND DUP3 MSTORE PUSH1 0x5 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x67E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x687 CALLER PUSH2 0x43C JUMP JUMPDEST ISZERO ISZERO PUSH2 0x692 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 LT PUSH2 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x705 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x719 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x72F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 GT PUSH2 0x740 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x748 PUSH2 0xE71 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x901 JUMPI PUSH1 0x0 PUSH1 0x4 DUP3 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x767 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x19A74AB300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND SWAP4 POP DUP4 SWAP3 PUSH4 0x19A74AB3 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7E0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x804 JUMPI POP PUSH2 0x8F9 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x842 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x856 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x86C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0xFF DUP2 AND ISZERO ISZERO PUSH2 0x88E JUMPI DUP5 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE PUSH2 0x8F6 JUMP JUMPDEST DUP1 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x8A2 JUMPI DUP5 PUSH1 0x1 PUSH2 0x87E JUMP JUMPDEST DUP1 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x8B6 JUMPI DUP5 PUSH1 0x2 PUSH2 0x87E JUMP JUMPDEST DUP1 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x8CA JUMPI DUP5 PUSH1 0x3 PUSH2 0x87E JUMP JUMPDEST DUP1 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x8DE JUMPI DUP5 PUSH1 0x4 PUSH2 0x87E JUMP JUMPDEST DUP1 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x8F6 JUMPI PUSH1 0xA0 DUP6 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE JUMPDEST POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x74E JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x20 DUP7 ADD MLOAD DUP7 MLOAD PUSH1 0xA SWAP1 SWAP2 MUL ADD PUSH1 0x14 SWAP1 SWAP2 MUL ADD PUSH1 0x1E SWAP1 SWAP2 MUL ADD PUSH1 0x28 SWAP1 SWAP2 MUL ADD PUSH1 0x32 SWAP1 SWAP2 MUL ADD PUSH2 0x943 PUSH2 0xE71 JUMP JUMPDEST DUP2 DUP6 DUP2 ISZERO ISZERO PUSH2 0x94E JUMPI INVALID JUMPDEST DIV DUP2 MSTORE DUP2 PUSH1 0xA DUP7 MUL DUP2 ISZERO ISZERO PUSH2 0x95F JUMPI INVALID JUMPDEST DIV PUSH1 0x20 DUP3 ADD MSTORE DUP2 PUSH1 0x14 DUP7 MUL DUP2 ISZERO ISZERO PUSH2 0x973 JUMPI INVALID JUMPDEST DIV PUSH1 0x40 DUP3 ADD MSTORE DUP2 PUSH1 0x1E DUP7 MUL DUP2 ISZERO ISZERO PUSH2 0x987 JUMPI INVALID JUMPDEST DIV PUSH1 0x60 DUP3 ADD MSTORE DUP2 PUSH1 0x28 DUP7 MUL DUP2 ISZERO ISZERO PUSH2 0x99B JUMPI INVALID JUMPDEST DIV PUSH1 0x80 DUP3 ADD MSTORE DUP2 PUSH1 0x32 DUP7 MUL DUP2 ISZERO ISZERO PUSH2 0x9AF JUMPI INVALID JUMPDEST DIV PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB9C JUMPI PUSH1 0x0 PUSH1 0x4 DUP3 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x9D1 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x19A74AB300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND SWAP4 POP DUP4 SWAP3 PUSH4 0x19A74AB3 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA4A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xA6E JUMPI POP PUSH2 0xB94 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAC0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x302C11CA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH2 0xB91 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP6 AND SWAP2 PUSH4 0x302C11CA SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB4C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP6 PUSH1 0xFF DUP5 AND PUSH1 0x6 DUP2 LT PUSH2 0xB73 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xCDF AND JUMP JUMPDEST POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x9B8 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 NOT ADD SWAP1 JUMP JUMPDEST PUSH2 0x246 CALLER PUSH2 0xD7E JUMP JUMPDEST PUSH2 0x246 CALLER PUSH2 0xD8F JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC38 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0xC7E JUMPI PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0xC7E SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xCDF AND JUMP JUMPDEST PUSH2 0x265 PUSH2 0xDA0 JUMP JUMPDEST PUSH2 0x265 PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xDD7 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xCAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x265 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xDD7 AND JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD56 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xD79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x265 PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE25 AND JUMP JUMPDEST PUSH2 0x265 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE25 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xDEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDF6 DUP3 DUP3 PUSH2 0xC97 JUMP JUMPDEST ISZERO PUSH2 0xE00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xE3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE44 DUP3 DUP3 PUSH2 0xC97 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xE4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 0xd9 EXTCODECOPY JUMPI INVALID SWAP11 0x49 PUSH12 0xA0DB433CB631BBBBE57A53BB PUSH4 0x720B6302 RETURNDATACOPY LOG0 0xe4 PUSH6 0xCF5C1D200029 ", + "sourceMap": "555:4724:1:-;;;1117:235;8:9:-1;5:2;;;30:1;27;20:12;5:2;1117:235:1;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1117:235:1;155:8:5;:21;;166:10;-1:-1:-1;;;;;;155:21:5;;;;;-1:-1:-1;;;;;;187:19:5;;;;-1:-1:-1;635:29:3;;;;;-1:-1:-1;;;;;635:29:3;;;;;362:22:2;;:10;;;;:22;:::i;:::-;366:24:0;379:10;366:12;;;;:24;:::i;:::-;-1:-1:-1;1272:7:1;27:10:-1;;39:1;23:18;;45:23;;1293:1:1;1272:24;;;;;;;;-1:-1:-1;;;;;;1272:24:1;;;555:4724;;798:92:2;855:27;:14;874:7;855:18;;;;;;:27;:::i;:::-;798:92;:::o;822:96:0:-;881:29;:16;902:7;881:20;;;;;;:29;:::i;259:181:6:-;-1:-1:-1;;;;;335:21:6;;;;327:30;;;;;;376:18;380:4;386:7;376:3;;;;:18;:::i;:::-;375:19;367:28;;;;;;-1:-1:-1;;;;;406:20:6;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;406:27:6;429:4;406:27;;;259:181::o;786:162::-;858:4;-1:-1:-1;;;;;882:21:6;;;;874:30;;;;;;-1:-1:-1;;;;;;921:20:6;:11;:20;;;;;;;;;;;;;;;786:162::o;555:4724:1:-;;;;;;;" }, "gasEstimates": { "creation": { - "codeDepositCost": "777000", + "codeDepositCost": "754400", "executionCost": "infinite", "totalCost": "infinite" }, "external": { "addCoreTeam(address)": "infinite", "addSystem(address)": "infinite", - "getMinerByIndex(uint256)": "1002", - "getMinerCount()": "655", + "getMinerByIndex(uint256)": "1058", + "getMinerCount()": "541", "isCoreTeam(address)": "infinite", "isSystem(address)": "infinite", "mine()": "infinite", @@ -299,7 +299,7 @@ "unregisterMiner(address)": "81f909f3" } }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"terminate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"registerMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSystem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getMinerByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"unregisterMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMinerCount\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol\":\"AlgoFees\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol\":{\"keccak256\":\"0x6c460b19697e0bbddcd6e319f2e8b5be033832eaf4d00e01a7ca7c95a514dd8c\",\"urls\":[\"bzzr://b99c4032a4291fdae1b1b51bee962ebfdc45ca26504858e297e8e85c20154308\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol\":{\"keccak256\":\"0x6fffe504e6805d95ca42269cc995a3de9401a12bc037068b056c186ce8569d8d\",\"urls\":[\"bzzr://a0923a2d2b1e4992f552ce49638b19d6d8328950c1d5dc1395f0d625daf21c68\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol\":{\"keccak256\":\"0x71adbf7f060599239b7a981594e43dc8fbe8597fd2853b6fe9e70ff39883d73a\",\"urls\":[\"bzzr://70691c1638cdc0f744f8c5b5a94e4f857ba40ad053816cfbd15e13ed41a3bc66\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0x1b1359f75f7d5a943ab06caea36824f0a6448c5ffa1a32ed7e26cee81cf3683a\",\"urls\":[\"bzzr://26177d59d0c84fa4e632538fbd44802f219e6501b0828533badcf80701cea0f5\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol\":{\"keccak256\":\"0x29a8fa3204dbd204355714601ce21d7d717a586a4de21009d8f2a3ca7981963f\",\"urls\":[\"bzzr://55d9b762620cef1e6f7b11a26d6cc123f5b608a59e0d36f9bc0a1e8ff0ff5c42\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.4+commit.9549d8ff\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"terminate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"registerMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSystem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getMinerByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"unregisterMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMinerCount\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol\":\"AlgoFees\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0x8252ea038586ac8cf89aea6810c1a75d84c2eba48d6b0ecc5f1783929de398a3\",\"urls\":[\"bzzr://3bd6a88368eeb6abb70573d16d481bc20bc22b6c0d3e60702c59c9fab4202528\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol\":{\"keccak256\":\"0xada03dabc0c81fb1b879cfda742a7fe400938abe063e428159942358791bfa57\",\"urls\":[\"bzzr://6f74f234fe2c3b555ad1d8e34e7f2205b388aa3c2b353f2f429322879d0ed21a\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol\":{\"keccak256\":\"0x79678e2992aafe0c33260767eba0b3c95474a2f0902154841f4ac62012528e67\",\"urls\":[\"bzzr://a4efbd6113fb5941933b0e94b0135d2ea7150a538ec80b9b5288a85506337f94\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol\":{\"keccak256\":\"0x2c964fd13fcc46f0326055bd50569f2bfb32ea7963780763d77b85ed51320205\",\"urls\":[\"bzzr://3fd83f4de7769670f420f04909921357a8ace3b9e0eb08b7c9df0ee57741d347\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0x861339f0f02c28b332f5d8dc165127fa1a402bbbfd7c3923acca26a6139e4f2b\",\"urls\":[\"bzzr://87e5728ff1289cbcc9669fae3a5b994b3a4e0788a2673595adcac700eea8c411\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol\":{\"keccak256\":\"0x8704856f4ea109e3df4805b3b3dd7d9b9026e94f80c42c6d750356d46036a530\",\"urls\":[\"bzzr://18db91d498a487cbc7085490ff2bf017849f88bb4032ea7d840bab3561c45cf4\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0x659ba0f9a3392cd50a8a5fafaf5dfd8c6a0878f6a4613bceff4e90dceddcd865\",\"urls\":[\"bzzr://f704341d520fbc98716541f1b3f67737f0ee6e94adf072a66acb2bd25d593c2b\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x965012d27b4262d7a41f5028cbb30c51ebd9ecd4be8fb30380aaa7a3c64fbc8b\",\"urls\":[\"bzzr://41ca38f6b0fa4b77b0feec43e422cfbec48b7eb38a41edf0b85c77e8d9a296b1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x079c4e23ee448f529e43bfa3c4e8fb4be52cd0318ee923a276835bedf45b93d8\",\"urls\":[\"bzzr://48248e86f64407a95f241d6c5c8cfea6b4d4ebf4ebb467e5c98c8af3868fafe4\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x05fcee7431cd35cd312e14e7f316a44ca3ccc5fb3b859aefc15c1a5db94add7e\",\"urls\":[\"bzzr://5ba67fb83aa7806883a335d53a27dcf1f53b75fa38dedd57893cc84633aa4d4c\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -561,15 +561,16 @@ "Roles": { "abi": [], "devdoc": { + "details": "Library for managing addresses assigned to a Role.", "methods": {}, "title": "Roles" }, "evm": { "bytecode": { "linkReferences": {}, - "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820ba9d82b11504517181f938ed511f09c0a22046ef39e2e32460a2175b508e16a80029", - "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xba SWAP14 DUP3 0xb1 ISZERO DIV MLOAD PUSH18 0x81F938ED511F09C0A22046EF39E2E32460A2 OR JUMPDEST POP DUP15 AND 0xa8 STOP 0x29 ", - "sourceMap": "109:784:6:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582072caac54fe9b00b8b816307b2a5ded8de356c5be6012002ca36f81b18422d8260029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 PUSH19 0xCAAC54FE9B00B8B816307B2A5DED8DE356C5BE PUSH1 0x12 STOP 0x2c LOG3 PUSH16 0x81B18422D82600290000000000000000 ", + "sourceMap": "108:842:6:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -585,7 +586,7 @@ }, "methodIdentifiers": {} }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"Roles\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":\"Roles\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.4+commit.9549d8ff\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for managing addresses assigned to a Role.\",\"methods\":{},\"title\":\"Roles\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":\"Roles\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0x659ba0f9a3392cd50a8a5fafaf5dfd8c6a0878f6a4613bceff4e90dceddcd865\",\"urls\":[\"bzzr://f704341d520fbc98716541f1b3f67737f0ee6e94adf072a66acb2bd25d593c2b\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -595,15 +596,16 @@ "SafeMath": { "abi": [], "devdoc": { + "details": "Unsigned math operations with safety checks that revert on error", "methods": {}, "title": "SafeMath" }, "evm": { "bytecode": { "linkReferences": {}, - "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820da2bd0dd3588878574232c2d13f92e16f4b0e8ad94ede9adb0d087f862d4f8cf0029", - "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xda 0x2b 0xd0 0xdd CALLDATALOAD DUP9 DUP8 DUP6 PUSH21 0x232C2D13F92E16F4B0E8AD94EDE9ADB0D087F862D4 0xf8 0xcf STOP 0x29 ", - "sourceMap": "117:1531:7:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820c8fdc9a15986ffb647c7551d6f3c5b251c8209308e82491b559a3ee6cc289f670029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 0xc8 REVERT 0xc9 LOG1 MSIZE DUP7 SELFDESTRUCT 0xb6 0x47 0xc7 SSTORE SAR PUSH16 0x3C5B251C8209308E82491B559A3EE6CC 0x28 SWAP16 PUSH8 0x29000000000000 ", + "sourceMap": "125:1726:7:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -621,7 +623,7 @@ }, "methodIdentifiers": {} }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"SafeMath\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.4+commit.9549d8ff\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Unsigned math operations with safety checks that revert on error\",\"methods\":{},\"title\":\"SafeMath\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x965012d27b4262d7a41f5028cbb30c51ebd9ecd4be8fb30380aaa7a3c64fbc8b\",\"urls\":[\"bzzr://41ca38f6b0fa4b77b0feec43e422cfbec48b7eb38a41edf0b85c77e8d9a296b1\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -805,6 +807,7 @@ } ], "devdoc": { + "details": "see https://github.com/ethereum/EIPs/issues/20", "methods": {}, "title": "ERC20 interface" }, @@ -835,15 +838,16 @@ "SafeERC20": { "abi": [], "devdoc": { + "details": "Wrappers around ERC20 operations that throw on failure. To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.", "methods": {}, "title": "SafeERC20" }, "evm": { "bytecode": { "linkReferences": {}, - "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820c0f55d8db2bd761049fa5ba6b6c207a4d595b758946aba3715580373517606710029", - "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xc0 0xf5 0x5d DUP14 0xb2 0xbd PUSH23 0x1049FA5BA6B6C207A4D595B758946ABA37155803735176 MOD PUSH18 0x2900000000000000000000000000000000 ", - "sourceMap": "353:1296:9:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820f19c7b62e065f91bc3f26e33372ab3fae2852e0b472cd6bb775c347272d9d5120029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 CALL SWAP13 PUSH28 0x62E065F91BC3F26E33372AB3FAE2852E0B472CD6BB775C347272D9D5 SLT STOP 0x29 ", + "sourceMap": "352:1248:9:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -861,7 +865,7 @@ }, "methodIdentifiers": {} }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"SafeERC20\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.4+commit.9549d8ff\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers around ERC20 operations that throw on failure. To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"methods\":{},\"title\":\"SafeERC20\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x965012d27b4262d7a41f5028cbb30c51ebd9ecd4be8fb30380aaa7a3c64fbc8b\",\"urls\":[\"bzzr://41ca38f6b0fa4b77b0feec43e422cfbec48b7eb38a41edf0b85c77e8d9a296b1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x079c4e23ee448f529e43bfa3c4e8fb4be52cd0318ee923a276835bedf45b93d8\",\"urls\":[\"bzzr://48248e86f64407a95f241d6c5c8cfea6b4d4ebf4ebb467e5c98c8af3868fafe4\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x05fcee7431cd35cd312e14e7f316a44ca3ccc5fb3b859aefc15c1a5db94add7e\",\"urls\":[\"bzzr://5ba67fb83aa7806883a335d53a27dcf1f53b75fa38dedd57893cc84633aa4d4c\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -884,12 +888,11 @@ "id": 1, "literals": [ "solidity", - "^", - "0.4", - ".24" + "0.5", + ".4" ], "nodeType": "PragmaDirective", - "src": "0:24:0" + "src": "0:22:0" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", @@ -897,8 +900,8 @@ "id": 2, "nodeType": "ImportDirective", "scope": 87, - "sourceUnit": 915, - "src": "28:189:0", + "sourceUnit": 900, + "src": "26:189:0", "symbolAliases": [], "unitAlias": "" }, @@ -922,24 +925,24 @@ "id": 3, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 914, - "src": "260:5:0", + "referencedDeclaration": 899, + "src": "258:5:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$914", + "typeIdentifier": "t_contract$_Roles_$899", "typeString": "library Roles" } }, "nodeType": "UsingForDirective", - "src": "254:27:0", + "src": "252:27:0", "typeName": { "contractScope": null, "id": 4, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 827, - "src": "270:10:0", + "referencedDeclaration": 812, + "src": "268:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$827_storage_ptr", + "typeIdentifier": "t_struct$_Role_$812_storage_ptr", "typeString": "struct Roles.Role" } } @@ -950,11 +953,11 @@ "name": "_coreTeamMembers", "nodeType": "VariableDeclaration", "scope": 86, - "src": "289:35:0", + "src": "287:35:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$827_storage", + "typeIdentifier": "t_struct$_Role_$812_storage", "typeString": "struct Roles.Role" }, "typeName": { @@ -962,10 +965,10 @@ "id": 6, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 827, - "src": "289:10:0", + "referencedDeclaration": 812, + "src": "287:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$827_storage_ptr", + "typeIdentifier": "t_struct$_Role_$812_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -976,7 +979,7 @@ "body": { "id": 15, "nodeType": "Block", - "src": "357:43:0", + "src": "355:43:0", "statements": [ { "expression": { @@ -990,8 +993,8 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1270, - "src": "381:3:0", + "referencedDeclaration": 1256, + "src": "379:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" @@ -1005,18 +1008,18 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "381:10:0", + "src": "379:10:0", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } ], "id": 10, @@ -1024,7 +1027,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 73, - "src": "368:12:0", + "src": "366:12:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" @@ -1038,7 +1041,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "368:24:0", + "src": "366:24:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -1046,15 +1049,14 @@ }, "id": 14, "nodeType": "ExpressionStatement", - "src": "368:24:0" + "src": "366:24:0" } ] }, "documentation": null, "id": 16, "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, + "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", @@ -1062,17 +1064,16 @@ "id": 8, "nodeType": "ParameterList", "parameters": [], - "src": "345:2:0" + "src": "343:2:0" }, - "payable": false, "returnParameters": { "id": 9, "nodeType": "ParameterList", "parameters": [], - "src": "357:0:0" + "src": "355:0:0" }, "scope": 86, - "src": "333:67:0", + "src": "331:67:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" @@ -1081,7 +1082,7 @@ "body": { "id": 26, "nodeType": "Block", - "src": "432:62:0", + "src": "430:62:0", "statements": [ { "expression": { @@ -1098,8 +1099,8 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1270, - "src": "462:3:0", + "referencedDeclaration": 1256, + "src": "460:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" @@ -1113,18 +1114,18 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "462:10:0", + "src": "460:10:0", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } ], "id": 19, @@ -1132,7 +1133,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 40, - "src": "451:10:0", + "src": "449:10:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)" @@ -1146,7 +1147,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "451:22:0", + "src": "449:22:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1164,11 +1165,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1273, - 1274 + 1259, + 1260 ], - "referencedDeclaration": 1273, - "src": "443:7:0", + "referencedDeclaration": 1259, + "src": "441:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -1182,7 +1183,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "443:31:0", + "src": "441:31:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -1190,12 +1191,12 @@ }, "id": 24, "nodeType": "ExpressionStatement", - "src": "443:31:0" + "src": "441:31:0" }, { "id": 25, "nodeType": "PlaceholderStatement", - "src": "485:1:0" + "src": "483:1:0" } ] }, @@ -1207,16 +1208,16 @@ "id": 17, "nodeType": "ParameterList", "parameters": [], - "src": "429:2:0" + "src": "427:2:0" }, - "src": "408:86:0", + "src": "406:86:0", "visibility": "internal" }, { "body": { "id": 39, "nodeType": "Block", - "src": "566:55:0", + "src": "564:55:0", "statements": [ { "expression": { @@ -1229,7 +1230,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29, - "src": "605:7:0", + "src": "603:7:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1250,9 +1251,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7, - "src": "584:16:0", + "src": "582:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$827_storage", + "typeIdentifier": "t_struct$_Role_$812_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1263,10 +1264,10 @@ "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 913, - "src": "584:20:0", + "referencedDeclaration": 898, + "src": "582:20:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$827_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$827_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$812_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$812_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, @@ -1278,7 +1279,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "584:29:0", + "src": "582:29:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1287,15 +1288,14 @@ "functionReturnParameters": 33, "id": 38, "nodeType": "Return", - "src": "577:36:0" + "src": "575:36:0" } ] }, "documentation": null, "id": 40, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "isCoreTeam", "nodeType": "FunctionDefinition", @@ -1309,7 +1309,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 40, - "src": "522:15:0", + "src": "520:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1320,7 +1320,8 @@ "id": 28, "name": "address", "nodeType": "ElementaryTypeName", - "src": "522:7:0", + "src": "520:7:0", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1330,9 +1331,8 @@ "visibility": "internal" } ], - "src": "521:17:0" + "src": "519:17:0" }, - "payable": false, "returnParameters": { "id": 33, "nodeType": "ParameterList", @@ -1343,7 +1343,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 40, - "src": "560:4:0", + "src": "558:4:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1354,7 +1354,7 @@ "id": 31, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "560:4:0", + "src": "558:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1364,10 +1364,10 @@ "visibility": "internal" } ], - "src": "559:6:0" + "src": "557:6:0" }, "scope": 86, - "src": "502:119:0", + "src": "500:119:0", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -1376,7 +1376,7 @@ "body": { "id": 51, "nodeType": "Block", - "src": "687:40:0", + "src": "685:40:0", "statements": [ { "expression": { @@ -1389,7 +1389,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42, - "src": "711:7:0", + "src": "709:7:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1408,7 +1408,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 73, - "src": "698:12:0", + "src": "696:12:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" @@ -1422,7 +1422,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "698:21:0", + "src": "696:21:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -1430,15 +1430,14 @@ }, "id": 50, "nodeType": "ExpressionStatement", - "src": "698:21:0" + "src": "696:21:0" } ] }, "documentation": null, "id": 52, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, @@ -1450,14 +1449,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, - "src": "674:12:0", + "src": "672:12:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "674:12:0" + "src": "672:12:0" } ], "name": "addCoreTeam", @@ -1472,7 +1471,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 52, - "src": "650:15:0", + "src": "648:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1483,7 +1482,8 @@ "id": 41, "name": "address", "nodeType": "ElementaryTypeName", - "src": "650:7:0", + "src": "648:7:0", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1493,17 +1493,16 @@ "visibility": "internal" } ], - "src": "649:17:0" + "src": "647:17:0" }, - "payable": false, "returnParameters": { "id": 46, "nodeType": "ParameterList", "parameters": [], - "src": "687:0:0" + "src": "685:0:0" }, "scope": 86, - "src": "629:98:0", + "src": "627:98:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -1512,7 +1511,7 @@ "body": { "id": 60, "nodeType": "Block", - "src": "770:46:0", + "src": "768:46:0", "statements": [ { "expression": { @@ -1526,8 +1525,8 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1270, - "src": "797:3:0", + "referencedDeclaration": 1256, + "src": "795:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" @@ -1541,18 +1540,18 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "797:10:0", + "src": "795:10:0", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } ], "id": 55, @@ -1560,7 +1559,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85, - "src": "781:15:0", + "src": "779:15:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" @@ -1574,7 +1573,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "781:27:0", + "src": "779:27:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -1582,15 +1581,14 @@ }, "id": 59, "nodeType": "ExpressionStatement", - "src": "781:27:0" + "src": "779:27:0" } ] }, "documentation": null, "id": 61, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "renounceCoreTeam", "nodeType": "FunctionDefinition", @@ -1598,17 +1596,16 @@ "id": 53, "nodeType": "ParameterList", "parameters": [], - "src": "760:2:0" + "src": "758:2:0" }, - "payable": false, "returnParameters": { "id": 54, "nodeType": "ParameterList", "parameters": [], - "src": "770:0:0" + "src": "768:0:0" }, "scope": 86, - "src": "735:81:0", + "src": "733:81:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -1617,7 +1614,7 @@ "body": { "id": 72, "nodeType": "Block", - "src": "872:48:0", + "src": "870:48:0", "statements": [ { "expression": { @@ -1630,7 +1627,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 63, - "src": "904:7:0", + "src": "902:7:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1651,9 +1648,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7, - "src": "883:16:0", + "src": "881:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$827_storage", + "typeIdentifier": "t_struct$_Role_$812_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1664,10 +1661,10 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 859, - "src": "883:20:0", + "referencedDeclaration": 844, + "src": "881:20:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$827_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$827_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$812_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$812_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -1679,7 +1676,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "883:29:0", + "src": "881:29:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -1687,15 +1684,14 @@ }, "id": 71, "nodeType": "ExpressionStatement", - "src": "883:29:0" + "src": "881:29:0" } ] }, "documentation": null, "id": 73, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "_addCoreTeam", "nodeType": "FunctionDefinition", @@ -1709,7 +1705,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 73, - "src": "846:15:0", + "src": "844:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1720,7 +1716,8 @@ "id": 62, "name": "address", "nodeType": "ElementaryTypeName", - "src": "846:7:0", + "src": "844:7:0", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1730,17 +1727,16 @@ "visibility": "internal" } ], - "src": "845:17:0" + "src": "843:17:0" }, - "payable": false, "returnParameters": { "id": 65, "nodeType": "ParameterList", "parameters": [], - "src": "872:0:0" + "src": "870:0:0" }, "scope": 86, - "src": "824:96:0", + "src": "822:96:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" @@ -1749,7 +1745,7 @@ "body": { "id": 84, "nodeType": "Block", - "src": "979:51:0", + "src": "977:51:0", "statements": [ { "expression": { @@ -1762,7 +1758,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 75, - "src": "1014:7:0", + "src": "1012:7:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1783,9 +1779,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7, - "src": "990:16:0", + "src": "988:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$827_storage", + "typeIdentifier": "t_struct$_Role_$812_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1796,10 +1792,10 @@ "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 890, - "src": "990:23:0", + "referencedDeclaration": 875, + "src": "988:23:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$827_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$827_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$812_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$812_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -1811,7 +1807,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "990:32:0", + "src": "988:32:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -1819,15 +1815,14 @@ }, "id": 83, "nodeType": "ExpressionStatement", - "src": "990:32:0" + "src": "988:32:0" } ] }, "documentation": null, "id": 85, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "_removeCoreTeam", "nodeType": "FunctionDefinition", @@ -1841,7 +1836,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 85, - "src": "953:15:0", + "src": "951:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1852,7 +1847,8 @@ "id": 74, "name": "address", "nodeType": "ElementaryTypeName", - "src": "953:7:0", + "src": "951:7:0", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1862,27 +1858,26 @@ "visibility": "internal" } ], - "src": "952:17:0" + "src": "950:17:0" }, - "payable": false, "returnParameters": { "id": 77, "nodeType": "ParameterList", "parameters": [], - "src": "979:0:0" + "src": "977:0:0" }, "scope": 86, - "src": "928:102:0", + "src": "926:102:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], "scope": 87, - "src": "221:812:0" + "src": "219:812:0" } ], - "src": "0:1035:0" + "src": "0:1033:0" }, "id": 0 }, @@ -1891,30 +1886,30 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol", "exportedSymbols": { "AlgoFees": [ - 606 + 591 ] }, - "id": 607, + "id": 592, "nodeType": "SourceUnit", "nodes": [ { "id": 88, "literals": [ "solidity", - "0.4", - ".24" + "0.5", + ".4" ], "nodeType": "PragmaDirective", - "src": "0:23:1" + "src": "0:22:1" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "id": 89, "nodeType": "ImportDirective", - "scope": 607, - "sourceUnit": 1112, - "src": "27:195:1", + "scope": 592, + "sourceUnit": 1097, + "src": "26:195:1", "symbolAliases": [], "unitAlias": "" }, @@ -1923,9 +1918,9 @@ "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "id": 90, "nodeType": "ImportDirective", - "scope": 607, - "sourceUnit": 1256, - "src": "224:198:1", + "scope": 592, + "sourceUnit": 1242, + "src": "223:198:1", "symbolAliases": [], "unitAlias": "" }, @@ -1934,9 +1929,9 @@ "file": "./IAlgoMiner.sol", "id": 91, "nodeType": "ImportDirective", - "scope": 607, - "sourceUnit": 784, - "src": "426:26:1", + "scope": 592, + "sourceUnit": 769, + "src": "425:26:1", "symbolAliases": [], "unitAlias": "" }, @@ -1945,9 +1940,9 @@ "file": "./ERC20TokenHolder.sol", "id": 92, "nodeType": "ImportDirective", - "scope": 607, - "sourceUnit": 751, - "src": "454:32:1", + "scope": 592, + "sourceUnit": 736, + "src": "453:32:1", "symbolAliases": [], "unitAlias": "" }, @@ -1956,9 +1951,9 @@ "file": "./AlgoSystemRole.sol", "id": 93, "nodeType": "ImportDirective", - "scope": 607, - "sourceUnit": 694, - "src": "488:30:1", + "scope": 592, + "sourceUnit": 679, + "src": "487:30:1", "symbolAliases": [], "unitAlias": "" }, @@ -1967,9 +1962,9 @@ "file": "./AlgoCoreTeamRole.sol", "id": 94, "nodeType": "ImportDirective", - "scope": 607, + "scope": 592, "sourceUnit": 87, - "src": "520:32:1", + "src": "519:32:1", "symbolAliases": [], "unitAlias": "" }, @@ -1982,16 +1977,16 @@ "id": 95, "name": "ERC20TokenHolder", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, - "src": "577:16:1", + "referencedDeclaration": 735, + "src": "576:16:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20TokenHolder_$750", + "typeIdentifier": "t_contract$_ERC20TokenHolder_$735", "typeString": "contract ERC20TokenHolder" } }, "id": 96, "nodeType": "InheritanceSpecifier", - "src": "577:16:1" + "src": "576:16:1" }, { "arguments": null, @@ -2000,16 +1995,16 @@ "id": 97, "name": "AlgoSystemRole", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 693, - "src": "595:14:1", + "referencedDeclaration": 678, + "src": "594:14:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoSystemRole_$693", + "typeIdentifier": "t_contract$_AlgoSystemRole_$678", "typeString": "contract AlgoSystemRole" } }, "id": 98, "nodeType": "InheritanceSpecifier", - "src": "595:14:1" + "src": "594:14:1" }, { "arguments": null, @@ -2019,7 +2014,7 @@ "name": "AlgoCoreTeamRole", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 86, - "src": "611:16:1", + "src": "610:16:1", "typeDescriptions": { "typeIdentifier": "t_contract$_AlgoCoreTeamRole_$86", "typeString": "contract AlgoCoreTeamRole" @@ -2027,25 +2022,25 @@ }, "id": 100, "nodeType": "InheritanceSpecifier", - "src": "611:16:1" + "src": "610:16:1" } ], "contractDependencies": [ - 86, - 750, - 693, - 820 + 735, + 805, + 678, + 86 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 606, + "id": 591, "linearizedBaseContracts": [ - 606, + 591, 86, - 693, - 750, - 820 + 678, + 735, + 805 ], "name": "AlgoFees", "nodeType": "ContractDefinition", @@ -2057,24 +2052,24 @@ "id": 101, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1255, - "src": "641:9:1", + "referencedDeclaration": 1241, + "src": "640:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1255", + "typeIdentifier": "t_contract$_SafeERC20_$1241", "typeString": "library SafeERC20" } }, "nodeType": "UsingForDirective", - "src": "635:27:1", + "src": "634:27:1", "typeName": { "contractScope": null, "id": 102, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1111, - "src": "655:6:1", + "referencedDeclaration": 1096, + "src": "654:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1111", + "typeIdentifier": "t_contract$_IERC20_$1096", "typeString": "contract IERC20" } } @@ -2084,8 +2079,8 @@ "id": 106, "name": "CAT_0_VALUE_PROPORTION", "nodeType": "VariableDeclaration", - "scope": 606, - "src": "670:51:1", + "scope": 591, + "src": "669:51:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2096,7 +2091,7 @@ "id": 104, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "670:7:1", + "src": "669:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2112,7 +2107,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "720:1:1", + "src": "719:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -2127,8 +2122,8 @@ "id": 109, "name": "CAT_1_VALUE_PROPORTION", "nodeType": "VariableDeclaration", - "scope": 606, - "src": "728:52:1", + "scope": 591, + "src": "727:52:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2139,7 +2134,7 @@ "id": 107, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "728:7:1", + "src": "727:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2155,7 +2150,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "778:2:1", + "src": "777:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", @@ -2170,8 +2165,8 @@ "id": 112, "name": "CAT_2_VALUE_PROPORTION", "nodeType": "VariableDeclaration", - "scope": 606, - "src": "787:52:1", + "scope": 591, + "src": "786:52:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2182,7 +2177,7 @@ "id": 110, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "787:7:1", + "src": "786:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2198,7 +2193,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "837:2:1", + "src": "836:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_20_by_1", @@ -2213,8 +2208,8 @@ "id": 115, "name": "CAT_3_VALUE_PROPORTION", "nodeType": "VariableDeclaration", - "scope": 606, - "src": "846:52:1", + "scope": 591, + "src": "845:52:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2225,7 +2220,7 @@ "id": 113, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "846:7:1", + "src": "845:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2241,7 +2236,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "896:2:1", + "src": "895:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_30_by_1", @@ -2256,8 +2251,8 @@ "id": 118, "name": "CAT_4_VALUE_PROPORTION", "nodeType": "VariableDeclaration", - "scope": 606, - "src": "905:52:1", + "scope": 591, + "src": "904:52:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2268,7 +2263,7 @@ "id": 116, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "905:7:1", + "src": "904:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2284,7 +2279,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "955:2:1", + "src": "954:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_40_by_1", @@ -2299,8 +2294,8 @@ "id": 121, "name": "CAT_5_VALUE_PROPORTION", "nodeType": "VariableDeclaration", - "scope": 606, - "src": "964:52:1", + "scope": 591, + "src": "963:52:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2311,7 +2306,7 @@ "id": 119, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "964:7:1", + "src": "963:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2327,7 +2322,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1014:2:1", + "src": "1013:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_50_by_1", @@ -2342,8 +2337,8 @@ "id": 124, "name": "_miners", "nodeType": "VariableDeclaration", - "scope": 606, - "src": "1025:25:1", + "scope": 591, + "src": "1024:25:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2355,7 +2350,8 @@ "id": 122, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1025:7:1", + "src": "1024:7:1", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2364,7 +2360,7 @@ "id": 123, "length": null, "nodeType": "ArrayTypeName", - "src": "1025:9:1", + "src": "1024:9:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -2378,8 +2374,8 @@ "id": 128, "name": "_minersByAddress", "nodeType": "VariableDeclaration", - "scope": 606, - "src": "1057:52:1", + "scope": 591, + "src": "1056:52:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2392,14 +2388,14 @@ "id": 125, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1065:7:1", + "src": "1064:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "1057:27:1", + "src": "1056:27:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" @@ -2408,7 +2404,7 @@ "id": 126, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1076:7:1", + "src": "1075:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2422,7 +2418,7 @@ "body": { "id": 148, "nodeType": "Block", - "src": "1262:91:1", + "src": "1261:91:1", "statements": [ { "expression": { @@ -2441,7 +2437,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1294:1:1", + "src": "1293:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2463,7 +2459,7 @@ "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1286:7:1", + "src": "1285:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" @@ -2478,18 +2474,18 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1286:10:1", + "src": "1285:10:1", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } ], "expression": { @@ -2499,7 +2495,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "1273:7:1", + "src": "1272:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -2513,7 +2509,7 @@ "memberName": "push", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1273:12:1", + "src": "1272:12:1", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", "typeString": "function (address) returns (uint256)" @@ -2527,7 +2523,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1273:24:1", + "src": "1272:24:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2535,15 +2531,14 @@ }, "id": 147, "nodeType": "ExpressionStatement", - "src": "1273:24:1" + "src": "1272:24:1" } ] }, "documentation": null, "id": 149, "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, + "kind": "constructor", "modifiers": [ { "arguments": [ @@ -2554,7 +2549,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 130, - "src": "1178:12:1", + "src": "1177:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2568,15 +2563,15 @@ "name": "ERC20TokenHolder", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 750, - "src": "1161:16:1", + "referencedDeclaration": 735, + "src": "1160:16:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20TokenHolder_$750_$", + "typeIdentifier": "t_type$_t_contract$_ERC20TokenHolder_$735_$", "typeString": "type(contract ERC20TokenHolder)" } }, "nodeType": "ModifierInvocation", - "src": "1161:30:1" + "src": "1160:30:1" }, { "arguments": [], @@ -2587,15 +2582,15 @@ "name": "AlgoSystemRole", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 693, - "src": "1201:14:1", + "referencedDeclaration": 678, + "src": "1200:14:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AlgoSystemRole_$693_$", + "typeIdentifier": "t_type$_t_contract$_AlgoSystemRole_$678_$", "typeString": "type(contract AlgoSystemRole)" } }, "nodeType": "ModifierInvocation", - "src": "1201:16:1" + "src": "1200:16:1" }, { "arguments": [], @@ -2607,14 +2602,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86, - "src": "1227:16:1", + "src": "1226:16:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_AlgoCoreTeamRole_$86_$", "typeString": "type(contract AlgoCoreTeamRole)" } }, "nodeType": "ModifierInvocation", - "src": "1227:18:1" + "src": "1226:18:1" } ], "name": "", @@ -2629,7 +2624,7 @@ "name": "tokenAddress", "nodeType": "VariableDeclaration", "scope": 149, - "src": "1130:20:1", + "src": "1129:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2640,7 +2635,8 @@ "id": 129, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1130:7:1", + "src": "1129:7:1", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2650,26 +2646,25 @@ "visibility": "internal" } ], - "src": "1129:22:1" + "src": "1128:22:1" }, - "payable": false, "returnParameters": { "id": 139, "nodeType": "ParameterList", "parameters": [], - "src": "1262:0:1" + "src": "1261:0:1" }, - "scope": 606, - "src": "1118:235:1", + "scope": 591, + "src": "1117:235:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 214, + "id": 210, "nodeType": "Block", - "src": "1440:442:1", + "src": "1439:420:1", "statements": [ { "expression": { @@ -2695,7 +2690,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "1459:7:1", + "src": "1458:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -2709,7 +2704,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1459:14:1", + "src": "1458:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2727,7 +2722,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1476:4:1", + "src": "1475:4:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000_by_1", @@ -2735,7 +2730,7 @@ }, "value": "1000" }, - "src": "1459:21:1", + "src": "1458:21:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2753,11 +2748,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1273, - 1274 + 1259, + 1260 ], - "referencedDeclaration": 1273, - "src": "1451:7:1", + "referencedDeclaration": 1259, + "src": "1450:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -2771,7 +2766,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1451:30:1", + "src": "1450:30:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -2779,7 +2774,7 @@ }, "id": 164, "nodeType": "ExpressionStatement", - "src": "1451:30:1" + "src": "1450:30:1" }, { "expression": { @@ -2805,7 +2800,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 128, - "src": "1500:16:1", + "src": "1499:16:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" @@ -2819,7 +2814,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 151, - "src": "1517:12:1", + "src": "1516:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2830,7 +2825,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1500:30:1", + "src": "1499:30:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2848,7 +2843,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1534:1:1", + "src": "1533:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2856,7 +2851,7 @@ }, "value": "0" }, - "src": "1500:35:1", + "src": "1499:35:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2874,11 +2869,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1273, - 1274 + 1259, + 1260 ], - "referencedDeclaration": 1273, - "src": "1492:7:1", + "referencedDeclaration": 1259, + "src": "1491:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -2892,7 +2887,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1492:44:1", + "src": "1491:44:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -2900,7 +2895,7 @@ }, "id": 172, "nodeType": "ExpressionStatement", - "src": "1492:44:1" + "src": "1491:44:1" }, { "assignments": [ @@ -2912,12 +2907,12 @@ "id": 174, "name": "algoMiner", "nodeType": "VariableDeclaration", - "scope": 215, - "src": "1549:20:1", + "scope": 210, + "src": "1548:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$783", + "typeIdentifier": "t_contract$_IAlgoMiner_$768", "typeString": "contract IAlgoMiner" }, "typeName": { @@ -2925,10 +2920,10 @@ "id": 173, "name": "IAlgoMiner", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 783, - "src": "1549:10:1", + "referencedDeclaration": 768, + "src": "1548:10:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$783", + "typeIdentifier": "t_contract$_IAlgoMiner_$768", "typeString": "contract IAlgoMiner" } }, @@ -2947,7 +2942,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 151, - "src": "1583:12:1", + "src": "1582:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2965,10 +2960,10 @@ "name": "IAlgoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 783, - "src": "1572:10:1", + "referencedDeclaration": 768, + "src": "1571:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$783_$", + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$768_$", "typeString": "type(contract IAlgoMiner)" } }, @@ -2980,14 +2975,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1572:24:1", + "src": "1571:24:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$783", + "typeIdentifier": "t_contract$_IAlgoMiner_$768", "typeString": "contract IAlgoMiner" } }, "nodeType": "VariableDeclarationStatement", - "src": "1549:47:1" + "src": "1548:47:1" }, { "expression": { @@ -3005,9 +3000,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, - "src": "1625:9:1", + "src": "1624:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$783", + "typeIdentifier": "t_contract$_IAlgoMiner_$768", "typeString": "contract IAlgoMiner" } }, @@ -3018,8 +3013,8 @@ "lValueRequested": false, "memberName": "isAlgoMiner", "nodeType": "MemberAccess", - "referencedDeclaration": 757, - "src": "1625:21:1", + "referencedDeclaration": 742, + "src": "1624:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$__$returns$_t_bool_$", "typeString": "function () pure external returns (bool)" @@ -3033,7 +3028,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1625:23:1", + "src": "1624:23:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3051,11 +3046,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1273, - 1274 + 1259, + 1260 ], - "referencedDeclaration": 1273, - "src": "1617:7:1", + "referencedDeclaration": 1259, + "src": "1616:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -3069,7 +3064,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1617:32:1", + "src": "1616:32:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -3077,7 +3072,7 @@ }, "id": 184, "nodeType": "ExpressionStatement", - "src": "1617:32:1" + "src": "1616:32:1" }, { "assignments": [ @@ -3089,8 +3084,8 @@ "id": 186, "name": "minerCategory", "nodeType": "VariableDeclaration", - "scope": 215, - "src": "1670:19:1", + "scope": 210, + "src": "1669:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3101,7 +3096,7 @@ "id": 185, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1670:5:1", + "src": "1669:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3124,9 +3119,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, - "src": "1692:9:1", + "src": "1691:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$783", + "typeIdentifier": "t_contract$_IAlgoMiner_$768", "typeString": "contract IAlgoMiner" } }, @@ -3137,8 +3132,8 @@ "lValueRequested": false, "memberName": "getCategory", "nodeType": "MemberAccess", - "referencedDeclaration": 767, - "src": "1692:21:1", + "referencedDeclaration": 752, + "src": "1691:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" @@ -3152,14 +3147,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1692:23:1", + "src": "1691:23:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", - "src": "1670:45:1" + "src": "1669:45:1" }, { "expression": { @@ -3168,117 +3163,48 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint8", + "typeString": "uint8" }, - "id": 198, + "id": 194, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "commonType": { + "id": 192, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 186, + "src": "1735:13:1", + "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" - }, - "id": 194, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 192, - "name": "minerCategory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 186, - "src": "1736:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 193, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1753:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1736:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" } }, "nodeType": "BinaryOperation", - "operator": "&&", + "operator": "<=", "rightExpression": { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 197, + "hexValue": "35", + "id": 193, "isConstant": false, "isLValue": false, - "isPure": false, + "isPure": true, + "kind": "number", "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 195, - "name": "minerCategory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 186, - "src": "1758:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "35", - "id": 196, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1775:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_5_by_1", - "typeString": "int_const 5" - }, - "value": "5" - }, - "src": "1758:18:1", + "nodeType": "Literal", + "src": "1752:1:1", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" }, - "src": "1736:40:1", + "src": "1735:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3296,17 +3222,17 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1273, - 1274 + 1259, + 1260 ], - "referencedDeclaration": 1273, - "src": "1728:7:1", + "referencedDeclaration": 1259, + "src": "1727:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 199, + "id": 195, "isConstant": false, "isLValue": false, "isPure": false, @@ -3314,20 +3240,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1728:49:1", + "src": "1727:27:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 200, + "id": 196, "nodeType": "ExpressionStatement", - "src": "1728:49:1" + "src": "1727:27:1" }, { "expression": { "argumentTypes": null, - "id": 206, + "id": 202, "isConstant": false, "isLValue": false, "isPure": false, @@ -3336,26 +3262,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 201, + "id": 197, "name": "_minersByAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 128, - "src": "1790:16:1", + "src": "1767:16:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 203, + "id": 199, "indexExpression": { "argumentTypes": null, - "id": 202, + "id": 198, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 151, - "src": "1807:12:1", + "src": "1784:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3366,7 +3292,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1790:30:1", + "src": "1767:30:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3378,18 +3304,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 204, + "id": 200, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "1823:7:1", + "src": "1800:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 205, + "id": 201, "isConstant": false, "isLValue": true, "isPure": false, @@ -3397,21 +3323,21 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1823:14:1", + "src": "1800:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1790:47:1", + "src": "1767:47:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 207, + "id": 203, "nodeType": "ExpressionStatement", - "src": "1790:47:1" + "src": "1767:47:1" }, { "expression": { @@ -3419,12 +3345,12 @@ "arguments": [ { "argumentTypes": null, - "id": 211, + "id": 207, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 151, - "src": "1861:12:1", + "src": "1838:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3440,18 +3366,18 @@ ], "expression": { "argumentTypes": null, - "id": 208, + "id": 204, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "1848:7:1", + "src": "1825:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 210, + "id": 206, "isConstant": false, "isLValue": false, "isPure": false, @@ -3459,13 +3385,13 @@ "memberName": "push", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1848:12:1", + "src": "1825:12:1", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", "typeString": "function (address) returns (uint256)" } }, - "id": 212, + "id": 208, "isConstant": false, "isLValue": false, "isPure": false, @@ -3473,23 +3399,22 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1848:26:1", + "src": "1825:26:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 213, + "id": 209, "nodeType": "ExpressionStatement", - "src": "1848:26:1" + "src": "1825:26:1" } ] }, "documentation": null, - "id": 215, + "id": 211, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, @@ -3500,15 +3425,15 @@ "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 811, - "src": "1413:13:1", + "referencedDeclaration": 796, + "src": "1412:13:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1413:13:1" + "src": "1412:13:1" }, { "arguments": null, @@ -3520,14 +3445,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, - "src": "1427:12:1", + "src": "1426:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1427:12:1" + "src": "1426:12:1" } ], "name": "registerMiner", @@ -3541,8 +3466,8 @@ "id": 151, "name": "minerAddress", "nodeType": "VariableDeclaration", - "scope": 215, - "src": "1384:20:1", + "scope": 211, + "src": "1383:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3553,7 +3478,8 @@ "id": 150, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1384:7:1", + "src": "1383:7:1", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3563,26 +3489,25 @@ "visibility": "internal" } ], - "src": "1383:22:1" + "src": "1382:22:1" }, - "payable": false, "returnParameters": { "id": 157, "nodeType": "ParameterList", "parameters": [], - "src": "1440:0:1" + "src": "1439:0:1" }, - "scope": 606, - "src": "1361:521:1", + "scope": 591, + "src": "1360:499:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 293, + "id": 275, "nodeType": "Block", - "src": "1971:682:1", + "src": "1948:593:1", "statements": [ { "expression": { @@ -3594,7 +3519,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 228, + "id": 224, "isConstant": false, "isLValue": false, "isPure": false, @@ -3603,18 +3528,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 225, + "id": 221, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "1990:7:1", + "src": "1967:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 226, + "id": 222, "isConstant": false, "isLValue": true, "isPure": false, @@ -3622,7 +3547,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1990:14:1", + "src": "1967:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3633,14 +3558,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 227, + "id": 223, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2007:1:1", + "src": "1984:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -3648,7 +3573,7 @@ }, "value": "1" }, - "src": "1990:18:1", + "src": "1967:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3662,21 +3587,21 @@ "typeString": "bool" } ], - "id": 224, + "id": 220, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1273, - 1274 + 1259, + 1260 ], - "referencedDeclaration": 1273, - "src": "1982:7:1", + "referencedDeclaration": 1259, + "src": "1959:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 229, + "id": 225, "isConstant": false, "isLValue": false, "isPure": false, @@ -3684,15 +3609,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1982:27:1", + "src": "1959:27:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 230, + "id": 226, "nodeType": "ExpressionStatement", - "src": "1982:27:1" + "src": "1959:27:1" }, { "condition": { @@ -3701,7 +3626,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 234, + "id": 230, "isConstant": false, "isLValue": false, "isPure": false, @@ -3710,18 +3635,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 231, + "id": 227, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "2025:7:1", + "src": "2002:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 232, + "id": 228, "isConstant": false, "isLValue": true, "isPure": false, @@ -3729,7 +3654,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2025:14:1", + "src": "2002:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3740,14 +3665,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 233, + "id": 229, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2043:1:1", + "src": "2020:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -3755,16 +3680,16 @@ }, "value": "2" }, - "src": "2025:19:1", + "src": "2002:19:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 291, + "id": 273, "nodeType": "Block", - "src": "2258:388:1", + "src": "2198:336:1", "statements": [ { "condition": { @@ -3773,7 +3698,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 257, + "id": 247, "isConstant": false, "isLValue": false, "isPure": false, @@ -3782,26 +3707,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 252, + "id": 242, "name": "_minersByAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 128, - "src": "2290:16:1", + "src": "2230:16:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 254, + "id": 244, "indexExpression": { "argumentTypes": null, - "id": 253, + "id": 243, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 217, - "src": "2307:12:1", + "referencedDeclaration": 213, + "src": "2247:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3812,7 +3737,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2290:30:1", + "src": "2230:30:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3824,18 +3749,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 255, + "id": 245, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "2324:7:1", + "src": "2264:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 256, + "id": 246, "isConstant": false, "isLValue": true, "isPure": false, @@ -3843,31 +3768,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2324:14:1", + "src": "2264:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2290:48:1", + "src": "2230:48:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 272, + "id": 262, "nodeType": "IfStatement", - "src": "2287:214:1", + "src": "2227:214:1", "trueBody": { - "id": 271, + "id": 261, "nodeType": "Block", - "src": "2340:161:1", + "src": "2280:161:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 269, + "id": 259, "isConstant": false, "isLValue": false, "isPure": false, @@ -3876,42 +3801,42 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 258, + "id": 248, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "2416:7:1", + "src": "2356:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 262, + "id": 252, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 259, + "id": 249, "name": "_minersByAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 128, - "src": "2424:16:1", + "src": "2364:16:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 261, + "id": 251, "indexExpression": { "argumentTypes": null, - "id": 260, + "id": 250, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 217, - "src": "2441:12:1", + "referencedDeclaration": 213, + "src": "2381:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3922,7 +3847,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2424:30:1", + "src": "2364:30:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3933,7 +3858,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2416:39:1", + "src": "2356:39:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3945,25 +3870,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 263, + "id": 253, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "2458:7:1", + "src": "2398:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 268, + "id": 258, "indexExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 267, + "id": 257, "isConstant": false, "isLValue": false, "isPure": false, @@ -3972,18 +3897,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 264, + "id": 254, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "2466:7:1", + "src": "2406:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 265, + "id": 255, "isConstant": false, "isLValue": true, "isPure": false, @@ -3991,7 +3916,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2466:14:1", + "src": "2406:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4002,14 +3927,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 266, + "id": 256, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2483:1:1", + "src": "2423:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -4017,7 +3942,7 @@ }, "value": "1" }, - "src": "2466:18:1", + "src": "2406:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4028,21 +3953,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2458:27:1", + "src": "2398:27:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2416:69:1", + "src": "2356:69:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 270, + "id": 260, "nodeType": "ExpressionStatement", - "src": "2416:69:1" + "src": "2356:69:1" } ] } @@ -4050,171 +3975,58 @@ { "expression": { "argumentTypes": null, - "id": 279, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "delete", - "prefix": true, - "src": "2517:34:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { "argumentTypes": null, - "id": 273, + "id": 263, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "2524:7:1", + "src": "2457:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 278, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 277, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 274, - "name": "_miners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 124, - "src": "2532:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 275, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2532:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 276, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2549:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "2532:18:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, + "id": 265, "isConstant": false, - "isLValue": true, + "isLValue": false, "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2524:27:1", + "lValueRequested": false, + "memberName": "pop", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2457:11:1", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$", + "typeString": "function ()" } }, + "id": 266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2457:13:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 280, + "id": 267, "nodeType": "ExpressionStatement", - "src": "2517:34:1" + "src": "2457:13:1" }, { "expression": { "argumentTypes": null, - "id": 284, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "--", - "prefix": false, - "src": "2566:16:1", - "subExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 281, - "name": "_miners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 124, - "src": "2566:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 283, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2566:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 285, - "nodeType": "ExpressionStatement", - "src": "2566:16:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 289, + "id": 271, "isConstant": false, "isLValue": false, "isPure": false, @@ -4222,31 +4034,31 @@ "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, - "src": "2597:37:1", + "src": "2485:37:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 286, + "id": 268, "name": "_minersByAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 128, - "src": "2604:16:1", + "src": "2492:16:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 288, + "id": 270, "indexExpression": { "argumentTypes": null, - "id": 287, + "id": 269, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 217, - "src": "2621:12:1", + "referencedDeclaration": 213, + "src": "2509:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4257,7 +4069,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2604:30:1", + "src": "2492:30:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4268,157 +4080,75 @@ "typeString": "tuple()" } }, - "id": 290, + "id": 272, "nodeType": "ExpressionStatement", - "src": "2597:37:1" + "src": "2485:37:1" } ] }, - "id": 292, + "id": 274, "nodeType": "IfStatement", - "src": "2022:624:1", + "src": "1999:535:1", "trueBody": { - "id": 251, + "id": 241, "nodeType": "Block", - "src": "2046:206:1", + "src": "2023:169:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 238, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "delete", - "prefix": true, - "src": "2128:17:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { "argumentTypes": null, - "id": 235, + "id": 231, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "2135:7:1", + "src": "2105:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 237, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 236, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2143:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, + "id": 233, "isConstant": false, - "isLValue": true, + "isLValue": false, "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2135:10:1", + "lValueRequested": false, + "memberName": "pop", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2105:11:1", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$", + "typeString": "function ()" } }, + "id": 234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2105:13:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 239, + "id": 235, "nodeType": "ExpressionStatement", - "src": "2128:17:1" + "src": "2105:13:1" }, { "expression": { "argumentTypes": null, - "id": 244, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 240, - "name": "_miners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 124, - "src": "2160:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 242, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2160:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "31", - "id": 243, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2177:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "2160:18:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 245, - "nodeType": "ExpressionStatement", - "src": "2160:18:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 249, + "id": 239, "isConstant": false, "isLValue": false, "isPure": false, @@ -4426,31 +4156,31 @@ "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, - "src": "2193:37:1", + "src": "2133:37:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 246, + "id": 236, "name": "_minersByAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 128, - "src": "2200:16:1", + "src": "2140:16:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 248, + "id": 238, "indexExpression": { "argumentTypes": null, - "id": 247, + "id": 237, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 217, - "src": "2217:12:1", + "referencedDeclaration": 213, + "src": "2157:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4461,7 +4191,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2200:30:1", + "src": "2140:30:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4472,9 +4202,9 @@ "typeString": "tuple()" } }, - "id": 250, + "id": 240, "nodeType": "ExpressionStatement", - "src": "2193:37:1" + "src": "2133:37:1" } ] } @@ -4482,63 +4212,62 @@ ] }, "documentation": null, - "id": 294, + "id": 276, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, - "id": 220, + "id": 216, "modifierName": { "argumentTypes": null, - "id": 219, + "id": 215, "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 811, - "src": "1944:13:1", + "referencedDeclaration": 796, + "src": "1921:13:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1944:13:1" + "src": "1921:13:1" }, { "arguments": null, - "id": 222, + "id": 218, "modifierName": { "argumentTypes": null, - "id": 221, + "id": 217, "name": "onlyCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, - "src": "1958:12:1", + "src": "1935:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1958:12:1" + "src": "1935:12:1" } ], "name": "unregisterMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 218, + "id": 214, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 217, + "id": 213, "name": "minerAddress", "nodeType": "VariableDeclaration", - "scope": 294, - "src": "1915:20:1", + "scope": 276, + "src": "1892:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4546,10 +4275,11 @@ "typeString": "address" }, "typeName": { - "id": 216, + "id": 212, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1915:7:1", + "src": "1892:7:1", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4559,26 +4289,25 @@ "visibility": "internal" } ], - "src": "1914:22:1" + "src": "1891:22:1" }, - "payable": false, "returnParameters": { - "id": 223, + "id": 219, "nodeType": "ParameterList", "parameters": [], - "src": "1971:0:1" + "src": "1948:0:1" }, - "scope": 606, - "src": "1890:763:1", + "scope": 591, + "src": "1867:674:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 570, + "id": 555, "nodeType": "Block", - "src": "2709:2307:1", + "src": "2597:2370:1", "statements": [ { "expression": { @@ -4590,7 +4319,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 305, + "id": 287, "isConstant": false, "isLValue": false, "isPure": false, @@ -4599,18 +4328,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 302, + "id": 284, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "2728:7:1", + "src": "2616:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 303, + "id": 285, "isConstant": false, "isLValue": true, "isPure": false, @@ -4618,7 +4347,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2728:14:1", + "src": "2616:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4629,14 +4358,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 304, + "id": 286, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2745:1:1", + "src": "2633:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -4644,7 +4373,7 @@ }, "value": "1" }, - "src": "2728:18:1", + "src": "2616:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4658,21 +4387,21 @@ "typeString": "bool" } ], - "id": 301, + "id": 283, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1273, - 1274 + 1259, + 1260 ], - "referencedDeclaration": 1273, - "src": "2720:7:1", + "referencedDeclaration": 1259, + "src": "2608:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 306, + "id": 288, "isConstant": false, "isLValue": false, "isPure": false, @@ -4680,28 +4409,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2720:27:1", + "src": "2608:27:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 307, + "id": 289, "nodeType": "ExpressionStatement", - "src": "2720:27:1" + "src": "2608:27:1" }, { "assignments": [ - 309 + 291 ], "declarations": [ { "constant": false, - "id": 309, + "id": 291, "name": "currentFeesBalance", "nodeType": "VariableDeclaration", - "scope": 571, - "src": "2760:26:1", + "scope": 555, + "src": "2648:26:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4709,10 +4438,10 @@ "typeString": "uint256" }, "typeName": { - "id": 308, + "id": 290, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2760:7:1", + "src": "2648:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4722,7 +4451,7 @@ "visibility": "internal" } ], - "id": 316, + "id": 298, "initialValue": { "argumentTypes": null, "arguments": [ @@ -4731,14 +4460,14 @@ "arguments": [ { "argumentTypes": null, - "id": 313, + "id": 295, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1301, - "src": "2814:4:1", + "referencedDeclaration": 1288, + "src": "2702:4:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoFees_$606", + "typeIdentifier": "t_contract$_AlgoFees_$591", "typeString": "contract AlgoFees" } } @@ -4746,24 +4475,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_AlgoFees_$606", + "typeIdentifier": "t_contract$_AlgoFees_$591", "typeString": "contract AlgoFees" } ], - "id": 312, + "id": 294, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2806:7:1", + "src": "2694:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 314, + "id": 296, "isConstant": false, "isLValue": false, "isPure": false, @@ -4771,7 +4500,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2806:13:1", + "src": "2694:13:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4787,32 +4516,32 @@ ], "expression": { "argumentTypes": null, - "id": 310, + "id": 292, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 705, - "src": "2789:6:1", + "referencedDeclaration": 690, + "src": "2677:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1111", + "typeIdentifier": "t_contract$_IERC20_$1096", "typeString": "contract IERC20" } }, - "id": 311, + "id": 293, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 1056, - "src": "2789:16:1", + "referencedDeclaration": 1070, + "src": "2677:16:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 315, + "id": 297, "isConstant": false, "isLValue": false, "isPure": false, @@ -4820,14 +4549,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2789:31:1", + "src": "2677:31:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2760:60:1" + "src": "2648:60:1" }, { "expression": { @@ -4839,19 +4568,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 320, + "id": 302, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 318, + "id": 300, "name": "currentFeesBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 309, - "src": "2835:18:1", + "referencedDeclaration": 291, + "src": "2723:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4862,14 +4591,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 319, + "id": 301, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2856:1:1", + "src": "2744:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4877,7 +4606,7 @@ }, "value": "0" }, - "src": "2835:22:1", + "src": "2723:22:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4891,21 +4620,21 @@ "typeString": "bool" } ], - "id": 317, + "id": 299, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1273, - 1274 + 1259, + 1260 ], - "referencedDeclaration": 1273, - "src": "2827:7:1", + "referencedDeclaration": 1259, + "src": "2715:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 321, + "id": 303, "isConstant": false, "isLValue": false, "isPure": false, @@ -4913,26 +4642,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2827:31:1", + "src": "2715:31:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 322, + "id": 304, "nodeType": "ExpressionStatement", - "src": "2827:31:1" + "src": "2715:31:1" }, { - "assignments": [], + "assignments": [ + 309 + ], "declarations": [ { "constant": false, - "id": 327, + "id": 309, "name": "miners", "nodeType": "VariableDeclaration", - "scope": 571, - "src": "2942:24:1", + "scope": 555, + "src": "2830:24:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4941,27 +4672,27 @@ }, "typeName": { "baseType": { - "id": 325, + "id": 307, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2942:7:1", + "src": "2830:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 326, + "id": 308, "length": { "argumentTypes": null, "hexValue": "36", - "id": 324, + "id": 306, "isConstant": false, "isLValue": false, "isPure": false, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2950:1:1", + "src": "2838:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": null, @@ -4970,7 +4701,7 @@ "value": "6" }, "nodeType": "ArrayTypeName", - "src": "2942:10:1", + "src": "2830:10:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr", "typeString": "uint256[6]" @@ -4980,44 +4711,109 @@ "visibility": "internal" } ], - "id": 328, + "id": 310, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2942:24:1" + "src": "2830:24:1" + }, + { + "assignments": [ + 312 + ], + "declarations": [ + { + "constant": false, + "id": 312, + "name": "minerCount", + "nodeType": "VariableDeclaration", + "scope": 555, + "src": "2865:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 311, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2865:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 315, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 313, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 124, + "src": "2886:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 314, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2886:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2865:35:1" }, { "body": { - "id": 420, + "id": 406, "nodeType": "Block", - "src": "3023:657:1", + "src": "2953:657:1", "statements": [ { "assignments": [ - 341 + 327 ], "declarations": [ { "constant": false, - "id": 341, + "id": 327, "name": "algoMiner", "nodeType": "VariableDeclaration", - "scope": 571, - "src": "3038:20:1", + "scope": 406, + "src": "2968:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$783", + "typeIdentifier": "t_contract$_IAlgoMiner_$768", "typeString": "contract IAlgoMiner" }, "typeName": { "contractScope": null, - "id": 340, + "id": 326, "name": "IAlgoMiner", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 783, - "src": "3038:10:1", + "referencedDeclaration": 768, + "src": "2968:10:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$783", + "typeIdentifier": "t_contract$_IAlgoMiner_$768", "typeString": "contract IAlgoMiner" } }, @@ -5025,7 +4821,7 @@ "visibility": "internal" } ], - "id": 347, + "id": 333, "initialValue": { "argumentTypes": null, "arguments": [ @@ -5033,26 +4829,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 343, + "id": 329, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "3072:7:1", + "src": "3002:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 345, + "id": 331, "indexExpression": { "argumentTypes": null, - "id": 344, + "id": 330, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "3080:1:1", + "referencedDeclaration": 317, + "src": "3010:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5063,7 +4859,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3072:10:1", + "src": "3002:10:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5077,18 +4873,18 @@ "typeString": "address" } ], - "id": 342, + "id": 328, "name": "IAlgoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 783, - "src": "3061:10:1", + "referencedDeclaration": 768, + "src": "2991:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$783_$", + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$768_$", "typeString": "type(contract IAlgoMiner)" } }, - "id": 346, + "id": 332, "isConstant": false, "isLValue": false, "isPure": false, @@ -5096,19 +4892,19 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3061:22:1", + "src": "2991:22:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$783", + "typeIdentifier": "t_contract$_IAlgoMiner_$768", "typeString": "contract IAlgoMiner" } }, "nodeType": "VariableDeclarationStatement", - "src": "3038:45:1" + "src": "2968:45:1" }, { "condition": { "argumentTypes": null, - "id": 351, + "id": 337, "isConstant": false, "isLValue": false, "isPure": false, @@ -5116,7 +4912,7 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "3103:21:1", + "src": "3033:21:1", "subExpression": { "argumentTypes": null, "arguments": [], @@ -5124,32 +4920,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 348, + "id": 334, "name": "algoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 341, - "src": "3104:9:1", + "referencedDeclaration": 327, + "src": "3034:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$783", + "typeIdentifier": "t_contract$_IAlgoMiner_$768", "typeString": "contract IAlgoMiner" } }, - "id": 349, + "id": 335, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isMining", "nodeType": "MemberAccess", - "referencedDeclaration": 782, - "src": "3104:18:1", + "referencedDeclaration": 767, + "src": "3034:18:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$", "typeString": "function () view external returns (bool)" } }, - "id": 350, + "id": 336, "isConstant": false, "isLValue": false, "isPure": false, @@ -5157,7 +4953,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3104:20:1", + "src": "3034:20:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5169,27 +4965,27 @@ } }, "falseBody": null, - "id": 353, + "id": 339, "nodeType": "IfStatement", - "src": "3100:34:1", + "src": "3030:34:1", "trueBody": { - "id": 352, + "id": 338, "nodeType": "Continue", - "src": "3126:8:1" + "src": "3056:8:1" } }, { "assignments": [ - 355 + 341 ], "declarations": [ { "constant": false, - "id": 355, + "id": 341, "name": "minerCategory", "nodeType": "VariableDeclaration", - "scope": 571, - "src": "3151:19:1", + "scope": 406, + "src": "3081:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5197,10 +4993,10 @@ "typeString": "uint8" }, "typeName": { - "id": 354, + "id": 340, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "3151:5:1", + "src": "3081:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5210,7 +5006,7 @@ "visibility": "internal" } ], - "id": 359, + "id": 345, "initialValue": { "argumentTypes": null, "arguments": [], @@ -5218,32 +5014,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 356, + "id": 342, "name": "algoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 341, - "src": "3173:9:1", + "referencedDeclaration": 327, + "src": "3103:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$783", + "typeIdentifier": "t_contract$_IAlgoMiner_$768", "typeString": "contract IAlgoMiner" } }, - "id": 357, + "id": 343, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getCategory", "nodeType": "MemberAccess", - "referencedDeclaration": 767, - "src": "3173:21:1", + "referencedDeclaration": 752, + "src": "3103:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, - "id": 358, + "id": 344, "isConstant": false, "isLValue": false, "isPure": false, @@ -5251,14 +5047,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3173:23:1", + "src": "3103:23:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", - "src": "3151:45:1" + "src": "3081:45:1" }, { "condition": { @@ -5267,19 +5063,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 362, + "id": 348, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 360, + "id": 346, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 355, - "src": "3216:13:1", + "referencedDeclaration": 341, + "src": "3146:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5290,14 +5086,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 361, + "id": 347, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3233:1:1", + "src": "3163:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5305,7 +5101,7 @@ }, "value": "0" }, - "src": "3216:18:1", + "src": "3146:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5318,19 +5114,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 371, + "id": 357, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 369, + "id": 355, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 355, - "src": "3291:13:1", + "referencedDeclaration": 341, + "src": "3221:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5341,14 +5137,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 370, + "id": 356, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3308:1:1", + "src": "3238:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -5356,7 +5152,7 @@ }, "value": "1" }, - "src": "3291:18:1", + "src": "3221:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5369,19 +5165,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 380, + "id": 366, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 378, + "id": 364, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 355, - "src": "3366:13:1", + "referencedDeclaration": 341, + "src": "3296:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5392,14 +5188,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 379, + "id": 365, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3383:1:1", + "src": "3313:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -5407,7 +5203,7 @@ }, "value": "2" }, - "src": "3366:18:1", + "src": "3296:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5420,19 +5216,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 389, + "id": 375, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 387, + "id": 373, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 355, - "src": "3441:13:1", + "referencedDeclaration": 341, + "src": "3371:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5443,14 +5239,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "33", - "id": 388, + "id": 374, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3458:1:1", + "src": "3388:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", @@ -5458,7 +5254,7 @@ }, "value": "3" }, - "src": "3441:18:1", + "src": "3371:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5471,19 +5267,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 398, + "id": 384, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 396, + "id": 382, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 355, - "src": "3516:13:1", + "referencedDeclaration": 341, + "src": "3446:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5494,14 +5290,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "34", - "id": 397, + "id": 383, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3533:1:1", + "src": "3463:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", @@ -5509,7 +5305,7 @@ }, "value": "4" }, - "src": "3516:18:1", + "src": "3446:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5522,19 +5318,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 407, + "id": 393, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 405, + "id": 391, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 355, - "src": "3591:13:1", + "referencedDeclaration": 341, + "src": "3521:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5545,14 +5341,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "35", - "id": 406, + "id": 392, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3608:1:1", + "src": "3538:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -5560,25 +5356,25 @@ }, "value": "5" }, - "src": "3591:18:1", + "src": "3521:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 414, + "id": 400, "nodeType": "IfStatement", - "src": "3588:69:1", + "src": "3518:69:1", "trueBody": { - "id": 413, + "id": 399, "nodeType": "Block", - "src": "3611:46:1", + "src": "3541:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 411, + "id": 397, "isConstant": false, "isLValue": false, "isPure": false, @@ -5586,34 +5382,34 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3630:11:1", + "src": "3560:11:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 408, + "id": 394, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 327, - "src": "3630:6:1", + "referencedDeclaration": 309, + "src": "3560:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 410, + "id": 396, "indexExpression": { "argumentTypes": null, "hexValue": "35", - "id": 409, + "id": 395, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3637:1:1", + "src": "3567:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -5626,7 +5422,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3630:9:1", + "src": "3560:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5637,25 +5433,25 @@ "typeString": "uint256" } }, - "id": 412, + "id": 398, "nodeType": "ExpressionStatement", - "src": "3630:11:1" + "src": "3560:11:1" } ] } }, - "id": 415, + "id": 401, "nodeType": "IfStatement", - "src": "3513:144:1", + "src": "3443:144:1", "trueBody": { - "id": 404, + "id": 390, "nodeType": "Block", - "src": "3536:46:1", + "src": "3466:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 402, + "id": 388, "isConstant": false, "isLValue": false, "isPure": false, @@ -5663,34 +5459,34 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3555:11:1", + "src": "3485:11:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 399, + "id": 385, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 327, - "src": "3555:6:1", + "referencedDeclaration": 309, + "src": "3485:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 401, + "id": 387, "indexExpression": { "argumentTypes": null, "hexValue": "34", - "id": 400, + "id": 386, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3562:1:1", + "src": "3492:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", @@ -5703,7 +5499,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3555:9:1", + "src": "3485:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5714,25 +5510,25 @@ "typeString": "uint256" } }, - "id": 403, + "id": 389, "nodeType": "ExpressionStatement", - "src": "3555:11:1" + "src": "3485:11:1" } ] } }, - "id": 416, + "id": 402, "nodeType": "IfStatement", - "src": "3438:219:1", + "src": "3368:219:1", "trueBody": { - "id": 395, + "id": 381, "nodeType": "Block", - "src": "3461:46:1", + "src": "3391:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 393, + "id": 379, "isConstant": false, "isLValue": false, "isPure": false, @@ -5740,34 +5536,34 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3480:11:1", + "src": "3410:11:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 390, + "id": 376, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 327, - "src": "3480:6:1", + "referencedDeclaration": 309, + "src": "3410:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 392, + "id": 378, "indexExpression": { "argumentTypes": null, "hexValue": "33", - "id": 391, + "id": 377, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3487:1:1", + "src": "3417:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", @@ -5780,7 +5576,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3480:9:1", + "src": "3410:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5791,25 +5587,25 @@ "typeString": "uint256" } }, - "id": 394, + "id": 380, "nodeType": "ExpressionStatement", - "src": "3480:11:1" + "src": "3410:11:1" } ] } }, - "id": 417, + "id": 403, "nodeType": "IfStatement", - "src": "3363:294:1", + "src": "3293:294:1", "trueBody": { - "id": 386, + "id": 372, "nodeType": "Block", - "src": "3386:46:1", + "src": "3316:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 384, + "id": 370, "isConstant": false, "isLValue": false, "isPure": false, @@ -5817,34 +5613,34 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3405:11:1", + "src": "3335:11:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 381, + "id": 367, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 327, - "src": "3405:6:1", + "referencedDeclaration": 309, + "src": "3335:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 383, + "id": 369, "indexExpression": { "argumentTypes": null, "hexValue": "32", - "id": 382, + "id": 368, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3412:1:1", + "src": "3342:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -5857,7 +5653,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3405:9:1", + "src": "3335:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5868,25 +5664,25 @@ "typeString": "uint256" } }, - "id": 385, + "id": 371, "nodeType": "ExpressionStatement", - "src": "3405:11:1" + "src": "3335:11:1" } ] } }, - "id": 418, + "id": 404, "nodeType": "IfStatement", - "src": "3288:369:1", + "src": "3218:369:1", "trueBody": { - "id": 377, + "id": 363, "nodeType": "Block", - "src": "3311:46:1", + "src": "3241:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 375, + "id": 361, "isConstant": false, "isLValue": false, "isPure": false, @@ -5894,34 +5690,34 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3330:11:1", + "src": "3260:11:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 372, + "id": 358, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 327, - "src": "3330:6:1", + "referencedDeclaration": 309, + "src": "3260:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 374, + "id": 360, "indexExpression": { "argumentTypes": null, "hexValue": "31", - "id": 373, + "id": 359, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3337:1:1", + "src": "3267:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -5934,7 +5730,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3330:9:1", + "src": "3260:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5945,25 +5741,25 @@ "typeString": "uint256" } }, - "id": 376, + "id": 362, "nodeType": "ExpressionStatement", - "src": "3330:11:1" + "src": "3260:11:1" } ] } }, - "id": 419, + "id": 405, "nodeType": "IfStatement", - "src": "3213:444:1", + "src": "3143:444:1", "trueBody": { - "id": 368, + "id": 354, "nodeType": "Block", - "src": "3236:46:1", + "src": "3166:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 366, + "id": 352, "isConstant": false, "isLValue": false, "isPure": false, @@ -5971,34 +5767,34 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3255:11:1", + "src": "3185:11:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 363, + "id": 349, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 327, - "src": "3255:6:1", + "referencedDeclaration": 309, + "src": "3185:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 365, + "id": 351, "indexExpression": { "argumentTypes": null, "hexValue": "30", - "id": 364, + "id": 350, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3262:1:1", + "src": "3192:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6011,7 +5807,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3255:9:1", + "src": "3185:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6022,9 +5818,9 @@ "typeString": "uint256" } }, - "id": 367, + "id": 353, "nodeType": "ExpressionStatement", - "src": "3255:11:1" + "src": "3185:11:1" } ] } @@ -6037,19 +5833,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 336, + "id": 322, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 333, + "id": 320, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "2998:1:1", + "referencedDeclaration": 317, + "src": "2932:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6059,52 +5855,36 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 334, - "name": "_miners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 124, - "src": "3002:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 335, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3002:14:1", + "id": 321, + "name": "minerCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 312, + "src": "2936:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2998:18:1", + "src": "2932:14:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 421, + "id": 407, "initializationExpression": { "assignments": [ - 330 + 317 ], "declarations": [ { "constant": false, - "id": 330, + "id": 317, "name": "i", "nodeType": "VariableDeclaration", - "scope": 571, - "src": "2983:9:1", + "scope": 407, + "src": "2917:9:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6112,10 +5892,10 @@ "typeString": "uint256" }, "typeName": { - "id": 329, + "id": 316, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2983:7:1", + "src": "2917:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6125,18 +5905,18 @@ "visibility": "internal" } ], - "id": 332, + "id": 319, "initialValue": { "argumentTypes": null, "hexValue": "31", - "id": 331, + "id": 318, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2995:1:1", + "src": "2929:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6145,12 +5925,12 @@ "value": "1" }, "nodeType": "VariableDeclarationStatement", - "src": "2983:13:1" + "src": "2917:13:1" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 338, + "id": 324, "isConstant": false, "isLValue": false, "isPure": false, @@ -6158,15 +5938,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3018:3:1", + "src": "2948:3:1", "subExpression": { "argumentTypes": null, - "id": 337, + "id": 323, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "3018:1:1", + "referencedDeclaration": 317, + "src": "2948:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6177,25 +5957,25 @@ "typeString": "uint256" } }, - "id": 339, + "id": 325, "nodeType": "ExpressionStatement", - "src": "3018:3:1" + "src": "2948:3:1" }, "nodeType": "ForStatement", - "src": "2979:701:1" + "src": "2913:697:1" }, { "assignments": [ - 423 + 409 ], "declarations": [ { "constant": false, - "id": 423, + "id": 409, "name": "totalProportion", "nodeType": "VariableDeclaration", - "scope": 571, - "src": "3768:23:1", + "scope": 555, + "src": "3698:23:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6203,10 +5983,10 @@ "typeString": "uint256" }, "typeName": { - "id": 422, + "id": 408, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3768:7:1", + "src": "3698:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6216,14 +5996,14 @@ "visibility": "internal" } ], - "id": 459, + "id": 445, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 458, + "id": 444, "isConstant": false, "isLValue": false, "isPure": false, @@ -6234,7 +6014,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 452, + "id": 438, "isConstant": false, "isLValue": false, "isPure": false, @@ -6245,7 +6025,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 446, + "id": 432, "isConstant": false, "isLValue": false, "isPure": false, @@ -6256,7 +6036,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 440, + "id": 426, "isConstant": false, "isLValue": false, "isPure": false, @@ -6267,7 +6047,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 434, + "id": 420, "isConstant": false, "isLValue": false, "isPure": false, @@ -6278,19 +6058,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 428, + "id": 414, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 424, + "id": 410, "name": "CAT_0_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 106, - "src": "3794:22:1", + "src": "3724:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6302,29 +6082,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 425, + "id": 411, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 327, - "src": "3819:6:1", + "referencedDeclaration": 309, + "src": "3749:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 427, + "id": 413, "indexExpression": { "argumentTypes": null, "hexValue": "30", - "id": 426, + "id": 412, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3826:1:1", + "src": "3756:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6337,13 +6117,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3819:9:1", + "src": "3749:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3794:34:1", + "src": "3724:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6357,19 +6137,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 433, + "id": 419, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 429, + "id": 415, "name": "CAT_1_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109, - "src": "3844:22:1", + "src": "3774:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6381,29 +6161,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 430, + "id": 416, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 327, - "src": "3869:6:1", + "referencedDeclaration": 309, + "src": "3799:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 432, + "id": 418, "indexExpression": { "argumentTypes": null, "hexValue": "31", - "id": 431, + "id": 417, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3876:1:1", + "src": "3806:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6416,19 +6196,19 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3869:9:1", + "src": "3799:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3844:34:1", + "src": "3774:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3794:84:1", + "src": "3724:84:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6442,19 +6222,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 439, + "id": 425, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 435, + "id": 421, "name": "CAT_2_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 112, - "src": "3894:22:1", + "src": "3824:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6466,29 +6246,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 436, + "id": 422, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 327, - "src": "3919:6:1", + "referencedDeclaration": 309, + "src": "3849:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 438, + "id": 424, "indexExpression": { "argumentTypes": null, "hexValue": "32", - "id": 437, + "id": 423, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3926:1:1", + "src": "3856:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -6501,19 +6281,19 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3919:9:1", + "src": "3849:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3894:34:1", + "src": "3824:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3794:134:1", + "src": "3724:134:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6527,19 +6307,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 445, + "id": 431, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 441, + "id": 427, "name": "CAT_3_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 115, - "src": "3944:22:1", + "src": "3874:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6551,29 +6331,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 442, + "id": 428, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 327, - "src": "3969:6:1", + "referencedDeclaration": 309, + "src": "3899:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 444, + "id": 430, "indexExpression": { "argumentTypes": null, "hexValue": "33", - "id": 443, + "id": 429, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3976:1:1", + "src": "3906:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", @@ -6586,19 +6366,19 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3969:9:1", + "src": "3899:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3944:34:1", + "src": "3874:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3794:184:1", + "src": "3724:184:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6612,19 +6392,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 451, + "id": 437, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 447, + "id": 433, "name": "CAT_4_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 118, - "src": "3994:22:1", + "src": "3924:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6636,29 +6416,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 448, + "id": 434, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 327, - "src": "4019:6:1", + "referencedDeclaration": 309, + "src": "3949:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 450, + "id": 436, "indexExpression": { "argumentTypes": null, "hexValue": "34", - "id": 449, + "id": 435, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4026:1:1", + "src": "3956:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", @@ -6671,19 +6451,19 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4019:9:1", + "src": "3949:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3994:34:1", + "src": "3924:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3794:234:1", + "src": "3724:234:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6697,19 +6477,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 457, + "id": 443, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 453, + "id": 439, "name": "CAT_5_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 121, - "src": "4044:22:1", + "src": "3974:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6721,29 +6501,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 454, + "id": 440, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 327, - "src": "4069:6:1", + "referencedDeclaration": 309, + "src": "3999:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 456, + "id": 442, "indexExpression": { "argumentTypes": null, "hexValue": "35", - "id": 455, + "id": 441, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4076:1:1", + "src": "4006:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -6756,37 +6536,39 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4069:9:1", + "src": "3999:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4044:34:1", + "src": "3974:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3794:284:1", + "src": "3724:284:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "3768:310:1" + "src": "3698:310:1" }, { - "assignments": [], + "assignments": [ + 450 + ], "declarations": [ { "constant": false, - "id": 464, + "id": 450, "name": "feePerMiner", "nodeType": "VariableDeclaration", - "scope": 571, - "src": "4099:29:1", + "scope": 555, + "src": "4029:29:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -6795,27 +6577,27 @@ }, "typeName": { "baseType": { - "id": 462, + "id": 448, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4099:7:1", + "src": "4029:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 463, + "id": 449, "length": { "argumentTypes": null, "hexValue": "36", - "id": 461, + "id": 447, "isConstant": false, "isLValue": false, "isPure": false, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4107:1:1", + "src": "4037:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": null, @@ -6824,7 +6606,7 @@ "value": "6" }, "nodeType": "ArrayTypeName", - "src": "4099:10:1", + "src": "4029:10:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr", "typeString": "uint256[6]" @@ -6834,15 +6616,15 @@ "visibility": "internal" } ], - "id": 465, + "id": 451, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "4099:29:1" + "src": "4029:29:1" }, { "expression": { "argumentTypes": null, - "id": 474, + "id": 460, "isConstant": false, "isLValue": false, "isPure": false, @@ -6851,29 +6633,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 466, + "id": 452, "name": "feePerMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 464, - "src": "4141:11:1", + "referencedDeclaration": 450, + "src": "4071:11:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 468, + "id": 454, "indexExpression": { "argumentTypes": null, "hexValue": "30", - "id": 467, + "id": 453, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4153:1:1", + "src": "4083:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6886,7 +6668,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4141:14:1", + "src": "4071:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6900,7 +6682,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 473, + "id": 459, "isConstant": false, "isLValue": false, "isPure": false, @@ -6911,19 +6693,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 471, + "id": 457, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 469, + "id": 455, "name": "currentFeesBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 309, - "src": "4158:18:1", + "referencedDeclaration": 291, + "src": "4088:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6933,18 +6715,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 470, + "id": 456, "name": "CAT_0_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 106, - "src": "4179:22:1", + "src": "4109:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4158:43:1", + "src": "4088:43:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6954,37 +6736,37 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 472, + "id": 458, "name": "totalProportion", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 423, - "src": "4204:15:1", + "referencedDeclaration": 409, + "src": "4134:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4158:61:1", + "src": "4088:61:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4141:78:1", + "src": "4071:78:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 475, + "id": 461, "nodeType": "ExpressionStatement", - "src": "4141:78:1" + "src": "4071:78:1" }, { "expression": { "argumentTypes": null, - "id": 484, + "id": 470, "isConstant": false, "isLValue": false, "isPure": false, @@ -6993,29 +6775,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 476, + "id": 462, "name": "feePerMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 464, - "src": "4230:11:1", + "referencedDeclaration": 450, + "src": "4160:11:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 478, + "id": 464, "indexExpression": { "argumentTypes": null, "hexValue": "31", - "id": 477, + "id": 463, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4242:1:1", + "src": "4172:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -7028,7 +6810,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4230:14:1", + "src": "4160:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7042,7 +6824,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 483, + "id": 469, "isConstant": false, "isLValue": false, "isPure": false, @@ -7053,19 +6835,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 481, + "id": 467, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 479, + "id": 465, "name": "currentFeesBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 309, - "src": "4247:18:1", + "referencedDeclaration": 291, + "src": "4177:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7075,18 +6857,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 480, + "id": 466, "name": "CAT_1_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109, - "src": "4268:22:1", + "src": "4198:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4247:43:1", + "src": "4177:43:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7096,37 +6878,37 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 482, + "id": 468, "name": "totalProportion", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 423, - "src": "4293:15:1", + "referencedDeclaration": 409, + "src": "4223:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4247:61:1", + "src": "4177:61:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4230:78:1", + "src": "4160:78:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 485, + "id": 471, "nodeType": "ExpressionStatement", - "src": "4230:78:1" + "src": "4160:78:1" }, { "expression": { "argumentTypes": null, - "id": 494, + "id": 480, "isConstant": false, "isLValue": false, "isPure": false, @@ -7135,29 +6917,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 486, + "id": 472, "name": "feePerMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 464, - "src": "4319:11:1", + "referencedDeclaration": 450, + "src": "4249:11:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 488, + "id": 474, "indexExpression": { "argumentTypes": null, "hexValue": "32", - "id": 487, + "id": 473, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4331:1:1", + "src": "4261:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -7170,7 +6952,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4319:14:1", + "src": "4249:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7184,7 +6966,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 493, + "id": 479, "isConstant": false, "isLValue": false, "isPure": false, @@ -7195,19 +6977,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 491, + "id": 477, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 489, + "id": 475, "name": "currentFeesBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 309, - "src": "4336:18:1", + "referencedDeclaration": 291, + "src": "4266:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7217,18 +6999,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 490, + "id": 476, "name": "CAT_2_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 112, - "src": "4357:22:1", + "src": "4287:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4336:43:1", + "src": "4266:43:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7238,37 +7020,37 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 492, + "id": 478, "name": "totalProportion", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 423, - "src": "4382:15:1", + "referencedDeclaration": 409, + "src": "4312:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4336:61:1", + "src": "4266:61:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4319:78:1", + "src": "4249:78:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 495, + "id": 481, "nodeType": "ExpressionStatement", - "src": "4319:78:1" + "src": "4249:78:1" }, { "expression": { "argumentTypes": null, - "id": 504, + "id": 490, "isConstant": false, "isLValue": false, "isPure": false, @@ -7277,29 +7059,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 496, + "id": 482, "name": "feePerMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 464, - "src": "4408:11:1", + "referencedDeclaration": 450, + "src": "4338:11:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 498, + "id": 484, "indexExpression": { "argumentTypes": null, "hexValue": "33", - "id": 497, + "id": 483, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4420:1:1", + "src": "4350:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", @@ -7312,7 +7094,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4408:14:1", + "src": "4338:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7326,7 +7108,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 503, + "id": 489, "isConstant": false, "isLValue": false, "isPure": false, @@ -7337,19 +7119,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 501, + "id": 487, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 499, + "id": 485, "name": "currentFeesBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 309, - "src": "4425:18:1", + "referencedDeclaration": 291, + "src": "4355:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7359,18 +7141,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 500, + "id": 486, "name": "CAT_3_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 115, - "src": "4446:22:1", + "src": "4376:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4425:43:1", + "src": "4355:43:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7380,37 +7162,37 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 502, + "id": 488, "name": "totalProportion", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 423, - "src": "4471:15:1", + "referencedDeclaration": 409, + "src": "4401:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4425:61:1", + "src": "4355:61:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4408:78:1", + "src": "4338:78:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 505, + "id": 491, "nodeType": "ExpressionStatement", - "src": "4408:78:1" + "src": "4338:78:1" }, { "expression": { "argumentTypes": null, - "id": 514, + "id": 500, "isConstant": false, "isLValue": false, "isPure": false, @@ -7419,29 +7201,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 506, + "id": 492, "name": "feePerMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 464, - "src": "4497:11:1", + "referencedDeclaration": 450, + "src": "4427:11:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 508, + "id": 494, "indexExpression": { "argumentTypes": null, "hexValue": "34", - "id": 507, + "id": 493, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4509:1:1", + "src": "4439:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", @@ -7454,7 +7236,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4497:14:1", + "src": "4427:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7468,7 +7250,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 513, + "id": 499, "isConstant": false, "isLValue": false, "isPure": false, @@ -7479,19 +7261,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 511, + "id": 497, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 509, + "id": 495, "name": "currentFeesBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 309, - "src": "4514:18:1", + "referencedDeclaration": 291, + "src": "4444:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7501,18 +7283,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 510, + "id": 496, "name": "CAT_4_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 118, - "src": "4535:22:1", + "src": "4465:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4514:43:1", + "src": "4444:43:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7522,37 +7304,37 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 512, + "id": 498, "name": "totalProportion", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 423, - "src": "4560:15:1", + "referencedDeclaration": 409, + "src": "4490:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4514:61:1", + "src": "4444:61:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4497:78:1", + "src": "4427:78:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 515, + "id": 501, "nodeType": "ExpressionStatement", - "src": "4497:78:1" + "src": "4427:78:1" }, { "expression": { "argumentTypes": null, - "id": 524, + "id": 510, "isConstant": false, "isLValue": false, "isPure": false, @@ -7561,29 +7343,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 516, + "id": 502, "name": "feePerMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 464, - "src": "4586:11:1", + "referencedDeclaration": 450, + "src": "4516:11:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 518, + "id": 504, "indexExpression": { "argumentTypes": null, "hexValue": "35", - "id": 517, + "id": 503, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4598:1:1", + "src": "4528:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -7596,7 +7378,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4586:14:1", + "src": "4516:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7610,7 +7392,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 523, + "id": 509, "isConstant": false, "isLValue": false, "isPure": false, @@ -7621,19 +7403,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 521, + "id": 507, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 519, + "id": 505, "name": "currentFeesBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 309, - "src": "4603:18:1", + "referencedDeclaration": 291, + "src": "4533:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7643,18 +7425,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 520, + "id": 506, "name": "CAT_5_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 121, - "src": "4624:22:1", + "src": "4554:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4603:43:1", + "src": "4533:43:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7664,152 +7446,157 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 522, + "id": 508, "name": "totalProportion", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 423, - "src": "4649:15:1", + "referencedDeclaration": 409, + "src": "4579:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4603:61:1", + "src": "4533:61:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4586:78:1", + "src": "4516:78:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 525, + "id": 511, "nodeType": "ExpressionStatement", - "src": "4586:78:1" + "src": "4516:78:1" }, { "body": { - "id": 568, + "id": 553, "nodeType": "Block", - "src": "4764:245:1", + "src": "4698:262:1", "statements": [ { - "expression": { + "assignments": [ + 523 + ], + "declarations": [ + { + "constant": false, + "id": 523, + "name": "algoMiner", + "nodeType": "VariableDeclaration", + "scope": 553, + "src": "4713:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$768", + "typeString": "contract IAlgoMiner" + }, + "typeName": { + "contractScope": null, + "id": 522, + "name": "IAlgoMiner", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 768, + "src": "4713:10:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$768", + "typeString": "contract IAlgoMiner" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 529, + "initialValue": { "argumentTypes": null, - "id": 543, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 525, + "name": "_miners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 124, + "src": "4747:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 527, + "indexExpression": { + "argumentTypes": null, + "id": 526, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 513, + "src": "4755:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4747:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 524, + "name": "IAlgoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 768, + "src": "4736:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$768_$", + "typeString": "type(contract IAlgoMiner)" + } + }, + "id": 528, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "typeConversion", "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 537, - "name": "algoMiner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 341, - "src": "4779:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$783", - "typeString": "contract IAlgoMiner" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 539, - "name": "_miners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 124, - "src": "4802:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 541, - "indexExpression": { - "argumentTypes": null, - "id": 540, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "4810:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4802:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 538, - "name": "IAlgoMiner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 783, - "src": "4791:10:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$783_$", - "typeString": "type(contract IAlgoMiner)" - } - }, - "id": 542, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4791:22:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$783", - "typeString": "contract IAlgoMiner" - } - }, - "src": "4779:34:1", + "names": [], + "nodeType": "FunctionCall", + "src": "4736:22:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$783", + "typeIdentifier": "t_contract$_IAlgoMiner_$768", "typeString": "contract IAlgoMiner" } }, - "id": 544, - "nodeType": "ExpressionStatement", - "src": "4779:34:1" + "nodeType": "VariableDeclarationStatement", + "src": "4713:45:1" }, { "condition": { "argumentTypes": null, - "id": 548, + "id": 533, "isConstant": false, "isLValue": false, "isPure": false, @@ -7817,7 +7604,7 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "4833:21:1", + "src": "4778:21:1", "subExpression": { "argumentTypes": null, "arguments": [], @@ -7825,32 +7612,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 545, + "id": 530, "name": "algoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 341, - "src": "4834:9:1", + "referencedDeclaration": 523, + "src": "4779:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$783", + "typeIdentifier": "t_contract$_IAlgoMiner_$768", "typeString": "contract IAlgoMiner" } }, - "id": 546, + "id": 531, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isMining", "nodeType": "MemberAccess", - "referencedDeclaration": 782, - "src": "4834:18:1", + "referencedDeclaration": 767, + "src": "4779:18:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$", "typeString": "function () view external returns (bool)" } }, - "id": 547, + "id": 532, "isConstant": false, "isLValue": false, "isPure": false, @@ -7858,7 +7645,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4834:20:1", + "src": "4779:20:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7870,93 +7657,96 @@ } }, "falseBody": null, - "id": 550, + "id": 535, "nodeType": "IfStatement", - "src": "4830:34:1", + "src": "4775:34:1", "trueBody": { - "id": 549, + "id": 534, "nodeType": "Continue", - "src": "4856:8:1" + "src": "4801:8:1" } }, { - "expression": { - "argumentTypes": null, - "id": 555, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 551, + "assignments": [ + 537 + ], + "declarations": [ + { + "constant": false, + "id": 537, "name": "minerCategory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 355, - "src": "4881:13:1", + "nodeType": "VariableDeclaration", + "scope": 553, + "src": "4826:19:1", + "stateVariable": false, + "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "id": 552, - "name": "algoMiner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 341, - "src": "4897:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$783", - "typeString": "contract IAlgoMiner" - } - }, - "id": 553, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getCategory", - "nodeType": "MemberAccess", - "referencedDeclaration": 767, - "src": "4897:21:1", + }, + "typeName": { + "id": 536, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4826:5:1", "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", - "typeString": "function () view external returns (uint8)" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } }, - "id": 554, + "value": null, + "visibility": "internal" + } + ], + "id": 541, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 538, + "name": "algoMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 523, + "src": "4848:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAlgoMiner_$768", + "typeString": "contract IAlgoMiner" + } + }, + "id": 539, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4897:23:1", + "memberName": "getCategory", + "nodeType": "MemberAccess", + "referencedDeclaration": 752, + "src": "4848:21:1", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", + "typeString": "function () view external returns (uint8)" } }, - "src": "4881:39:1", + "id": 540, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4848:23:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 556, - "nodeType": "ExpressionStatement", - "src": "4881:39:1" + "nodeType": "VariableDeclarationStatement", + "src": "4826:45:1" }, { "expression": { @@ -7969,32 +7759,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 560, + "id": 545, "name": "algoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 341, - "src": "4948:9:1", + "referencedDeclaration": 523, + "src": "4899:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$783", + "typeIdentifier": "t_contract$_IAlgoMiner_$768", "typeString": "contract IAlgoMiner" } }, - "id": 561, + "id": 546, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getMiner", "nodeType": "MemberAccess", - "referencedDeclaration": 772, - "src": "4948:18:1", + "referencedDeclaration": 757, + "src": "4899:18:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 562, + "id": 547, "isConstant": false, "isLValue": false, "isPure": false, @@ -8002,7 +7792,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4948:20:1", + "src": "4899:20:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8012,26 +7802,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 563, + "id": 548, "name": "feePerMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 464, - "src": "4970:11:1", + "referencedDeclaration": 450, + "src": "4921:11:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 565, + "id": 550, "indexExpression": { "argumentTypes": null, - "id": 564, + "id": 549, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 355, - "src": "4982:13:1", + "referencedDeclaration": 537, + "src": "4933:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -8042,7 +7832,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4970:26:1", + "src": "4921:26:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8062,32 +7852,32 @@ ], "expression": { "argumentTypes": null, - "id": 557, + "id": 542, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 705, - "src": "4928:6:1", + "referencedDeclaration": 690, + "src": "4879:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1111", + "typeIdentifier": "t_contract$_IERC20_$1096", "typeString": "contract IERC20" } }, - "id": 559, + "id": 544, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1136, - "src": "4928:19:1", + "referencedDeclaration": 1121, + "src": "4879:19:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1111_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1111_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1096_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1096_$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 566, + "id": 551, "isConstant": false, "isLValue": false, "isPure": false, @@ -8095,15 +7885,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4928:69:1", + "src": "4879:69:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 567, + "id": 552, "nodeType": "ExpressionStatement", - "src": "4928:69:1" + "src": "4879:69:1" } ] }, @@ -8113,19 +7903,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 533, + "id": 518, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 530, + "id": 516, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "4739:1:1", + "referencedDeclaration": 513, + "src": "4677:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8135,95 +7925,82 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 531, - "name": "_miners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 124, - "src": "4743:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 532, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4743:14:1", + "id": 517, + "name": "minerCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 312, + "src": "4681:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4739:18:1", + "src": "4677:14:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 569, + "id": 554, "initializationExpression": { - "expression": { - "argumentTypes": null, - "id": 528, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 526, + "assignments": [ + 513 + ], + "declarations": [ + { + "constant": false, + "id": 513, "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "4732:1:1", + "nodeType": "VariableDeclaration", + "scope": 554, + "src": "4662:9:1", + "stateVariable": false, + "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "31", - "id": 527, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4736:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" }, - "value": "1" - }, - "src": "4732:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeName": { + "id": 512, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4662:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" } + ], + "id": 515, + "initialValue": { + "argumentTypes": null, + "hexValue": "31", + "id": 514, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4674:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" }, - "id": 529, - "nodeType": "ExpressionStatement", - "src": "4732:5:1" + "nodeType": "VariableDeclarationStatement", + "src": "4662:13:1" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 535, + "id": 520, "isConstant": false, "isLValue": false, "isPure": false, @@ -8231,15 +8008,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4759:3:1", + "src": "4693:3:1", "subExpression": { "argumentTypes": null, - "id": 534, + "id": 519, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "4759:1:1", + "referencedDeclaration": 513, + "src": "4693:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8250,86 +8027,84 @@ "typeString": "uint256" } }, - "id": 536, + "id": 521, "nodeType": "ExpressionStatement", - "src": "4759:3:1" + "src": "4693:3:1" }, "nodeType": "ForStatement", - "src": "4728:281:1" + "src": "4658:302:1" } ] }, "documentation": null, - "id": 571, + "id": 556, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, - "id": 297, + "id": 279, "modifierName": { "argumentTypes": null, - "id": 296, + "id": 278, "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 811, - "src": "2684:13:1", + "referencedDeclaration": 796, + "src": "2572:13:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2684:13:1" + "src": "2572:13:1" }, { "arguments": null, - "id": 299, + "id": 281, "modifierName": { "argumentTypes": null, - "id": 298, + "id": 280, "name": "onlySystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 634, - "src": "2698:10:1", + "referencedDeclaration": 619, + "src": "2586:10:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2698:10:1" + "src": "2586:10:1" } ], "name": "mine", "nodeType": "FunctionDefinition", "parameters": { - "id": 295, + "id": 277, "nodeType": "ParameterList", "parameters": [], - "src": "2674:2:1" + "src": "2562:2:1" }, - "payable": false, "returnParameters": { - "id": 300, + "id": 282, "nodeType": "ParameterList", "parameters": [], - "src": "2709:0:1" + "src": "2597:0:1" }, - "scope": 606, - "src": "2661:2355:1", + "scope": 591, + "src": "2549:2418:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 579, + "id": 564, "nodeType": "Block", - "src": "5065:31:1", + "src": "5016:31:1", "statements": [ { "expression": { @@ -8337,20 +8112,20 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 576, + "id": 561, "name": "_terminate", "nodeType": "Identifier", "overloadedDeclarations": [ - 749 + 734 ], - "referencedDeclaration": 749, - "src": "5076:10:1", + "referencedDeclaration": 734, + "src": "5027:10:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 577, + "id": 562, "isConstant": false, "isLValue": false, "isPure": false, @@ -8358,70 +8133,68 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5076:12:1", + "src": "5027:12:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 578, + "id": 563, "nodeType": "ExpressionStatement", - "src": "5076:12:1" + "src": "5027:12:1" } ] }, "documentation": null, - "id": 580, + "id": 565, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, - "id": 574, + "id": 559, "modifierName": { "argumentTypes": null, - "id": 573, + "id": 558, "name": "onlyCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, - "src": "5052:12:1", + "src": "5003:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "5052:12:1" + "src": "5003:12:1" } ], "name": "terminate", "nodeType": "FunctionDefinition", "parameters": { - "id": 572, + "id": 557, "nodeType": "ParameterList", "parameters": [], - "src": "5042:2:1" + "src": "4993:2:1" }, - "payable": false, "returnParameters": { - "id": 575, + "id": 560, "nodeType": "ParameterList", "parameters": [], - "src": "5065:0:1" + "src": "5016:0:1" }, - "scope": 606, - "src": "5024:72:1", + "scope": 591, + "src": "4975:72:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 590, + "id": 575, "nodeType": "Block", - "src": "5159:44:1", + "src": "5110:44:1", "statements": [ { "expression": { @@ -8430,7 +8203,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 588, + "id": 573, "isConstant": false, "isLValue": false, "isPure": false, @@ -8439,18 +8212,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 585, + "id": 570, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "5177:7:1", + "src": "5128:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 586, + "id": 571, "isConstant": false, "isLValue": true, "isPure": false, @@ -8458,7 +8231,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "5177:14:1", + "src": "5128:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8469,14 +8242,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 587, + "id": 572, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5194:1:1", + "src": "5145:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -8484,45 +8257,43 @@ }, "value": "1" }, - "src": "5177:18:1", + "src": "5128:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 584, - "id": 589, + "functionReturnParameters": 569, + "id": 574, "nodeType": "Return", - "src": "5170:25:1" + "src": "5121:25:1" } ] }, "documentation": null, - "id": 591, + "id": 576, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "getMinerCount", "nodeType": "FunctionDefinition", "parameters": { - "id": 581, + "id": 566, "nodeType": "ParameterList", "parameters": [], - "src": "5126:2:1" + "src": "5077:2:1" }, - "payable": false, "returnParameters": { - "id": 584, + "id": 569, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 583, + "id": 568, "name": "", "nodeType": "VariableDeclaration", - "scope": 591, - "src": "5150:7:1", + "scope": 576, + "src": "5101:7:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8530,10 +8301,10 @@ "typeString": "uint256" }, "typeName": { - "id": 582, + "id": 567, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5150:7:1", + "src": "5101:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8543,56 +8314,56 @@ "visibility": "internal" } ], - "src": "5149:9:1" + "src": "5100:9:1" }, - "scope": 606, - "src": "5104:99:1", + "scope": 591, + "src": "5055:99:1", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 604, + "id": 589, "nodeType": "Block", - "src": "5281:44:1", + "src": "5232:44:1", "statements": [ { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 598, + "id": 583, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "5299:7:1", + "src": "5250:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 602, + "id": 587, "indexExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 601, + "id": 586, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 599, + "id": 584, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 593, - "src": "5307:5:1", + "referencedDeclaration": 578, + "src": "5258:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8603,14 +8374,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 600, + "id": 585, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5315:1:1", + "src": "5266:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -8618,7 +8389,7 @@ }, "value": "1" }, - "src": "5307:9:1", + "src": "5258:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8629,38 +8400,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5299:18:1", + "src": "5250:18:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "functionReturnParameters": 597, - "id": 603, + "functionReturnParameters": 582, + "id": 588, "nodeType": "Return", - "src": "5292:25:1" + "src": "5243:25:1" } ] }, "documentation": null, - "id": 605, + "id": 590, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "getMinerByIndex", "nodeType": "FunctionDefinition", "parameters": { - "id": 594, + "id": 579, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 593, + "id": 578, "name": "index", "nodeType": "VariableDeclaration", - "scope": 605, - "src": "5236:13:1", + "scope": 590, + "src": "5187:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8668,10 +8438,10 @@ "typeString": "uint256" }, "typeName": { - "id": 592, + "id": 577, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5236:7:1", + "src": "5187:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8681,20 +8451,19 @@ "visibility": "internal" } ], - "src": "5235:15:1" + "src": "5186:15:1" }, - "payable": false, "returnParameters": { - "id": 597, + "id": 582, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 596, + "id": 581, "name": "", "nodeType": "VariableDeclaration", - "scope": 605, - "src": "5272:7:1", + "scope": 590, + "src": "5223:7:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8702,10 +8471,11 @@ "typeString": "address" }, "typeName": { - "id": 595, + "id": 580, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5272:7:1", + "src": "5223:7:1", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8715,20 +8485,20 @@ "visibility": "internal" } ], - "src": "5271:9:1" + "src": "5222:9:1" }, - "scope": 606, - "src": "5211:114:1", + "scope": 591, + "src": "5162:114:1", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 607, - "src": "556:4772:1" + "scope": 592, + "src": "555:4724:1" } ], - "src": "0:5328:1" + "src": "0:5279:1" }, "id": 1 }, @@ -8737,31 +8507,30 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol", "exportedSymbols": { "AlgoSystemRole": [ - 693 + 678 ] }, - "id": 694, + "id": 679, "nodeType": "SourceUnit", "nodes": [ { - "id": 608, + "id": 593, "literals": [ "solidity", - "^", - "0.4", - ".24" + "0.5", + ".4" ], "nodeType": "PragmaDirective", - "src": "0:24:2" + "src": "0:22:2" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", - "id": 609, + "id": 594, "nodeType": "ImportDirective", - "scope": 694, - "sourceUnit": 915, - "src": "28:189:2", + "scope": 679, + "sourceUnit": 900, + "src": "26:189:2", "symbolAliases": [], "unitAlias": "" }, @@ -8771,64 +8540,64 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 693, + "id": 678, "linearizedBaseContracts": [ - 693 + 678 ], "name": "AlgoSystemRole", "nodeType": "ContractDefinition", "nodes": [ { - "id": 612, + "id": 597, "libraryName": { "contractScope": null, - "id": 610, + "id": 595, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 914, - "src": "258:5:2", + "referencedDeclaration": 899, + "src": "256:5:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$914", + "typeIdentifier": "t_contract$_Roles_$899", "typeString": "library Roles" } }, "nodeType": "UsingForDirective", - "src": "252:27:2", + "src": "250:27:2", "typeName": { "contractScope": null, - "id": 611, + "id": 596, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 827, - "src": "268:10:2", + "referencedDeclaration": 812, + "src": "266:10:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$827_storage_ptr", + "typeIdentifier": "t_struct$_Role_$812_storage_ptr", "typeString": "struct Roles.Role" } } }, { "constant": false, - "id": 614, + "id": 599, "name": "_systemMembers", "nodeType": "VariableDeclaration", - "scope": 693, - "src": "287:33:2", + "scope": 678, + "src": "285:33:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$827_storage", + "typeIdentifier": "t_struct$_Role_$812_storage", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 613, + "id": 598, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 827, - "src": "287:10:2", + "referencedDeclaration": 812, + "src": "285:10:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$827_storage_ptr", + "typeIdentifier": "t_struct$_Role_$812_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -8837,9 +8606,9 @@ }, { "body": { - "id": 622, + "id": 607, "nodeType": "Block", - "src": "353:41:2", + "src": "351:41:2", "statements": [ { "expression": { @@ -8849,18 +8618,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 618, + "id": 603, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1270, - "src": "375:3:2", + "referencedDeclaration": 1256, + "src": "373:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 619, + "id": 604, "isConstant": false, "isLValue": false, "isPure": false, @@ -8868,32 +8637,32 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "375:10:2", + "src": "373:10:2", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } ], - "id": 617, + "id": 602, "name": "_addSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 680, - "src": "364:10:2", + "referencedDeclaration": 665, + "src": "362:10:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 620, + "id": 605, "isConstant": false, "isLValue": false, "isPure": false, @@ -8901,50 +8670,48 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "364:22:2", + "src": "362:22:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 621, + "id": 606, "nodeType": "ExpressionStatement", - "src": "364:22:2" + "src": "362:22:2" } ] }, "documentation": null, - "id": 623, + "id": 608, "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, + "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 615, + "id": 600, "nodeType": "ParameterList", "parameters": [], - "src": "341:2:2" + "src": "339:2:2" }, - "payable": false, "returnParameters": { - "id": 616, + "id": 601, "nodeType": "ParameterList", "parameters": [], - "src": "353:0:2" + "src": "351:0:2" }, - "scope": 693, - "src": "329:65:2", + "scope": 678, + "src": "327:65:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 633, + "id": 618, "nodeType": "Block", - "src": "424:60:2", + "src": "422:60:2", "statements": [ { "expression": { @@ -8957,18 +8724,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 627, + "id": 612, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1270, - "src": "452:3:2", + "referencedDeclaration": 1256, + "src": "450:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 628, + "id": 613, "isConstant": false, "isLValue": false, "isPure": false, @@ -8976,32 +8743,32 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "452:10:2", + "src": "450:10:2", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } ], - "id": 626, + "id": 611, "name": "isSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "443:8:2", + "referencedDeclaration": 632, + "src": "441:8:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)" } }, - "id": 629, + "id": 614, "isConstant": false, "isLValue": false, "isPure": false, @@ -9009,7 +8776,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "443:20:2", + "src": "441:20:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9023,21 +8790,21 @@ "typeString": "bool" } ], - "id": 625, + "id": 610, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1273, - 1274 + 1259, + 1260 ], - "referencedDeclaration": 1273, - "src": "435:7:2", + "referencedDeclaration": 1259, + "src": "433:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 630, + "id": 615, "isConstant": false, "isLValue": false, "isPure": false, @@ -9045,41 +8812,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "435:29:2", + "src": "433:29:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 631, + "id": 616, "nodeType": "ExpressionStatement", - "src": "435:29:2" + "src": "433:29:2" }, { - "id": 632, + "id": 617, "nodeType": "PlaceholderStatement", - "src": "475:1:2" + "src": "473:1:2" } ] }, "documentation": null, - "id": 634, + "id": 619, "name": "onlySystem", "nodeType": "ModifierDefinition", "parameters": { - "id": 624, + "id": 609, "nodeType": "ParameterList", "parameters": [], - "src": "421:2:2" + "src": "419:2:2" }, - "src": "402:82:2", + "src": "400:82:2", "visibility": "internal" }, { "body": { - "id": 646, + "id": 631, "nodeType": "Block", - "src": "554:53:2", + "src": "552:53:2", "statements": [ { "expression": { @@ -9087,12 +8854,12 @@ "arguments": [ { "argumentTypes": null, - "id": 643, + "id": 628, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 636, - "src": "591:7:2", + "referencedDeclaration": 621, + "src": "589:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9108,32 +8875,32 @@ ], "expression": { "argumentTypes": null, - "id": 641, + "id": 626, "name": "_systemMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 614, - "src": "572:14:2", + "referencedDeclaration": 599, + "src": "570:14:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$827_storage", + "typeIdentifier": "t_struct$_Role_$812_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 642, + "id": 627, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 913, - "src": "572:18:2", + "referencedDeclaration": 898, + "src": "570:18:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$827_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$827_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$812_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$812_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 644, + "id": 629, "isConstant": false, "isLValue": false, "isPure": false, @@ -9141,38 +8908,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "572:27:2", + "src": "570:27:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 640, - "id": 645, + "functionReturnParameters": 625, + "id": 630, "nodeType": "Return", - "src": "565:34:2" + "src": "563:34:2" } ] }, "documentation": null, - "id": 647, + "id": 632, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "isSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 637, + "id": 622, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 636, + "id": 621, "name": "account", "nodeType": "VariableDeclaration", - "scope": 647, - "src": "510:15:2", + "scope": 632, + "src": "508:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9180,10 +8946,11 @@ "typeString": "address" }, "typeName": { - "id": 635, + "id": 620, "name": "address", "nodeType": "ElementaryTypeName", - "src": "510:7:2", + "src": "508:7:2", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9193,20 +8960,19 @@ "visibility": "internal" } ], - "src": "509:17:2" + "src": "507:17:2" }, - "payable": false, "returnParameters": { - "id": 640, + "id": 625, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 639, + "id": 624, "name": "", "nodeType": "VariableDeclaration", - "scope": 647, - "src": "548:4:2", + "scope": 632, + "src": "546:4:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9214,10 +8980,10 @@ "typeString": "bool" }, "typeName": { - "id": 638, + "id": 623, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "548:4:2", + "src": "546:4:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9227,19 +8993,19 @@ "visibility": "internal" } ], - "src": "547:6:2" + "src": "545:6:2" }, - "scope": 693, - "src": "492:115:2", + "scope": 678, + "src": "490:115:2", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 658, + "id": 643, "nodeType": "Block", - "src": "669:38:2", + "src": "667:38:2", "statements": [ { "expression": { @@ -9247,12 +9013,12 @@ "arguments": [ { "argumentTypes": null, - "id": 655, + "id": 640, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 649, - "src": "691:7:2", + "referencedDeclaration": 634, + "src": "689:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9266,18 +9032,18 @@ "typeString": "address" } ], - "id": 654, + "id": 639, "name": "_addSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 680, - "src": "680:10:2", + "referencedDeclaration": 665, + "src": "678:10:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 656, + "id": 641, "isConstant": false, "isLValue": false, "isPure": false, @@ -9285,57 +9051,56 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "680:19:2", + "src": "678:19:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 657, + "id": 642, "nodeType": "ExpressionStatement", - "src": "680:19:2" + "src": "678:19:2" } ] }, "documentation": null, - "id": 659, + "id": 644, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, - "id": 652, + "id": 637, "modifierName": { "argumentTypes": null, - "id": 651, + "id": 636, "name": "onlySystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 634, - "src": "658:10:2", + "referencedDeclaration": 619, + "src": "656:10:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "658:10:2" + "src": "656:10:2" } ], "name": "addSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 650, + "id": 635, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 649, + "id": 634, "name": "account", "nodeType": "VariableDeclaration", - "scope": 659, - "src": "634:15:2", + "scope": 644, + "src": "632:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9343,10 +9108,11 @@ "typeString": "address" }, "typeName": { - "id": 648, + "id": 633, "name": "address", "nodeType": "ElementaryTypeName", - "src": "634:7:2", + "src": "632:7:2", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9356,26 +9122,25 @@ "visibility": "internal" } ], - "src": "633:17:2" + "src": "631:17:2" }, - "payable": false, "returnParameters": { - "id": 653, + "id": 638, "nodeType": "ParameterList", "parameters": [], - "src": "669:0:2" + "src": "667:0:2" }, - "scope": 693, - "src": "615:92:2", + "scope": 678, + "src": "613:92:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 667, + "id": 652, "nodeType": "Block", - "src": "748:44:2", + "src": "746:44:2", "statements": [ { "expression": { @@ -9385,18 +9150,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 663, + "id": 648, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1270, - "src": "773:3:2", + "referencedDeclaration": 1256, + "src": "771:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 664, + "id": 649, "isConstant": false, "isLValue": false, "isPure": false, @@ -9404,32 +9169,32 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "773:10:2", + "src": "771:10:2", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } ], - "id": 662, + "id": 647, "name": "_removeSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 692, - "src": "759:13:2", + "referencedDeclaration": 677, + "src": "757:13:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 665, + "id": 650, "isConstant": false, "isLValue": false, "isPure": false, @@ -9437,50 +9202,48 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "759:25:2", + "src": "757:25:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 666, + "id": 651, "nodeType": "ExpressionStatement", - "src": "759:25:2" + "src": "757:25:2" } ] }, "documentation": null, - "id": 668, + "id": 653, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "renounceSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 660, + "id": 645, "nodeType": "ParameterList", "parameters": [], - "src": "738:2:2" + "src": "736:2:2" }, - "payable": false, "returnParameters": { - "id": 661, + "id": 646, "nodeType": "ParameterList", "parameters": [], - "src": "748:0:2" + "src": "746:0:2" }, - "scope": 693, - "src": "715:77:2", + "scope": 678, + "src": "713:77:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 679, + "id": 664, "nodeType": "Block", - "src": "846:46:2", + "src": "844:46:2", "statements": [ { "expression": { @@ -9488,12 +9251,12 @@ "arguments": [ { "argumentTypes": null, - "id": 676, + "id": 661, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 670, - "src": "876:7:2", + "referencedDeclaration": 655, + "src": "874:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9509,32 +9272,32 @@ ], "expression": { "argumentTypes": null, - "id": 673, + "id": 658, "name": "_systemMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 614, - "src": "857:14:2", + "referencedDeclaration": 599, + "src": "855:14:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$827_storage", + "typeIdentifier": "t_struct$_Role_$812_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 675, + "id": 660, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 859, - "src": "857:18:2", + "referencedDeclaration": 844, + "src": "855:18:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$827_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$827_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$812_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$812_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 677, + "id": 662, "isConstant": false, "isLValue": false, "isPure": false, @@ -9542,37 +9305,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "857:27:2", + "src": "855:27:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 678, + "id": 663, "nodeType": "ExpressionStatement", - "src": "857:27:2" + "src": "855:27:2" } ] }, "documentation": null, - "id": 680, + "id": 665, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "_addSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 671, + "id": 656, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 670, + "id": 655, "name": "account", "nodeType": "VariableDeclaration", - "scope": 680, - "src": "820:15:2", + "scope": 665, + "src": "818:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9580,10 +9342,11 @@ "typeString": "address" }, "typeName": { - "id": 669, + "id": 654, "name": "address", "nodeType": "ElementaryTypeName", - "src": "820:7:2", + "src": "818:7:2", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9593,26 +9356,25 @@ "visibility": "internal" } ], - "src": "819:17:2" + "src": "817:17:2" }, - "payable": false, "returnParameters": { - "id": 672, + "id": 657, "nodeType": "ParameterList", "parameters": [], - "src": "846:0:2" + "src": "844:0:2" }, - "scope": 693, - "src": "800:92:2", + "scope": 678, + "src": "798:92:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 691, + "id": 676, "nodeType": "Block", - "src": "949:49:2", + "src": "947:49:2", "statements": [ { "expression": { @@ -9620,12 +9382,12 @@ "arguments": [ { "argumentTypes": null, - "id": 688, + "id": 673, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 682, - "src": "982:7:2", + "referencedDeclaration": 667, + "src": "980:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9641,32 +9403,32 @@ ], "expression": { "argumentTypes": null, - "id": 685, + "id": 670, "name": "_systemMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 614, - "src": "960:14:2", + "referencedDeclaration": 599, + "src": "958:14:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$827_storage", + "typeIdentifier": "t_struct$_Role_$812_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 687, + "id": 672, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 890, - "src": "960:21:2", + "referencedDeclaration": 875, + "src": "958:21:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$827_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$827_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$812_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$812_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 689, + "id": 674, "isConstant": false, "isLValue": false, "isPure": false, @@ -9674,37 +9436,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "960:30:2", + "src": "958:30:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 690, + "id": 675, "nodeType": "ExpressionStatement", - "src": "960:30:2" + "src": "958:30:2" } ] }, "documentation": null, - "id": 692, + "id": 677, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "_removeSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 683, + "id": 668, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 682, + "id": 667, "name": "account", "nodeType": "VariableDeclaration", - "scope": 692, - "src": "923:15:2", + "scope": 677, + "src": "921:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9712,10 +9473,11 @@ "typeString": "address" }, "typeName": { - "id": 681, + "id": 666, "name": "address", "nodeType": "ElementaryTypeName", - "src": "923:7:2", + "src": "921:7:2", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9725,27 +9487,26 @@ "visibility": "internal" } ], - "src": "922:17:2" + "src": "920:17:2" }, - "payable": false, "returnParameters": { - "id": 684, + "id": 669, "nodeType": "ParameterList", "parameters": [], - "src": "949:0:2" + "src": "947:0:2" }, - "scope": 693, - "src": "900:98:2", + "scope": 678, + "src": "898:98:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 694, - "src": "221:780:2" + "scope": 679, + "src": "219:780:2" } ], - "src": "0:1003:2" + "src": "0:1001:2" }, "id": 2 }, @@ -9754,52 +9515,52 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol", "exportedSymbols": { "ERC20TokenHolder": [ - 750 + 735 ] }, - "id": 751, + "id": 736, "nodeType": "SourceUnit", "nodes": [ { - "id": 695, + "id": 680, "literals": [ "solidity", - "0.4", - ".24" + "0.5", + ".4" ], "nodeType": "PragmaDirective", - "src": "0:23:3" + "src": "0:22:3" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "id": 696, + "id": 681, "nodeType": "ImportDirective", - "scope": 751, - "sourceUnit": 1112, - "src": "27:195:3", + "scope": 736, + "sourceUnit": 1097, + "src": "26:195:3", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", - "id": 697, + "id": 682, "nodeType": "ImportDirective", - "scope": 751, - "sourceUnit": 1256, - "src": "224:198:3", + "scope": 736, + "sourceUnit": 1242, + "src": "223:198:3", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", "file": "./Terminable.sol", - "id": 698, + "id": 683, "nodeType": "ImportDirective", - "scope": 751, - "sourceUnit": 821, - "src": "426:26:3", + "scope": 736, + "sourceUnit": 806, + "src": "425:26:3", "symbolAliases": [], "unitAlias": "" }, @@ -9809,86 +9570,86 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 699, + "id": 684, "name": "Terminable", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 820, - "src": "485:10:3", + "referencedDeclaration": 805, + "src": "484:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_Terminable_$820", + "typeIdentifier": "t_contract$_Terminable_$805", "typeString": "contract Terminable" } }, - "id": 700, + "id": 685, "nodeType": "InheritanceSpecifier", - "src": "485:10:3" + "src": "484:10:3" } ], "contractDependencies": [ - 820 + 805 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 750, + "id": 735, "linearizedBaseContracts": [ - 750, - 820 + 735, + 805 ], "name": "ERC20TokenHolder", "nodeType": "ContractDefinition", "nodes": [ { - "id": 703, + "id": 688, "libraryName": { "contractScope": null, - "id": 701, + "id": 686, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1255, - "src": "509:9:3", + "referencedDeclaration": 1241, + "src": "508:9:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1255", + "typeIdentifier": "t_contract$_SafeERC20_$1241", "typeString": "library SafeERC20" } }, "nodeType": "UsingForDirective", - "src": "503:27:3", + "src": "502:27:3", "typeName": { "contractScope": null, - "id": 702, + "id": 687, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1111, - "src": "523:6:3", + "referencedDeclaration": 1096, + "src": "522:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1111", + "typeIdentifier": "t_contract$_IERC20_$1096", "typeString": "contract IERC20" } } }, { "constant": false, - "id": 705, + "id": 690, "name": "_token", "nodeType": "VariableDeclaration", - "scope": 750, - "src": "538:22:3", + "scope": 735, + "src": "537:22:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1111", + "typeIdentifier": "t_contract$_IERC20_$1096", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 704, + "id": 689, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1111, - "src": "538:6:3", + "referencedDeclaration": 1096, + "src": "537:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1111", + "typeIdentifier": "t_contract$_IERC20_$1096", "typeString": "contract IERC20" } }, @@ -9897,28 +9658,28 @@ }, { "body": { - "id": 718, + "id": 703, "nodeType": "Block", - "src": "625:48:3", + "src": "624:48:3", "statements": [ { "expression": { "argumentTypes": null, - "id": 716, + "id": 701, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 712, + "id": 697, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 705, - "src": "636:6:3", + "referencedDeclaration": 690, + "src": "635:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1111", + "typeIdentifier": "t_contract$_IERC20_$1096", "typeString": "contract IERC20" } }, @@ -9929,12 +9690,12 @@ "arguments": [ { "argumentTypes": null, - "id": 714, + "id": 699, "name": "tokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 707, - "src": "652:12:3", + "referencedDeclaration": 692, + "src": "651:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9948,18 +9709,18 @@ "typeString": "address" } ], - "id": 713, + "id": 698, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1111, - "src": "645:6:3", + "referencedDeclaration": 1096, + "src": "644:6:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$1111_$", + "typeIdentifier": "t_type$_t_contract$_IERC20_$1096_$", "typeString": "type(contract IERC20)" } }, - "id": 715, + "id": 700, "isConstant": false, "isLValue": false, "isPure": false, @@ -9967,63 +9728,62 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "645:20:3", + "src": "644:20:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1111", + "typeIdentifier": "t_contract$_IERC20_$1096", "typeString": "contract IERC20" } }, - "src": "636:29:3", + "src": "635:29:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1111", + "typeIdentifier": "t_contract$_IERC20_$1096", "typeString": "contract IERC20" } }, - "id": 717, + "id": 702, "nodeType": "ExpressionStatement", - "src": "636:29:3" + "src": "635:29:3" } ] }, "documentation": null, - "id": 719, + "id": 704, "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, + "kind": "constructor", "modifiers": [ { "arguments": [], - "id": 710, + "id": 695, "modifierName": { "argumentTypes": null, - "id": 709, + "id": 694, "name": "Terminable", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 820, - "src": "603:10:3", + "referencedDeclaration": 805, + "src": "602:10:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Terminable_$820_$", + "typeIdentifier": "t_type$_t_contract$_Terminable_$805_$", "typeString": "type(contract Terminable)" } }, "nodeType": "ModifierInvocation", - "src": "603:12:3" + "src": "602:12:3" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 708, + "id": 693, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 707, + "id": 692, "name": "tokenAddress", "nodeType": "VariableDeclaration", - "scope": 719, - "src": "581:20:3", + "scope": 704, + "src": "580:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10031,10 +9791,11 @@ "typeString": "address" }, "typeName": { - "id": 706, + "id": 691, "name": "address", "nodeType": "ElementaryTypeName", - "src": "581:7:3", + "src": "580:7:3", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10044,39 +9805,38 @@ "visibility": "internal" } ], - "src": "580:22:3" + "src": "579:22:3" }, - "payable": false, "returnParameters": { - "id": 711, + "id": 696, "nodeType": "ParameterList", "parameters": [], - "src": "625:0:3" + "src": "624:0:3" }, - "scope": 750, - "src": "569:104:3", + "scope": 735, + "src": "568:104:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 748, + "id": 733, "nodeType": "Block", - "src": "712:214:3", + "src": "711:214:3", "statements": [ { "assignments": [ - 723 + 708 ], "declarations": [ { "constant": false, - "id": 723, + "id": 708, "name": "currentBalance", "nodeType": "VariableDeclaration", - "scope": 749, - "src": "723:22:3", + "scope": 733, + "src": "722:22:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10084,10 +9844,10 @@ "typeString": "uint256" }, "typeName": { - "id": 722, + "id": 707, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "723:7:3", + "src": "722:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10097,7 +9857,7 @@ "visibility": "internal" } ], - "id": 730, + "id": 715, "initialValue": { "argumentTypes": null, "arguments": [ @@ -10106,14 +9866,14 @@ "arguments": [ { "argumentTypes": null, - "id": 727, + "id": 712, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1297, - "src": "773:4:3", + "referencedDeclaration": 1284, + "src": "772:4:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20TokenHolder_$750", + "typeIdentifier": "t_contract$_ERC20TokenHolder_$735", "typeString": "contract ERC20TokenHolder" } } @@ -10121,24 +9881,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ERC20TokenHolder_$750", + "typeIdentifier": "t_contract$_ERC20TokenHolder_$735", "typeString": "contract ERC20TokenHolder" } ], - "id": 726, + "id": 711, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "765:7:3", + "src": "764:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 728, + "id": 713, "isConstant": false, "isLValue": false, "isPure": false, @@ -10146,7 +9906,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "765:13:3", + "src": "764:13:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10162,32 +9922,32 @@ ], "expression": { "argumentTypes": null, - "id": 724, + "id": 709, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 705, - "src": "748:6:3", + "referencedDeclaration": 690, + "src": "747:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1111", + "typeIdentifier": "t_contract$_IERC20_$1096", "typeString": "contract IERC20" } }, - "id": 725, + "id": 710, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 1056, - "src": "748:16:3", + "referencedDeclaration": 1070, + "src": "747:16:3", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 729, + "id": 714, "isConstant": false, "isLValue": false, "isPure": false, @@ -10195,14 +9955,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "748:31:3", + "src": "747:31:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "723:56:3" + "src": "722:56:3" }, { "condition": { @@ -10211,19 +9971,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 733, + "id": 718, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 731, + "id": 716, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 723, - "src": "793:14:3", + "referencedDeclaration": 708, + "src": "792:14:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10234,14 +9994,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 732, + "id": 717, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "810:1:3", + "src": "809:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -10249,20 +10009,20 @@ }, "value": "0" }, - "src": "793:18:3", + "src": "792:18:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 742, + "id": 727, "nodeType": "IfStatement", - "src": "790:95:3", + "src": "789:95:3", "trueBody": { - "id": 741, + "id": 726, "nodeType": "Block", - "src": "813:72:3", + "src": "812:72:3", "statements": [ { "expression": { @@ -10270,12 +10030,12 @@ "arguments": [ { "argumentTypes": null, - "id": 737, + "id": 722, "name": "_creator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 787, - "src": "848:8:3", + "referencedDeclaration": 772, + "src": "847:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10283,12 +10043,12 @@ }, { "argumentTypes": null, - "id": 738, + "id": 723, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 723, - "src": "858:14:3", + "referencedDeclaration": 708, + "src": "857:14:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10308,32 +10068,32 @@ ], "expression": { "argumentTypes": null, - "id": 734, + "id": 719, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 705, - "src": "828:6:3", + "referencedDeclaration": 690, + "src": "827:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1111", + "typeIdentifier": "t_contract$_IERC20_$1096", "typeString": "contract IERC20" } }, - "id": 736, + "id": 721, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1136, - "src": "828:19:3", + "referencedDeclaration": 1121, + "src": "827:19:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1111_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1111_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1096_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1096_$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 739, + "id": 724, "isConstant": false, "isLValue": false, "isPure": false, @@ -10341,15 +10101,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "828:45:3", + "src": "827:45:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 740, + "id": 725, "nodeType": "ExpressionStatement", - "src": "828:45:3" + "src": "827:45:3" } ] } @@ -10362,32 +10122,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 743, + "id": 728, "name": "Terminable", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 820, - "src": "895:10:3", + "referencedDeclaration": 805, + "src": "894:10:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Terminable_$820_$", + "typeIdentifier": "t_type$_t_contract$_Terminable_$805_$", "typeString": "type(contract Terminable)" } }, - "id": 745, + "id": 730, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "_terminate", "nodeType": "MemberAccess", - "referencedDeclaration": 819, - "src": "895:21:3", + "referencedDeclaration": 804, + "src": "894:21:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 746, + "id": 731, "isConstant": false, "isLValue": false, "isPure": false, @@ -10395,51 +10155,49 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "895:23:3", + "src": "894:23:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 747, + "id": 732, "nodeType": "ExpressionStatement", - "src": "895:23:3" + "src": "894:23:3" } ] }, "documentation": null, - "id": 749, + "id": 734, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "_terminate", "nodeType": "FunctionDefinition", "parameters": { - "id": 720, + "id": 705, "nodeType": "ParameterList", "parameters": [], - "src": "700:2:3" + "src": "699:2:3" }, - "payable": false, "returnParameters": { - "id": 721, + "id": 706, "nodeType": "ParameterList", "parameters": [], - "src": "712:0:3" + "src": "711:0:3" }, - "scope": 750, - "src": "681:245:3", + "scope": 735, + "src": "680:245:3", "stateMutability": "nonpayable", - "superFunction": 819, + "superFunction": 804, "visibility": "internal" } ], - "scope": 751, - "src": "456:473:3" + "scope": 736, + "src": "455:473:3" } ], - "src": "0:929:3" + "src": "0:928:3" }, "id": 3 }, @@ -10448,21 +10206,21 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", "exportedSymbols": { "IAlgoMiner": [ - 783 + 768 ] }, - "id": 784, + "id": 769, "nodeType": "SourceUnit", "nodes": [ { - "id": 752, + "id": 737, "literals": [ "solidity", - "0.4", - ".24" + "0.5", + ".4" ], "nodeType": "PragmaDirective", - "src": "0:23:4" + "src": "0:22:4" }, { "baseContracts": [], @@ -10470,9 +10228,9 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 783, + "id": 768, "linearizedBaseContracts": [ - 783 + 768 ], "name": "IAlgoMiner", "nodeType": "ContractDefinition", @@ -10480,20 +10238,180 @@ { "body": null, "documentation": null, - "id": 757, + "id": 742, "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "isAlgoMiner", "nodeType": "FunctionDefinition", + "parameters": { + "id": 738, + "nodeType": "ParameterList", + "parameters": [], + "src": "73:2:4" + }, + "returnParameters": { + "id": 741, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 740, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 742, + "src": "97:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 739, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "97:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "96:6:4" + }, + "scope": 768, + "src": "53:50:4", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 747, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getMinerType", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 743, + "nodeType": "ParameterList", + "parameters": [], + "src": "130:2:4" + }, + "returnParameters": { + "id": 746, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 745, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 747, + "src": "154:5:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 744, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "154:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "153:7:4" + }, + "scope": 768, + "src": "109:52:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 752, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getCategory", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 748, + "nodeType": "ParameterList", + "parameters": [], + "src": "187:2:4" + }, + "returnParameters": { + "id": 751, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 750, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 752, + "src": "211:5:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 749, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "211:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "210:7:4" + }, + "scope": 768, + "src": "167:51:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 757, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getMiner", + "nodeType": "FunctionDefinition", "parameters": { "id": 753, "nodeType": "ParameterList", "parameters": [], - "src": "74:2:4" + "src": "241:2:4" }, - "payable": false, "returnParameters": { "id": 756, "nodeType": "ParameterList", @@ -10504,32 +10422,33 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 757, - "src": "98:4:4", + "src": "265:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { "id": 754, - "name": "bool", + "name": "address", "nodeType": "ElementaryTypeName", - "src": "98:4:4", + "src": "265:7:4", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" } }, "value": null, "visibility": "internal" } ], - "src": "97:6:4" + "src": "264:9:4" }, - "scope": 783, - "src": "54:50:4", - "stateMutability": "pure", + "scope": 768, + "src": "224:50:4", + "stateMutability": "view", "superFunction": null, "visibility": "public" }, @@ -10538,18 +10457,16 @@ "documentation": null, "id": 762, "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], - "name": "getMinerType", + "name": "getReferral", "nodeType": "FunctionDefinition", "parameters": { "id": 758, "nodeType": "ParameterList", "parameters": [], - "src": "131:2:4" + "src": "300:2:4" }, - "payable": false, "returnParameters": { "id": 761, "nodeType": "ParameterList", @@ -10560,31 +10477,32 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 762, - "src": "155:5:4", + "src": "324:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { "id": 759, - "name": "uint8", + "name": "address", "nodeType": "ElementaryTypeName", - "src": "155:5:4", + "src": "324:7:4", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_address", + "typeString": "address" } }, "value": null, "visibility": "internal" } ], - "src": "154:7:4" + "src": "323:9:4" }, - "scope": 783, - "src": "110:52:4", + "scope": 768, + "src": "280:53:4", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -10594,18 +10512,16 @@ "documentation": null, "id": 767, "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], - "name": "getCategory", + "name": "isMining", "nodeType": "FunctionDefinition", "parameters": { "id": 763, "nodeType": "ParameterList", "parameters": [], - "src": "188:2:4" + "src": "356:2:4" }, - "payable": false, "returnParameters": { "id": 766, "nodeType": "ParameterList", @@ -10616,175 +10532,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 767, - "src": "212:5:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 764, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "212:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "211:7:4" - }, - "scope": 783, - "src": "168:51:4", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": null, - "documentation": null, - "id": 772, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getMiner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 768, - "nodeType": "ParameterList", - "parameters": [], - "src": "242:2:4" - }, - "payable": false, - "returnParameters": { - "id": 771, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 770, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 772, - "src": "266:7:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 769, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "266:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "265:9:4" - }, - "scope": 783, - "src": "225:50:4", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": null, - "documentation": null, - "id": 777, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getReferral", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 773, - "nodeType": "ParameterList", - "parameters": [], - "src": "301:2:4" - }, - "payable": false, - "returnParameters": { - "id": 776, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 775, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 777, - "src": "325:7:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 774, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "325:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "324:9:4" - }, - "scope": 783, - "src": "281:53:4", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": null, - "documentation": null, - "id": 782, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "isMining", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 778, - "nodeType": "ParameterList", - "parameters": [], - "src": "357:2:4" - }, - "payable": false, - "returnParameters": { - "id": 781, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 780, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 782, - "src": "381:4:4", + "src": "380:4:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10792,10 +10540,10 @@ "typeString": "bool" }, "typeName": { - "id": 779, + "id": 764, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "381:4:4", + "src": "380:4:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10805,20 +10553,20 @@ "visibility": "internal" } ], - "src": "380:6:4" + "src": "379:6:4" }, - "scope": 783, - "src": "340:47:4", + "scope": 768, + "src": "339:47:4", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 784, - "src": "27:363:4" + "scope": 769, + "src": "26:363:4" } ], - "src": "0:390:4" + "src": "0:389:4" }, "id": 4 }, @@ -10827,21 +10575,21 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", "exportedSymbols": { "Terminable": [ - 820 + 805 ] }, - "id": 821, + "id": 806, "nodeType": "SourceUnit", "nodes": [ { - "id": 785, + "id": 770, "literals": [ "solidity", - "0.4", - ".24" + "0.5", + ".4" ], "nodeType": "PragmaDirective", - "src": "0:23:5" + "src": "0:22:5" }, { "baseContracts": [], @@ -10849,20 +10597,20 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 820, + "id": 805, "linearizedBaseContracts": [ - 820 + 805 ], "name": "Terminable", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 787, + "id": 772, "name": "_creator", "nodeType": "VariableDeclaration", - "scope": 820, - "src": "56:25:5", + "scope": 805, + "src": "55:25:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -10870,10 +10618,11 @@ "typeString": "address" }, "typeName": { - "id": 786, + "id": 771, "name": "address", "nodeType": "ElementaryTypeName", - "src": "56:7:5", + "src": "55:7:5", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10884,11 +10633,11 @@ }, { "constant": false, - "id": 789, + "id": 774, "name": "_terminated", "nodeType": "VariableDeclaration", - "scope": 820, - "src": "88:25:5", + "scope": 805, + "src": "87:25:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -10896,10 +10645,10 @@ "typeString": "bool" }, "typeName": { - "id": 788, + "id": 773, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "88:4:5", + "src": "87:4:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10910,26 +10659,26 @@ }, { "body": { - "id": 801, + "id": 786, "nodeType": "Block", - "src": "145:70:5", + "src": "144:70:5", "statements": [ { "expression": { "argumentTypes": null, - "id": 795, + "id": 780, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 792, + "id": 777, "name": "_creator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 787, - "src": "156:8:5", + "referencedDeclaration": 772, + "src": "155:8:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10941,18 +10690,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 793, + "id": 778, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1270, - "src": "167:3:5", + "referencedDeclaration": 1256, + "src": "166:3:5", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 794, + "id": 779, "isConstant": false, "isLValue": false, "isPure": false, @@ -10960,38 +10709,38 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "167:10:5", + "src": "166:10:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "src": "156:21:5", + "src": "155:21:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 796, + "id": 781, "nodeType": "ExpressionStatement", - "src": "156:21:5" + "src": "155:21:5" }, { "expression": { "argumentTypes": null, - "id": 799, + "id": 784, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 797, + "id": 782, "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 789, - "src": "188:11:5", + "referencedDeclaration": 774, + "src": "187:11:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11002,14 +10751,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 798, + "id": 783, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "202:5:5", + "src": "201:5:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -11017,50 +10766,48 @@ }, "value": "false" }, - "src": "188:19:5", + "src": "187:19:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 800, + "id": 785, "nodeType": "ExpressionStatement", - "src": "188:19:5" + "src": "187:19:5" } ] }, "documentation": null, - "id": 802, + "id": 787, "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, + "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 790, + "id": 775, "nodeType": "ParameterList", "parameters": [], - "src": "133:2:5" + "src": "132:2:5" }, - "payable": false, "returnParameters": { - "id": 791, + "id": 776, "nodeType": "ParameterList", "parameters": [], - "src": "145:0:5" + "src": "144:0:5" }, - "scope": 820, - "src": "122:93:5", + "scope": 805, + "src": "121:93:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 810, + "id": 795, "nodeType": "Block", - "src": "248:52:5", + "src": "247:52:5", "statements": [ { "expression": { @@ -11068,7 +10815,7 @@ "arguments": [ { "argumentTypes": null, - "id": 806, + "id": 791, "isConstant": false, "isLValue": false, "isPure": false, @@ -11076,15 +10823,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "267:12:5", + "src": "266:12:5", "subExpression": { "argumentTypes": null, - "id": 805, + "id": 790, "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 789, - "src": "268:11:5", + "referencedDeclaration": 774, + "src": "267:11:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11103,21 +10850,21 @@ "typeString": "bool" } ], - "id": 804, + "id": 789, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1273, - 1274 + 1259, + 1260 ], - "referencedDeclaration": 1273, - "src": "259:7:5", + "referencedDeclaration": 1259, + "src": "258:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 807, + "id": 792, "isConstant": false, "isLValue": false, "isPure": false, @@ -11125,58 +10872,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "259:21:5", + "src": "258:21:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 808, + "id": 793, "nodeType": "ExpressionStatement", - "src": "259:21:5" + "src": "258:21:5" }, { - "id": 809, + "id": 794, "nodeType": "PlaceholderStatement", - "src": "291:1:5" + "src": "290:1:5" } ] }, "documentation": null, - "id": 811, + "id": 796, "name": "notTerminated", "nodeType": "ModifierDefinition", "parameters": { - "id": 803, + "id": 788, "nodeType": "ParameterList", "parameters": [], - "src": "245:2:5" + "src": "244:2:5" }, - "src": "223:77:5", + "src": "222:77:5", "visibility": "internal" }, { "body": { - "id": 818, + "id": 803, "nodeType": "Block", - "src": "339:37:5", + "src": "338:37:5", "statements": [ { "expression": { "argumentTypes": null, - "id": 816, + "id": 801, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 814, + "id": 799, "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 789, - "src": "350:11:5", + "referencedDeclaration": 774, + "src": "349:11:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11187,14 +10934,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 815, + "id": 800, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "364:4:5", + "src": "363:4:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -11202,51 +10949,49 @@ }, "value": "true" }, - "src": "350:18:5", + "src": "349:18:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 817, + "id": 802, "nodeType": "ExpressionStatement", - "src": "350:18:5" + "src": "349:18:5" } ] }, "documentation": null, - "id": 819, + "id": 804, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "_terminate", "nodeType": "FunctionDefinition", "parameters": { - "id": 812, + "id": 797, "nodeType": "ParameterList", "parameters": [], - "src": "327:2:5" + "src": "326:2:5" }, - "payable": false, "returnParameters": { - "id": 813, + "id": 798, "nodeType": "ParameterList", "parameters": [], - "src": "339:0:5" + "src": "338:0:5" }, - "scope": 820, - "src": "308:68:5", + "scope": 805, + "src": "307:68:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 821, - "src": "27:352:5" + "scope": 806, + "src": "26:352:5" } ], - "src": "0:379:5" + "src": "0:378:5" }, "id": 5 }, @@ -11255,22 +11000,22 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "exportedSymbols": { "Roles": [ - 914 + 899 ] }, - "id": 915, + "id": 900, "nodeType": "SourceUnit", "nodes": [ { - "id": 822, + "id": 807, "literals": [ "solidity", "^", - "0.4", - ".24" + "0.5", + ".0" ], "nodeType": "PragmaDirective", - "src": "0:24:6" + "src": "0:23:6" }, { "baseContracts": [], @@ -11278,24 +11023,24 @@ "contractKind": "library", "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", "fullyImplemented": true, - "id": 914, + "id": 899, "linearizedBaseContracts": [ - 914 + 899 ], "name": "Roles", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "Roles.Role", - "id": 827, + "id": 812, "members": [ { "constant": false, - "id": 826, + "id": 811, "name": "bearer", "nodeType": "VariableDeclaration", - "scope": 827, - "src": "145:32:6", + "scope": 812, + "src": "150:32:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11303,28 +11048,28 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 825, + "id": 810, "keyType": { - "id": 823, + "id": 808, "name": "address", "nodeType": "ElementaryTypeName", - "src": "154:7:6", + "src": "159:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "145:25:6", + "src": "150:25:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 824, + "id": 809, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "165:4:6", + "src": "170:4:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11337,15 +11082,15 @@ ], "name": "Role", "nodeType": "StructDefinition", - "scope": 914, - "src": "127:55:6", + "scope": 899, + "src": "128:61:6", "visibility": "public" }, { "body": { - "id": 858, + "id": 843, "nodeType": "Block", - "src": "302:109:6", + "src": "317:123:6", "statements": [ { "expression": { @@ -11357,19 +11102,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 839, + "id": 824, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 835, + "id": 820, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 831, - "src": "316:7:6", + "referencedDeclaration": 816, + "src": "335:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11383,14 +11128,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 837, + "id": 822, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "335:1:6", + "src": "354:1:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -11406,20 +11151,20 @@ "typeString": "int_const 0" } ], - "id": 836, + "id": 821, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "327:7:6", + "src": "346:7:6", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 838, + "id": 823, "isConstant": false, "isLValue": false, "isPure": true, @@ -11427,13 +11172,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "327:10:6", + "src": "346:10:6", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "src": "316:21:6", + "src": "335:21:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11447,21 +11192,21 @@ "typeString": "bool" } ], - "id": 834, + "id": 819, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1273, - 1274 + 1259, + 1260 ], - "referencedDeclaration": 1273, - "src": "308:7:6", + "referencedDeclaration": 1259, + "src": "327:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 840, + "id": 825, "isConstant": false, "isLValue": false, "isPure": false, @@ -11469,15 +11214,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "308:30:6", + "src": "327:30:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 841, + "id": 826, "nodeType": "ExpressionStatement", - "src": "308:30:6" + "src": "327:30:6" }, { "expression": { @@ -11485,7 +11230,7 @@ "arguments": [ { "argumentTypes": null, - "id": 847, + "id": 832, "isConstant": false, "isLValue": false, "isPure": false, @@ -11493,31 +11238,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "352:19:6", + "src": "375:19:6", "subExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 844, + "id": 829, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 829, - "src": "357:4:6", + "referencedDeclaration": 814, + "src": "380:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$827_storage_ptr", + "typeIdentifier": "t_struct$_Role_$812_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, { "argumentTypes": null, - "id": 845, + "id": 830, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 831, - "src": "363:7:6", + "referencedDeclaration": 816, + "src": "386:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11527,7 +11272,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Role_$827_storage_ptr", + "typeIdentifier": "t_struct$_Role_$812_storage_ptr", "typeString": "struct Roles.Role storage pointer" }, { @@ -11535,18 +11280,18 @@ "typeString": "address" } ], - "id": 843, + "id": 828, "name": "has", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 913, - "src": "353:3:6", + "referencedDeclaration": 898, + "src": "376:3:6", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$827_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$812_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 846, + "id": 831, "isConstant": false, "isLValue": false, "isPure": false, @@ -11554,7 +11299,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "353:18:6", + "src": "376:18:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11573,21 +11318,21 @@ "typeString": "bool" } ], - "id": 842, + "id": 827, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1273, - 1274 + 1259, + 1260 ], - "referencedDeclaration": 1273, - "src": "344:7:6", + "referencedDeclaration": 1259, + "src": "367:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 848, + "id": 833, "isConstant": false, "isLValue": false, "isPure": false, @@ -11595,20 +11340,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "344:28:6", + "src": "367:28:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 849, + "id": 834, "nodeType": "ExpressionStatement", - "src": "344:28:6" + "src": "367:28:6" }, { "expression": { "argumentTypes": null, - "id": 856, + "id": 841, "isConstant": false, "isLValue": false, "isPure": false, @@ -11619,40 +11364,40 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 850, + "id": 835, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 829, - "src": "379:4:6", + "referencedDeclaration": 814, + "src": "406:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$827_storage_ptr", + "typeIdentifier": "t_struct$_Role_$812_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 853, + "id": 838, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 826, - "src": "379:11:6", + "referencedDeclaration": 811, + "src": "406:11:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 854, + "id": 839, "indexExpression": { "argumentTypes": null, - "id": 852, + "id": 837, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 831, - "src": "391:7:6", + "referencedDeclaration": 816, + "src": "418:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11663,7 +11408,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "379:20:6", + "src": "406:20:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11674,14 +11419,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 855, + "id": 840, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "402:4:6", + "src": "429:4:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -11689,52 +11434,51 @@ }, "value": "true" }, - "src": "379:27:6", + "src": "406:27:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 857, + "id": 842, "nodeType": "ExpressionStatement", - "src": "379:27:6" + "src": "406:27:6" } ] }, "documentation": "@dev give an account access to this role", - "id": 859, + "id": 844, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 832, + "id": 817, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 829, + "id": 814, "name": "role", "nodeType": "VariableDeclaration", - "scope": 859, - "src": "257:17:6", + "scope": 844, + "src": "272:17:6", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$827_storage_ptr", + "typeIdentifier": "t_struct$_Role_$812_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 828, + "id": 813, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 827, - "src": "257:4:6", + "referencedDeclaration": 812, + "src": "272:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$827_storage_ptr", + "typeIdentifier": "t_struct$_Role_$812_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -11743,11 +11487,11 @@ }, { "constant": false, - "id": 831, + "id": 816, "name": "account", "nodeType": "VariableDeclaration", - "scope": 859, - "src": "276:15:6", + "scope": 844, + "src": "291:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11755,10 +11499,11 @@ "typeString": "address" }, "typeName": { - "id": 830, + "id": 815, "name": "address", "nodeType": "ElementaryTypeName", - "src": "276:7:6", + "src": "291:7:6", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11768,26 +11513,25 @@ "visibility": "internal" } ], - "src": "256:36:6" + "src": "271:36:6" }, - "payable": false, "returnParameters": { - "id": 833, + "id": 818, "nodeType": "ParameterList", "parameters": [], - "src": "302:0:6" + "src": "317:0:6" }, - "scope": 914, - "src": "244:167:6", + "scope": 899, + "src": "259:181:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 889, + "id": 874, "nodeType": "Block", - "src": "538:109:6", + "src": "575:123:6", "statements": [ { "expression": { @@ -11799,19 +11543,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 871, + "id": 856, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 867, + "id": 852, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 863, - "src": "552:7:6", + "referencedDeclaration": 848, + "src": "593:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11825,14 +11569,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 869, + "id": 854, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "571:1:6", + "src": "612:1:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -11848,20 +11592,20 @@ "typeString": "int_const 0" } ], - "id": 868, + "id": 853, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "563:7:6", + "src": "604:7:6", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 870, + "id": 855, "isConstant": false, "isLValue": false, "isPure": true, @@ -11869,13 +11613,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "563:10:6", + "src": "604:10:6", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "src": "552:21:6", + "src": "593:21:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11889,21 +11633,21 @@ "typeString": "bool" } ], - "id": 866, + "id": 851, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1273, - 1274 + 1259, + 1260 ], - "referencedDeclaration": 1273, - "src": "544:7:6", + "referencedDeclaration": 1259, + "src": "585:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 872, + "id": 857, "isConstant": false, "isLValue": false, "isPure": false, @@ -11911,15 +11655,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "544:30:6", + "src": "585:30:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 873, + "id": 858, "nodeType": "ExpressionStatement", - "src": "544:30:6" + "src": "585:30:6" }, { "expression": { @@ -11930,25 +11674,25 @@ "arguments": [ { "argumentTypes": null, - "id": 876, + "id": 861, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 861, - "src": "592:4:6", + "referencedDeclaration": 846, + "src": "637:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$827_storage_ptr", + "typeIdentifier": "t_struct$_Role_$812_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, { "argumentTypes": null, - "id": 877, + "id": 862, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 863, - "src": "598:7:6", + "referencedDeclaration": 848, + "src": "643:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11958,7 +11702,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Role_$827_storage_ptr", + "typeIdentifier": "t_struct$_Role_$812_storage_ptr", "typeString": "struct Roles.Role storage pointer" }, { @@ -11966,18 +11710,18 @@ "typeString": "address" } ], - "id": 875, + "id": 860, "name": "has", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 913, - "src": "588:3:6", + "referencedDeclaration": 898, + "src": "633:3:6", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$827_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$812_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 878, + "id": 863, "isConstant": false, "isLValue": false, "isPure": false, @@ -11985,7 +11729,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "588:18:6", + "src": "633:18:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11999,21 +11743,21 @@ "typeString": "bool" } ], - "id": 874, + "id": 859, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1273, - 1274 + 1259, + 1260 ], - "referencedDeclaration": 1273, - "src": "580:7:6", + "referencedDeclaration": 1259, + "src": "625:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 879, + "id": 864, "isConstant": false, "isLValue": false, "isPure": false, @@ -12021,20 +11765,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "580:27:6", + "src": "625:27:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 880, + "id": 865, "nodeType": "ExpressionStatement", - "src": "580:27:6" + "src": "625:27:6" }, { "expression": { "argumentTypes": null, - "id": 887, + "id": 872, "isConstant": false, "isLValue": false, "isPure": false, @@ -12045,40 +11789,40 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 881, + "id": 866, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 861, - "src": "614:4:6", + "referencedDeclaration": 846, + "src": "663:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$827_storage_ptr", + "typeIdentifier": "t_struct$_Role_$812_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 884, + "id": 869, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 826, - "src": "614:11:6", + "referencedDeclaration": 811, + "src": "663:11:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 885, + "id": 870, "indexExpression": { "argumentTypes": null, - "id": 883, + "id": 868, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 863, - "src": "626:7:6", + "referencedDeclaration": 848, + "src": "675:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12089,7 +11833,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "614:20:6", + "src": "663:20:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -12100,14 +11844,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 886, + "id": 871, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "637:5:6", + "src": "686:5:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -12115,52 +11859,51 @@ }, "value": "false" }, - "src": "614:28:6", + "src": "663:28:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 888, + "id": 873, "nodeType": "ExpressionStatement", - "src": "614:28:6" + "src": "663:28:6" } ] }, "documentation": "@dev remove an account's access to this role", - "id": 890, + "id": 875, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "remove", "nodeType": "FunctionDefinition", "parameters": { - "id": 864, + "id": 849, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 861, + "id": 846, "name": "role", "nodeType": "VariableDeclaration", - "scope": 890, - "src": "493:17:6", + "scope": 875, + "src": "530:17:6", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$827_storage_ptr", + "typeIdentifier": "t_struct$_Role_$812_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 860, + "id": 845, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 827, - "src": "493:4:6", + "referencedDeclaration": 812, + "src": "530:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$827_storage_ptr", + "typeIdentifier": "t_struct$_Role_$812_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -12169,11 +11912,11 @@ }, { "constant": false, - "id": 863, + "id": 848, "name": "account", "nodeType": "VariableDeclaration", - "scope": 890, - "src": "512:15:6", + "scope": 875, + "src": "549:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12181,10 +11924,11 @@ "typeString": "address" }, "typeName": { - "id": 862, + "id": 847, "name": "address", "nodeType": "ElementaryTypeName", - "src": "512:7:6", + "src": "549:7:6", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12194,26 +11938,25 @@ "visibility": "internal" } ], - "src": "492:36:6" + "src": "529:36:6" }, - "payable": false, "returnParameters": { - "id": 865, + "id": 850, "nodeType": "ParameterList", "parameters": [], - "src": "538:0:6" + "src": "575:0:6" }, - "scope": 914, - "src": "477:170:6", + "scope": 899, + "src": "514:184:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 912, + "id": 897, "nodeType": "Block", - "src": "817:74:6", + "src": "864:84:6", "statements": [ { "expression": { @@ -12225,19 +11968,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 904, + "id": 889, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 900, + "id": 885, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 894, - "src": "831:7:6", + "referencedDeclaration": 879, + "src": "882:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12251,14 +11994,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 902, + "id": 887, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "850:1:6", + "src": "901:1:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -12274,20 +12017,20 @@ "typeString": "int_const 0" } ], - "id": 901, + "id": 886, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "842:7:6", + "src": "893:7:6", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 903, + "id": 888, "isConstant": false, "isLValue": false, "isPure": true, @@ -12295,13 +12038,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "842:10:6", + "src": "893:10:6", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "src": "831:21:6", + "src": "882:21:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -12315,21 +12058,21 @@ "typeString": "bool" } ], - "id": 899, + "id": 884, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1273, - 1274 + 1259, + 1260 ], - "referencedDeclaration": 1273, - "src": "823:7:6", + "referencedDeclaration": 1259, + "src": "874:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 905, + "id": 890, "isConstant": false, "isLValue": false, "isPure": false, @@ -12337,15 +12080,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "823:30:6", + "src": "874:30:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 906, + "id": 891, "nodeType": "ExpressionStatement", - "src": "823:30:6" + "src": "874:30:6" }, { "expression": { @@ -12354,40 +12097,40 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 907, + "id": 892, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 892, - "src": "866:4:6", + "referencedDeclaration": 877, + "src": "921:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$827_storage_ptr", + "typeIdentifier": "t_struct$_Role_$812_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 908, + "id": 893, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 826, - "src": "866:11:6", + "referencedDeclaration": 811, + "src": "921:11:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 910, + "id": 895, "indexExpression": { "argumentTypes": null, - "id": 909, + "id": 894, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 894, - "src": "878:7:6", + "referencedDeclaration": 879, + "src": "933:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12398,53 +12141,52 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "866:20:6", + "src": "921:20:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 898, - "id": 911, + "functionReturnParameters": 883, + "id": 896, "nodeType": "Return", - "src": "859:27:6" + "src": "914:27:6" } ] }, "documentation": "@dev check if an account has this role\n@return bool", - "id": 913, + "id": 898, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "has", "nodeType": "FunctionDefinition", "parameters": { - "id": 895, + "id": 880, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 892, + "id": 877, "name": "role", "nodeType": "VariableDeclaration", - "scope": 913, - "src": "738:17:6", + "scope": 898, + "src": "799:17:6", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$827_storage_ptr", + "typeIdentifier": "t_struct$_Role_$812_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 891, + "id": 876, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 827, - "src": "738:4:6", + "referencedDeclaration": 812, + "src": "799:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$827_storage_ptr", + "typeIdentifier": "t_struct$_Role_$812_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -12453,11 +12195,11 @@ }, { "constant": false, - "id": 894, + "id": 879, "name": "account", "nodeType": "VariableDeclaration", - "scope": 913, - "src": "757:15:6", + "scope": 898, + "src": "818:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12465,10 +12207,11 @@ "typeString": "address" }, "typeName": { - "id": 893, + "id": 878, "name": "address", "nodeType": "ElementaryTypeName", - "src": "757:7:6", + "src": "818:7:6", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12478,20 +12221,19 @@ "visibility": "internal" } ], - "src": "737:36:6" + "src": "798:36:6" }, - "payable": false, "returnParameters": { - "id": 898, + "id": 883, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 897, + "id": 882, "name": "", "nodeType": "VariableDeclaration", - "scope": 913, - "src": "809:4:6", + "scope": 898, + "src": "858:4:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12499,10 +12241,10 @@ "typeString": "bool" }, "typeName": { - "id": 896, + "id": 881, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "809:4:6", + "src": "858:4:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -12512,20 +12254,20 @@ "visibility": "internal" } ], - "src": "808:6:6" + "src": "857:6:6" }, - "scope": 914, - "src": "725:166:6", + "scope": 899, + "src": "786:162:6", "stateMutability": "view", "superFunction": null, "visibility": "internal" } ], - "scope": 915, - "src": "109:784:6" + "scope": 900, + "src": "108:842:6" } ], - "src": "0:894:6" + "src": "0:951:6" }, "id": 6 }, @@ -12534,41 +12276,41 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "exportedSymbols": { "SafeMath": [ - 1042 + 1027 ] }, - "id": 1043, + "id": 1028, "nodeType": "SourceUnit", "nodes": [ { - "id": 916, + "id": 901, "literals": [ "solidity", "^", - "0.4", - ".24" + "0.5", + ".0" ], "nodeType": "PragmaDirective", - "src": "0:24:7" + "src": "0:23:7" }, { "baseContracts": [], "contractDependencies": [], "contractKind": "library", - "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", + "documentation": "@title SafeMath\n@dev Unsigned math operations with safety checks that revert on error", "fullyImplemented": true, - "id": 1042, + "id": 1027, "linearizedBaseContracts": [ - 1042 + 1027 ], "name": "SafeMath", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 948, + "id": 933, "nodeType": "Block", - "src": "271:314:7", + "src": "296:354:7", "statements": [ { "condition": { @@ -12577,19 +12319,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 927, + "id": 912, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 925, + "id": 910, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 918, - "src": "486:1:7", + "referencedDeclaration": 903, + "src": "527:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12600,14 +12342,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 926, + "id": 911, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "491:1:7", + "src": "532:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -12615,33 +12357,33 @@ }, "value": "0" }, - "src": "486:6:7", + "src": "527:6:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 931, + "id": 916, "nodeType": "IfStatement", - "src": "482:35:7", + "src": "523:45:7", "trueBody": { - "id": 930, + "id": 915, "nodeType": "Block", - "src": "494:23:7", + "src": "535:33:7", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "30", - "id": 928, + "id": 913, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "509:1:7", + "src": "556:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -12649,26 +12391,26 @@ }, "value": "0" }, - "functionReturnParameters": 924, - "id": 929, + "functionReturnParameters": 909, + "id": 914, "nodeType": "Return", - "src": "502:8:7" + "src": "549:8:7" } ] } }, { "assignments": [ - 933 + 918 ], "declarations": [ { "constant": false, - "id": 933, + "id": 918, "name": "c", "nodeType": "VariableDeclaration", - "scope": 949, - "src": "523:9:7", + "scope": 933, + "src": "578:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12676,10 +12418,10 @@ "typeString": "uint256" }, "typeName": { - "id": 932, + "id": 917, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "523:7:7", + "src": "578:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12689,26 +12431,26 @@ "visibility": "internal" } ], - "id": 937, + "id": 922, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 936, + "id": 921, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 934, + "id": 919, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 918, - "src": "535:1:7", + "referencedDeclaration": 903, + "src": "590:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12718,25 +12460,25 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 935, + "id": 920, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 920, - "src": "539:1:7", + "referencedDeclaration": 905, + "src": "594:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "535:5:7", + "src": "590:5:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "523:17:7" + "src": "578:17:7" }, { "expression": { @@ -12748,7 +12490,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 943, + "id": 928, "isConstant": false, "isLValue": false, "isPure": false, @@ -12759,19 +12501,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 941, + "id": 926, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 939, + "id": 924, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 933, - "src": "554:1:7", + "referencedDeclaration": 918, + "src": "613:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12781,18 +12523,18 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 940, + "id": 925, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 918, - "src": "558:1:7", + "referencedDeclaration": 903, + "src": "617:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "554:5:7", + "src": "613:5:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12802,18 +12544,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 942, + "id": 927, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 920, - "src": "563:1:7", + "referencedDeclaration": 905, + "src": "622:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "554:10:7", + "src": "613:10:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -12827,21 +12569,21 @@ "typeString": "bool" } ], - "id": 938, + "id": 923, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1273, - 1274 + 1259, + 1260 ], - "referencedDeclaration": 1273, - "src": "546:7:7", + "referencedDeclaration": 1259, + "src": "605:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 944, + "id": 929, "isConstant": false, "isLValue": false, "isPure": false, @@ -12849,56 +12591,55 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "546:19:7", + "src": "605:19:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 945, + "id": 930, "nodeType": "ExpressionStatement", - "src": "546:19:7" + "src": "605:19:7" }, { "expression": { "argumentTypes": null, - "id": 946, + "id": 931, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 933, - "src": "579:1:7", + "referencedDeclaration": 918, + "src": "642:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 924, - "id": 947, + "functionReturnParameters": 909, + "id": 932, "nodeType": "Return", - "src": "572:8:7" + "src": "635:8:7" } ] }, - "documentation": "@dev Multiplies two numbers, reverts on overflow.", - "id": 949, + "documentation": "@dev Multiplies two unsigned integers, reverts on overflow.", + "id": 934, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "mul", "nodeType": "FunctionDefinition", "parameters": { - "id": 921, + "id": 906, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 918, + "id": 903, "name": "a", "nodeType": "VariableDeclaration", - "scope": 949, - "src": "217:9:7", + "scope": 934, + "src": "242:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12906,10 +12647,10 @@ "typeString": "uint256" }, "typeName": { - "id": 917, + "id": 902, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "217:7:7", + "src": "242:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12920,11 +12661,11 @@ }, { "constant": false, - "id": 920, + "id": 905, "name": "b", "nodeType": "VariableDeclaration", - "scope": 949, - "src": "228:9:7", + "scope": 934, + "src": "253:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12932,10 +12673,10 @@ "typeString": "uint256" }, "typeName": { - "id": 919, + "id": 904, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "228:7:7", + "src": "253:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12945,20 +12686,19 @@ "visibility": "internal" } ], - "src": "216:22:7" + "src": "241:22:7" }, - "payable": false, "returnParameters": { - "id": 924, + "id": 909, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 923, + "id": 908, "name": "", "nodeType": "VariableDeclaration", - "scope": 949, - "src": "262:7:7", + "scope": 934, + "src": "287:7:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12966,10 +12706,10 @@ "typeString": "uint256" }, "typeName": { - "id": 922, + "id": 907, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "262:7:7", + "src": "287:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12979,19 +12719,19 @@ "visibility": "internal" } ], - "src": "261:9:7" + "src": "286:9:7" }, - "scope": 1042, - "src": "204:381:7", + "scope": 1027, + "src": "229:421:7", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 972, + "id": 957, "nodeType": "Block", - "src": "762:203:7", + "src": "845:229:7", "statements": [ { "expression": { @@ -13003,19 +12743,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 961, + "id": 946, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 959, + "id": 944, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 953, - "src": "776:1:7", + "referencedDeclaration": 938, + "src": "929:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13026,14 +12766,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 960, + "id": 945, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "780:1:7", + "src": "933:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -13041,7 +12781,7 @@ }, "value": "0" }, - "src": "776:5:7", + "src": "929:5:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -13055,21 +12795,21 @@ "typeString": "bool" } ], - "id": 958, + "id": 943, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1273, - 1274 + 1259, + 1260 ], - "referencedDeclaration": 1273, - "src": "768:7:7", + "referencedDeclaration": 1259, + "src": "921:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 962, + "id": 947, "isConstant": false, "isLValue": false, "isPure": false, @@ -13077,28 +12817,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "768:14:7", + "src": "921:14:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 963, + "id": 948, "nodeType": "ExpressionStatement", - "src": "768:14:7" + "src": "921:14:7" }, { "assignments": [ - 965 + 950 ], "declarations": [ { "constant": false, - "id": 965, + "id": 950, "name": "c", "nodeType": "VariableDeclaration", - "scope": 973, - "src": "846:9:7", + "scope": 957, + "src": "945:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13106,10 +12846,10 @@ "typeString": "uint256" }, "typeName": { - "id": 964, + "id": 949, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "846:7:7", + "src": "945:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13119,26 +12859,26 @@ "visibility": "internal" } ], - "id": 969, + "id": 954, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 968, + "id": 953, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 966, + "id": 951, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 951, - "src": "858:1:7", + "referencedDeclaration": 936, + "src": "957:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13148,66 +12888,65 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 967, + "id": 952, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 953, - "src": "862:1:7", + "referencedDeclaration": 938, + "src": "961:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "858:5:7", + "src": "957:5:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "846:17:7" + "src": "945:17:7" }, { "expression": { "argumentTypes": null, - "id": 970, + "id": 955, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 965, - "src": "959:1:7", + "referencedDeclaration": 950, + "src": "1066:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 957, - "id": 971, + "functionReturnParameters": 942, + "id": 956, "nodeType": "Return", - "src": "952:8:7" + "src": "1059:8:7" } ] }, - "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", - "id": 973, + "documentation": "@dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.", + "id": 958, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "div", "nodeType": "FunctionDefinition", "parameters": { - "id": 954, + "id": 939, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 951, + "id": 936, "name": "a", "nodeType": "VariableDeclaration", - "scope": 973, - "src": "708:9:7", + "scope": 958, + "src": "791:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13215,10 +12954,10 @@ "typeString": "uint256" }, "typeName": { - "id": 950, + "id": 935, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "708:7:7", + "src": "791:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13229,11 +12968,11 @@ }, { "constant": false, - "id": 953, + "id": 938, "name": "b", "nodeType": "VariableDeclaration", - "scope": 973, - "src": "719:9:7", + "scope": 958, + "src": "802:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13241,10 +12980,10 @@ "typeString": "uint256" }, "typeName": { - "id": 952, + "id": 937, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "719:7:7", + "src": "802:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13254,20 +12993,19 @@ "visibility": "internal" } ], - "src": "707:22:7" + "src": "790:22:7" }, - "payable": false, "returnParameters": { - "id": 957, + "id": 942, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 956, + "id": 941, "name": "", "nodeType": "VariableDeclaration", - "scope": 973, - "src": "753:7:7", + "scope": 958, + "src": "836:7:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13275,10 +13013,10 @@ "typeString": "uint256" }, "typeName": { - "id": 955, + "id": 940, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "753:7:7", + "src": "836:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13288,19 +13026,19 @@ "visibility": "internal" } ], - "src": "752:9:7" + "src": "835:9:7" }, - "scope": 1042, - "src": "695:270:7", + "scope": 1027, + "src": "778:296:7", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 996, + "id": 981, "nodeType": "Block", - "src": "1145:64:7", + "src": "1272:78:7", "statements": [ { "expression": { @@ -13312,19 +13050,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 985, + "id": 970, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 983, + "id": 968, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 977, - "src": "1159:1:7", + "referencedDeclaration": 962, + "src": "1290:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13334,18 +13072,18 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 984, + "id": 969, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 975, - "src": "1164:1:7", + "referencedDeclaration": 960, + "src": "1295:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1159:6:7", + "src": "1290:6:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -13359,21 +13097,21 @@ "typeString": "bool" } ], - "id": 982, + "id": 967, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1273, - 1274 + 1259, + 1260 ], - "referencedDeclaration": 1273, - "src": "1151:7:7", + "referencedDeclaration": 1259, + "src": "1282:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 986, + "id": 971, "isConstant": false, "isLValue": false, "isPure": false, @@ -13381,28 +13119,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1151:15:7", + "src": "1282:15:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 987, + "id": 972, "nodeType": "ExpressionStatement", - "src": "1151:15:7" + "src": "1282:15:7" }, { "assignments": [ - 989 + 974 ], "declarations": [ { "constant": false, - "id": 989, + "id": 974, "name": "c", "nodeType": "VariableDeclaration", - "scope": 997, - "src": "1172:9:7", + "scope": 981, + "src": "1307:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13410,10 +13148,10 @@ "typeString": "uint256" }, "typeName": { - "id": 988, + "id": 973, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1172:7:7", + "src": "1307:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13423,26 +13161,26 @@ "visibility": "internal" } ], - "id": 993, + "id": 978, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 992, + "id": 977, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 990, + "id": 975, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 975, - "src": "1184:1:7", + "referencedDeclaration": 960, + "src": "1319:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13452,66 +13190,65 @@ "operator": "-", "rightExpression": { "argumentTypes": null, - "id": 991, + "id": 976, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 977, - "src": "1188:1:7", + "referencedDeclaration": 962, + "src": "1323:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1184:5:7", + "src": "1319:5:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1172:17:7" + "src": "1307:17:7" }, { "expression": { "argumentTypes": null, - "id": 994, + "id": 979, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "1203:1:7", + "referencedDeclaration": 974, + "src": "1342:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 981, - "id": 995, + "functionReturnParameters": 966, + "id": 980, "nodeType": "Return", - "src": "1196:8:7" + "src": "1335:8:7" } ] }, - "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", - "id": 997, + "documentation": "@dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).", + "id": 982, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "sub", "nodeType": "FunctionDefinition", "parameters": { - "id": 978, + "id": 963, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 975, + "id": 960, "name": "a", "nodeType": "VariableDeclaration", - "scope": 997, - "src": "1091:9:7", + "scope": 982, + "src": "1218:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13519,10 +13256,10 @@ "typeString": "uint256" }, "typeName": { - "id": 974, + "id": 959, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1091:7:7", + "src": "1218:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13533,11 +13270,11 @@ }, { "constant": false, - "id": 977, + "id": 962, "name": "b", "nodeType": "VariableDeclaration", - "scope": 997, - "src": "1102:9:7", + "scope": 982, + "src": "1229:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13545,10 +13282,10 @@ "typeString": "uint256" }, "typeName": { - "id": 976, + "id": 961, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1102:7:7", + "src": "1229:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13558,20 +13295,19 @@ "visibility": "internal" } ], - "src": "1090:22:7" + "src": "1217:22:7" }, - "payable": false, "returnParameters": { - "id": 981, + "id": 966, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 980, + "id": 965, "name": "", "nodeType": "VariableDeclaration", - "scope": 997, - "src": "1136:7:7", + "scope": 982, + "src": "1263:7:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13579,10 +13315,10 @@ "typeString": "uint256" }, "typeName": { - "id": 979, + "id": 964, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1136:7:7", + "src": "1263:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13592,32 +13328,32 @@ "visibility": "internal" } ], - "src": "1135:9:7" + "src": "1262:9:7" }, - "scope": 1042, - "src": "1078:131:7", + "scope": 1027, + "src": "1205:145:7", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1020, + "id": 1005, "nodeType": "Block", - "src": "1339:64:7", + "src": "1498:78:7", "statements": [ { "assignments": [ - 1007 + 992 ], "declarations": [ { "constant": false, - "id": 1007, + "id": 992, "name": "c", "nodeType": "VariableDeclaration", - "scope": 1021, - "src": "1345:9:7", + "scope": 1005, + "src": "1508:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13625,10 +13361,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1006, + "id": 991, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1345:7:7", + "src": "1508:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13638,26 +13374,26 @@ "visibility": "internal" } ], - "id": 1011, + "id": 996, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1010, + "id": 995, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1008, + "id": 993, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 999, - "src": "1357:1:7", + "referencedDeclaration": 984, + "src": "1520:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13667,25 +13403,25 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 1009, + "id": 994, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1001, - "src": "1361:1:7", + "referencedDeclaration": 986, + "src": "1524:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1357:5:7", + "src": "1520:5:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1345:17:7" + "src": "1508:17:7" }, { "expression": { @@ -13697,19 +13433,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1015, + "id": 1000, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1013, + "id": 998, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1007, - "src": "1376:1:7", + "referencedDeclaration": 992, + "src": "1543:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13719,18 +13455,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 1014, + "id": 999, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 999, - "src": "1381:1:7", + "referencedDeclaration": 984, + "src": "1548:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1376:6:7", + "src": "1543:6:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -13744,21 +13480,21 @@ "typeString": "bool" } ], - "id": 1012, + "id": 997, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1273, - 1274 + 1259, + 1260 ], - "referencedDeclaration": 1273, - "src": "1368:7:7", + "referencedDeclaration": 1259, + "src": "1535:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1016, + "id": 1001, "isConstant": false, "isLValue": false, "isPure": false, @@ -13766,56 +13502,55 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1368:15:7", + "src": "1535:15:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1017, + "id": 1002, "nodeType": "ExpressionStatement", - "src": "1368:15:7" + "src": "1535:15:7" }, { "expression": { "argumentTypes": null, - "id": 1018, + "id": 1003, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1007, - "src": "1397:1:7", + "referencedDeclaration": 992, + "src": "1568:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1005, - "id": 1019, + "functionReturnParameters": 990, + "id": 1004, "nodeType": "Return", - "src": "1390:8:7" + "src": "1561:8:7" } ] }, - "documentation": "@dev Adds two numbers, reverts on overflow.", - "id": 1021, + "documentation": "@dev Adds two unsigned integers, reverts on overflow.", + "id": 1006, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 1002, + "id": 987, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 999, + "id": 984, "name": "a", "nodeType": "VariableDeclaration", - "scope": 1021, - "src": "1285:9:7", + "scope": 1006, + "src": "1444:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13823,10 +13558,10 @@ "typeString": "uint256" }, "typeName": { - "id": 998, + "id": 983, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1285:7:7", + "src": "1444:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13837,11 +13572,11 @@ }, { "constant": false, - "id": 1001, + "id": 986, "name": "b", "nodeType": "VariableDeclaration", - "scope": 1021, - "src": "1296:9:7", + "scope": 1006, + "src": "1455:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13849,10 +13584,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1000, + "id": 985, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1296:7:7", + "src": "1455:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13862,20 +13597,19 @@ "visibility": "internal" } ], - "src": "1284:22:7" + "src": "1443:22:7" }, - "payable": false, "returnParameters": { - "id": 1005, + "id": 990, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1004, + "id": 989, "name": "", "nodeType": "VariableDeclaration", - "scope": 1021, - "src": "1330:7:7", + "scope": 1006, + "src": "1489:7:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13883,10 +13617,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1003, + "id": 988, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1330:7:7", + "src": "1489:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13896,19 +13630,19 @@ "visibility": "internal" } ], - "src": "1329:9:7" + "src": "1488:9:7" }, - "scope": 1042, - "src": "1272:131:7", + "scope": 1027, + "src": "1431:145:7", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1040, + "id": 1025, "nodeType": "Block", - "src": "1602:44:7", + "src": "1795:54:7", "statements": [ { "expression": { @@ -13920,19 +13654,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1033, + "id": 1018, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1031, + "id": 1016, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1025, - "src": "1616:1:7", + "referencedDeclaration": 1010, + "src": "1813:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13943,14 +13677,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1032, + "id": 1017, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1621:1:7", + "src": "1818:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -13958,7 +13692,7 @@ }, "value": "0" }, - "src": "1616:6:7", + "src": "1813:6:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -13972,21 +13706,21 @@ "typeString": "bool" } ], - "id": 1030, + "id": 1015, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1273, - 1274 + 1259, + 1260 ], - "referencedDeclaration": 1273, - "src": "1608:7:7", + "referencedDeclaration": 1259, + "src": "1805:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1034, + "id": 1019, "isConstant": false, "isLValue": false, "isPure": false, @@ -13994,15 +13728,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1608:15:7", + "src": "1805:15:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1035, + "id": 1020, "nodeType": "ExpressionStatement", - "src": "1608:15:7" + "src": "1805:15:7" }, { "expression": { @@ -14011,19 +13745,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1038, + "id": 1023, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1036, + "id": 1021, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1023, - "src": "1636:1:7", + "referencedDeclaration": 1008, + "src": "1837:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14033,49 +13767,48 @@ "operator": "%", "rightExpression": { "argumentTypes": null, - "id": 1037, + "id": 1022, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1025, - "src": "1640:1:7", + "referencedDeclaration": 1010, + "src": "1841:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1636:5:7", + "src": "1837:5:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1029, - "id": 1039, + "functionReturnParameters": 1014, + "id": 1024, "nodeType": "Return", - "src": "1629:12:7" + "src": "1830:12:7" } ] }, - "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", - "id": 1041, + "documentation": "@dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", + "id": 1026, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "mod", "nodeType": "FunctionDefinition", "parameters": { - "id": 1026, + "id": 1011, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1023, + "id": 1008, "name": "a", "nodeType": "VariableDeclaration", - "scope": 1041, - "src": "1548:9:7", + "scope": 1026, + "src": "1741:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14083,10 +13816,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1022, + "id": 1007, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1548:7:7", + "src": "1741:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14097,11 +13830,11 @@ }, { "constant": false, - "id": 1025, + "id": 1010, "name": "b", "nodeType": "VariableDeclaration", - "scope": 1041, - "src": "1559:9:7", + "scope": 1026, + "src": "1752:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14109,10 +13842,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1024, + "id": 1009, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1559:7:7", + "src": "1752:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14122,20 +13855,19 @@ "visibility": "internal" } ], - "src": "1547:22:7" + "src": "1740:22:7" }, - "payable": false, "returnParameters": { - "id": 1029, + "id": 1014, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1028, + "id": 1013, "name": "", "nodeType": "VariableDeclaration", - "scope": 1041, - "src": "1593:7:7", + "scope": 1026, + "src": "1786:7:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14143,10 +13875,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1027, + "id": 1012, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1593:7:7", + "src": "1786:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14156,20 +13888,20 @@ "visibility": "internal" } ], - "src": "1592:9:7" + "src": "1785:9:7" }, - "scope": 1042, - "src": "1535:111:7", + "scope": 1027, + "src": "1728:121:7", "stateMutability": "pure", "superFunction": null, "visibility": "internal" } ], - "scope": 1043, - "src": "117:1531:7" + "scope": 1028, + "src": "125:1726:7" } ], - "src": "0:1649:7" + "src": "0:1852:7" }, "id": 7 }, @@ -14178,22 +13910,22 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "exportedSymbols": { "IERC20": [ - 1111 + 1096 ] }, - "id": 1112, + "id": 1097, "nodeType": "SourceUnit", "nodes": [ { - "id": 1044, + "id": 1029, "literals": [ "solidity", "^", - "0.4", - ".24" + "0.5", + ".0" ], "nodeType": "PragmaDirective", - "src": "0:24:8" + "src": "0:23:8" }, { "baseContracts": [], @@ -14201,9 +13933,9 @@ "contractKind": "interface", "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", "fullyImplemented": false, - "id": 1111, + "id": 1096, "linearizedBaseContracts": [ - 1111 + 1096 ], "name": "IERC20", "nodeType": "ContractDefinition", @@ -14211,31 +13943,50 @@ { "body": null, "documentation": null, - "id": 1049, + "id": 1038, "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], - "name": "totalSupply", + "name": "transfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 1045, - "nodeType": "ParameterList", - "parameters": [], - "src": "156:2:8" - }, - "payable": false, - "returnParameters": { - "id": 1048, + "id": 1034, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1047, - "name": "", + "id": 1031, + "name": "to", "nodeType": "VariableDeclaration", - "scope": 1049, - "src": "182:7:8", + "scope": 1038, + "src": "155:10:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1030, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "155:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1033, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1038, + "src": "167:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14243,10 +13994,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1046, + "id": 1032, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "182:7:8", + "src": "167:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14256,35 +14007,202 @@ "visibility": "internal" } ], - "src": "181:9:8" + "src": "154:27:8" }, - "scope": 1111, - "src": "136:55:8", - "stateMutability": "view", + "returnParameters": { + "id": 1037, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1036, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1038, + "src": "200:4:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1035, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "200:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "199:6:8" + }, + "scope": 1096, + "src": "137:69:8", + "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, { "body": null, "documentation": null, - "id": 1056, + "id": 1047, "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], - "name": "balanceOf", + "name": "approve", "nodeType": "FunctionDefinition", "parameters": { - "id": 1052, + "id": 1043, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1051, - "name": "who", + "id": 1040, + "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1056, - "src": "214:11:8", + "scope": 1047, + "src": "229:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1039, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "229:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1042, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1047, + "src": "246:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1041, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "246:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "228:32:8" + }, + "returnParameters": { + "id": 1046, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1045, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1047, + "src": "279:4:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1044, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "279:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "278:6:8" + }, + "scope": 1096, + "src": "212:73:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1058, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1054, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1049, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 1058, + "src": "313:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1048, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "313:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1051, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1058, + "src": "327:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14295,7 +14213,8 @@ "id": 1050, "name": "address", "nodeType": "ElementaryTypeName", - "src": "214:7:8", + "src": "327:7:8", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14303,22 +14222,14 @@ }, "value": null, "visibility": "internal" - } - ], - "src": "213:13:8" - }, - "payable": false, - "returnParameters": { - "id": 1055, - "nodeType": "ParameterList", - "parameters": [ + }, { "constant": false, - "id": 1054, - "name": "", + "id": 1053, + "name": "value", "nodeType": "VariableDeclaration", - "scope": 1056, - "src": "250:7:8", + "scope": 1058, + "src": "339:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14326,10 +14237,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1053, + "id": 1052, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "250:7:8", + "src": "339:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14339,10 +14250,97 @@ "visibility": "internal" } ], - "src": "249:9:8" + "src": "312:41:8" }, - "scope": 1111, - "src": "195:64:8", + "returnParameters": { + "id": 1057, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1056, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1058, + "src": "372:4:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1055, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "372:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "371:6:8" + }, + "scope": 1096, + "src": "291:87:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1063, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1059, + "nodeType": "ParameterList", + "parameters": [], + "src": "404:2:8" + }, + "returnParameters": { + "id": 1062, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1061, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1063, + "src": "430:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1060, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "430:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "429:9:8" + }, + "scope": 1096, + "src": "384:55:8", "stateMutability": "view", "superFunction": null, "visibility": "external" @@ -14350,242 +14348,105 @@ { "body": null, "documentation": null, - "id": 1065, + "id": 1070, "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1066, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1065, + "name": "who", + "nodeType": "VariableDeclaration", + "scope": 1070, + "src": "464:11:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1064, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "464:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "463:13:8" + }, + "returnParameters": { + "id": 1069, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1068, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1070, + "src": "500:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1067, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "500:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "499:9:8" + }, + "scope": 1096, + "src": "445:64:8", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1079, + "implemented": false, + "kind": "function", "modifiers": [], "name": "allowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1061, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1058, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 1065, - "src": "282:13:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1057, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "282:7:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1060, - "name": "spender", - "nodeType": "VariableDeclaration", - "scope": 1065, - "src": "297:15:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1059, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "297:7:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "281:32:8" - }, - "payable": false, - "returnParameters": { - "id": 1064, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1063, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1065, - "src": "341:7:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1062, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "341:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "340:9:8" - }, - "scope": 1111, - "src": "263:87:8", - "stateMutability": "view", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 1074, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "transfer", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1070, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1067, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1074, - "src": "372:10:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1066, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "372:7:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1069, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1074, - "src": "384:13:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1068, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "384:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "371:27:8" - }, - "payable": false, - "returnParameters": { - "id": 1073, + "id": 1075, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1072, - "name": "", + "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1074, - "src": "417:4:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1071, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "417:4:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "416:6:8" - }, - "scope": 1111, - "src": "354:69:8", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 1083, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "approve", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1079, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1076, - "name": "spender", - "nodeType": "VariableDeclaration", - "scope": 1083, - "src": "444:15:8", + "scope": 1079, + "src": "534:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14593,10 +14454,11 @@ "typeString": "address" }, "typeName": { - "id": 1075, + "id": 1071, "name": "address", "nodeType": "ElementaryTypeName", - "src": "444:7:8", + "src": "534:7:8", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14607,11 +14469,45 @@ }, { "constant": false, - "id": 1078, - "name": "value", + "id": 1074, + "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1083, - "src": "461:13:8", + "scope": 1079, + "src": "549:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1073, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "549:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "533:32:8" + }, + "returnParameters": { + "id": 1078, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1077, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1079, + "src": "589:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14619,10 +14515,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1077, + "id": 1076, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "461:7:8", + "src": "589:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14632,132 +14528,99 @@ "visibility": "internal" } ], - "src": "443:32:8" + "src": "588:9:8" }, - "payable": false, - "returnParameters": { - "id": 1082, + "scope": 1096, + "src": "515:83:8", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": null, + "id": 1087, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 1086, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1081, - "name": "", + "indexed": true, + "name": "from", "nodeType": "VariableDeclaration", - "scope": 1083, - "src": "498:4:8", + "scope": 1087, + "src": "619:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { "id": 1080, - "name": "bool", + "name": "address", "nodeType": "ElementaryTypeName", - "src": "498:4:8", + "src": "619:7:8", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" } }, "value": null, "visibility": "internal" - } - ], - "src": "497:6:8" - }, - "scope": 1111, - "src": "427:77:8", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 1094, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "transferFrom", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1090, - "nodeType": "ParameterList", - "parameters": [ + }, + { + "constant": false, + "id": 1083, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1087, + "src": "641:18:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1082, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "641:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, { "constant": false, "id": 1085, - "name": "from", + "indexed": false, + "name": "value", "nodeType": "VariableDeclaration", - "scope": 1094, - "src": "530:12:8", + "scope": 1087, + "src": "661:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { "id": 1084, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "530:7:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1087, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1094, - "src": "544:10:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1086, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "544:7:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1089, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1094, - "src": "556:13:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1088, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "556:7:8", + "src": "661:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14767,162 +14630,28 @@ "visibility": "internal" } ], - "src": "529:41:8" + "src": "618:57:8" }, - "payable": false, - "returnParameters": { - "id": 1093, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1092, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1094, - "src": "593:4:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1091, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "593:4:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "592:6:8" - }, - "scope": 1111, - "src": "508:91:8", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" + "src": "604:72:8" }, { "anonymous": false, "documentation": null, - "id": 1102, - "name": "Transfer", - "nodeType": "EventDefinition", - "parameters": { - "id": 1101, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1096, - "indexed": true, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 1102, - "src": "623:20:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1095, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "623:7:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1098, - "indexed": true, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1102, - "src": "649:18:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1097, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "649:7:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1100, - "indexed": false, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1102, - "src": "673:13:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1099, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "673:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "617:73:8" - }, - "src": "603:88:8" - }, - { - "anonymous": false, - "documentation": null, - "id": 1110, + "id": 1095, "name": "Approval", "nodeType": "EventDefinition", "parameters": { - "id": 1109, + "id": 1094, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1104, + "id": 1089, "indexed": true, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1110, - "src": "715:21:8", + "scope": 1095, + "src": "697:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14930,10 +14659,11 @@ "typeString": "address" }, "typeName": { - "id": 1103, + "id": 1088, "name": "address", "nodeType": "ElementaryTypeName", - "src": "715:7:8", + "src": "697:7:8", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14944,12 +14674,12 @@ }, { "constant": false, - "id": 1106, + "id": 1091, "indexed": true, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1110, - "src": "742:23:8", + "scope": 1095, + "src": "720:23:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14957,10 +14687,11 @@ "typeString": "address" }, "typeName": { - "id": 1105, + "id": 1090, "name": "address", "nodeType": "ElementaryTypeName", - "src": "742:7:8", + "src": "720:7:8", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14971,12 +14702,12 @@ }, { "constant": false, - "id": 1108, + "id": 1093, "indexed": false, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1110, - "src": "771:13:8", + "scope": 1095, + "src": "745:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14984,10 +14715,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1107, + "id": 1092, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "771:7:8", + "src": "745:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14997,16 +14728,16 @@ "visibility": "internal" } ], - "src": "709:79:8" + "src": "696:63:8" }, - "src": "695:94:8" + "src": "682:78:8" } ], - "scope": 1112, - "src": "115:676:8" + "scope": 1097, + "src": "114:648:8" } ], - "src": "0:792:8" + "src": "0:763:8" }, "id": 8 }, @@ -15015,42 +14746,42 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "exportedSymbols": { "SafeERC20": [ - 1255 + 1241 ] }, - "id": 1256, + "id": 1242, "nodeType": "SourceUnit", "nodes": [ { - "id": 1113, + "id": 1098, "literals": [ "solidity", "^", - "0.4", - ".24" + "0.5", + ".0" ], "nodeType": "PragmaDirective", - "src": "0:24:9" + "src": "0:23:9" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "./IERC20.sol", - "id": 1114, + "id": 1099, "nodeType": "ImportDirective", - "scope": 1256, - "sourceUnit": 1112, - "src": "26:22:9", + "scope": 1242, + "sourceUnit": 1097, + "src": "25:22:9", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "file": "../../math/SafeMath.sol", - "id": 1115, + "id": 1100, "nodeType": "ImportDirective", - "scope": 1256, - "sourceUnit": 1043, - "src": "49:33:9", + "scope": 1242, + "sourceUnit": 1028, + "src": "48:33:9", "symbolAliases": [], "unitAlias": "" }, @@ -15060,31 +14791,31 @@ "contractKind": "library", "documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.", "fullyImplemented": true, - "id": 1255, + "id": 1241, "linearizedBaseContracts": [ - 1255 + 1241 ], "name": "SafeERC20", "nodeType": "ContractDefinition", "nodes": [ { - "id": 1118, + "id": 1103, "libraryName": { "contractScope": null, - "id": 1116, + "id": 1101, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1042, + "referencedDeclaration": 1027, "src": "382:8:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$1042", + "typeIdentifier": "t_contract$_SafeMath_$1027", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", "src": "376:27:9", "typeName": { - "id": 1117, + "id": 1102, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "395:7:9", @@ -15096,9 +14827,9 @@ }, { "body": { - "id": 1135, + "id": 1120, "nodeType": "Block", - "src": "501:45:9", + "src": "481:51:9", "statements": [ { "expression": { @@ -15109,12 +14840,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1130, + "id": 1115, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1122, - "src": "530:2:9", + "referencedDeclaration": 1107, + "src": "514:2:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15122,12 +14853,12 @@ }, { "argumentTypes": null, - "id": 1131, + "id": 1116, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1124, - "src": "534:5:9", + "referencedDeclaration": 1109, + "src": "518:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15147,32 +14878,32 @@ ], "expression": { "argumentTypes": null, - "id": 1128, + "id": 1113, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1120, - "src": "515:5:9", + "referencedDeclaration": 1105, + "src": "499:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1111", + "typeIdentifier": "t_contract$_IERC20_$1096", "typeString": "contract IERC20" } }, - "id": 1129, + "id": 1114, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1074, - "src": "515:14:9", + "referencedDeclaration": 1038, + "src": "499:14:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1132, + "id": 1117, "isConstant": false, "isLValue": false, "isPure": false, @@ -15180,7 +14911,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "515:25:9", + "src": "499:25:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -15194,21 +14925,21 @@ "typeString": "bool" } ], - "id": 1127, + "id": 1112, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1273, - 1274 + 1259, + 1260 ], - "referencedDeclaration": 1273, - "src": "507:7:9", + "referencedDeclaration": 1259, + "src": "491:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1133, + "id": 1118, "isConstant": false, "isLValue": false, "isPure": false, @@ -15216,52 +14947,51 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "507:34:9", + "src": "491:34:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1134, + "id": 1119, "nodeType": "ExpressionStatement", - "src": "507:34:9" + "src": "491:34:9" } ] }, "documentation": null, - "id": 1136, + "id": 1121, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "safeTransfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 1125, + "id": 1110, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1120, + "id": 1105, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1136, - "src": "434:12:9", + "scope": 1121, + "src": "431:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1111", + "typeIdentifier": "t_contract$_IERC20_$1096", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1119, + "id": 1104, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1111, - "src": "434:6:9", + "referencedDeclaration": 1096, + "src": "431:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1111", + "typeIdentifier": "t_contract$_IERC20_$1096", "typeString": "contract IERC20" } }, @@ -15270,11 +15000,11 @@ }, { "constant": false, - "id": 1122, + "id": 1107, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1136, - "src": "452:10:9", + "scope": 1121, + "src": "445:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15282,10 +15012,11 @@ "typeString": "address" }, "typeName": { - "id": 1121, + "id": 1106, "name": "address", "nodeType": "ElementaryTypeName", - "src": "452:7:9", + "src": "445:7:9", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15296,11 +15027,11 @@ }, { "constant": false, - "id": 1124, + "id": 1109, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1136, - "src": "468:13:9", + "scope": 1121, + "src": "457:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15308,10 +15039,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1123, + "id": 1108, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "468:7:9", + "src": "457:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15321,26 +15052,25 @@ "visibility": "internal" } ], - "src": "428:57:9" + "src": "430:41:9" }, - "payable": false, "returnParameters": { - "id": 1126, + "id": 1111, "nodeType": "ParameterList", "parameters": [], - "src": "501:0:9" + "src": "481:0:9" }, - "scope": 1255, - "src": "407:139:9", + "scope": 1241, + "src": "409:123:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1156, + "id": 1141, "nodeType": "Block", - "src": "666:55:9", + "src": "628:61:9", "statements": [ { "expression": { @@ -15351,12 +15081,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1150, + "id": 1135, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1140, - "src": "699:4:9", + "referencedDeclaration": 1125, + "src": "665:4:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15364,12 +15094,12 @@ }, { "argumentTypes": null, - "id": 1151, + "id": 1136, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1142, - "src": "705:2:9", + "referencedDeclaration": 1127, + "src": "671:2:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15377,12 +15107,12 @@ }, { "argumentTypes": null, - "id": 1152, + "id": 1137, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1144, - "src": "709:5:9", + "referencedDeclaration": 1129, + "src": "675:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15406,32 +15136,32 @@ ], "expression": { "argumentTypes": null, - "id": 1148, + "id": 1133, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1138, - "src": "680:5:9", + "referencedDeclaration": 1123, + "src": "646:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1111", + "typeIdentifier": "t_contract$_IERC20_$1096", "typeString": "contract IERC20" } }, - "id": 1149, + "id": 1134, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", - "referencedDeclaration": 1094, - "src": "680:18:9", + "referencedDeclaration": 1058, + "src": "646:18:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)" } }, - "id": 1153, + "id": 1138, "isConstant": false, "isLValue": false, "isPure": false, @@ -15439,7 +15169,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "680:35:9", + "src": "646:35:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -15453,21 +15183,21 @@ "typeString": "bool" } ], - "id": 1147, + "id": 1132, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1273, - 1274 + 1259, + 1260 ], - "referencedDeclaration": 1273, - "src": "672:7:9", + "referencedDeclaration": 1259, + "src": "638:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1154, + "id": 1139, "isConstant": false, "isLValue": false, "isPure": false, @@ -15475,52 +15205,51 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "672:44:9", + "src": "638:44:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1155, + "id": 1140, "nodeType": "ExpressionStatement", - "src": "672:44:9" + "src": "638:44:9" } ] }, "documentation": null, - "id": 1157, + "id": 1142, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "safeTransferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 1145, + "id": 1130, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1138, + "id": 1123, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1157, - "src": "581:12:9", + "scope": 1142, + "src": "564:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1111", + "typeIdentifier": "t_contract$_IERC20_$1096", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1137, + "id": 1122, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1111, - "src": "581:6:9", + "referencedDeclaration": 1096, + "src": "564:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1111", + "typeIdentifier": "t_contract$_IERC20_$1096", "typeString": "contract IERC20" } }, @@ -15529,11 +15258,11 @@ }, { "constant": false, - "id": 1140, + "id": 1125, "name": "from", "nodeType": "VariableDeclaration", - "scope": 1157, - "src": "599:12:9", + "scope": 1142, + "src": "578:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15541,10 +15270,11 @@ "typeString": "address" }, "typeName": { - "id": 1139, + "id": 1124, "name": "address", "nodeType": "ElementaryTypeName", - "src": "599:7:9", + "src": "578:7:9", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15555,11 +15285,11 @@ }, { "constant": false, - "id": 1142, + "id": 1127, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1157, - "src": "617:10:9", + "scope": 1142, + "src": "592:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15567,10 +15297,11 @@ "typeString": "address" }, "typeName": { - "id": 1141, + "id": 1126, "name": "address", "nodeType": "ElementaryTypeName", - "src": "617:7:9", + "src": "592:7:9", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15581,11 +15312,11 @@ }, { "constant": false, - "id": 1144, + "id": 1129, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1157, - "src": "633:13:9", + "scope": 1142, + "src": "604:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15593,10 +15324,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1143, + "id": 1128, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "633:7:9", + "src": "604:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15606,26 +15337,25 @@ "visibility": "internal" } ], - "src": "575:75:9" + "src": "563:55:9" }, - "payable": false, "returnParameters": { - "id": 1146, + "id": 1131, "nodeType": "ParameterList", "parameters": [], - "src": "666:0:9" + "src": "628:0:9" }, - "scope": 1255, - "src": "550:171:9", + "scope": 1241, + "src": "538:151:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1191, + "id": 1177, "nodeType": "Block", - "src": "823:330:9", + "src": "771:353:9", "statements": [ { "expression": { @@ -15637,7 +15367,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1180, + "id": 1166, "isConstant": false, "isLValue": false, "isPure": false, @@ -15651,19 +15381,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1169, + "id": 1154, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1167, + "id": 1152, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1163, - "src": "1045:5:9", + "referencedDeclaration": 1148, + "src": "1007:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15674,14 +15404,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1168, + "id": 1153, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1054:1:9", + "src": "1016:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -15689,21 +15419,21 @@ }, "value": "0" }, - "src": "1045:10:9", + "src": "1007:10:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 1170, + "id": 1155, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "1044:12:9", + "src": "1006:12:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -15720,7 +15450,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1178, + "id": 1164, "isConstant": false, "isLValue": false, "isPure": false, @@ -15730,28 +15460,50 @@ "arguments": [ { "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1173, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1270, - "src": "1077:3:9", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" + "arguments": [ + { + "argumentTypes": null, + "id": 1159, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1278, + "src": "1047:4:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$1241", + "typeString": "library SafeERC20" + } } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$1241", + "typeString": "library SafeERC20" + } + ], + "id": 1158, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1039:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" }, - "id": 1174, + "id": 1160, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "typeConversion", "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1077:10:9", + "names": [], + "nodeType": "FunctionCall", + "src": "1039:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15759,12 +15511,12 @@ }, { "argumentTypes": null, - "id": 1175, + "id": 1161, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "1089:7:9", + "referencedDeclaration": 1146, + "src": "1054:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15784,32 +15536,32 @@ ], "expression": { "argumentTypes": null, - "id": 1171, + "id": 1156, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1159, - "src": "1061:5:9", + "referencedDeclaration": 1144, + "src": "1023:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1111", + "typeIdentifier": "t_contract$_IERC20_$1096", "typeString": "contract IERC20" } }, - "id": 1172, + "id": 1157, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 1065, - "src": "1061:15:9", + "referencedDeclaration": 1079, + "src": "1023:15:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1176, + "id": 1162, "isConstant": false, "isLValue": false, "isPure": false, @@ -15817,7 +15569,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1061:36:9", + "src": "1023:39:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15828,14 +15580,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1177, + "id": 1163, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1101:1:9", + "src": "1066:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -15843,27 +15595,27 @@ }, "value": "0" }, - "src": "1061:41:9", + "src": "1023:44:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 1179, + "id": 1165, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "1060:43:9", + "src": "1022:46:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1044:59:9", + "src": "1006:62:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -15877,21 +15629,21 @@ "typeString": "bool" } ], - "id": 1166, + "id": 1151, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1273, - 1274 + 1259, + 1260 ], - "referencedDeclaration": 1273, - "src": "1036:7:9", + "referencedDeclaration": 1259, + "src": "998:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1181, + "id": 1167, "isConstant": false, "isLValue": false, "isPure": false, @@ -15899,15 +15651,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1036:68:9", + "src": "998:71:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1182, + "id": 1168, "nodeType": "ExpressionStatement", - "src": "1036:68:9" + "src": "998:71:9" }, { "expression": { @@ -15918,12 +15670,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1186, + "id": 1172, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "1132:7:9", + "referencedDeclaration": 1146, + "src": "1101:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15931,12 +15683,12 @@ }, { "argumentTypes": null, - "id": 1187, + "id": 1173, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1163, - "src": "1141:5:9", + "referencedDeclaration": 1148, + "src": "1110:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15956,32 +15708,32 @@ ], "expression": { "argumentTypes": null, - "id": 1184, + "id": 1170, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1159, - "src": "1118:5:9", + "referencedDeclaration": 1144, + "src": "1087:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1111", + "typeIdentifier": "t_contract$_IERC20_$1096", "typeString": "contract IERC20" } }, - "id": 1185, + "id": 1171, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 1083, - "src": "1118:13:9", + "referencedDeclaration": 1047, + "src": "1087:13:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1188, + "id": 1174, "isConstant": false, "isLValue": false, "isPure": false, @@ -15989,7 +15741,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1118:29:9", + "src": "1087:29:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -16003,21 +15755,21 @@ "typeString": "bool" } ], - "id": 1183, + "id": 1169, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1273, - 1274 + 1259, + 1260 ], - "referencedDeclaration": 1273, - "src": "1110:7:9", + "referencedDeclaration": 1259, + "src": "1079:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1189, + "id": 1175, "isConstant": false, "isLValue": false, "isPure": false, @@ -16025,52 +15777,51 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1110:38:9", + "src": "1079:38:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1190, + "id": 1176, "nodeType": "ExpressionStatement", - "src": "1110:38:9" + "src": "1079:38:9" } ] }, "documentation": null, - "id": 1192, + "id": 1178, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "safeApprove", "nodeType": "FunctionDefinition", "parameters": { - "id": 1164, + "id": 1149, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1159, + "id": 1144, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1192, - "src": "751:12:9", + "scope": 1178, + "src": "716:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1111", + "typeIdentifier": "t_contract$_IERC20_$1096", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1158, + "id": 1143, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1111, - "src": "751:6:9", + "referencedDeclaration": 1096, + "src": "716:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1111", + "typeIdentifier": "t_contract$_IERC20_$1096", "typeString": "contract IERC20" } }, @@ -16079,11 +15830,11 @@ }, { "constant": false, - "id": 1161, + "id": 1146, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1192, - "src": "769:15:9", + "scope": 1178, + "src": "730:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16091,10 +15842,11 @@ "typeString": "address" }, "typeName": { - "id": 1160, + "id": 1145, "name": "address", "nodeType": "ElementaryTypeName", - "src": "769:7:9", + "src": "730:7:9", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -16105,11 +15857,11 @@ }, { "constant": false, - "id": 1163, + "id": 1148, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1192, - "src": "790:13:9", + "scope": 1178, + "src": "747:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16117,10 +15869,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1162, + "id": 1147, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "790:7:9", + "src": "747:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16130,39 +15882,38 @@ "visibility": "internal" } ], - "src": "745:62:9" + "src": "715:46:9" }, - "payable": false, "returnParameters": { - "id": 1165, + "id": 1150, "nodeType": "ParameterList", "parameters": [], - "src": "823:0:9" + "src": "771:0:9" }, - "scope": 1255, - "src": "725:428:9", + "scope": 1241, + "src": "695:429:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1222, + "id": 1208, "nodeType": "Block", - "src": "1265:135:9", + "src": "1216:145:9", "statements": [ { "assignments": [ - 1202 + 1188 ], "declarations": [ { "constant": false, - "id": 1202, + "id": 1188, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 1223, - "src": "1271:20:9", + "scope": 1208, + "src": "1226:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16170,10 +15921,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1201, + "id": 1187, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1271:7:9", + "src": "1226:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16183,18 +15934,18 @@ "visibility": "internal" } ], - "id": 1213, + "id": 1199, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1211, + "id": 1197, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1198, - "src": "1338:5:9", + "referencedDeclaration": 1184, + "src": "1293:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16216,14 +15967,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1206, + "id": 1192, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1291, - "src": "1318:4:9", + "referencedDeclaration": 1278, + "src": "1273:4:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1255", + "typeIdentifier": "t_contract$_SafeERC20_$1241", "typeString": "library SafeERC20" } } @@ -16231,24 +15982,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$1255", + "typeIdentifier": "t_contract$_SafeERC20_$1241", "typeString": "library SafeERC20" } ], - "id": 1205, + "id": 1191, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1310:7:9", + "src": "1265:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1207, + "id": 1193, "isConstant": false, "isLValue": false, "isPure": false, @@ -16256,7 +16007,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1310:13:9", + "src": "1265:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -16264,12 +16015,12 @@ }, { "argumentTypes": null, - "id": 1208, + "id": 1194, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1196, - "src": "1325:7:9", + "referencedDeclaration": 1182, + "src": "1280:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -16289,32 +16040,32 @@ ], "expression": { "argumentTypes": null, - "id": 1203, + "id": 1189, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1194, - "src": "1294:5:9", + "referencedDeclaration": 1180, + "src": "1249:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1111", + "typeIdentifier": "t_contract$_IERC20_$1096", "typeString": "contract IERC20" } }, - "id": 1204, + "id": 1190, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 1065, - "src": "1294:15:9", + "referencedDeclaration": 1079, + "src": "1249:15:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1209, + "id": 1195, "isConstant": false, "isLValue": false, "isPure": false, @@ -16322,27 +16073,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1294:39:9", + "src": "1249:39:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1210, + "id": 1196, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1021, - "src": "1294:43:9", + "referencedDeclaration": 1006, + "src": "1249:43:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1212, + "id": 1198, "isConstant": false, "isLValue": false, "isPure": false, @@ -16350,14 +16101,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1294:50:9", + "src": "1249:50:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1271:73:9" + "src": "1226:73:9" }, { "expression": { @@ -16368,12 +16119,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1217, + "id": 1203, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1196, - "src": "1372:7:9", + "referencedDeclaration": 1182, + "src": "1331:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -16381,12 +16132,12 @@ }, { "argumentTypes": null, - "id": 1218, + "id": 1204, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1202, - "src": "1381:12:9", + "referencedDeclaration": 1188, + "src": "1340:12:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16406,32 +16157,32 @@ ], "expression": { "argumentTypes": null, - "id": 1215, + "id": 1201, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1194, - "src": "1358:5:9", + "referencedDeclaration": 1180, + "src": "1317:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1111", + "typeIdentifier": "t_contract$_IERC20_$1096", "typeString": "contract IERC20" } }, - "id": 1216, + "id": 1202, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 1083, - "src": "1358:13:9", + "referencedDeclaration": 1047, + "src": "1317:13:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1219, + "id": 1205, "isConstant": false, "isLValue": false, "isPure": false, @@ -16439,7 +16190,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1358:36:9", + "src": "1317:36:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -16453,21 +16204,21 @@ "typeString": "bool" } ], - "id": 1214, + "id": 1200, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1273, - 1274 + 1259, + 1260 ], - "referencedDeclaration": 1273, - "src": "1350:7:9", + "referencedDeclaration": 1259, + "src": "1309:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1220, + "id": 1206, "isConstant": false, "isLValue": false, "isPure": false, @@ -16475,52 +16226,51 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1350:45:9", + "src": "1309:45:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1221, + "id": 1207, "nodeType": "ExpressionStatement", - "src": "1350:45:9" + "src": "1309:45:9" } ] }, "documentation": null, - "id": 1223, + "id": 1209, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "safeIncreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1199, + "id": 1185, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1194, + "id": 1180, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1223, - "src": "1193:12:9", + "scope": 1209, + "src": "1161:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1111", + "typeIdentifier": "t_contract$_IERC20_$1096", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1193, + "id": 1179, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1111, - "src": "1193:6:9", + "referencedDeclaration": 1096, + "src": "1161:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1111", + "typeIdentifier": "t_contract$_IERC20_$1096", "typeString": "contract IERC20" } }, @@ -16529,11 +16279,11 @@ }, { "constant": false, - "id": 1196, + "id": 1182, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1223, - "src": "1211:15:9", + "scope": 1209, + "src": "1175:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16541,10 +16291,11 @@ "typeString": "address" }, "typeName": { - "id": 1195, + "id": 1181, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1211:7:9", + "src": "1175:7:9", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -16555,11 +16306,11 @@ }, { "constant": false, - "id": 1198, + "id": 1184, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1223, - "src": "1232:13:9", + "scope": 1209, + "src": "1192:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16567,10 +16318,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1197, + "id": 1183, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1232:7:9", + "src": "1192:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16580,39 +16331,38 @@ "visibility": "internal" } ], - "src": "1187:62:9" + "src": "1160:46:9" }, - "payable": false, "returnParameters": { - "id": 1200, + "id": 1186, "nodeType": "ParameterList", "parameters": [], - "src": "1265:0:9" + "src": "1216:0:9" }, - "scope": 1255, - "src": "1157:243:9", + "scope": 1241, + "src": "1130:231:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1253, + "id": 1239, "nodeType": "Block", - "src": "1512:135:9", + "src": "1453:145:9", "statements": [ { "assignments": [ - 1233 + 1219 ], "declarations": [ { "constant": false, - "id": 1233, + "id": 1219, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 1254, - "src": "1518:20:9", + "scope": 1239, + "src": "1463:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16620,10 +16370,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1232, + "id": 1218, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1518:7:9", + "src": "1463:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16633,18 +16383,18 @@ "visibility": "internal" } ], - "id": 1244, + "id": 1230, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1242, + "id": 1228, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1229, - "src": "1585:5:9", + "referencedDeclaration": 1215, + "src": "1530:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16666,14 +16416,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1237, + "id": 1223, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1291, - "src": "1565:4:9", + "referencedDeclaration": 1278, + "src": "1510:4:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1255", + "typeIdentifier": "t_contract$_SafeERC20_$1241", "typeString": "library SafeERC20" } } @@ -16681,24 +16431,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$1255", + "typeIdentifier": "t_contract$_SafeERC20_$1241", "typeString": "library SafeERC20" } ], - "id": 1236, + "id": 1222, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1557:7:9", + "src": "1502:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1238, + "id": 1224, "isConstant": false, "isLValue": false, "isPure": false, @@ -16706,7 +16456,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1557:13:9", + "src": "1502:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -16714,12 +16464,12 @@ }, { "argumentTypes": null, - "id": 1239, + "id": 1225, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1227, - "src": "1572:7:9", + "referencedDeclaration": 1213, + "src": "1517:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -16739,32 +16489,32 @@ ], "expression": { "argumentTypes": null, - "id": 1234, + "id": 1220, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1225, - "src": "1541:5:9", + "referencedDeclaration": 1211, + "src": "1486:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1111", + "typeIdentifier": "t_contract$_IERC20_$1096", "typeString": "contract IERC20" } }, - "id": 1235, + "id": 1221, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 1065, - "src": "1541:15:9", + "referencedDeclaration": 1079, + "src": "1486:15:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1240, + "id": 1226, "isConstant": false, "isLValue": false, "isPure": false, @@ -16772,27 +16522,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1541:39:9", + "src": "1486:39:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1241, + "id": 1227, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 997, - "src": "1541:43:9", + "referencedDeclaration": 982, + "src": "1486:43:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1243, + "id": 1229, "isConstant": false, "isLValue": false, "isPure": false, @@ -16800,14 +16550,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1541:50:9", + "src": "1486:50:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1518:73:9" + "src": "1463:73:9" }, { "expression": { @@ -16818,12 +16568,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1248, + "id": 1234, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1227, - "src": "1619:7:9", + "referencedDeclaration": 1213, + "src": "1568:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -16831,12 +16581,12 @@ }, { "argumentTypes": null, - "id": 1249, + "id": 1235, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1233, - "src": "1628:12:9", + "referencedDeclaration": 1219, + "src": "1577:12:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16856,32 +16606,32 @@ ], "expression": { "argumentTypes": null, - "id": 1246, + "id": 1232, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1225, - "src": "1605:5:9", + "referencedDeclaration": 1211, + "src": "1554:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1111", + "typeIdentifier": "t_contract$_IERC20_$1096", "typeString": "contract IERC20" } }, - "id": 1247, + "id": 1233, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 1083, - "src": "1605:13:9", + "referencedDeclaration": 1047, + "src": "1554:13:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1250, + "id": 1236, "isConstant": false, "isLValue": false, "isPure": false, @@ -16889,7 +16639,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1605:36:9", + "src": "1554:36:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -16903,21 +16653,21 @@ "typeString": "bool" } ], - "id": 1245, + "id": 1231, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1273, - 1274 + 1259, + 1260 ], - "referencedDeclaration": 1273, - "src": "1597:7:9", + "referencedDeclaration": 1259, + "src": "1546:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1251, + "id": 1237, "isConstant": false, "isLValue": false, "isPure": false, @@ -16925,52 +16675,51 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1597:45:9", + "src": "1546:45:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1252, + "id": 1238, "nodeType": "ExpressionStatement", - "src": "1597:45:9" + "src": "1546:45:9" } ] }, "documentation": null, - "id": 1254, + "id": 1240, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "safeDecreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1230, + "id": 1216, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1225, + "id": 1211, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1254, - "src": "1440:12:9", + "scope": 1240, + "src": "1398:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1111", + "typeIdentifier": "t_contract$_IERC20_$1096", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1224, + "id": 1210, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1111, - "src": "1440:6:9", + "referencedDeclaration": 1096, + "src": "1398:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1111", + "typeIdentifier": "t_contract$_IERC20_$1096", "typeString": "contract IERC20" } }, @@ -16979,11 +16728,11 @@ }, { "constant": false, - "id": 1227, + "id": 1213, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1254, - "src": "1458:15:9", + "scope": 1240, + "src": "1412:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16991,10 +16740,11 @@ "typeString": "address" }, "typeName": { - "id": 1226, + "id": 1212, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1458:7:9", + "src": "1412:7:9", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -17005,11 +16755,11 @@ }, { "constant": false, - "id": 1229, + "id": 1215, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1254, - "src": "1479:13:9", + "scope": 1240, + "src": "1429:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -17017,10 +16767,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1228, + "id": 1214, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1479:7:9", + "src": "1429:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -17030,27 +16780,26 @@ "visibility": "internal" } ], - "src": "1434:62:9" + "src": "1397:46:9" }, - "payable": false, "returnParameters": { - "id": 1231, + "id": 1217, "nodeType": "ParameterList", "parameters": [], - "src": "1512:0:9" + "src": "1453:0:9" }, - "scope": 1255, - "src": "1404:243:9", + "scope": 1241, + "src": "1367:231:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 1256, - "src": "353:1296:9" + "scope": 1242, + "src": "352:1248:9" } ], - "src": "0:1650:9" + "src": "0:1601:9" }, "id": 9 } diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.bin b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.bin index fd3dbf5fd..a8c7ceb3e 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.bin +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b50604051602080620010d083398101604052516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790556200006c90640100000000620000c7810204565b6200008033640100000000620000e5810204565b50600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054600160a060020a031916905562000193565b620000e260028264010000000062000e066200010082021704565b50565b620000e260038264010000000062000e066200010082021704565b600160a060020a03811615156200011657600080fd5b6200012b82826401000000006200015b810204565b156200013657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200017357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610f2d80620001a36000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632e6b6849146100bc578063341ccfcb146100dd57806334cdcf26146100fe5780633d19ab1314610133578063608d3d3d1461016757806374be75921461018857806381f909f3146101a957806399f4b251146101ca578063bb52c137146101df578063d43acc7914610206578063e9d618591461021b575b600080fd5b3480156100b157600080fd5b506100ba610230565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661024e565b3480156100e957600080fd5b506100ba600160a060020a036004351661026e565b34801561010a57600080fd5b5061011f600160a060020a0360043516610457565b604080519115158252519081900360200190f35b34801561013f57600080fd5b5061014b600435610470565b60408051600160a060020a039092168252519081900360200190f35b34801561017357600080fd5b5061011f600160a060020a036004351661049f565b34801561019457600080fd5b506100ba600160a060020a03600435166104b2565b3480156101b557600080fd5b506100ba600160a060020a03600435166104cf565b3480156101d657600080fd5b506100ba610686565b3480156101eb57600080fd5b506101f4610bd1565b60408051918252519081900360200190f35b34801561021257600080fd5b506100ba610bdc565b34801561022757600080fd5b506100ba610be5565b6102393361049f565b151561024457600080fd5b61024c610bee565b565b6102573361049f565b151561026257600080fd5b61026b81610cb5565b50565b60008054819074010000000000000000000000000000000000000000900460ff161561029957600080fd5b6102a23361049f565b15156102ad57600080fd5b6004546103e8116102bd57600080fd5b600160a060020a038316600090815260056020526040902054156102e057600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032157600080fd5b505af1158015610335573d6000803e3d6000fd5b505050506040513d602081101561034b57600080fd5b5051151561035857600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b505050506040513d60208110156103c057600080fd5b50519050600060ff8216108015906103dc575060058160ff1611155b15156103e757600080fd5b505060048054600160a060020a039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b600061046a60028363ffffffff610cc616565b92915050565b600060048260010181548110151561048457fe5b600091825260209091200154600160a060020a031692915050565b600061046a60038363ffffffff610cc616565b6104bb33610457565b15156104c657600080fd5b61026b81610cfd565b60005474010000000000000000000000000000000000000000900460ff16156104f757600080fd5b6105003361049f565b151561050b57600080fd5b60045460011061051a57600080fd5b600454600214156105865760048054600190811061053457fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff191690556001610567600482610ea0565b50600160a060020a03811660009081526005602052604081205561026b565b600454600160a060020a03821660009081526005602052604090205414610620576004805460001981019081106105b957fe5b6000918252602080832090910154600160a060020a03848116845260059092526040909220546004805492909316929181106105f157fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60048054600019810190811061063257fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff19169055600480549061066b906000198301610ea0565b50600160a060020a0316600090815260056020526040812055565b6000610690610ec4565b60008060008061069e610ec4565b60005474010000000000000000000000000000000000000000900460ff16156106c657600080fd5b6106cf33610457565b15156106da57600080fd5b6004546001106106e957600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b505050506040513d602081101561077957600080fd5b505196506000871161078a57600080fd5b600194505b6004548510156109395760048054869081106107a757fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561080557600080fd5b505af1158015610819573d6000803e3d6000fd5b505050506040513d602081101561082f57600080fd5b5051151561083c5761092e565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561087a57600080fd5b505af115801561088e573d6000803e3d6000fd5b505050506040513d60208110156108a457600080fd5b5051925060ff831615156108c6578560005b602002018051600101905261092e565b8260ff16600114156108da578560016108b6565b8260ff16600214156108ee578560026108b6565b8260ff1660031415610902578560036108b6565b8260ff1660041415610916578560046108b6565b8260ff166005141561092e5760a08601805160010190525b60019094019361078f565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e909102016028909102016032909102019150818781151561097f57fe5b04815281600a880281151561099057fe5b04602082015281601488028115156109a457fe5b04604082015281601e88028115156109b857fe5b04606082015281602888028115156109cc57fe5b04608082015281603288028115156109e057fe5b0460a0820152600194505b600454851015610bc8576004805486908110610a0357fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a6157600080fd5b505af1158015610a75573d6000803e3d6000fd5b505050506040513d6020811015610a8b57600080fd5b50511515610a9857610bbd565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b505050506040513d6020811015610b0057600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610bbd91600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610b6457600080fd5b505af1158015610b78573d6000803e3d6000fd5b505050506040513d6020811015610b8e57600080fd5b50518260ff861660068110610b9f57fe5b6020020151600154600160a060020a0316919063ffffffff610d0e16565b6001909401936109eb565b50505050505050565b600454600019015b90565b61024c33610dad565b61024c33610dbe565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b505050506040513d6020811015610c7d57600080fd5b505190506000811115610cad57600054600154610cad91600160a060020a0391821691168363ffffffff610d0e16565b61026b610dcf565b61026b60038263ffffffff610e0616565b6000600160a060020a0382161515610cdd57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61026b60028263ffffffff610e0616565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610d7157600080fd5b505af1158015610d85573d6000803e3d6000fd5b505050506040513d6020811015610d9b57600080fd5b50511515610da857600080fd5b505050565b61026b60038263ffffffff610e5416565b61026b60028263ffffffff610e5416565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a0381161515610e1b57600080fd5b610e258282610cc6565b15610e2f57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610e6957600080fd5b610e738282610cc6565b1515610e7e57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610da857600083815260209020610da8918101908301610ee3565b60c0604051908101604052806006906020820280388339509192915050565b610bd991905b80821115610efd5760008155600101610ee9565b50905600a165627a7a7230582095e26f90cc3199aca464eb563533fc93a77d60dc52f6506d09a60413c4ab2d960029 \ No newline at end of file +60806040523480156200001157600080fd5b5060405160208062001070833981018060405260208110156200003357600080fd5b50516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790556200007d90640100000000620000d8810204565b6200009133640100000000620000f6810204565b50600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054600160a060020a0319169055620001a4565b620000f360028264010000000062000dd76200011182021704565b50565b620000f360038264010000000062000dd76200011182021704565b600160a060020a03811615156200012757600080fd5b6200013c82826401000000006200016c810204565b156200014757600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200018457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610ebc80620001b46000396000f3fe608060405234801561001057600080fd5b50600436106100b85760003560e060020a9004806374be75921161007557806374be7592146101ac57806381f909f3146101d257806399f4b251146101f8578063bb52c13714610200578063d43acc791461021a578063e9d6185914610222576100b8565b80630c08bf88146100bd5780632e6b6849146100c7578063341ccfcb146100ed57806334cdcf26146101135780633d19ab131461014d578063608d3d3d14610186575b600080fd5b6100c561022a565b005b6100c5600480360360208110156100dd57600080fd5b5035600160a060020a0316610248565b6100c56004803603602081101561010357600080fd5b5035600160a060020a0316610268565b6101396004803603602081101561012957600080fd5b5035600160a060020a031661043c565b604080519115158252519081900360200190f35b61016a6004803603602081101561016357600080fd5b5035610455565b60408051600160a060020a039092168252519081900360200190f35b6101396004803603602081101561019c57600080fd5b5035600160a060020a0316610484565b6100c5600480360360208110156101c257600080fd5b5035600160a060020a0316610497565b6100c5600480360360208110156101e857600080fd5b5035600160a060020a03166104b4565b6100c5610656565b610208610ba4565b60408051918252519081900360200190f35b6100c5610bae565b6100c5610bb7565b61023333610484565b151561023e57600080fd5b610246610bc0565b565b61025133610484565b151561025c57600080fd5b61026581610c86565b50565b60005474010000000000000000000000000000000000000000900460ff161561029057600080fd5b61029933610484565b15156102a457600080fd5b6004546103e8116102b457600080fd5b600160a060020a038116600090815260056020526040902054156102d757600080fd5b600081905080600160a060020a0316631777fb4b6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561031857600080fd5b505afa15801561032c573d6000803e3d6000fd5b505050506040513d602081101561034257600080fd5b5051151561034f57600080fd5b600081600160a060020a03166380258e476040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561038d57600080fd5b505afa1580156103a1573d6000803e3d6000fd5b505050506040513d60208110156103b757600080fd5b50519050600560ff821611156103cc57600080fd5b505060048054600160a060020a039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b600061044f60028363ffffffff610c9716565b92915050565b600060048260010181548110151561046957fe5b600091825260209091200154600160a060020a031692915050565b600061044f60038363ffffffff610c9716565b6104a03361043c565b15156104ab57600080fd5b61026581610cce565b60005474010000000000000000000000000000000000000000900460ff16156104dc57600080fd5b6104e533610484565b15156104f057600080fd5b6004546001106104ff57600080fd5b60045460021415610564576004805480151561051757fe5b600082815260208082208301600019908101805473ffffffffffffffffffffffffffffffffffffffff19169055909201909255600160a060020a0383168252600590526040812055610265565b600454600160a060020a038216600090815260056020526040902054146105fe5760048054600019810190811061059757fe5b6000918252602080832090910154600160a060020a03848116845260059092526040909220546004805492909316929181106105cf57fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b6004805480151561060b57fe5b600082815260208082208301600019908101805473ffffffffffffffffffffffffffffffffffffffff19169055909201909255600160a060020a038316825260059052604081205550565b60005474010000000000000000000000000000000000000000900460ff161561067e57600080fd5b6106873361043c565b151561069257600080fd5b6004546001106106a157600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a08231916024808301926020929190829003018186803b15801561070557600080fd5b505afa158015610719573d6000803e3d6000fd5b505050506040513d602081101561072f57600080fd5b505190506000811161074057600080fd5b610748610e71565b60045460015b8181101561090157600060048281548110151561076757fe5b60009182526020918290200154604080517f19a74ab30000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216935083926319a74ab392600480840193829003018186803b1580156107cc57600080fd5b505afa1580156107e0573d6000803e3d6000fd5b505050506040513d60208110156107f657600080fd5b5051151561080457506108f9565b600081600160a060020a03166380258e476040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561084257600080fd5b505afa158015610856573d6000803e3d6000fd5b505050506040513d602081101561086c57600080fd5b5051905060ff8116151561088e578460005b60200201805160010190526108f6565b8060ff16600114156108a25784600161087e565b8060ff16600214156108b65784600261087e565b8060ff16600314156108ca5784600361087e565b8060ff16600414156108de5784600461087e565b8060ff16600514156108f65760a08501805160010190525b50505b60010161074e565b5060a082015160808301516060840151604085015160208601518651600a90910201601490910201601e90910201602890910201603290910201610943610e71565b818581151561094e57fe5b04815281600a860281151561095f57fe5b046020820152816014860281151561097357fe5b04604082015281601e860281151561098757fe5b046060820152816028860281151561099b57fe5b04608082015281603286028115156109af57fe5b0460a082015260015b83811015610b9c5760006004828154811015156109d157fe5b60009182526020918290200154604080517f19a74ab30000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216935083926319a74ab392600480840193829003018186803b158015610a3657600080fd5b505afa158015610a4a573d6000803e3d6000fd5b505050506040513d6020811015610a6057600080fd5b50511515610a6e5750610b94565b600081600160a060020a03166380258e476040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610aac57600080fd5b505afa158015610ac0573d6000803e3d6000fd5b505050506040513d6020811015610ad657600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919250610b9191600160a060020a0385169163302c11ca916004808301926020929190829003018186803b158015610b3857600080fd5b505afa158015610b4c573d6000803e3d6000fd5b505050506040513d6020811015610b6257600080fd5b50518560ff841660068110610b7357fe5b6020020151600154600160a060020a0316919063ffffffff610cdf16565b50505b6001016109b8565b505050505050565b6004546000190190565b61024633610d7e565b61024633610d8f565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a08231916024808301926020929190829003018186803b158015610c2457600080fd5b505afa158015610c38573d6000803e3d6000fd5b505050506040513d6020811015610c4e57600080fd5b505190506000811115610c7e57600054600154610c7e91600160a060020a0391821691168363ffffffff610cdf16565b610265610da0565b61026560038263ffffffff610dd716565b6000600160a060020a0382161515610cae57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61026560028263ffffffff610dd716565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610d4257600080fd5b505af1158015610d56573d6000803e3d6000fd5b505050506040513d6020811015610d6c57600080fd5b50511515610d7957600080fd5b505050565b61026560038263ffffffff610e2516565b61026560028263ffffffff610e2516565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a0381161515610dec57600080fd5b610df68282610c97565b15610e0057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610e3a57600080fd5b610e448282610c97565b1515610e4f57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b60c060405190810160405280600690602082028038833950919291505056fea165627a7a72305820d93c57fe9a496ba0db433cb631bbbbe57a53bb63720b63023ea0e465cf5c1d200029 \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.json index 4edae4a73..124576278 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.json @@ -175,7 +175,7 @@ "type": "constructor" } ], - "bytecode": "60806040523480156200001157600080fd5b50604051602080620010d083398101604052516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790556200006c90640100000000620000c7810204565b6200008033640100000000620000e5810204565b50600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054600160a060020a031916905562000193565b620000e260028264010000000062000e066200010082021704565b50565b620000e260038264010000000062000e066200010082021704565b600160a060020a03811615156200011657600080fd5b6200012b82826401000000006200015b810204565b156200013657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200017357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610f2d80620001a36000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632e6b6849146100bc578063341ccfcb146100dd57806334cdcf26146100fe5780633d19ab1314610133578063608d3d3d1461016757806374be75921461018857806381f909f3146101a957806399f4b251146101ca578063bb52c137146101df578063d43acc7914610206578063e9d618591461021b575b600080fd5b3480156100b157600080fd5b506100ba610230565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661024e565b3480156100e957600080fd5b506100ba600160a060020a036004351661026e565b34801561010a57600080fd5b5061011f600160a060020a0360043516610457565b604080519115158252519081900360200190f35b34801561013f57600080fd5b5061014b600435610470565b60408051600160a060020a039092168252519081900360200190f35b34801561017357600080fd5b5061011f600160a060020a036004351661049f565b34801561019457600080fd5b506100ba600160a060020a03600435166104b2565b3480156101b557600080fd5b506100ba600160a060020a03600435166104cf565b3480156101d657600080fd5b506100ba610686565b3480156101eb57600080fd5b506101f4610bd1565b60408051918252519081900360200190f35b34801561021257600080fd5b506100ba610bdc565b34801561022757600080fd5b506100ba610be5565b6102393361049f565b151561024457600080fd5b61024c610bee565b565b6102573361049f565b151561026257600080fd5b61026b81610cb5565b50565b60008054819074010000000000000000000000000000000000000000900460ff161561029957600080fd5b6102a23361049f565b15156102ad57600080fd5b6004546103e8116102bd57600080fd5b600160a060020a038316600090815260056020526040902054156102e057600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032157600080fd5b505af1158015610335573d6000803e3d6000fd5b505050506040513d602081101561034b57600080fd5b5051151561035857600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b505050506040513d60208110156103c057600080fd5b50519050600060ff8216108015906103dc575060058160ff1611155b15156103e757600080fd5b505060048054600160a060020a039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b600061046a60028363ffffffff610cc616565b92915050565b600060048260010181548110151561048457fe5b600091825260209091200154600160a060020a031692915050565b600061046a60038363ffffffff610cc616565b6104bb33610457565b15156104c657600080fd5b61026b81610cfd565b60005474010000000000000000000000000000000000000000900460ff16156104f757600080fd5b6105003361049f565b151561050b57600080fd5b60045460011061051a57600080fd5b600454600214156105865760048054600190811061053457fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff191690556001610567600482610ea0565b50600160a060020a03811660009081526005602052604081205561026b565b600454600160a060020a03821660009081526005602052604090205414610620576004805460001981019081106105b957fe5b6000918252602080832090910154600160a060020a03848116845260059092526040909220546004805492909316929181106105f157fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60048054600019810190811061063257fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff19169055600480549061066b906000198301610ea0565b50600160a060020a0316600090815260056020526040812055565b6000610690610ec4565b60008060008061069e610ec4565b60005474010000000000000000000000000000000000000000900460ff16156106c657600080fd5b6106cf33610457565b15156106da57600080fd5b6004546001106106e957600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b505050506040513d602081101561077957600080fd5b505196506000871161078a57600080fd5b600194505b6004548510156109395760048054869081106107a757fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561080557600080fd5b505af1158015610819573d6000803e3d6000fd5b505050506040513d602081101561082f57600080fd5b5051151561083c5761092e565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561087a57600080fd5b505af115801561088e573d6000803e3d6000fd5b505050506040513d60208110156108a457600080fd5b5051925060ff831615156108c6578560005b602002018051600101905261092e565b8260ff16600114156108da578560016108b6565b8260ff16600214156108ee578560026108b6565b8260ff1660031415610902578560036108b6565b8260ff1660041415610916578560046108b6565b8260ff166005141561092e5760a08601805160010190525b60019094019361078f565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e909102016028909102016032909102019150818781151561097f57fe5b04815281600a880281151561099057fe5b04602082015281601488028115156109a457fe5b04604082015281601e88028115156109b857fe5b04606082015281602888028115156109cc57fe5b04608082015281603288028115156109e057fe5b0460a0820152600194505b600454851015610bc8576004805486908110610a0357fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a6157600080fd5b505af1158015610a75573d6000803e3d6000fd5b505050506040513d6020811015610a8b57600080fd5b50511515610a9857610bbd565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b505050506040513d6020811015610b0057600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610bbd91600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610b6457600080fd5b505af1158015610b78573d6000803e3d6000fd5b505050506040513d6020811015610b8e57600080fd5b50518260ff861660068110610b9f57fe5b6020020151600154600160a060020a0316919063ffffffff610d0e16565b6001909401936109eb565b50505050505050565b600454600019015b90565b61024c33610dad565b61024c33610dbe565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b505050506040513d6020811015610c7d57600080fd5b505190506000811115610cad57600054600154610cad91600160a060020a0391821691168363ffffffff610d0e16565b61026b610dcf565b61026b60038263ffffffff610e0616565b6000600160a060020a0382161515610cdd57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61026b60028263ffffffff610e0616565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610d7157600080fd5b505af1158015610d85573d6000803e3d6000fd5b505050506040513d6020811015610d9b57600080fd5b50511515610da857600080fd5b505050565b61026b60038263ffffffff610e5416565b61026b60028263ffffffff610e5416565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a0381161515610e1b57600080fd5b610e258282610cc6565b15610e2f57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610e6957600080fd5b610e738282610cc6565b1515610e7e57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610da857600083815260209020610da8918101908301610ee3565b60c0604051908101604052806006906020820280388339509192915050565b610bd991905b80821115610efd5760008155600101610ee9565b50905600a165627a7a7230582095e26f90cc3199aca464eb563533fc93a77d60dc52f6506d09a60413c4ab2d960029", + "bytecode": "60806040523480156200001157600080fd5b5060405160208062001070833981018060405260208110156200003357600080fd5b50516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790556200007d90640100000000620000d8810204565b6200009133640100000000620000f6810204565b50600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054600160a060020a0319169055620001a4565b620000f360028264010000000062000dd76200011182021704565b50565b620000f360038264010000000062000dd76200011182021704565b600160a060020a03811615156200012757600080fd5b6200013c82826401000000006200016c810204565b156200014757600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200018457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610ebc80620001b46000396000f3fe608060405234801561001057600080fd5b50600436106100b85760003560e060020a9004806374be75921161007557806374be7592146101ac57806381f909f3146101d257806399f4b251146101f8578063bb52c13714610200578063d43acc791461021a578063e9d6185914610222576100b8565b80630c08bf88146100bd5780632e6b6849146100c7578063341ccfcb146100ed57806334cdcf26146101135780633d19ab131461014d578063608d3d3d14610186575b600080fd5b6100c561022a565b005b6100c5600480360360208110156100dd57600080fd5b5035600160a060020a0316610248565b6100c56004803603602081101561010357600080fd5b5035600160a060020a0316610268565b6101396004803603602081101561012957600080fd5b5035600160a060020a031661043c565b604080519115158252519081900360200190f35b61016a6004803603602081101561016357600080fd5b5035610455565b60408051600160a060020a039092168252519081900360200190f35b6101396004803603602081101561019c57600080fd5b5035600160a060020a0316610484565b6100c5600480360360208110156101c257600080fd5b5035600160a060020a0316610497565b6100c5600480360360208110156101e857600080fd5b5035600160a060020a03166104b4565b6100c5610656565b610208610ba4565b60408051918252519081900360200190f35b6100c5610bae565b6100c5610bb7565b61023333610484565b151561023e57600080fd5b610246610bc0565b565b61025133610484565b151561025c57600080fd5b61026581610c86565b50565b60005474010000000000000000000000000000000000000000900460ff161561029057600080fd5b61029933610484565b15156102a457600080fd5b6004546103e8116102b457600080fd5b600160a060020a038116600090815260056020526040902054156102d757600080fd5b600081905080600160a060020a0316631777fb4b6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561031857600080fd5b505afa15801561032c573d6000803e3d6000fd5b505050506040513d602081101561034257600080fd5b5051151561034f57600080fd5b600081600160a060020a03166380258e476040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561038d57600080fd5b505afa1580156103a1573d6000803e3d6000fd5b505050506040513d60208110156103b757600080fd5b50519050600560ff821611156103cc57600080fd5b505060048054600160a060020a039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b600061044f60028363ffffffff610c9716565b92915050565b600060048260010181548110151561046957fe5b600091825260209091200154600160a060020a031692915050565b600061044f60038363ffffffff610c9716565b6104a03361043c565b15156104ab57600080fd5b61026581610cce565b60005474010000000000000000000000000000000000000000900460ff16156104dc57600080fd5b6104e533610484565b15156104f057600080fd5b6004546001106104ff57600080fd5b60045460021415610564576004805480151561051757fe5b600082815260208082208301600019908101805473ffffffffffffffffffffffffffffffffffffffff19169055909201909255600160a060020a0383168252600590526040812055610265565b600454600160a060020a038216600090815260056020526040902054146105fe5760048054600019810190811061059757fe5b6000918252602080832090910154600160a060020a03848116845260059092526040909220546004805492909316929181106105cf57fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b6004805480151561060b57fe5b600082815260208082208301600019908101805473ffffffffffffffffffffffffffffffffffffffff19169055909201909255600160a060020a038316825260059052604081205550565b60005474010000000000000000000000000000000000000000900460ff161561067e57600080fd5b6106873361043c565b151561069257600080fd5b6004546001106106a157600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a08231916024808301926020929190829003018186803b15801561070557600080fd5b505afa158015610719573d6000803e3d6000fd5b505050506040513d602081101561072f57600080fd5b505190506000811161074057600080fd5b610748610e71565b60045460015b8181101561090157600060048281548110151561076757fe5b60009182526020918290200154604080517f19a74ab30000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216935083926319a74ab392600480840193829003018186803b1580156107cc57600080fd5b505afa1580156107e0573d6000803e3d6000fd5b505050506040513d60208110156107f657600080fd5b5051151561080457506108f9565b600081600160a060020a03166380258e476040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561084257600080fd5b505afa158015610856573d6000803e3d6000fd5b505050506040513d602081101561086c57600080fd5b5051905060ff8116151561088e578460005b60200201805160010190526108f6565b8060ff16600114156108a25784600161087e565b8060ff16600214156108b65784600261087e565b8060ff16600314156108ca5784600361087e565b8060ff16600414156108de5784600461087e565b8060ff16600514156108f65760a08501805160010190525b50505b60010161074e565b5060a082015160808301516060840151604085015160208601518651600a90910201601490910201601e90910201602890910201603290910201610943610e71565b818581151561094e57fe5b04815281600a860281151561095f57fe5b046020820152816014860281151561097357fe5b04604082015281601e860281151561098757fe5b046060820152816028860281151561099b57fe5b04608082015281603286028115156109af57fe5b0460a082015260015b83811015610b9c5760006004828154811015156109d157fe5b60009182526020918290200154604080517f19a74ab30000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216935083926319a74ab392600480840193829003018186803b158015610a3657600080fd5b505afa158015610a4a573d6000803e3d6000fd5b505050506040513d6020811015610a6057600080fd5b50511515610a6e5750610b94565b600081600160a060020a03166380258e476040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610aac57600080fd5b505afa158015610ac0573d6000803e3d6000fd5b505050506040513d6020811015610ad657600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919250610b9191600160a060020a0385169163302c11ca916004808301926020929190829003018186803b158015610b3857600080fd5b505afa158015610b4c573d6000803e3d6000fd5b505050506040513d6020811015610b6257600080fd5b50518560ff841660068110610b7357fe5b6020020151600154600160a060020a0316919063ffffffff610cdf16565b50505b6001016109b8565b505050505050565b6004546000190190565b61024633610d7e565b61024633610d8f565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a08231916024808301926020929190829003018186803b158015610c2457600080fd5b505afa158015610c38573d6000803e3d6000fd5b505050506040513d6020811015610c4e57600080fd5b505190506000811115610c7e57600054600154610c7e91600160a060020a0391821691168363ffffffff610cdf16565b610265610da0565b61026560038263ffffffff610dd716565b6000600160a060020a0382161515610cae57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61026560028263ffffffff610dd716565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610d4257600080fd5b505af1158015610d56573d6000803e3d6000fd5b505050506040513d6020811015610d6c57600080fd5b50511515610d7957600080fd5b505050565b61026560038263ffffffff610e2516565b61026560028263ffffffff610e2516565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a0381161515610dec57600080fd5b610df68282610c97565b15610e0057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610e3a57600080fd5b610e448282610c97565b1515610e4f57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b60c060405190810160405280600690602082028038833950919291505056fea165627a7a72305820d93c57fe9a496ba0db433cb631bbbbe57a53bb63720b63023ea0e465cf5c1d200029", "functionHashes": { "addCoreTeam(address)": "2e6b6849", "addSystem(address)": "74be7592", @@ -192,15 +192,15 @@ }, "gasEstimates": { "creation": { - "codeDepositCost": "777000", + "codeDepositCost": "754400", "executionCost": "infinite", "totalCost": "infinite" }, "external": { "addCoreTeam(address)": "infinite", "addSystem(address)": "infinite", - "getMinerByIndex(uint256)": "1002", - "getMinerCount()": "655", + "getMinerByIndex(uint256)": "1058", + "getMinerCount()": "541", "isCoreTeam(address)": "infinite", "isSystem(address)": "infinite", "mine()": "infinite", diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json index 79da0244d..e8c434ff2 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json @@ -9,9 +9,9 @@ "evm": { "bytecode": { "linkReferences": {}, - "object": "6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a72305820a82cc7d287f8450e22843025dd73eaa06172ebd434e1e3cf86a642a33d96584e0029", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x35 DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xa8 0x2c 0xc7 0xd2 DUP8 0xf8 GASLIMIT 0xe 0x22 DUP5 ADDRESS 0x25 0xdd PUSH20 0xEAA06172EBD434E1E3CF86A642A33D96584E0029 ", - "sourceMap": "27:1033:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27:1033:0;;;;;;;" + "object": "6080604052348015600f57600080fd5b50603580601d6000396000f3fe6080604052600080fdfea165627a7a72305820c142737f5004f0e270be8e9321f75139c2de559ee56245828f39cd6b8e6ac07b0029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x35 DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 0xc1 TIMESTAMP PUSH20 0x7F5004F0E270BE8E9321F75139C2DE559EE56245 DUP3 DUP16 CODECOPY 0xcd PUSH12 0x8E6AC07B0029000000000000 ", + "sourceMap": "26:1033:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26:1033:0;;;;;;;" }, "gasEstimates": { "creation": { @@ -25,7 +25,7 @@ }, "methodIdentifiers": {} }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol\":\"AlgoCommon\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol\":{\"keccak256\":\"0x2314139702cc63c8daa379e521abea3be32730ba896f68f3f865749907e64539\",\"urls\":[\"bzzr://b945e0ec5a4ca8a52b5e816c5bb00807d0ca43c5363102821b36c8c4ee98a2d5\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.4+commit.9549d8ff\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol\":\"AlgoCommon\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol\":{\"keccak256\":\"0x014debd2c96ba7aba7faef24eac1f1a5d46791b55ae55fbd51d7945bf21277e0\",\"urls\":[\"bzzr://b8d1cffc7f1bfdc8c911d90b785cf9c2723b24bd162d7cfd730e127f56932fe9\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -508,13 +508,13 @@ "evm": { "bytecode": { "linkReferences": {}, - "object": "60806040523480156200001157600080fd5b5060405160a080620014d1833981016040908152815160208301519183015160608401516080909401516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790559294919262000087906401000000006200018e810204565b6200009b33640100000000620001ac810204565b620000af33640100000000620001c7810204565b60008460ff1610158015620000c8575060058460ff1611155b1515620000d457600080fd5b600160a060020a0383161515620000ea57600080fd5b6000856001811115620000f957fe5b14156200011657600160a060020a03821615156200011657600080fd5b6005805486919060ff1916600183818111156200012f57fe5b0217905550506005805461ff00191661010060ff9590951694909402939093176201000060b060020a03191662010000600160a060020a03938416021790925560068054600160a060020a031916929091169190911790555062000275565b620001a960028264010000000062001186620001e282021704565b50565b620001a960038264010000000062001186620001e282021704565b620001a960048264010000000062001186620001e282021704565b600160a060020a0381161515620001f857600080fd5b6200020d82826401000000006200023d810204565b156200021857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200025557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61124c80620002856000396000f3006080604052600436106101745763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630c08bf888114610179578063162f986d146101905780631777fb4b146101a557806319a74ab3146101ce57806321b79d98146101e3578063231d4e2a146101f857806329d10b6e146102195780632e6b68491461023a578063302c11ca1461025b578063329b1c921461028c57806334cdcf26146102a1578063363aa6c7146102c25780633e6968b6146102d7578063427534a4146103035780634969ae7014610318578063608d3d3d1461034357806374be75921461036457806380258e471461038557806381a244591461039a5780638329138f146103bb57806399f4b251146103e25780639e614ca0146103f7578063b2a32cd51461040c578063be95249414610421578063cdfd0f6414610436578063ce41607a1461045d578063d43acc7914610472578063da40867914610487578063e9d618591461049c575b600080fd5b34801561018557600080fd5b5061018e6104b1565b005b34801561019c57600080fd5b5061018e6104cf565b3480156101b157600080fd5b506101ba61053e565b604080519115158252519081900360200190f35b3480156101da57600080fd5b506101ba610543565b3480156101ef57600080fd5b5061018e61057a565b34801561020457600080fd5b5061018e600160a060020a0360043516610610565b34801561022557600080fd5b5061018e600160a060020a03600435166106fc565b34801561024657600080fd5b5061018e600160a060020a0360043516610719565b34801561026757600080fd5b50610270610736565b60408051600160a060020a039092168252519081900360200190f35b34801561029857600080fd5b5061027061074b565b3480156102ad57600080fd5b506101ba600160a060020a036004351661075a565b3480156102ce57600080fd5b5061018e610775565b3480156102e357600080fd5b506102ec610826565b6040805161ffff9092168252519081900360200190f35b34801561030f57600080fd5b5061018e610837565b34801561032457600080fd5b5061032d6108a3565b6040805160ff9092168252519081900360200190f35b34801561034f57600080fd5b506101ba600160a060020a03600435166108b7565b34801561037057600080fd5b5061018e600160a060020a03600435166108ca565b34801561039157600080fd5b5061032d6108e7565b3480156103a657600080fd5b506101ba600160a060020a03600435166108f5565b3480156103c757600080fd5b5061018e600160a060020a0360043581169060243516610908565b3480156103ee57600080fd5b5061018e6109bb565b34801561040357600080fd5b5061018e610bfc565b34801561041857600080fd5b5061018e610c6d565b34801561042d57600080fd5b5061018e610dcb565b34801561044257600080fd5b5061044b610dd4565b60408051918252519081900360200190f35b34801561046957600080fd5b5061032d610dda565b34801561047e57600080fd5b5061018e610dfd565b34801561049357600080fd5b5061018e610e06565b3480156104a857600080fd5b5061018e610e97565b6104ba336108b7565b15156104c557600080fd5b6104cd610ea0565b565b60005460a060020a900460ff16156104e657600080fd5b6104ef336108f5565b15156104fa57600080fd5b600160065460a060020a900460ff16600381111561051457fe5b1461051e57600080fd5b600680546002919060a060020a60ff02191660a060020a835b0217905550565b600190565b6000600160065460a060020a900460ff16600381111561055f57fe5b148015610575575060065460a860020a900460ff165b905090565b60005460a060020a900460ff161561059157600080fd5b600554620100009004600160a060020a031633146105ae57600080fd5b600160065460a060020a900460ff1660038111156105c857fe5b146105d257600080fd5b60065460a860020a900460ff16156105e957600080fd5b6006805475ff000000000000000000000000000000000000000000191660a860020a179055565b610619336108b7565b151561062457600080fd5b600060065460a060020a900460ff16600381111561063e57fe5b1461064857600080fd5b600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516106f9928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d60208110156106de57600080fd5b5051600154600160a060020a0316919063ffffffff610f6716565b50565b610705336108f5565b151561071057600080fd5b6106f98161101f565b610722336108b7565b151561072d57600080fd5b6106f981611030565b600554620100009004600160a060020a031690565b600654600160a060020a031690565b600061076d60028363ffffffff61104116565b90505b919050565b60005460a060020a900460ff161561078c57600080fd5b610795336108f5565b15156107a057600080fd5b600360065460a060020a900460ff1660038111156107ba57fe5b14156107c557600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff00001916905560a060020a60ff021916740300000000000000000000000000000000000000001775ff00ffffffffffffffffffffffffffffffffffffffff19169055565b60065460b860020a900461ffff1690565b60005460a060020a900460ff161561084e57600080fd5b610857336108f5565b151561086257600080fd5b600260065460a060020a900460ff16600381111561087c57fe5b1461088657600080fd5b600680546001919060a060020a60ff02191660a060020a83610537565b60055460009060ff16600181111561057557fe5b600061076d60038363ffffffff61104116565b6108d33361075a565b15156108de57600080fd5b6106f981611078565b600554610100900460ff1690565b600061076d60048363ffffffff61104116565b60005460a060020a900460ff161561091f57600080fd5b610928336108f5565b151561093357600080fd5b600360065460a060020a900460ff16600381111561094d57fe5b1461095757600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a039687160217905560a060020a60ff02191660a060020a1773ffffffffffffffffffffffffffffffffffffffff191691909216179055565b60008054819060a060020a900460ff16156109d557600080fd5b6109de3361075a565b15156109e957600080fd5b600060055460ff1660018111156109fc57fe5b14610a0657600080fd5b600160065460a060020a900460ff166003811115610a2057fe5b14610a2a57600080fd5b60065460a860020a900460ff161515610a4257600080fd5b60065460b860020a900461ffff161515610ab8576006805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610b80565b60068054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610b80576006805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600754600290046007555b505060075461016d90046064600a82020460008211610b9e57600080fd5b60008111610bab57600080fd5b600554600154610bd591600160a060020a039182169162010000909104168463ffffffff610f6716565b600654600154610bf891600160a060020a0391821691168363ffffffff610f6716565b5050565b60005460a060020a900460ff1615610c1357600080fd5b610c1c336108b7565b1515610c2757600080fd5b600060065460a060020a900460ff166003811115610c4157fe5b1415610c4c57600080fd5b6006805475ffff000000000000000000000000000000000000000019169055565b600080548190819060a060020a900460ff1615610c8957600080fd5b610c92336108b7565b1515610c9d57600080fd5b600060065460a060020a900460ff166003811115610cb757fe5b14610cc157600080fd5b600060055460ff166001811115610cd457fe5b148015610ce15750600754155b15610db057600554610cfa90610100900460ff16611089565b92506064600a8402600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519390920486019450600160a060020a0316916370a08231916024808201926020929091908290030181600087803b158015610d6e57600080fd5b505af1158015610d82573d6000803e3d6000fd5b505050506040513d6020811015610d9857600080fd5b50519050818114610da857600080fd5b600283046007555b50506006805460a060020a60ff02191660a060020a17905550565b6104cd3361113b565b60075490565b600654760100000000000000000000000000000000000000000000900460ff1690565b6104cd3361114c565b60005460a060020a900460ff1615610e1d57600080fd5b600554620100009004600160a060020a03163314610e3a57600080fd5b600160065460a060020a900460ff166003811115610e5457fe5b14610e5e57600080fd5b60065460a860020a900460ff161515610e7657600080fd5b6006805475ff00000000000000000000000000000000000000000019169055565b6104cd3361115d565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610f0557600080fd5b505af1158015610f19573d6000803e3d6000fd5b505050506040513d6020811015610f2f57600080fd5b505190506000811115610f5f57600054600154610f5f91600160a060020a0391821691168363ffffffff610f6716565b6106f961116e565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610fe357600080fd5b505af1158015610ff7573d6000803e3d6000fd5b505050506040513d602081101561100d57600080fd5b5051151561101a57600080fd5b505050565b6106f960048263ffffffff61118616565b6106f960038263ffffffff61118616565b6000600160a060020a038216151561105857600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106f960028263ffffffff61118616565b600060ff821615156110a6575069152d02c7e14af6800000610770565b8160ff16600114156110c3575069d3c21bcecceda1000000610770565b8160ff16600214156110e157506a01a784379d99db42000000610770565b8160ff16600314156110ff57506a027b46536c66c8e3000000610770565b8160ff166004141561111d57506a034f086f3b33b684000000610770565b8160ff166005141561077057506a0422ca8b0a00a425000000610770565b6106f960048263ffffffff6111d416565b6106f960038263ffffffff6111d416565b6106f960028263ffffffff6111d416565b6000805460a060020a60ff02191660a060020a179055565b600160a060020a038116151561119b57600080fd5b6111a58282611041565b156111af57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a03811615156111e957600080fd5b6111f38282611041565b15156111fe57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058202935a8fadd5caa8f5a9312cd903c07814b3de5662642cabdc9018c364221db570029", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0xA0 DUP1 PUSH3 0x14D1 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 SWAP1 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD SWAP2 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 SWAP1 SWAP5 ADD MLOAD PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP2 DUP3 AND DUP2 OR PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND OR SWAP1 SSTORE SWAP3 SWAP5 SWAP2 SWAP3 PUSH3 0x87 SWAP1 PUSH5 0x100000000 PUSH3 0x18E DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x9B CALLER PUSH5 0x100000000 PUSH3 0x1AC DUP2 MUL DIV JUMP JUMPDEST PUSH3 0xAF CALLER PUSH5 0x100000000 PUSH3 0x1C7 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0xFF AND LT ISZERO DUP1 ISZERO PUSH3 0xC8 JUMPI POP PUSH1 0x5 DUP5 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH3 0xD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH3 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 DUP2 GT ISZERO PUSH3 0xF9 JUMPI INVALID JUMPDEST EQ ISZERO PUSH3 0x116 JUMPI PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x116 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD DUP7 SWAP2 SWAP1 PUSH1 0xFF NOT AND PUSH1 0x1 DUP4 DUP2 DUP2 GT ISZERO PUSH3 0x12F JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP POP PUSH1 0x5 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 PUSH1 0xFF SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 MUL SWAP4 SWAP1 SWAP4 OR PUSH3 0x10000 PUSH1 0xB0 PUSH1 0x2 EXP SUB NOT AND PUSH3 0x10000 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP4 DUP5 AND MUL OR SWAP1 SWAP3 SSTORE PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0x275 JUMP JUMPDEST PUSH3 0x1A9 PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH3 0x1186 PUSH3 0x1E2 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x1A9 PUSH1 0x3 DUP3 PUSH5 0x100000000 PUSH3 0x1186 PUSH3 0x1E2 DUP3 MUL OR DIV JUMP JUMPDEST PUSH3 0x1A9 PUSH1 0x4 DUP3 PUSH5 0x100000000 PUSH3 0x1186 PUSH3 0x1E2 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH3 0x1F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x20D DUP3 DUP3 PUSH5 0x100000000 PUSH3 0x23D DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH3 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x255 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x124C DUP1 PUSH3 0x285 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x174 JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0xC08BF88 DUP2 EQ PUSH2 0x179 JUMPI DUP1 PUSH4 0x162F986D EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0x1777FB4B EQ PUSH2 0x1A5 JUMPI DUP1 PUSH4 0x19A74AB3 EQ PUSH2 0x1CE JUMPI DUP1 PUSH4 0x21B79D98 EQ PUSH2 0x1E3 JUMPI DUP1 PUSH4 0x231D4E2A EQ PUSH2 0x1F8 JUMPI DUP1 PUSH4 0x29D10B6E EQ PUSH2 0x219 JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0x23A JUMPI DUP1 PUSH4 0x302C11CA EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0x329B1C92 EQ PUSH2 0x28C JUMPI DUP1 PUSH4 0x34CDCF26 EQ PUSH2 0x2A1 JUMPI DUP1 PUSH4 0x363AA6C7 EQ PUSH2 0x2C2 JUMPI DUP1 PUSH4 0x3E6968B6 EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x427534A4 EQ PUSH2 0x303 JUMPI DUP1 PUSH4 0x4969AE70 EQ PUSH2 0x318 JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x343 JUMPI DUP1 PUSH4 0x74BE7592 EQ PUSH2 0x364 JUMPI DUP1 PUSH4 0x80258E47 EQ PUSH2 0x385 JUMPI DUP1 PUSH4 0x81A24459 EQ PUSH2 0x39A JUMPI DUP1 PUSH4 0x8329138F EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x3E2 JUMPI DUP1 PUSH4 0x9E614CA0 EQ PUSH2 0x3F7 JUMPI DUP1 PUSH4 0xB2A32CD5 EQ PUSH2 0x40C JUMPI DUP1 PUSH4 0xBE952494 EQ PUSH2 0x421 JUMPI DUP1 PUSH4 0xCDFD0F64 EQ PUSH2 0x436 JUMPI DUP1 PUSH4 0xCE41607A EQ PUSH2 0x45D JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x472 JUMPI DUP1 PUSH4 0xDA408679 EQ PUSH2 0x487 JUMPI DUP1 PUSH4 0xE9D61859 EQ PUSH2 0x49C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0x4B1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0x4CF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH2 0x53E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH2 0x543 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0x57A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x204 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x610 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x225 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x6FC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x246 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x719 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x270 PUSH2 0x736 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x270 PUSH2 0x74B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x75A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0x775 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2EC PUSH2 0x826 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0xFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0x837 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x32D PUSH2 0x8A3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x8B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x370 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x8CA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x391 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x32D PUSH2 0x8E7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x8F5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH2 0x908 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0x9BB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0xBFC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x418 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0xC6D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0xDCB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x442 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44B PUSH2 0xDD4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x469 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x32D PUSH2 0xDDA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0xDFD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x493 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0xE06 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0xE97 JUMP JUMPDEST PUSH2 0x4BA CALLER PUSH2 0x8B7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x4C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4CD PUSH2 0xEA0 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x4E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4EF CALLER PUSH2 0x8F5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x4FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x514 JUMPI INVALID JUMPDEST EQ PUSH2 0x51E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x2 SWAP2 SWAP1 PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 JUMPDEST MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x55F JUMPI INVALID JUMPDEST EQ DUP1 ISZERO PUSH2 0x575 JUMPI POP PUSH1 0x6 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x591 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0x5AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5C8 JUMPI INVALID JUMPDEST EQ PUSH2 0x5D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x5E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND PUSH1 0xA8 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x619 CALLER PUSH2 0x8B7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x624 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x63E JUMPI INVALID JUMPDEST EQ PUSH2 0x648 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x6F9 SWAP3 DUP5 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6C8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xF67 AND JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x705 CALLER PUSH2 0x8F5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x710 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F9 DUP2 PUSH2 0x101F JUMP JUMPDEST PUSH2 0x722 CALLER PUSH2 0x8B7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x72D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F9 DUP2 PUSH2 0x1030 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x76D PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1041 AND JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x78C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x795 CALLER PUSH2 0x8F5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x7A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x7BA JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x7C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x5 DUP1 SLOAD PUSH22 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 NOT AND SWAP1 SSTORE PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH21 0x30000000000000000000000000000000000000000 OR PUSH22 0xFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x84E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x857 CALLER PUSH2 0x8F5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x862 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x87C JUMPI INVALID JUMPDEST EQ PUSH2 0x886 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 SWAP2 SWAP1 PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 PUSH2 0x537 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x575 JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH2 0x76D PUSH1 0x3 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1041 AND JUMP JUMPDEST PUSH2 0x8D3 CALLER PUSH2 0x75A JUMP JUMPDEST ISZERO ISZERO PUSH2 0x8DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F9 DUP2 PUSH2 0x1078 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x76D PUSH1 0x4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1041 AND JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x91F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x928 CALLER PUSH2 0x8F5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x933 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x94D JUMPI INVALID JUMPDEST EQ PUSH2 0x957 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x5 DUP1 SLOAD PUSH22 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 NOT AND PUSH3 0x10000 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP7 DUP8 AND MUL OR SWAP1 SSTORE PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x9D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9DE CALLER PUSH2 0x75A JUMP JUMPDEST ISZERO ISZERO PUSH2 0x9E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x9FC JUMPI INVALID JUMPDEST EQ PUSH2 0xA06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA20 JUMPI INVALID JUMPDEST EQ PUSH2 0xA2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0xA42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH2 0xFFFF AND ISZERO ISZERO PUSH2 0xAB8 JUMPI PUSH1 0x6 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP2 AND PUSH23 0x100000000000000000000000000000000000000000000 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH2 0xB80 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH2 0xFFFF PUSH1 0xB8 PUSH1 0x2 EXP DUP1 DUP5 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD DUP2 AND DUP3 MUL PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE SWAP1 SWAP2 DIV AND PUSH2 0x16E EQ ISZERO PUSH2 0xB80 JUMPI PUSH1 0x6 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH1 0x1 PUSH1 0xFF PUSH23 0x100000000000000000000000000000000000000000000 DUP1 DUP6 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD AND MUL PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH1 0x7 SLOAD PUSH1 0x2 SWAP1 DIV PUSH1 0x7 SSTORE JUMPDEST POP POP PUSH1 0x7 SLOAD PUSH2 0x16D SWAP1 DIV PUSH1 0x64 PUSH1 0xA DUP3 MUL DIV PUSH1 0x0 DUP3 GT PUSH2 0xB9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0xBAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 SLOAD PUSH2 0xBD5 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 PUSH3 0x10000 SWAP1 SWAP2 DIV AND DUP5 PUSH4 0xFFFFFFFF PUSH2 0xF67 AND JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 SLOAD PUSH2 0xBF8 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xF67 AND JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xC13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC1C CALLER PUSH2 0x8B7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xC27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xC41 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xC4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH22 0xFFFF0000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 DUP2 SWAP1 PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xC89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC92 CALLER PUSH2 0x8B7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xC9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xCB7 JUMPI INVALID JUMPDEST EQ PUSH2 0xCC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xCD4 JUMPI INVALID JUMPDEST EQ DUP1 ISZERO PUSH2 0xCE1 JUMPI POP PUSH1 0x7 SLOAD ISZERO JUMPDEST ISZERO PUSH2 0xDB0 JUMPI PUSH1 0x5 SLOAD PUSH2 0xCFA SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1089 JUMP JUMPDEST SWAP3 POP PUSH1 0x64 PUSH1 0xA DUP5 MUL PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP4 SWAP1 SWAP3 DIV DUP7 ADD SWAP5 POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD82 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP2 DUP2 EQ PUSH2 0xDA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 DUP4 DIV PUSH1 0x7 SSTORE JUMPDEST POP POP PUSH1 0x6 DUP1 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x4CD CALLER PUSH2 0x113B JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH23 0x100000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x4CD CALLER PUSH2 0x114C JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xE1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0xE3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xE54 JUMPI INVALID JUMPDEST EQ PUSH2 0xE5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0xE76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x4CD CALLER PUSH2 0x115D JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF19 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0xF5F JUMPI PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0xF5F SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xF67 AND JUMP JUMPDEST PUSH2 0x6F9 PUSH2 0x116E JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFF7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x100D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x101A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x6F9 PUSH1 0x4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1186 AND JUMP JUMPDEST PUSH2 0x6F9 PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1186 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x1058 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x6F9 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1186 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND ISZERO ISZERO PUSH2 0x10A6 JUMPI POP PUSH10 0x152D02C7E14AF6800000 PUSH2 0x770 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x10C3 JUMPI POP PUSH10 0xD3C21BCECCEDA1000000 PUSH2 0x770 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x10E1 JUMPI POP PUSH11 0x1A784379D99DB42000000 PUSH2 0x770 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x10FF JUMPI POP PUSH11 0x27B46536C66C8E3000000 PUSH2 0x770 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x111D JUMPI POP PUSH11 0x34F086F3B33B684000000 PUSH2 0x770 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x770 JUMPI POP PUSH11 0x422CA8B0A00A425000000 PUSH2 0x770 JUMP JUMPDEST PUSH2 0x6F9 PUSH1 0x4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x11D4 AND JUMP JUMPDEST PUSH2 0x6F9 PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x11D4 AND JUMP JUMPDEST PUSH2 0x6F9 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x11D4 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x119B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11A5 DUP3 DUP3 PUSH2 0x1041 JUMP JUMPDEST ISZERO PUSH2 0x11AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x11E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11F3 DUP3 DUP3 PUSH2 0x1041 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x11FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0x29 CALLDATALOAD 0xa8 STATICCALL 0xdd 0x5c 0xaa DUP16 GAS SWAP4 SLT 0xcd SWAP1 EXTCODECOPY SMOD DUP2 0x4b RETURNDATASIZE 0xe5 PUSH7 0x2642CABDC9018C CALLDATASIZE TIMESTAMP 0x21 0xdb JUMPI STOP 0x29 ", - "sourceMap": "620:5567:2:-;;;1312:664;8:9:-1;5:2;;;30:1;27;20:12;5:2;1312:664:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;156:8:7;:21;;167:10;-1:-1:-1;;;;;;156:21:7;;;;;-1:-1:-1;;;;;;188:19:7;;;;-1:-1:-1;636:29:5;;;;;-1:-1:-1;;;;;636:29:5;;;;;1312:664:2;;;;364:22:4;;:10;;;;:22;:::i;:::-;368:24:1;381:10;368:12;;;;:24;:::i;:::-;366:26:3;381:10;366:14;;;;:26;:::i;:::-;1625:1:2;1613:8;:13;;;;:30;;;;;1642:1;1630:8;:13;;;;1613:30;1605:39;;;;;;;;-1:-1:-1;;;;;1663:33:2;;;;1655:42;;;;;;1726:19;1713:9;:32;;;;;;;;;1710:109;;;-1:-1:-1;;;;;1770:36:2;;;;1762:45;;;;;;1831:10;:22;;1844:9;;1831:10;-1:-1:-1;;1831:22:2;;1844:9;1831:22;;;;;;;;;;;;-1:-1:-1;;1864:9:2;:20;;-1:-1:-1;;1864:20:2;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1895:28:2;;-1:-1:-1;;;;;1895:28:2;;;;;;;;1934:9;:34;;-1:-1:-1;;;;;;1934:34:2;;;;;;;;;;;-1:-1:-1;620:5567:2;;800:92:4;857:27;:14;876:7;857:18;;;;;;:27;:::i;:::-;800:92;:::o;824:96:1:-;883:29;:16;904:7;883:20;;;;;;:29;:::i;836:94:3:-;897:25;:12;914:7;897:16;;;;;;:25;:::i;244:167:8:-;-1:-1:-1;;;;;316:21:8;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:8;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:8;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:8;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:8;:11;:20;;;;;;;;;;;;;;;725:166::o;620:5567:2:-;;;;;;;" + "object": "60806040523480156200001157600080fd5b5060405160a08062001458833981018060405260a08110156200003357600080fd5b5080516020820151604083015160608401516080909401516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a038416179055939492939192916200009a906401000000006200018e810204565b620000ae33640100000000620001ac810204565b620000c233640100000000620001c7810204565b600560ff85161115620000d457600080fd5b600160a060020a0383161515620000ea57600080fd5b6000856001811115620000f957fe5b14156200011657600160a060020a03821615156200011657600080fd5b6005805486919060ff1916600183818111156200012f57fe5b0217905550506005805461ff00191661010060ff9590951694909402939093176201000060b060020a03191662010000600160a060020a03938416021790925560068054600160a060020a031916929091169190911790555062000275565b620001a96002826401000000006200110d620001e282021704565b50565b620001a96003826401000000006200110d620001e282021704565b620001a96004826401000000006200110d620001e282021704565b600160a060020a0381161515620001f857600080fd5b6200020d82826401000000006200023d810204565b156200021857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200025557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6111d380620002856000396000f3fe608060405234801561001057600080fd5b50600436106101ec576000357c0100000000000000000000000000000000000000000000000000000000900480634969ae70116101215780639e614ca0116100bf578063ce41607a1161008e578063ce41607a14610422578063d43acc791461042a578063da40867914610432578063e9d618591461043a576101ec565b80639e614ca0146103f0578063b2a32cd5146103f8578063be95249414610400578063cdfd0f6414610408576101ec565b806380258e47116100fb57806380258e471461038c57806381a24459146103945780638329138f146103ba57806399f4b251146103e8576101ec565b80634969ae7014610322578063608d3d3d1461034057806374be759214610366576101ec565b80632e6b68491161018e57806334cdcf261161016857806334cdcf26146102cd578063363aa6c7146102f35780633e6968b6146102fb578063427534a41461031a576101ec565b80632e6b68491461027b578063302c11ca146102a1578063329b1c92146102c5576101ec565b806319a74ab3116101ca57806319a74ab31461021f57806321b79d9814610227578063231d4e2a1461022f57806329d10b6e14610255576101ec565b80630c08bf88146101f1578063162f986d146101fb5780631777fb4b14610203575b600080fd5b6101f9610442565b005b6101f9610460565b61020b6104cf565b604080519115158252519081900360200190f35b61020b6104d4565b6101f961050b565b6101f96004803603602081101561024557600080fd5b5035600160a060020a03166105a1565b6101f96004803603602081101561026b57600080fd5b5035600160a060020a031661068b565b6101f96004803603602081101561029157600080fd5b5035600160a060020a03166106a8565b6102a96106c5565b60408051600160a060020a039092168252519081900360200190f35b6102a96106da565b61020b600480360360208110156102e357600080fd5b5035600160a060020a03166106e9565b6101f9610704565b6103036107b5565b6040805161ffff9092168252519081900360200190f35b6101f96107c6565b61032a610832565b6040805160ff9092168252519081900360200190f35b61020b6004803603602081101561035657600080fd5b5035600160a060020a0316610846565b6101f96004803603602081101561037c57600080fd5b5035600160a060020a0316610859565b61032a610876565b61020b600480360360208110156103aa57600080fd5b5035600160a060020a0316610884565b6101f9600480360360408110156103d057600080fd5b50600160a060020a0381358116916020013516610897565b6101f961094a565b6101f9610b86565b6101f9610bf7565b6101f9610d53565b610410610d5c565b60408051918252519081900360200190f35b61032a610d62565b6101f9610d85565b6101f9610d8e565b6101f9610e1f565b61044b33610846565b151561045657600080fd5b61045e610e28565b565b60005460a060020a900460ff161561047757600080fd5b61048033610884565b151561048b57600080fd5b600160065460a060020a900460ff1660038111156104a557fe5b146104af57600080fd5b600680546002919060a060020a60ff02191660a060020a835b0217905550565b600190565b6000600160065460a060020a900460ff1660038111156104f057fe5b148015610506575060065460a860020a900460ff165b905090565b60005460a060020a900460ff161561052257600080fd5b600554620100009004600160a060020a0316331461053f57600080fd5b600160065460a060020a900460ff16600381111561055957fe5b1461056357600080fd5b60065460a860020a900460ff161561057a57600080fd5b6006805475ff000000000000000000000000000000000000000000191660a860020a179055565b6105aa33610846565b15156105b557600080fd5b600060065460a060020a900460ff1660038111156105cf57fe5b146105d957600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051610688928492600160a060020a03909116916370a0823191602480820192602092909190829003018186803b15801561064357600080fd5b505afa158015610657573d6000803e3d6000fd5b505050506040513d602081101561066d57600080fd5b5051600154600160a060020a0316919063ffffffff610eee16565b50565b61069433610884565b151561069f57600080fd5b61068881610fa6565b6106b133610846565b15156106bc57600080fd5b61068881610fb7565b600554620100009004600160a060020a031690565b600654600160a060020a031690565b60006106fc60028363ffffffff610fc816565b90505b919050565b60005460a060020a900460ff161561071b57600080fd5b61072433610884565b151561072f57600080fd5b600360065460a060020a900460ff16600381111561074957fe5b141561075457600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff00001916905560a060020a60ff021916740300000000000000000000000000000000000000001775ff00ffffffffffffffffffffffffffffffffffffffff19169055565b60065460b860020a900461ffff1690565b60005460a060020a900460ff16156107dd57600080fd5b6107e633610884565b15156107f157600080fd5b600260065460a060020a900460ff16600381111561080b57fe5b1461081557600080fd5b600680546001919060a060020a60ff02191660a060020a836104c8565b60055460009060ff16600181111561050657fe5b60006106fc60038363ffffffff610fc816565b610862336106e9565b151561086d57600080fd5b61068881610fff565b600554610100900460ff1690565b60006106fc60048363ffffffff610fc816565b60005460a060020a900460ff16156108ae57600080fd5b6108b733610884565b15156108c257600080fd5b600360065460a060020a900460ff1660038111156108dc57fe5b146108e657600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a039687160217905560a060020a60ff02191660a060020a1773ffffffffffffffffffffffffffffffffffffffff191691909216179055565b60005460a060020a900460ff161561096157600080fd5b61096a336106e9565b151561097557600080fd5b600060055460ff16600181111561098857fe5b1461099257600080fd5b600160065460a060020a900460ff1660038111156109ac57fe5b146109b657600080fd5b60065460a860020a900460ff1615156109ce57600080fd5b60065460b860020a900461ffff161515610a44576006805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610b0c565b60068054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610b0c576006805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600754600290046007555b60075461016d90046064600a82020460008211610b2857600080fd5b60008111610b3557600080fd5b600554600154610b5f91600160a060020a039182169162010000909104168463ffffffff610eee16565b600654600154610b8291600160a060020a0391821691168363ffffffff610eee16565b5050565b60005460a060020a900460ff1615610b9d57600080fd5b610ba633610846565b1515610bb157600080fd5b600060065460a060020a900460ff166003811115610bcb57fe5b1415610bd657600080fd5b6006805475ffff000000000000000000000000000000000000000019169055565b60005460a060020a900460ff1615610c0e57600080fd5b610c1733610846565b1515610c2257600080fd5b600060065460a060020a900460ff166003811115610c3c57fe5b14610c4657600080fd5b600060055460ff166001811115610c5957fe5b148015610c665750600754155b1561081557600554600090610c8290610100900460ff16611010565b600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519293506064600a850204840192600092600160a060020a0316916370a08231916024808301926020929190829003018186803b158015610cf357600080fd5b505afa158015610d07573d6000803e3d6000fd5b505050506040513d6020811015610d1d57600080fd5b50519050818114610d2d57600080fd5b600283046007555050600680546001925060a060020a60ff02191660a060020a836104c8565b61045e336110c2565b60075490565b600654760100000000000000000000000000000000000000000000900460ff1690565b61045e336110d3565b60005460a060020a900460ff1615610da557600080fd5b600554620100009004600160a060020a03163314610dc257600080fd5b600160065460a060020a900460ff166003811115610ddc57fe5b14610de657600080fd5b60065460a860020a900460ff161515610dfe57600080fd5b6006805475ff00000000000000000000000000000000000000000019169055565b61045e336110e4565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a08231916024808301926020929190829003018186803b158015610e8c57600080fd5b505afa158015610ea0573d6000803e3d6000fd5b505050506040513d6020811015610eb657600080fd5b505190506000811115610ee657600054600154610ee691600160a060020a0391821691168363ffffffff610eee16565b6106886110f5565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610f6a57600080fd5b505af1158015610f7e573d6000803e3d6000fd5b505050506040513d6020811015610f9457600080fd5b50511515610fa157600080fd5b505050565b61068860048263ffffffff61110d16565b61068860038263ffffffff61110d16565b6000600160a060020a0382161515610fdf57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61068860028263ffffffff61110d16565b600060ff8216151561102d575069152d02c7e14af68000006106ff565b8160ff166001141561104a575069d3c21bcecceda10000006106ff565b8160ff166002141561106857506a01a784379d99db420000006106ff565b8160ff166003141561108657506a027b46536c66c8e30000006106ff565b8160ff16600414156110a457506a034f086f3b33b6840000006106ff565b8160ff16600514156106ff57506a0422ca8b0a00a4250000006106ff565b61068860048263ffffffff61115b16565b61068860038263ffffffff61115b16565b61068860028263ffffffff61115b16565b6000805460a060020a60ff02191660a060020a179055565b600160a060020a038116151561112257600080fd5b61112c8282610fc8565b1561113657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561117057600080fd5b61117a8282610fc8565b151561118557600080fd5b600160a060020a0316600090815260209190915260409020805460ff1916905556fea165627a7a72305820a2a7d81c4bf237d833a792f3dd14af3f88c7c6e7d320648513595fcbe01959490029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0xA0 DUP1 PUSH3 0x1458 DUP4 CODECOPY DUP2 ADD DUP1 PUSH1 0x40 MSTORE PUSH1 0xA0 DUP2 LT ISZERO PUSH3 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 SWAP1 SWAP5 ADD MLOAD PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP2 DUP3 AND DUP2 OR PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND OR SWAP1 SSTORE SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP2 PUSH3 0x9A SWAP1 PUSH5 0x100000000 PUSH3 0x18E DUP2 MUL DIV JUMP JUMPDEST PUSH3 0xAE CALLER PUSH5 0x100000000 PUSH3 0x1AC DUP2 MUL DIV JUMP JUMPDEST PUSH3 0xC2 CALLER PUSH5 0x100000000 PUSH3 0x1C7 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x5 PUSH1 0xFF DUP6 AND GT ISZERO PUSH3 0xD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND ISZERO ISZERO PUSH3 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 DUP2 GT ISZERO PUSH3 0xF9 JUMPI INVALID JUMPDEST EQ ISZERO PUSH3 0x116 JUMPI PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x116 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD DUP7 SWAP2 SWAP1 PUSH1 0xFF NOT AND PUSH1 0x1 DUP4 DUP2 DUP2 GT ISZERO PUSH3 0x12F JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP POP PUSH1 0x5 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 PUSH1 0xFF SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 MUL SWAP4 SWAP1 SWAP4 OR PUSH3 0x10000 PUSH1 0xB0 PUSH1 0x2 EXP SUB NOT AND PUSH3 0x10000 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP4 DUP5 AND MUL OR SWAP1 SWAP3 SSTORE PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0x275 JUMP JUMPDEST PUSH3 0x1A9 PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH3 0x110D PUSH3 0x1E2 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x1A9 PUSH1 0x3 DUP3 PUSH5 0x100000000 PUSH3 0x110D PUSH3 0x1E2 DUP3 MUL OR DIV JUMP JUMPDEST PUSH3 0x1A9 PUSH1 0x4 DUP3 PUSH5 0x100000000 PUSH3 0x110D PUSH3 0x1E2 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH3 0x1F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x20D DUP3 DUP3 PUSH5 0x100000000 PUSH3 0x23D DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH3 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x255 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x11D3 DUP1 PUSH3 0x285 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1EC JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP1 PUSH4 0x4969AE70 GT PUSH2 0x121 JUMPI DUP1 PUSH4 0x9E614CA0 GT PUSH2 0xBF JUMPI DUP1 PUSH4 0xCE41607A GT PUSH2 0x8E JUMPI DUP1 PUSH4 0xCE41607A EQ PUSH2 0x422 JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x42A JUMPI DUP1 PUSH4 0xDA408679 EQ PUSH2 0x432 JUMPI DUP1 PUSH4 0xE9D61859 EQ PUSH2 0x43A JUMPI PUSH2 0x1EC JUMP JUMPDEST DUP1 PUSH4 0x9E614CA0 EQ PUSH2 0x3F0 JUMPI DUP1 PUSH4 0xB2A32CD5 EQ PUSH2 0x3F8 JUMPI DUP1 PUSH4 0xBE952494 EQ PUSH2 0x400 JUMPI DUP1 PUSH4 0xCDFD0F64 EQ PUSH2 0x408 JUMPI PUSH2 0x1EC JUMP JUMPDEST DUP1 PUSH4 0x80258E47 GT PUSH2 0xFB JUMPI DUP1 PUSH4 0x80258E47 EQ PUSH2 0x38C JUMPI DUP1 PUSH4 0x81A24459 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0x8329138F EQ PUSH2 0x3BA JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x3E8 JUMPI PUSH2 0x1EC JUMP JUMPDEST DUP1 PUSH4 0x4969AE70 EQ PUSH2 0x322 JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x340 JUMPI DUP1 PUSH4 0x74BE7592 EQ PUSH2 0x366 JUMPI PUSH2 0x1EC JUMP JUMPDEST DUP1 PUSH4 0x2E6B6849 GT PUSH2 0x18E JUMPI DUP1 PUSH4 0x34CDCF26 GT PUSH2 0x168 JUMPI DUP1 PUSH4 0x34CDCF26 EQ PUSH2 0x2CD JUMPI DUP1 PUSH4 0x363AA6C7 EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0x3E6968B6 EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0x427534A4 EQ PUSH2 0x31A JUMPI PUSH2 0x1EC JUMP JUMPDEST DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0x27B JUMPI DUP1 PUSH4 0x302C11CA EQ PUSH2 0x2A1 JUMPI DUP1 PUSH4 0x329B1C92 EQ PUSH2 0x2C5 JUMPI PUSH2 0x1EC JUMP JUMPDEST DUP1 PUSH4 0x19A74AB3 GT PUSH2 0x1CA JUMPI DUP1 PUSH4 0x19A74AB3 EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0x21B79D98 EQ PUSH2 0x227 JUMPI DUP1 PUSH4 0x231D4E2A EQ PUSH2 0x22F JUMPI DUP1 PUSH4 0x29D10B6E EQ PUSH2 0x255 JUMPI PUSH2 0x1EC JUMP JUMPDEST DUP1 PUSH4 0xC08BF88 EQ PUSH2 0x1F1 JUMPI DUP1 PUSH4 0x162F986D EQ PUSH2 0x1FB JUMPI DUP1 PUSH4 0x1777FB4B EQ PUSH2 0x203 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F9 PUSH2 0x442 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F9 PUSH2 0x460 JUMP JUMPDEST PUSH2 0x20B PUSH2 0x4CF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x20B PUSH2 0x4D4 JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0x50B JUMP JUMPDEST PUSH2 0x1F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x245 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH2 0x5A1 JUMP JUMPDEST PUSH2 0x1F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x26B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH2 0x68B JUMP JUMPDEST PUSH2 0x1F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH2 0x6A8 JUMP JUMPDEST PUSH2 0x2A9 PUSH2 0x6C5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2A9 PUSH2 0x6DA JUMP JUMPDEST PUSH2 0x20B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH2 0x6E9 JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0x704 JUMP JUMPDEST PUSH2 0x303 PUSH2 0x7B5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0xFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1F9 PUSH2 0x7C6 JUMP JUMPDEST PUSH2 0x32A PUSH2 0x832 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x20B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x356 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH2 0x846 JUMP JUMPDEST PUSH2 0x1F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x37C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH2 0x859 JUMP JUMPDEST PUSH2 0x32A PUSH2 0x876 JUMP JUMPDEST PUSH2 0x20B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH2 0x884 JUMP JUMPDEST PUSH2 0x1F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x897 JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0x94A JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0xB86 JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0xBF7 JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0xD53 JUMP JUMPDEST PUSH2 0x410 PUSH2 0xD5C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x32A PUSH2 0xD62 JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0xD85 JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0xD8E JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0xE1F JUMP JUMPDEST PUSH2 0x44B CALLER PUSH2 0x846 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x456 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x45E PUSH2 0xE28 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x477 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x480 CALLER PUSH2 0x884 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x48B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4A5 JUMPI INVALID JUMPDEST EQ PUSH2 0x4AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x2 SWAP2 SWAP1 PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 JUMPDEST MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4F0 JUMPI INVALID JUMPDEST EQ DUP1 ISZERO PUSH2 0x506 JUMPI POP PUSH1 0x6 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x522 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0x53F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x559 JUMPI INVALID JUMPDEST EQ PUSH2 0x563 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x57A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND PUSH1 0xA8 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x5AA CALLER PUSH2 0x846 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x5B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5CF JUMPI INVALID JUMPDEST EQ PUSH2 0x5D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x688 SWAP3 DUP5 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x643 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x657 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x66D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xEEE AND JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x694 CALLER PUSH2 0x884 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x69F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x688 DUP2 PUSH2 0xFA6 JUMP JUMPDEST PUSH2 0x6B1 CALLER PUSH2 0x846 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x6BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x688 DUP2 PUSH2 0xFB7 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6FC PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xFC8 AND JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x71B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x724 CALLER PUSH2 0x884 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x72F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x749 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x754 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x5 DUP1 SLOAD PUSH22 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 NOT AND SWAP1 SSTORE PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH21 0x30000000000000000000000000000000000000000 OR PUSH22 0xFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x7DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7E6 CALLER PUSH2 0x884 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x7F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x80B JUMPI INVALID JUMPDEST EQ PUSH2 0x815 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 SWAP2 SWAP1 PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 PUSH2 0x4C8 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x506 JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH2 0x6FC PUSH1 0x3 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xFC8 AND JUMP JUMPDEST PUSH2 0x862 CALLER PUSH2 0x6E9 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x86D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x688 DUP2 PUSH2 0xFFF JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6FC PUSH1 0x4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xFC8 AND JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8B7 CALLER PUSH2 0x884 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x8C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x8DC JUMPI INVALID JUMPDEST EQ PUSH2 0x8E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x5 DUP1 SLOAD PUSH22 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 NOT AND PUSH3 0x10000 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP7 DUP8 AND MUL OR SWAP1 SSTORE PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x961 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x96A CALLER PUSH2 0x6E9 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x975 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x988 JUMPI INVALID JUMPDEST EQ PUSH2 0x992 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x9AC JUMPI INVALID JUMPDEST EQ PUSH2 0x9B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0x9CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH2 0xFFFF AND ISZERO ISZERO PUSH2 0xA44 JUMPI PUSH1 0x6 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP2 AND PUSH23 0x100000000000000000000000000000000000000000000 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH2 0xB0C JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH2 0xFFFF PUSH1 0xB8 PUSH1 0x2 EXP DUP1 DUP5 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD DUP2 AND DUP3 MUL PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE SWAP1 SWAP2 DIV AND PUSH2 0x16E EQ ISZERO PUSH2 0xB0C JUMPI PUSH1 0x6 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH1 0x1 PUSH1 0xFF PUSH23 0x100000000000000000000000000000000000000000000 DUP1 DUP6 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD AND MUL PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH1 0x7 SLOAD PUSH1 0x2 SWAP1 DIV PUSH1 0x7 SSTORE JUMPDEST PUSH1 0x7 SLOAD PUSH2 0x16D SWAP1 DIV PUSH1 0x64 PUSH1 0xA DUP3 MUL DIV PUSH1 0x0 DUP3 GT PUSH2 0xB28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0xB35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 SLOAD PUSH2 0xB5F SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 PUSH3 0x10000 SWAP1 SWAP2 DIV AND DUP5 PUSH4 0xFFFFFFFF PUSH2 0xEEE AND JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 SLOAD PUSH2 0xB82 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xEEE AND JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xB9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBA6 CALLER PUSH2 0x846 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xBB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xBCB JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xBD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH22 0xFFFF0000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xC0E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC17 CALLER PUSH2 0x846 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xC22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xC3C JUMPI INVALID JUMPDEST EQ PUSH2 0xC46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xC59 JUMPI INVALID JUMPDEST EQ DUP1 ISZERO PUSH2 0xC66 JUMPI POP PUSH1 0x7 SLOAD ISZERO JUMPDEST ISZERO PUSH2 0x815 JUMPI PUSH1 0x5 SLOAD PUSH1 0x0 SWAP1 PUSH2 0xC82 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1010 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x64 PUSH1 0xA DUP6 MUL DIV DUP5 ADD SWAP3 PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD07 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP2 DUP2 EQ PUSH2 0xD2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 DUP4 DIV PUSH1 0x7 SSTORE POP POP PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 SWAP3 POP PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 PUSH2 0x4C8 JUMP JUMPDEST PUSH2 0x45E CALLER PUSH2 0x10C2 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH23 0x100000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x45E CALLER PUSH2 0x10D3 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xDA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0xDC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xDDC JUMPI INVALID JUMPDEST EQ PUSH2 0xDE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0xDFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x45E CALLER PUSH2 0x10E4 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0xEE6 JUMPI PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0xEE6 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xEEE AND JUMP JUMPDEST PUSH2 0x688 PUSH2 0x10F5 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF7E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xFA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x688 PUSH1 0x4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x110D AND JUMP JUMPDEST PUSH2 0x688 PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x110D AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xFDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x688 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x110D AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND ISZERO ISZERO PUSH2 0x102D JUMPI POP PUSH10 0x152D02C7E14AF6800000 PUSH2 0x6FF JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x104A JUMPI POP PUSH10 0xD3C21BCECCEDA1000000 PUSH2 0x6FF JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x1068 JUMPI POP PUSH11 0x1A784379D99DB42000000 PUSH2 0x6FF JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x1086 JUMPI POP PUSH11 0x27B46536C66C8E3000000 PUSH2 0x6FF JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x10A4 JUMPI POP PUSH11 0x34F086F3B33B684000000 PUSH2 0x6FF JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x6FF JUMPI POP PUSH11 0x422CA8B0A00A425000000 PUSH2 0x6FF JUMP JUMPDEST PUSH2 0x688 PUSH1 0x4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x115B AND JUMP JUMPDEST PUSH2 0x688 PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x115B AND JUMP JUMPDEST PUSH2 0x688 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x115B AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x1122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x112C DUP3 DUP3 PUSH2 0xFC8 JUMP JUMPDEST ISZERO PUSH2 0x1136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x1170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x117A DUP3 DUP3 PUSH2 0xFC8 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x1185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 LOG2 0xa7 0xd8 SHR 0x4b CALLCODE CALLDATACOPY 0xd8 CALLER 0xa7 SWAP3 RETURN 0xdd EQ 0xaf EXTCODEHASH DUP9 0xc7 0xc6 0xe7 0xd3 KECCAK256 PUSH5 0x8513595FCB 0xe0 NOT MSIZE 0x49 STOP 0x29 ", + "sourceMap": "619:5550:2:-;;;1311:647;8:9:-1;5:2;;;30:1;27;20:12;5:2;1311:647:2;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;1311:647:2;;;;;;;;;;;;;;;;;;;155:8:7;:21;;166:10;-1:-1:-1;;;;;;155:21:7;;;;;-1:-1:-1;;;;;;187:19:7;;;;-1:-1:-1;635:29:5;;;;;-1:-1:-1;;;;;635:29:5;;;;;1311:647:2;;;;;;;362:22:4;;:10;;;;:22;:::i;:::-;366:24:1;379:10;366:12;;;;:24;:::i;:::-;364:26:3;379:10;364:14;;;;:26;:::i;:::-;1624:1:2;1612:13;;;;;1604:22;;;;;;-1:-1:-1;;;;;1645:33:2;;;;1637:42;;;;;;1708:19;1695:9;:32;;;;;;;;;1692:109;;;-1:-1:-1;;;;;1752:36:2;;;;1744:45;;;;;;1813:10;:22;;1826:9;;1813:10;-1:-1:-1;;1813:22:2;;1826:9;1813:22;;;;;;;;;;;;-1:-1:-1;;1846:9:2;:20;;-1:-1:-1;;1846:20:2;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1877:28:2;;-1:-1:-1;;;;;1877:28:2;;;;;;;;1916:9;:34;;-1:-1:-1;;;;;;1916:34:2;;;;;;;;;;;-1:-1:-1;619:5550:2;;798:92:4;855:27;:14;874:7;855:18;;;;;;:27;:::i;:::-;798:92;:::o;822:96:1:-;881:29;:16;902:7;881:20;;;;;;:29;:::i;834:94:3:-;895:25;:12;912:7;895:16;;;;;;:25;:::i;259:181:8:-;-1:-1:-1;;;;;335:21:8;;;;327:30;;;;;;376:18;380:4;386:7;376:3;;;;:18;:::i;:::-;375:19;367:28;;;;;;-1:-1:-1;;;;;406:20:8;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;406:27:8;429:4;406:27;;;259:181::o;786:162::-;858:4;-1:-1:-1;;;;;882:21:8;;;;874:30;;;;;;-1:-1:-1;;;;;;921:20:8;:11;:20;;;;;;;;;;;;;;;786:162::o;619:5550:2:-;;;;;;;" }, "gasEstimates": { "creation": { - "codeDepositCost": "936800", + "codeDepositCost": "912600", "executionCost": "infinite", "totalCost": "infinite" }, @@ -524,16 +524,16 @@ "addSupervisor(address)": "infinite", "addSystem(address)": "infinite", "deactivateMiner()": "infinite", - "getCategory()": "784", - "getCurrentDay()": "737", - "getCurrentYear()": "960", - "getCurrentYearSupply()": "912", - "getMiner()": "724", - "getMinerType()": "744", - "getReferral()": "735", - "isAlgoMiner()": "234", + "getCategory()": "474", + "getCurrentDay()": "581", + "getCurrentYear()": "473", + "getCurrentYearSupply()": "514", + "getMiner()": "635", + "getMinerType()": "501", + "getReferral()": "646", + "isAlgoMiner()": "300", "isCoreTeam(address)": "infinite", - "isMining()": "881", + "isMining()": "880", "isSupervisor(address)": "infinite", "isSystem(address)": "infinite", "migrateMiner(address)": "infinite", @@ -544,9 +544,9 @@ "renounceSystem()": "infinite", "resetMiner(address,address)": "infinite", "resumeMining()": "infinite", - "startMining()": "21742", + "startMining()": "21741", "stopAndRemoveOwnership()": "infinite", - "stopMining()": "22182", + "stopMining()": "21695", "terminate()": "infinite" } }, @@ -582,7 +582,7 @@ "terminate()": "0c08bf88" } }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"terminate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pauseMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isAlgoMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isMining\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"startMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newMinerAddress\",\"type\":\"address\"}],\"name\":\"migrateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getReferral\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSystem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopAndRemoveOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentDay\",\"outputs\":[{\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"resumeMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMinerType\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCategory\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSupervisor\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwnerAddress\",\"type\":\"address\"},{\"name\":\"newReferralAddress\",\"type\":\"address\"}],\"name\":\"resetMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"deactivateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"activateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentYearSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentYear\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"minerType\",\"type\":\"uint8\"},{\"name\":\"category\",\"type\":\"uint8\"},{\"name\":\"minerAccountAddress\",\"type\":\"address\"},{\"name\":\"referralAccountAddress\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":\"AlgoMiner\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol\":{\"keccak256\":\"0x2314139702cc63c8daa379e521abea3be32730ba896f68f3f865749907e64539\",\"urls\":[\"bzzr://b945e0ec5a4ca8a52b5e816c5bb00807d0ca43c5363102821b36c8c4ee98a2d5\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":{\"keccak256\":\"0x9e72a9de7487735ff03810eed3ba1d97f7568ae7fc2b60339d95da498615ff71\",\"urls\":[\"bzzr://4464c54eb74e4f2afd3c6bc80e65640607e3c06c29e19297fc2bf08de027724f\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol\":{\"keccak256\":\"0x20955eaf60f79f885c941d97e208320c9e0bc1f05b8121342f8187f9a39fd46b\",\"urls\":[\"bzzr://8e30e53aa0322307873f8c0a4fc3c58b7562a0fde92a0921a52bdef4e129ec4b\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol\":{\"keccak256\":\"0x6fffe504e6805d95ca42269cc995a3de9401a12bc037068b056c186ce8569d8d\",\"urls\":[\"bzzr://a0923a2d2b1e4992f552ce49638b19d6d8328950c1d5dc1395f0d625daf21c68\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol\":{\"keccak256\":\"0x71adbf7f060599239b7a981594e43dc8fbe8597fd2853b6fe9e70ff39883d73a\",\"urls\":[\"bzzr://70691c1638cdc0f744f8c5b5a94e4f857ba40ad053816cfbd15e13ed41a3bc66\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0x1b1359f75f7d5a943ab06caea36824f0a6448c5ffa1a32ed7e26cee81cf3683a\",\"urls\":[\"bzzr://26177d59d0c84fa4e632538fbd44802f219e6501b0828533badcf80701cea0f5\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol\":{\"keccak256\":\"0x29a8fa3204dbd204355714601ce21d7d717a586a4de21009d8f2a3ca7981963f\",\"urls\":[\"bzzr://55d9b762620cef1e6f7b11a26d6cc123f5b608a59e0d36f9bc0a1e8ff0ff5c42\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.4+commit.9549d8ff\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"terminate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pauseMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isAlgoMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isMining\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"startMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newMinerAddress\",\"type\":\"address\"}],\"name\":\"migrateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getReferral\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSystem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopAndRemoveOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentDay\",\"outputs\":[{\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"resumeMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMinerType\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCategory\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSupervisor\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwnerAddress\",\"type\":\"address\"},{\"name\":\"newReferralAddress\",\"type\":\"address\"}],\"name\":\"resetMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"deactivateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"activateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentYearSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentYear\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"minerType\",\"type\":\"uint8\"},{\"name\":\"category\",\"type\":\"uint8\"},{\"name\":\"minerAccountAddress\",\"type\":\"address\"},{\"name\":\"referralAccountAddress\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":\"AlgoMiner\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol\":{\"keccak256\":\"0x014debd2c96ba7aba7faef24eac1f1a5d46791b55ae55fbd51d7945bf21277e0\",\"urls\":[\"bzzr://b8d1cffc7f1bfdc8c911d90b785cf9c2723b24bd162d7cfd730e127f56932fe9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0x8252ea038586ac8cf89aea6810c1a75d84c2eba48d6b0ecc5f1783929de398a3\",\"urls\":[\"bzzr://3bd6a88368eeb6abb70573d16d481bc20bc22b6c0d3e60702c59c9fab4202528\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":{\"keccak256\":\"0xc2380a89ad6323344dd00f02f264f851dd49453de18e3dab8ed7cc13a1ee31db\",\"urls\":[\"bzzr://dcf790081bceacc3be474c4957629b5973332da040d44cf7969d80005b9671f1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol\":{\"keccak256\":\"0xfe4e8871ec41a8a704bda1fb30939151f4efa4e8cfbf705b9a1c1c5eeee87af2\",\"urls\":[\"bzzr://03d0c6d4c57474c1d775e0829e5b097d5ecb7e6732c010cf39f2575f4df45b2d\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol\":{\"keccak256\":\"0x79678e2992aafe0c33260767eba0b3c95474a2f0902154841f4ac62012528e67\",\"urls\":[\"bzzr://a4efbd6113fb5941933b0e94b0135d2ea7150a538ec80b9b5288a85506337f94\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol\":{\"keccak256\":\"0x2c964fd13fcc46f0326055bd50569f2bfb32ea7963780763d77b85ed51320205\",\"urls\":[\"bzzr://3fd83f4de7769670f420f04909921357a8ace3b9e0eb08b7c9df0ee57741d347\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0x861339f0f02c28b332f5d8dc165127fa1a402bbbfd7c3923acca26a6139e4f2b\",\"urls\":[\"bzzr://87e5728ff1289cbcc9669fae3a5b994b3a4e0788a2673595adcac700eea8c411\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol\":{\"keccak256\":\"0x8704856f4ea109e3df4805b3b3dd7d9b9026e94f80c42c6d750356d46036a530\",\"urls\":[\"bzzr://18db91d498a487cbc7085490ff2bf017849f88bb4032ea7d840bab3561c45cf4\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0x659ba0f9a3392cd50a8a5fafaf5dfd8c6a0878f6a4613bceff4e90dceddcd865\",\"urls\":[\"bzzr://f704341d520fbc98716541f1b3f67737f0ee6e94adf072a66acb2bd25d593c2b\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x965012d27b4262d7a41f5028cbb30c51ebd9ecd4be8fb30380aaa7a3c64fbc8b\",\"urls\":[\"bzzr://41ca38f6b0fa4b77b0feec43e422cfbec48b7eb38a41edf0b85c77e8d9a296b1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x079c4e23ee448f529e43bfa3c4e8fb4be52cd0318ee923a276835bedf45b93d8\",\"urls\":[\"bzzr://48248e86f64407a95f241d6c5c8cfea6b4d4ebf4ebb467e5c98c8af3868fafe4\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x05fcee7431cd35cd312e14e7f316a44ca3ccc5fb3b859aefc15c1a5db94add7e\",\"urls\":[\"bzzr://5ba67fb83aa7806883a335d53a27dcf1f53b75fa38dedd57893cc84633aa4d4c\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -919,15 +919,16 @@ "Roles": { "abi": [], "devdoc": { + "details": "Library for managing addresses assigned to a Role.", "methods": {}, "title": "Roles" }, "evm": { "bytecode": { "linkReferences": {}, - "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820ba9d82b11504517181f938ed511f09c0a22046ef39e2e32460a2175b508e16a80029", - "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xba SWAP14 DUP3 0xb1 ISZERO DIV MLOAD PUSH18 0x81F938ED511F09C0A22046EF39E2E32460A2 OR JUMPDEST POP DUP15 AND 0xa8 STOP 0x29 ", - "sourceMap": "109:784:8:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582072caac54fe9b00b8b816307b2a5ded8de356c5be6012002ca36f81b18422d8260029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 PUSH19 0xCAAC54FE9B00B8B816307B2A5DED8DE356C5BE PUSH1 0x12 STOP 0x2c LOG3 PUSH16 0x81B18422D82600290000000000000000 ", + "sourceMap": "108:842:8:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -943,7 +944,7 @@ }, "methodIdentifiers": {} }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"Roles\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":\"Roles\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.4+commit.9549d8ff\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for managing addresses assigned to a Role.\",\"methods\":{},\"title\":\"Roles\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":\"Roles\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0x659ba0f9a3392cd50a8a5fafaf5dfd8c6a0878f6a4613bceff4e90dceddcd865\",\"urls\":[\"bzzr://f704341d520fbc98716541f1b3f67737f0ee6e94adf072a66acb2bd25d593c2b\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -953,15 +954,16 @@ "SafeMath": { "abi": [], "devdoc": { + "details": "Unsigned math operations with safety checks that revert on error", "methods": {}, "title": "SafeMath" }, "evm": { "bytecode": { "linkReferences": {}, - "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820da2bd0dd3588878574232c2d13f92e16f4b0e8ad94ede9adb0d087f862d4f8cf0029", - "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xda 0x2b 0xd0 0xdd CALLDATALOAD DUP9 DUP8 DUP6 PUSH21 0x232C2D13F92E16F4B0E8AD94EDE9ADB0D087F862D4 0xf8 0xcf STOP 0x29 ", - "sourceMap": "117:1531:9:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820c8fdc9a15986ffb647c7551d6f3c5b251c8209308e82491b559a3ee6cc289f670029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 0xc8 REVERT 0xc9 LOG1 MSIZE DUP7 SELFDESTRUCT 0xb6 0x47 0xc7 SSTORE SAR PUSH16 0x3C5B251C8209308E82491B559A3EE6CC 0x28 SWAP16 PUSH8 0x29000000000000 ", + "sourceMap": "125:1726:9:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -979,7 +981,7 @@ }, "methodIdentifiers": {} }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"SafeMath\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.4+commit.9549d8ff\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Unsigned math operations with safety checks that revert on error\",\"methods\":{},\"title\":\"SafeMath\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x965012d27b4262d7a41f5028cbb30c51ebd9ecd4be8fb30380aaa7a3c64fbc8b\",\"urls\":[\"bzzr://41ca38f6b0fa4b77b0feec43e422cfbec48b7eb38a41edf0b85c77e8d9a296b1\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -1163,6 +1165,7 @@ } ], "devdoc": { + "details": "see https://github.com/ethereum/EIPs/issues/20", "methods": {}, "title": "ERC20 interface" }, @@ -1193,15 +1196,16 @@ "SafeERC20": { "abi": [], "devdoc": { + "details": "Wrappers around ERC20 operations that throw on failure. To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.", "methods": {}, "title": "SafeERC20" }, "evm": { "bytecode": { "linkReferences": {}, - "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820c0f55d8db2bd761049fa5ba6b6c207a4d595b758946aba3715580373517606710029", - "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xc0 0xf5 0x5d DUP14 0xb2 0xbd PUSH23 0x1049FA5BA6B6C207A4D595B758946ABA37155803735176 MOD PUSH18 0x2900000000000000000000000000000000 ", - "sourceMap": "353:1296:11:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820f19c7b62e065f91bc3f26e33372ab3fae2852e0b472cd6bb775c347272d9d5120029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 CALL SWAP13 PUSH28 0x62E065F91BC3F26E33372AB3FAE2852E0B472CD6BB775C347272D9D5 SLT STOP 0x29 ", + "sourceMap": "352:1248:11:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -1219,7 +1223,7 @@ }, "methodIdentifiers": {} }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"SafeERC20\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.4+commit.9549d8ff\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers around ERC20 operations that throw on failure. To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"methods\":{},\"title\":\"SafeERC20\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x965012d27b4262d7a41f5028cbb30c51ebd9ecd4be8fb30380aaa7a3c64fbc8b\",\"urls\":[\"bzzr://41ca38f6b0fa4b77b0feec43e422cfbec48b7eb38a41edf0b85c77e8d9a296b1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x079c4e23ee448f529e43bfa3c4e8fb4be52cd0318ee923a276835bedf45b93d8\",\"urls\":[\"bzzr://48248e86f64407a95f241d6c5c8cfea6b4d4ebf4ebb467e5c98c8af3868fafe4\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x05fcee7431cd35cd312e14e7f316a44ca3ccc5fb3b859aefc15c1a5db94add7e\",\"urls\":[\"bzzr://5ba67fb83aa7806883a335d53a27dcf1f53b75fa38dedd57893cc84633aa4d4c\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -1242,11 +1246,11 @@ "id": 1, "literals": [ "solidity", - "0.4", - ".24" + "0.5", + ".4" ], "nodeType": "PragmaDirective", - "src": "0:23:0" + "src": "0:22:0" }, { "baseContracts": [], @@ -1267,7 +1271,7 @@ "name": "TOKEN_FACTOR", "nodeType": "VariableDeclaration", "scope": 97, - "src": "56:58:0", + "src": "55:58:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1278,7 +1282,7 @@ "id": 2, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "56:7:0", + "src": "55:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1305,7 +1309,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "97:2:0", + "src": "96:2:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", @@ -1328,7 +1332,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "111:2:0", + "src": "110:2:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_18_by_1", @@ -1350,7 +1354,7 @@ "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "103:7:0", + "src": "102:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" @@ -1365,13 +1369,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "103:11:0", + "src": "102:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "97:17:0", + "src": "96:17:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1385,7 +1389,7 @@ "name": "CAT_0_VALUE", "nodeType": "VariableDeclaration", "scope": 97, - "src": "121:61:0", + "src": "120:61:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1396,7 +1400,7 @@ "id": 9, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "121:7:0", + "src": "120:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1423,7 +1427,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "161:6:0", + "src": "160:6:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_100000_by_1", @@ -1440,13 +1444,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8, - "src": "170:12:0", + "src": "169:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "161:21:0", + "src": "160:21:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1460,7 +1464,7 @@ "name": "CAT_1_VALUE", "nodeType": "VariableDeclaration", "scope": 97, - "src": "189:62:0", + "src": "188:62:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1471,7 +1475,7 @@ "id": 14, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "189:7:0", + "src": "188:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1498,7 +1502,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "229:7:0", + "src": "228:7:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000000_by_1", @@ -1515,13 +1519,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8, - "src": "239:12:0", + "src": "238:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "229:22:0", + "src": "228:22:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1535,7 +1539,7 @@ "name": "CAT_2_VALUE", "nodeType": "VariableDeclaration", "scope": 97, - "src": "258:66:0", + "src": "257:66:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1546,7 +1550,7 @@ "id": 19, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "258:7:0", + "src": "257:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1584,7 +1588,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "298:1:0", + "src": "297:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -1604,7 +1608,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "302:7:0", + "src": "301:7:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000000_by_1", @@ -1612,7 +1616,7 @@ }, "value": "1000000" }, - "src": "298:11:0", + "src": "297:11:0", "typeDescriptions": { "typeIdentifier": "t_rational_2000000_by_1", "typeString": "int_const 2000000" @@ -1627,13 +1631,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8, - "src": "312:12:0", + "src": "311:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "298:26:0", + "src": "297:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1647,7 +1651,7 @@ "name": "CAT_3_VALUE", "nodeType": "VariableDeclaration", "scope": 97, - "src": "331:66:0", + "src": "330:66:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1658,7 +1662,7 @@ "id": 26, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "331:7:0", + "src": "330:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1696,7 +1700,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "371:1:0", + "src": "370:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", @@ -1716,7 +1720,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "375:7:0", + "src": "374:7:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000000_by_1", @@ -1724,7 +1728,7 @@ }, "value": "1000000" }, - "src": "371:11:0", + "src": "370:11:0", "typeDescriptions": { "typeIdentifier": "t_rational_3000000_by_1", "typeString": "int_const 3000000" @@ -1739,13 +1743,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8, - "src": "385:12:0", + "src": "384:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "371:26:0", + "src": "370:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1759,7 +1763,7 @@ "name": "CAT_4_VALUE", "nodeType": "VariableDeclaration", "scope": 97, - "src": "404:66:0", + "src": "403:66:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1770,7 +1774,7 @@ "id": 33, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "404:7:0", + "src": "403:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1808,7 +1812,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "444:1:0", + "src": "443:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", @@ -1828,7 +1832,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "448:7:0", + "src": "447:7:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000000_by_1", @@ -1836,7 +1840,7 @@ }, "value": "1000000" }, - "src": "444:11:0", + "src": "443:11:0", "typeDescriptions": { "typeIdentifier": "t_rational_4000000_by_1", "typeString": "int_const 4000000" @@ -1851,13 +1855,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8, - "src": "458:12:0", + "src": "457:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "444:26:0", + "src": "443:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1871,7 +1875,7 @@ "name": "CAT_5_VALUE", "nodeType": "VariableDeclaration", "scope": 97, - "src": "477:66:0", + "src": "476:66:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1882,7 +1886,7 @@ "id": 40, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "477:7:0", + "src": "476:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1920,7 +1924,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "517:1:0", + "src": "516:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -1940,7 +1944,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "521:7:0", + "src": "520:7:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000000_by_1", @@ -1948,7 +1952,7 @@ }, "value": "1000000" }, - "src": "517:11:0", + "src": "516:11:0", "typeDescriptions": { "typeIdentifier": "t_rational_5000000_by_1", "typeString": "int_const 5000000" @@ -1963,13 +1967,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8, - "src": "531:12:0", + "src": "530:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "517:26:0", + "src": "516:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1981,7 +1985,7 @@ "body": { "id": 95, "nodeType": "Block", - "src": "631:426:0", + "src": "630:426:0", "statements": [ { "condition": { @@ -2002,7 +2006,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 48, - "src": "645:8:0", + "src": "644:8:0", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2020,7 +2024,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "657:1:0", + "src": "656:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2028,7 +2032,7 @@ }, "value": "0" }, - "src": "645:13:0", + "src": "644:13:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2053,7 +2057,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 48, - "src": "714:8:0", + "src": "713:8:0", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2071,7 +2075,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "726:1:0", + "src": "725:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -2079,7 +2083,7 @@ }, "value": "1" }, - "src": "714:13:0", + "src": "713:13:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2104,7 +2108,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 48, - "src": "783:8:0", + "src": "782:8:0", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2122,7 +2126,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "795:1:0", + "src": "794:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -2130,7 +2134,7 @@ }, "value": "2" }, - "src": "783:13:0", + "src": "782:13:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2155,7 +2159,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 48, - "src": "852:8:0", + "src": "851:8:0", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2173,7 +2177,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "864:1:0", + "src": "863:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", @@ -2181,7 +2185,7 @@ }, "value": "3" }, - "src": "852:13:0", + "src": "851:13:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2206,7 +2210,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 48, - "src": "921:8:0", + "src": "920:8:0", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2224,7 +2228,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "933:1:0", + "src": "932:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", @@ -2232,7 +2236,7 @@ }, "value": "4" }, - "src": "921:13:0", + "src": "920:13:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2257,7 +2261,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 48, - "src": "990:8:0", + "src": "989:8:0", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2275,7 +2279,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1002:1:0", + "src": "1001:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -2283,7 +2287,7 @@ }, "value": "5" }, - "src": "990:13:0", + "src": "989:13:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2292,11 +2296,11 @@ "falseBody": null, "id": 89, "nodeType": "IfStatement", - "src": "987:63:0", + "src": "986:63:0", "trueBody": { "id": 88, "nodeType": "Block", - "src": "1005:45:0", + "src": "1004:45:0", "statements": [ { "expression": { @@ -2306,7 +2310,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 46, - "src": "1027:11:0", + "src": "1026:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2315,18 +2319,18 @@ "functionReturnParameters": 52, "id": 87, "nodeType": "Return", - "src": "1020:18:0" + "src": "1019:18:0" } ] } }, "id": 90, "nodeType": "IfStatement", - "src": "918:132:0", + "src": "917:132:0", "trueBody": { "id": 82, "nodeType": "Block", - "src": "936:45:0", + "src": "935:45:0", "statements": [ { "expression": { @@ -2336,7 +2340,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39, - "src": "958:11:0", + "src": "957:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2345,18 +2349,18 @@ "functionReturnParameters": 52, "id": 81, "nodeType": "Return", - "src": "951:18:0" + "src": "950:18:0" } ] } }, "id": 91, "nodeType": "IfStatement", - "src": "849:201:0", + "src": "848:201:0", "trueBody": { "id": 76, "nodeType": "Block", - "src": "867:45:0", + "src": "866:45:0", "statements": [ { "expression": { @@ -2366,7 +2370,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 32, - "src": "889:11:0", + "src": "888:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2375,18 +2379,18 @@ "functionReturnParameters": 52, "id": 75, "nodeType": "Return", - "src": "882:18:0" + "src": "881:18:0" } ] } }, "id": 92, "nodeType": "IfStatement", - "src": "780:270:0", + "src": "779:270:0", "trueBody": { "id": 70, "nodeType": "Block", - "src": "798:45:0", + "src": "797:45:0", "statements": [ { "expression": { @@ -2396,7 +2400,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 25, - "src": "820:11:0", + "src": "819:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2405,18 +2409,18 @@ "functionReturnParameters": 52, "id": 69, "nodeType": "Return", - "src": "813:18:0" + "src": "812:18:0" } ] } }, "id": 93, "nodeType": "IfStatement", - "src": "711:339:0", + "src": "710:339:0", "trueBody": { "id": 64, "nodeType": "Block", - "src": "729:45:0", + "src": "728:45:0", "statements": [ { "expression": { @@ -2426,7 +2430,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18, - "src": "751:11:0", + "src": "750:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2435,18 +2439,18 @@ "functionReturnParameters": 52, "id": 63, "nodeType": "Return", - "src": "744:18:0" + "src": "743:18:0" } ] } }, "id": 94, "nodeType": "IfStatement", - "src": "642:408:0", + "src": "641:408:0", "trueBody": { "id": 58, "nodeType": "Block", - "src": "660:45:0", + "src": "659:45:0", "statements": [ { "expression": { @@ -2456,7 +2460,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 13, - "src": "682:11:0", + "src": "681:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2465,7 +2469,7 @@ "functionReturnParameters": 52, "id": 57, "nodeType": "Return", - "src": "675:18:0" + "src": "674:18:0" } ] } @@ -2475,8 +2479,7 @@ "documentation": null, "id": 96, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "getCapacityByCategory", "nodeType": "FunctionDefinition", @@ -2490,7 +2493,7 @@ "name": "category", "nodeType": "VariableDeclaration", "scope": 96, - "src": "583:14:0", + "src": "582:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2501,7 +2504,7 @@ "id": 47, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "583:5:0", + "src": "582:5:0", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2511,9 +2514,8 @@ "visibility": "internal" } ], - "src": "582:16:0" + "src": "581:16:0" }, - "payable": false, "returnParameters": { "id": 52, "nodeType": "ParameterList", @@ -2524,7 +2526,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 96, - "src": "622:7:0", + "src": "621:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2535,7 +2537,7 @@ "id": 50, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "622:7:0", + "src": "621:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2545,20 +2547,20 @@ "visibility": "internal" } ], - "src": "621:9:0" + "src": "620:9:0" }, "scope": 97, - "src": "552:505:0", + "src": "551:505:0", "stateMutability": "pure", "superFunction": null, "visibility": "internal" } ], "scope": 98, - "src": "27:1033:0" + "src": "26:1033:0" } ], - "src": "0:1060:0" + "src": "0:1059:0" }, "id": 0 }, @@ -2577,12 +2579,11 @@ "id": 99, "literals": [ "solidity", - "^", - "0.4", - ".24" + "0.5", + ".4" ], "nodeType": "PragmaDirective", - "src": "0:24:1" + "src": "0:22:1" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", @@ -2590,8 +2591,8 @@ "id": 100, "nodeType": "ImportDirective", "scope": 185, - "sourceUnit": 1182, - "src": "28:189:1", + "sourceUnit": 1178, + "src": "26:189:1", "symbolAliases": [], "unitAlias": "" }, @@ -2615,24 +2616,24 @@ "id": 101, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1181, - "src": "260:5:1", + "referencedDeclaration": 1177, + "src": "258:5:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$1181", + "typeIdentifier": "t_contract$_Roles_$1177", "typeString": "library Roles" } }, "nodeType": "UsingForDirective", - "src": "254:27:1", + "src": "252:27:1", "typeName": { "contractScope": null, "id": 102, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1094, - "src": "270:10:1", + "referencedDeclaration": 1090, + "src": "268:10:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1090_storage_ptr", "typeString": "struct Roles.Role" } } @@ -2643,11 +2644,11 @@ "name": "_coreTeamMembers", "nodeType": "VariableDeclaration", "scope": 184, - "src": "289:35:1", + "src": "287:35:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1094_storage", + "typeIdentifier": "t_struct$_Role_$1090_storage", "typeString": "struct Roles.Role" }, "typeName": { @@ -2655,10 +2656,10 @@ "id": 104, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1094, - "src": "289:10:1", + "referencedDeclaration": 1090, + "src": "287:10:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1090_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -2669,7 +2670,7 @@ "body": { "id": 113, "nodeType": "Block", - "src": "357:43:1", + "src": "355:43:1", "statements": [ { "expression": { @@ -2683,8 +2684,8 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1537, - "src": "381:3:1", + "referencedDeclaration": 1534, + "src": "379:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" @@ -2698,18 +2699,18 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "381:10:1", + "src": "379:10:1", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } ], "id": 108, @@ -2717,7 +2718,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 171, - "src": "368:12:1", + "src": "366:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" @@ -2731,7 +2732,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "368:24:1", + "src": "366:24:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -2739,15 +2740,14 @@ }, "id": 112, "nodeType": "ExpressionStatement", - "src": "368:24:1" + "src": "366:24:1" } ] }, "documentation": null, "id": 114, "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, + "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", @@ -2755,17 +2755,16 @@ "id": 106, "nodeType": "ParameterList", "parameters": [], - "src": "345:2:1" + "src": "343:2:1" }, - "payable": false, "returnParameters": { "id": 107, "nodeType": "ParameterList", "parameters": [], - "src": "357:0:1" + "src": "355:0:1" }, "scope": 184, - "src": "333:67:1", + "src": "331:67:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" @@ -2774,7 +2773,7 @@ "body": { "id": 124, "nodeType": "Block", - "src": "432:62:1", + "src": "430:62:1", "statements": [ { "expression": { @@ -2791,8 +2790,8 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1537, - "src": "462:3:1", + "referencedDeclaration": 1534, + "src": "460:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" @@ -2806,18 +2805,18 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "462:10:1", + "src": "460:10:1", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } ], "id": 117, @@ -2825,7 +2824,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 138, - "src": "451:10:1", + "src": "449:10:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)" @@ -2839,7 +2838,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "451:22:1", + "src": "449:22:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2857,11 +2856,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "443:7:1", + "referencedDeclaration": 1537, + "src": "441:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -2875,7 +2874,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "443:31:1", + "src": "441:31:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -2883,12 +2882,12 @@ }, "id": 122, "nodeType": "ExpressionStatement", - "src": "443:31:1" + "src": "441:31:1" }, { "id": 123, "nodeType": "PlaceholderStatement", - "src": "485:1:1" + "src": "483:1:1" } ] }, @@ -2900,16 +2899,16 @@ "id": 115, "nodeType": "ParameterList", "parameters": [], - "src": "429:2:1" + "src": "427:2:1" }, - "src": "408:86:1", + "src": "406:86:1", "visibility": "internal" }, { "body": { "id": 137, "nodeType": "Block", - "src": "566:55:1", + "src": "564:55:1", "statements": [ { "expression": { @@ -2922,7 +2921,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 127, - "src": "605:7:1", + "src": "603:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2943,9 +2942,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 105, - "src": "584:16:1", + "src": "582:16:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1094_storage", + "typeIdentifier": "t_struct$_Role_$1090_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -2956,10 +2955,10 @@ "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 1180, - "src": "584:20:1", + "referencedDeclaration": 1176, + "src": "582:20:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1094_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1094_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1090_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1090_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, @@ -2971,7 +2970,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "584:29:1", + "src": "582:29:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2980,15 +2979,14 @@ "functionReturnParameters": 131, "id": 136, "nodeType": "Return", - "src": "577:36:1" + "src": "575:36:1" } ] }, "documentation": null, "id": 138, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "isCoreTeam", "nodeType": "FunctionDefinition", @@ -3002,7 +3000,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 138, - "src": "522:15:1", + "src": "520:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3013,7 +3011,8 @@ "id": 126, "name": "address", "nodeType": "ElementaryTypeName", - "src": "522:7:1", + "src": "520:7:1", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3023,9 +3022,8 @@ "visibility": "internal" } ], - "src": "521:17:1" + "src": "519:17:1" }, - "payable": false, "returnParameters": { "id": 131, "nodeType": "ParameterList", @@ -3036,7 +3034,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 138, - "src": "560:4:1", + "src": "558:4:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3047,7 +3045,7 @@ "id": 129, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "560:4:1", + "src": "558:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3057,10 +3055,10 @@ "visibility": "internal" } ], - "src": "559:6:1" + "src": "557:6:1" }, "scope": 184, - "src": "502:119:1", + "src": "500:119:1", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -3069,7 +3067,7 @@ "body": { "id": 149, "nodeType": "Block", - "src": "687:40:1", + "src": "685:40:1", "statements": [ { "expression": { @@ -3082,7 +3080,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 140, - "src": "711:7:1", + "src": "709:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3101,7 +3099,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 171, - "src": "698:12:1", + "src": "696:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" @@ -3115,7 +3113,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "698:21:1", + "src": "696:21:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -3123,15 +3121,14 @@ }, "id": 148, "nodeType": "ExpressionStatement", - "src": "698:21:1" + "src": "696:21:1" } ] }, "documentation": null, "id": 150, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, @@ -3143,14 +3140,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "674:12:1", + "src": "672:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "674:12:1" + "src": "672:12:1" } ], "name": "addCoreTeam", @@ -3165,7 +3162,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 150, - "src": "650:15:1", + "src": "648:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3176,7 +3173,8 @@ "id": 139, "name": "address", "nodeType": "ElementaryTypeName", - "src": "650:7:1", + "src": "648:7:1", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3186,17 +3184,16 @@ "visibility": "internal" } ], - "src": "649:17:1" + "src": "647:17:1" }, - "payable": false, "returnParameters": { "id": 144, "nodeType": "ParameterList", "parameters": [], - "src": "687:0:1" + "src": "685:0:1" }, "scope": 184, - "src": "629:98:1", + "src": "627:98:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -3205,7 +3202,7 @@ "body": { "id": 158, "nodeType": "Block", - "src": "770:46:1", + "src": "768:46:1", "statements": [ { "expression": { @@ -3219,8 +3216,8 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1537, - "src": "797:3:1", + "referencedDeclaration": 1534, + "src": "795:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" @@ -3234,18 +3231,18 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "797:10:1", + "src": "795:10:1", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } ], "id": 153, @@ -3253,7 +3250,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 183, - "src": "781:15:1", + "src": "779:15:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" @@ -3267,7 +3264,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "781:27:1", + "src": "779:27:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -3275,15 +3272,14 @@ }, "id": 157, "nodeType": "ExpressionStatement", - "src": "781:27:1" + "src": "779:27:1" } ] }, "documentation": null, "id": 159, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "renounceCoreTeam", "nodeType": "FunctionDefinition", @@ -3291,17 +3287,16 @@ "id": 151, "nodeType": "ParameterList", "parameters": [], - "src": "760:2:1" + "src": "758:2:1" }, - "payable": false, "returnParameters": { "id": 152, "nodeType": "ParameterList", "parameters": [], - "src": "770:0:1" + "src": "768:0:1" }, "scope": 184, - "src": "735:81:1", + "src": "733:81:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -3310,7 +3305,7 @@ "body": { "id": 170, "nodeType": "Block", - "src": "872:48:1", + "src": "870:48:1", "statements": [ { "expression": { @@ -3323,7 +3318,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 161, - "src": "904:7:1", + "src": "902:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3344,9 +3339,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 105, - "src": "883:16:1", + "src": "881:16:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1094_storage", + "typeIdentifier": "t_struct$_Role_$1090_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -3357,10 +3352,10 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1126, - "src": "883:20:1", + "referencedDeclaration": 1122, + "src": "881:20:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1094_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1094_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1090_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1090_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -3372,7 +3367,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "883:29:1", + "src": "881:29:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -3380,15 +3375,14 @@ }, "id": 169, "nodeType": "ExpressionStatement", - "src": "883:29:1" + "src": "881:29:1" } ] }, "documentation": null, "id": 171, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "_addCoreTeam", "nodeType": "FunctionDefinition", @@ -3402,7 +3396,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 171, - "src": "846:15:1", + "src": "844:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3413,7 +3407,8 @@ "id": 160, "name": "address", "nodeType": "ElementaryTypeName", - "src": "846:7:1", + "src": "844:7:1", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3423,17 +3418,16 @@ "visibility": "internal" } ], - "src": "845:17:1" + "src": "843:17:1" }, - "payable": false, "returnParameters": { "id": 163, "nodeType": "ParameterList", "parameters": [], - "src": "872:0:1" + "src": "870:0:1" }, "scope": 184, - "src": "824:96:1", + "src": "822:96:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" @@ -3442,7 +3436,7 @@ "body": { "id": 182, "nodeType": "Block", - "src": "979:51:1", + "src": "977:51:1", "statements": [ { "expression": { @@ -3455,7 +3449,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 173, - "src": "1014:7:1", + "src": "1012:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3476,9 +3470,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 105, - "src": "990:16:1", + "src": "988:16:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1094_storage", + "typeIdentifier": "t_struct$_Role_$1090_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -3489,10 +3483,10 @@ "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 1157, - "src": "990:23:1", + "referencedDeclaration": 1153, + "src": "988:23:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1094_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1094_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1090_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1090_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -3504,7 +3498,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "990:32:1", + "src": "988:32:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -3512,15 +3506,14 @@ }, "id": 181, "nodeType": "ExpressionStatement", - "src": "990:32:1" + "src": "988:32:1" } ] }, "documentation": null, "id": 183, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "_removeCoreTeam", "nodeType": "FunctionDefinition", @@ -3534,7 +3527,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 183, - "src": "953:15:1", + "src": "951:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3545,7 +3538,8 @@ "id": 172, "name": "address", "nodeType": "ElementaryTypeName", - "src": "953:7:1", + "src": "951:7:1", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3555,27 +3549,26 @@ "visibility": "internal" } ], - "src": "952:17:1" + "src": "950:17:1" }, - "payable": false, "returnParameters": { "id": 175, "nodeType": "ParameterList", "parameters": [], - "src": "979:0:1" + "src": "977:0:1" }, "scope": 184, - "src": "928:102:1", + "src": "926:102:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], "scope": 185, - "src": "221:812:1" + "src": "219:812:1" } ], - "src": "0:1035:1" + "src": "0:1033:1" }, "id": 1 }, @@ -3584,30 +3577,30 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol", "exportedSymbols": { "AlgoMiner": [ - 786 + 782 ] }, - "id": 787, + "id": 783, "nodeType": "SourceUnit", "nodes": [ { "id": 186, "literals": [ "solidity", - "0.4", - ".24" + "0.5", + ".4" ], "nodeType": "PragmaDirective", - "src": "0:23:2" + "src": "0:22:2" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "id": 187, "nodeType": "ImportDirective", - "scope": 787, - "sourceUnit": 1379, - "src": "27:195:2", + "scope": 783, + "sourceUnit": 1375, + "src": "26:195:2", "symbolAliases": [], "unitAlias": "" }, @@ -3616,9 +3609,9 @@ "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "id": 188, "nodeType": "ImportDirective", - "scope": 787, - "sourceUnit": 1523, - "src": "224:198:2", + "scope": 783, + "sourceUnit": 1520, + "src": "223:198:2", "symbolAliases": [], "unitAlias": "" }, @@ -3627,9 +3620,9 @@ "file": "./IAlgoMiner.sol", "id": 189, "nodeType": "ImportDirective", - "scope": 787, - "sourceUnit": 1051, - "src": "426:26:2", + "scope": 783, + "sourceUnit": 1047, + "src": "425:26:2", "symbolAliases": [], "unitAlias": "" }, @@ -3638,9 +3631,9 @@ "file": "./AlgoCommon.sol", "id": 190, "nodeType": "ImportDirective", - "scope": 787, + "scope": 783, "sourceUnit": 98, - "src": "454:26:2", + "src": "453:26:2", "symbolAliases": [], "unitAlias": "" }, @@ -3649,9 +3642,9 @@ "file": "./ERC20TokenHolder.sol", "id": 191, "nodeType": "ImportDirective", - "scope": 787, - "sourceUnit": 1018, - "src": "482:32:2", + "scope": 783, + "sourceUnit": 1014, + "src": "481:32:2", "symbolAliases": [], "unitAlias": "" }, @@ -3660,9 +3653,9 @@ "file": "./AlgoSystemRole.sol", "id": 192, "nodeType": "ImportDirective", - "scope": 787, - "sourceUnit": 961, - "src": "516:30:2", + "scope": 783, + "sourceUnit": 957, + "src": "515:30:2", "symbolAliases": [], "unitAlias": "" }, @@ -3671,9 +3664,9 @@ "file": "./AlgoCoreTeamRole.sol", "id": 193, "nodeType": "ImportDirective", - "scope": 787, + "scope": 783, "sourceUnit": 185, - "src": "548:32:2", + "src": "547:32:2", "symbolAliases": [], "unitAlias": "" }, @@ -3682,9 +3675,9 @@ "file": "./AlgoSupervisorRole.sol", "id": 194, "nodeType": "ImportDirective", - "scope": 787, - "sourceUnit": 874, - "src": "582:34:2", + "scope": 783, + "sourceUnit": 870, + "src": "581:34:2", "symbolAliases": [], "unitAlias": "" }, @@ -3698,7 +3691,7 @@ "name": "AlgoCommon", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 97, - "src": "642:10:2", + "src": "641:10:2", "typeDescriptions": { "typeIdentifier": "t_contract$_AlgoCommon_$97", "typeString": "contract AlgoCommon" @@ -3706,7 +3699,7 @@ }, "id": 196, "nodeType": "InheritanceSpecifier", - "src": "642:10:2" + "src": "641:10:2" }, { "arguments": null, @@ -3715,16 +3708,16 @@ "id": 197, "name": "ERC20TokenHolder", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1017, - "src": "654:16:2", + "referencedDeclaration": 1013, + "src": "653:16:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20TokenHolder_$1017", + "typeIdentifier": "t_contract$_ERC20TokenHolder_$1013", "typeString": "contract ERC20TokenHolder" } }, "id": 198, "nodeType": "InheritanceSpecifier", - "src": "654:16:2" + "src": "653:16:2" }, { "arguments": null, @@ -3733,16 +3726,16 @@ "id": 199, "name": "AlgoSystemRole", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 960, - "src": "672:14:2", + "referencedDeclaration": 956, + "src": "671:14:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoSystemRole_$960", + "typeIdentifier": "t_contract$_AlgoSystemRole_$956", "typeString": "contract AlgoSystemRole" } }, "id": 200, "nodeType": "InheritanceSpecifier", - "src": "672:14:2" + "src": "671:14:2" }, { "arguments": null, @@ -3752,7 +3745,7 @@ "name": "AlgoCoreTeamRole", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 184, - "src": "688:16:2", + "src": "687:16:2", "typeDescriptions": { "typeIdentifier": "t_contract$_AlgoCoreTeamRole_$184", "typeString": "contract AlgoCoreTeamRole" @@ -3760,7 +3753,7 @@ }, "id": 202, "nodeType": "InheritanceSpecifier", - "src": "688:16:2" + "src": "687:16:2" }, { "arguments": null, @@ -3769,16 +3762,16 @@ "id": 203, "name": "AlgoSupervisorRole", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 873, - "src": "706:18:2", + "referencedDeclaration": 869, + "src": "705:18:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoSupervisorRole_$873", + "typeIdentifier": "t_contract$_AlgoSupervisorRole_$869", "typeString": "contract AlgoSupervisorRole" } }, "id": 204, "nodeType": "InheritanceSpecifier", - "src": "706:18:2" + "src": "705:18:2" }, { "arguments": null, @@ -3787,39 +3780,39 @@ "id": 205, "name": "IAlgoMiner", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1050, - "src": "726:10:2", + "referencedDeclaration": 1046, + "src": "725:10:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$1050", + "typeIdentifier": "t_contract$_IAlgoMiner_$1046", "typeString": "contract IAlgoMiner" } }, "id": 206, "nodeType": "InheritanceSpecifier", - "src": "726:10:2" + "src": "725:10:2" } ], "contractDependencies": [ - 1087, - 1050, + 1013, + 1046, + 1083, + 869, 97, - 1017, - 960, 184, - 873 + 956 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 786, + "id": 782, "linearizedBaseContracts": [ - 786, - 1050, - 873, + 782, + 1046, + 869, 184, - 960, - 1017, - 1087, + 956, + 1013, + 1083, 97 ], "name": "AlgoMiner", @@ -3832,24 +3825,24 @@ "id": 207, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1522, - "src": "750:9:2", + "referencedDeclaration": 1519, + "src": "749:9:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1522", + "typeIdentifier": "t_contract$_SafeERC20_$1519", "typeString": "library SafeERC20" } }, "nodeType": "UsingForDirective", - "src": "744:27:2", + "src": "743:27:2", "typeName": { "contractScope": null, "id": 208, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1378, - "src": "764:6:2", + "referencedDeclaration": 1374, + "src": "763:6:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" } } @@ -3859,8 +3852,8 @@ "id": 212, "name": "DAYS_PER_YEAR", "nodeType": "VariableDeclaration", - "scope": 786, - "src": "779:44:2", + "scope": 782, + "src": "778:44:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3871,7 +3864,7 @@ "id": 210, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "779:7:2", + "src": "778:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3887,7 +3880,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "820:3:2", + "src": "819:3:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_365_by_1", @@ -3905,18 +3898,18 @@ "id": 213, "name": "PoolBased", "nodeType": "EnumValue", - "src": "858:9:2" + "src": "857:9:2" }, { "id": 214, "name": "NonPoolBased", "nodeType": "EnumValue", - "src": "878:12:2" + "src": "877:12:2" } ], "name": "MinerType", "nodeType": "EnumDefinition", - "src": "832:65:2" + "src": "831:65:2" }, { "canonicalName": "AlgoMiner.MinerState", @@ -3926,38 +3919,38 @@ "id": 216, "name": "Deactivated", "nodeType": "EnumValue", - "src": "932:11:2" + "src": "931:11:2" }, { "id": 217, "name": "Activated", "nodeType": "EnumValue", - "src": "954:9:2" + "src": "953:9:2" }, { "id": 218, "name": "Suspended", "nodeType": "EnumValue", - "src": "974:9:2" + "src": "973:9:2" }, { "id": 219, "name": "Stopped", "nodeType": "EnumValue", - "src": "994:7:2" + "src": "993:7:2" } ], "name": "MinerState", "nodeType": "EnumDefinition", - "src": "905:103:2" + "src": "904:103:2" }, { "constant": false, "id": 222, "name": "_minerType", "nodeType": "VariableDeclaration", - "scope": 786, - "src": "1016:28:2", + "scope": 782, + "src": "1015:28:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3970,7 +3963,7 @@ "name": "MinerType", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 215, - "src": "1016:9:2", + "src": "1015:9:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" @@ -3984,8 +3977,8 @@ "id": 224, "name": "_category", "nodeType": "VariableDeclaration", - "scope": 786, - "src": "1051:23:2", + "scope": 782, + "src": "1050:23:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3996,7 +3989,7 @@ "id": 223, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1051:5:2", + "src": "1050:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4010,8 +4003,8 @@ "id": 226, "name": "_miner", "nodeType": "VariableDeclaration", - "scope": 786, - "src": "1081:22:2", + "scope": 782, + "src": "1080:22:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4022,7 +4015,8 @@ "id": 225, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1081:7:2", + "src": "1080:7:2", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4036,8 +4030,8 @@ "id": 228, "name": "_referral", "nodeType": "VariableDeclaration", - "scope": 786, - "src": "1110:25:2", + "scope": 782, + "src": "1109:25:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4048,7 +4042,8 @@ "id": 227, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1110:7:2", + "src": "1109:7:2", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4062,8 +4057,8 @@ "id": 230, "name": "_state", "nodeType": "VariableDeclaration", - "scope": 786, - "src": "1144:25:2", + "scope": 782, + "src": "1143:25:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4076,7 +4071,7 @@ "name": "MinerState", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 220, - "src": "1144:10:2", + "src": "1143:10:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -4090,8 +4085,8 @@ "id": 232, "name": "_mining", "nodeType": "VariableDeclaration", - "scope": 786, - "src": "1176:20:2", + "scope": 782, + "src": "1175:20:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4102,7 +4097,7 @@ "id": 231, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1176:4:2", + "src": "1175:4:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4116,8 +4111,8 @@ "id": 234, "name": "_currentYear", "nodeType": "VariableDeclaration", - "scope": 786, - "src": "1203:26:2", + "scope": 782, + "src": "1202:26:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4128,7 +4123,7 @@ "id": 233, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1203:5:2", + "src": "1202:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4142,8 +4137,8 @@ "id": 236, "name": "_currentDay", "nodeType": "VariableDeclaration", - "scope": 786, - "src": "1236:26:2", + "scope": 782, + "src": "1235:26:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4154,7 +4149,7 @@ "id": 235, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "1236:6:2", + "src": "1235:6:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -4168,8 +4163,8 @@ "id": 238, "name": "_currentYearSupply", "nodeType": "VariableDeclaration", - "scope": 786, - "src": "1269:34:2", + "scope": 782, + "src": "1268:34:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4180,7 +4175,7 @@ "id": 237, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1269:7:2", + "src": "1268:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4191,9 +4186,9 @@ }, { "body": { - "id": 308, + "id": 304, "nodeType": "Block", - "src": "1584:392:2", + "src": "1583:375:2", "statements": [ { "expression": { @@ -4202,117 +4197,48 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint8", + "typeString": "uint8" }, - "id": 267, + "id": 263, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "commonType": { + "id": 261, + "name": "category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 242, + "src": "1612:8:2", + "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" - }, - "id": 263, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 261, - "name": "category", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 242, - "src": "1613:8:2", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 262, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1625:1:2", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1613:13:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" } }, "nodeType": "BinaryOperation", - "operator": "&&", + "operator": "<=", "rightExpression": { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 266, + "hexValue": "35", + "id": 262, "isConstant": false, "isLValue": false, - "isPure": false, + "isPure": true, + "kind": "number", "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 264, - "name": "category", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 242, - "src": "1630:8:2", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "35", - "id": 265, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1642:1:2", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_5_by_1", - "typeString": "int_const 5" - }, - "value": "5" - }, - "src": "1630:13:2", + "nodeType": "Literal", + "src": "1624:1:2", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" }, - "src": "1613:30:2", + "src": "1612:13:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4330,17 +4256,17 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "1605:7:2", + "referencedDeclaration": 1537, + "src": "1604:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 268, + "id": 264, "isConstant": false, "isLValue": false, "isPure": false, @@ -4348,15 +4274,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1605:39:2", + "src": "1604:22:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 269, + "id": 265, "nodeType": "ExpressionStatement", - "src": "1605:39:2" + "src": "1604:22:2" }, { "expression": { @@ -4368,19 +4294,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 275, + "id": 271, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 271, + "id": 267, "name": "minerAccountAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 244, - "src": "1663:19:2", + "src": "1645:19:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4394,14 +4320,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 273, + "id": 269, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1694:1:2", + "src": "1676:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4417,20 +4343,20 @@ "typeString": "int_const 0" } ], - "id": 272, + "id": 268, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1686:7:2", + "src": "1668:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 274, + "id": 270, "isConstant": false, "isLValue": false, "isPure": true, @@ -4438,13 +4364,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1686:10:2", + "src": "1668:10:2", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "src": "1663:33:2", + "src": "1645:33:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4458,21 +4384,21 @@ "typeString": "bool" } ], - "id": 270, + "id": 266, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "1655:7:2", + "referencedDeclaration": 1537, + "src": "1637:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 276, + "id": 272, "isConstant": false, "isLValue": false, "isPure": false, @@ -4480,15 +4406,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1655:42:2", + "src": "1637:42:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 277, + "id": 273, "nodeType": "ExpressionStatement", - "src": "1655:42:2" + "src": "1637:42:2" }, { "condition": { @@ -4497,19 +4423,19 @@ "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" }, - "id": 281, + "id": 277, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 278, + "id": 274, "name": "minerType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 240, - "src": "1713:9:2", + "src": "1695:9:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" @@ -4521,18 +4447,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 279, + "id": 275, "name": "MinerType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 215, - "src": "1726:9:2", + "src": "1708:9:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerType_$215_$", "typeString": "type(enum AlgoMiner.MinerType)" } }, - "id": 280, + "id": 276, "isConstant": false, "isLValue": false, "isPure": true, @@ -4540,26 +4466,26 @@ "memberName": "PoolBased", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1726:19:2", + "src": "1708:19:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" } }, - "src": "1713:32:2", + "src": "1695:32:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 291, + "id": 287, "nodeType": "IfStatement", - "src": "1710:109:2", + "src": "1692:109:2", "trueBody": { - "id": 290, + "id": 286, "nodeType": "Block", - "src": "1747:72:2", + "src": "1729:72:2", "statements": [ { "expression": { @@ -4571,19 +4497,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 287, + "id": 283, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 283, + "id": 279, "name": "referralAccountAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 246, - "src": "1770:22:2", + "src": "1752:22:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4597,14 +4523,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 285, + "id": 281, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1804:1:2", + "src": "1786:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4620,20 +4546,20 @@ "typeString": "int_const 0" } ], - "id": 284, + "id": 280, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1796:7:2", + "src": "1778:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 286, + "id": 282, "isConstant": false, "isLValue": false, "isPure": true, @@ -4641,13 +4567,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1796:10:2", + "src": "1778:10:2", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "src": "1770:36:2", + "src": "1752:36:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4661,21 +4587,21 @@ "typeString": "bool" } ], - "id": 282, + "id": 278, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "1762:7:2", + "referencedDeclaration": 1537, + "src": "1744:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 288, + "id": 284, "isConstant": false, "isLValue": false, "isPure": false, @@ -4683,19 +4609,65 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1762:45:2", + "src": "1744:45:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 289, + "id": 285, "nodeType": "ExpressionStatement", - "src": "1762:45:2" + "src": "1744:45:2" } ] } }, + { + "expression": { + "argumentTypes": null, + "id": 290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 288, + "name": "_minerType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 222, + "src": "1813:10:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerType_$215", + "typeString": "enum AlgoMiner.MinerType" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 289, + "name": "minerType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 240, + "src": "1826:9:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerType_$215", + "typeString": "enum AlgoMiner.MinerType" + } + }, + "src": "1813:22:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerType_$215", + "typeString": "enum AlgoMiner.MinerType" + } + }, + "id": 291, + "nodeType": "ExpressionStatement", + "src": "1813:22:2" + }, { "expression": { "argumentTypes": null, @@ -4707,14 +4679,14 @@ "leftHandSide": { "argumentTypes": null, "id": 292, - "name": "_minerType", + "name": "_category", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 222, - "src": "1831:10:2", + "referencedDeclaration": 224, + "src": "1846:9:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerType_$215", - "typeString": "enum AlgoMiner.MinerType" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } }, "nodeType": "Assignment", @@ -4722,25 +4694,25 @@ "rightHandSide": { "argumentTypes": null, "id": 293, - "name": "minerType", + "name": "category", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 240, - "src": "1844:9:2", + "referencedDeclaration": 242, + "src": "1858:8:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerType_$215", - "typeString": "enum AlgoMiner.MinerType" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } }, - "src": "1831:22:2", + "src": "1846:20:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerType_$215", - "typeString": "enum AlgoMiner.MinerType" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } }, "id": 295, "nodeType": "ExpressionStatement", - "src": "1831:22:2" + "src": "1846:20:2" }, { "expression": { @@ -4753,14 +4725,14 @@ "leftHandSide": { "argumentTypes": null, "id": 296, - "name": "_category", + "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 224, - "src": "1864:9:2", + "referencedDeclaration": 226, + "src": "1877:6:2", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "Assignment", @@ -4768,25 +4740,25 @@ "rightHandSide": { "argumentTypes": null, "id": 297, - "name": "category", + "name": "minerAccountAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 242, - "src": "1876:8:2", + "referencedDeclaration": 244, + "src": "1886:19:2", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "src": "1864:20:2", + "src": "1877:28:2", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_address", + "typeString": "address" } }, "id": 299, "nodeType": "ExpressionStatement", - "src": "1864:20:2" + "src": "1877:28:2" }, { "expression": { @@ -4799,11 +4771,11 @@ "leftHandSide": { "argumentTypes": null, "id": 300, - "name": "_miner", + "name": "_referral", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 226, - "src": "1895:6:2", + "referencedDeclaration": 228, + "src": "1916:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4814,17 +4786,17 @@ "rightHandSide": { "argumentTypes": null, "id": 301, - "name": "minerAccountAddress", + "name": "referralAccountAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 244, - "src": "1904:19:2", + "referencedDeclaration": 246, + "src": "1928:22:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1895:28:2", + "src": "1916:34:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4832,61 +4804,14 @@ }, "id": 303, "nodeType": "ExpressionStatement", - "src": "1895:28:2" - }, - { - "expression": { - "argumentTypes": null, - "id": 306, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 304, - "name": "_referral", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 228, - "src": "1934:9:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 305, - "name": "referralAccountAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 246, - "src": "1946:22:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1934:34:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 307, - "nodeType": "ExpressionStatement", - "src": "1934:34:2" + "src": "1916:34:2" } ] }, "documentation": null, - "id": 309, + "id": 305, "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, + "kind": "constructor", "modifiers": [ { "arguments": [ @@ -4897,7 +4822,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 248, - "src": "1470:12:2", + "src": "1469:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4911,15 +4836,15 @@ "name": "ERC20TokenHolder", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1017, - "src": "1453:16:2", + "referencedDeclaration": 1013, + "src": "1452:16:2", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20TokenHolder_$1017_$", + "typeIdentifier": "t_type$_t_contract$_ERC20TokenHolder_$1013_$", "typeString": "type(contract ERC20TokenHolder)" } }, "nodeType": "ModifierInvocation", - "src": "1453:30:2" + "src": "1452:30:2" }, { "arguments": [], @@ -4930,15 +4855,15 @@ "name": "AlgoSystemRole", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 960, - "src": "1493:14:2", + "referencedDeclaration": 956, + "src": "1492:14:2", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AlgoSystemRole_$960_$", + "typeIdentifier": "t_type$_t_contract$_AlgoSystemRole_$956_$", "typeString": "type(contract AlgoSystemRole)" } }, "nodeType": "ModifierInvocation", - "src": "1493:16:2" + "src": "1492:16:2" }, { "arguments": [], @@ -4950,14 +4875,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 184, - "src": "1519:16:2", + "src": "1518:16:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_AlgoCoreTeamRole_$184_$", "typeString": "type(contract AlgoCoreTeamRole)" } }, "nodeType": "ModifierInvocation", - "src": "1519:18:2" + "src": "1518:18:2" }, { "arguments": [], @@ -4968,15 +4893,15 @@ "name": "AlgoSupervisorRole", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 873, - "src": "1547:18:2", + "referencedDeclaration": 869, + "src": "1546:18:2", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AlgoSupervisorRole_$873_$", + "typeIdentifier": "t_type$_t_contract$_AlgoSupervisorRole_$869_$", "typeString": "type(contract AlgoSupervisorRole)" } }, "nodeType": "ModifierInvocation", - "src": "1547:20:2" + "src": "1546:20:2" } ], "name": "", @@ -4990,8 +4915,8 @@ "id": 240, "name": "minerType", "nodeType": "VariableDeclaration", - "scope": 309, - "src": "1324:19:2", + "scope": 305, + "src": "1323:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5004,7 +4929,7 @@ "name": "MinerType", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 215, - "src": "1324:9:2", + "src": "1323:9:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" @@ -5018,8 +4943,8 @@ "id": 242, "name": "category", "nodeType": "VariableDeclaration", - "scope": 309, - "src": "1345:14:2", + "scope": 305, + "src": "1344:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5030,7 +4955,7 @@ "id": 241, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1345:5:2", + "src": "1344:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5044,8 +4969,8 @@ "id": 244, "name": "minerAccountAddress", "nodeType": "VariableDeclaration", - "scope": 309, - "src": "1361:27:2", + "scope": 305, + "src": "1360:27:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5056,7 +4981,8 @@ "id": 243, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1361:7:2", + "src": "1360:7:2", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5070,8 +4996,8 @@ "id": 246, "name": "referralAccountAddress", "nodeType": "VariableDeclaration", - "scope": 309, - "src": "1390:30:2", + "scope": 305, + "src": "1389:30:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5082,7 +5008,8 @@ "id": 245, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1390:7:2", + "src": "1389:7:2", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5096,8 +5023,8 @@ "id": 248, "name": "tokenAddress", "nodeType": "VariableDeclaration", - "scope": 309, - "src": "1422:20:2", + "scope": 305, + "src": "1421:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5108,7 +5035,8 @@ "id": 247, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1422:7:2", + "src": "1421:7:2", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5118,26 +5046,25 @@ "visibility": "internal" } ], - "src": "1323:120:2" + "src": "1322:120:2" }, - "payable": false, "returnParameters": { "id": 259, "nodeType": "ParameterList", "parameters": [], - "src": "1584:0:2" + "src": "1583:0:2" }, - "scope": 786, - "src": "1312:664:2", + "scope": 782, + "src": "1311:647:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 319, + "id": 315, "nodeType": "Block", - "src": "2005:60:2", + "src": "1987:60:2", "statements": [ { "expression": { @@ -5149,7 +5076,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 315, + "id": 311, "isConstant": false, "isLValue": false, "isPure": false, @@ -5158,18 +5085,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 312, + "id": 308, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1537, - "src": "2024:3:2", + "referencedDeclaration": 1534, + "src": "2006:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 313, + "id": 309, "isConstant": false, "isLValue": false, "isPure": false, @@ -5177,28 +5104,28 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2024:10:2", + "src": "2006:10:2", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 314, + "id": 310, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 226, - "src": "2038:6:2", + "src": "2020:6:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2024:20:2", + "src": "2006:20:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5212,21 +5139,21 @@ "typeString": "bool" } ], - "id": 311, + "id": 307, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "2016:7:2", + "referencedDeclaration": 1537, + "src": "1998:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 316, + "id": 312, "isConstant": false, "isLValue": false, "isPure": false, @@ -5234,41 +5161,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2016:29:2", + "src": "1998:29:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 317, + "id": 313, "nodeType": "ExpressionStatement", - "src": "2016:29:2" + "src": "1998:29:2" }, { - "id": 318, + "id": 314, "nodeType": "PlaceholderStatement", - "src": "2056:1:2" + "src": "2038:1:2" } ] }, "documentation": null, - "id": 320, + "id": 316, "name": "onlyMiner", "nodeType": "ModifierDefinition", "parameters": { - "id": 310, + "id": 306, "nodeType": "ParameterList", "parameters": [], - "src": "2002:2:2" + "src": "1984:2:2" }, - "src": "1984:81:2", + "src": "1966:81:2", "visibility": "internal" }, { "body": { - "id": 386, + "id": 382, "nodeType": "Block", - "src": "2136:512:2", + "src": "2118:512:2", "statements": [ { "expression": { @@ -5280,19 +5207,19 @@ "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, - "id": 331, + "id": 327, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 328, + "id": 324, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "2155:6:2", + "src": "2137:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -5304,18 +5231,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 329, + "id": 325, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "2165:10:2", + "src": "2147:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 330, + "id": 326, "isConstant": false, "isLValue": false, "isPure": true, @@ -5323,13 +5250,13 @@ "memberName": "Deactivated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2165:22:2", + "src": "2147:22:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2155:32:2", + "src": "2137:32:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5343,21 +5270,21 @@ "typeString": "bool" } ], - "id": 327, + "id": 323, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "2147:7:2", + "referencedDeclaration": 1537, + "src": "2129:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 332, + "id": 328, "isConstant": false, "isLValue": false, "isPure": false, @@ -5365,15 +5292,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2147:41:2", + "src": "2129:41:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 333, + "id": 329, "nodeType": "ExpressionStatement", - "src": "2147:41:2" + "src": "2129:41:2" }, { "condition": { @@ -5382,7 +5309,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 341, + "id": 337, "isConstant": false, "isLValue": false, "isPure": false, @@ -5393,19 +5320,19 @@ "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" }, - "id": 337, + "id": 333, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 334, + "id": 330, "name": "_minerType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 222, - "src": "2204:10:2", + "src": "2186:10:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" @@ -5417,18 +5344,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 335, + "id": 331, "name": "MinerType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 215, - "src": "2218:9:2", + "src": "2200:9:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerType_$215_$", "typeString": "type(enum AlgoMiner.MinerType)" } }, - "id": 336, + "id": 332, "isConstant": false, "isLValue": false, "isPure": true, @@ -5436,13 +5363,13 @@ "memberName": "PoolBased", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2218:19:2", + "src": "2200:19:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" } }, - "src": "2204:33:2", + "src": "2186:33:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5456,19 +5383,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 340, + "id": 336, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 338, + "id": 334, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 238, - "src": "2241:18:2", + "src": "2223:18:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5479,14 +5406,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 339, + "id": 335, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2263:1:2", + "src": "2245:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5494,39 +5421,39 @@ }, "value": "0" }, - "src": "2241:23:2", + "src": "2223:23:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2204:60:2", + "src": "2186:60:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 380, + "id": 376, "nodeType": "IfStatement", - "src": "2201:398:2", + "src": "2183:398:2", "trueBody": { - "id": 379, + "id": 375, "nodeType": "Block", - "src": "2266:333:2", + "src": "2248:333:2", "statements": [ { "assignments": [ - 343 + 339 ], "declarations": [ { "constant": false, - "id": 343, + "id": 339, "name": "capacity", "nodeType": "VariableDeclaration", - "scope": 387, - "src": "2283:16:2", + "scope": 375, + "src": "2265:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5534,10 +5461,10 @@ "typeString": "uint256" }, "typeName": { - "id": 342, + "id": 338, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2283:7:2", + "src": "2265:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5547,18 +5474,18 @@ "visibility": "internal" } ], - "id": 347, + "id": 343, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 345, + "id": 341, "name": "_category", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 224, - "src": "2324:9:2", + "src": "2306:9:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5572,18 +5499,18 @@ "typeString": "uint8" } ], - "id": 344, + "id": 340, "name": "getCapacityByCategory", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, - "src": "2302:21:2", + "src": "2284:21:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint8_$returns$_t_uint256_$", "typeString": "function (uint8) pure returns (uint256)" } }, - "id": 346, + "id": 342, "isConstant": false, "isLValue": false, "isPure": false, @@ -5591,27 +5518,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2302:32:2", + "src": "2284:32:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2283:51:2" + "src": "2265:51:2" }, { "assignments": [ - 349 + 345 ], "declarations": [ { "constant": false, - "id": 349, + "id": 345, "name": "expectedBalance", "nodeType": "VariableDeclaration", - "scope": 387, - "src": "2349:23:2", + "scope": 375, + "src": "2331:23:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5619,10 +5546,10 @@ "typeString": "uint256" }, "typeName": { - "id": 348, + "id": 344, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2349:7:2", + "src": "2331:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5632,26 +5559,26 @@ "visibility": "internal" } ], - "id": 357, + "id": 353, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 356, + "id": 352, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 350, + "id": 346, "name": "capacity", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 343, - "src": "2375:8:2", + "referencedDeclaration": 339, + "src": "2357:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5665,7 +5592,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 355, + "id": 351, "isConstant": false, "isLValue": false, "isPure": false, @@ -5676,19 +5603,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 353, + "id": 349, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 351, + "id": 347, "name": "capacity", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 343, - "src": "2386:8:2", + "referencedDeclaration": 339, + "src": "2368:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5699,14 +5626,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "3130", - "id": 352, + "id": 348, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2397:2:2", + "src": "2379:2:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", @@ -5714,7 +5641,7 @@ }, "value": "10" }, - "src": "2386:13:2", + "src": "2368:13:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5725,14 +5652,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "313030", - "id": 354, + "id": 350, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2402:3:2", + "src": "2384:3:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_100_by_1", @@ -5740,33 +5667,33 @@ }, "value": "100" }, - "src": "2386:19:2", + "src": "2368:19:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2375:30:2", + "src": "2357:30:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2349:56:2" + "src": "2331:56:2" }, { "assignments": [ - 359 + 355 ], "declarations": [ { "constant": false, - "id": 359, + "id": 355, "name": "currentBalance", "nodeType": "VariableDeclaration", - "scope": 387, - "src": "2422:22:2", + "scope": 375, + "src": "2404:22:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5774,10 +5701,10 @@ "typeString": "uint256" }, "typeName": { - "id": 358, + "id": 354, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2422:7:2", + "src": "2404:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5787,7 +5714,7 @@ "visibility": "internal" } ], - "id": 366, + "id": 362, "initialValue": { "argumentTypes": null, "arguments": [ @@ -5796,14 +5723,14 @@ "arguments": [ { "argumentTypes": null, - "id": 363, + "id": 359, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1572, - "src": "2472:4:2", + "referencedDeclaration": 1570, + "src": "2454:4:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoMiner_$786", + "typeIdentifier": "t_contract$_AlgoMiner_$782", "typeString": "contract AlgoMiner" } } @@ -5811,24 +5738,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_AlgoMiner_$786", + "typeIdentifier": "t_contract$_AlgoMiner_$782", "typeString": "contract AlgoMiner" } ], - "id": 362, + "id": 358, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2464:7:2", + "src": "2446:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 364, + "id": 360, "isConstant": false, "isLValue": false, "isPure": false, @@ -5836,7 +5763,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2464:13:2", + "src": "2446:13:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5852,32 +5779,32 @@ ], "expression": { "argumentTypes": null, - "id": 360, + "id": 356, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "2447:6:2", + "referencedDeclaration": 968, + "src": "2429:6:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" } }, - "id": 361, + "id": 357, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 1323, - "src": "2447:16:2", + "referencedDeclaration": 1348, + "src": "2429:16:2", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 365, + "id": 361, "isConstant": false, "isLValue": false, "isPure": false, @@ -5885,14 +5812,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2447:31:2", + "src": "2429:31:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2422:56:2" + "src": "2404:56:2" }, { "expression": { @@ -5904,19 +5831,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 370, + "id": 366, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 368, + "id": 364, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 359, - "src": "2503:14:2", + "referencedDeclaration": 355, + "src": "2485:14:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5926,18 +5853,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 369, + "id": 365, "name": "expectedBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 349, - "src": "2521:15:2", + "referencedDeclaration": 345, + "src": "2503:15:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2503:33:2", + "src": "2485:33:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5951,21 +5878,21 @@ "typeString": "bool" } ], - "id": 367, + "id": 363, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "2495:7:2", + "referencedDeclaration": 1537, + "src": "2477:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 371, + "id": 367, "isConstant": false, "isLValue": false, "isPure": false, @@ -5973,32 +5900,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2495:42:2", + "src": "2477:42:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 372, + "id": 368, "nodeType": "ExpressionStatement", - "src": "2495:42:2" + "src": "2477:42:2" }, { "expression": { "argumentTypes": null, - "id": 377, + "id": 373, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 373, + "id": 369, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 238, - "src": "2554:18:2", + "src": "2536:18:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6012,19 +5939,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 376, + "id": 372, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 374, + "id": 370, "name": "capacity", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 343, - "src": "2575:8:2", + "referencedDeclaration": 339, + "src": "2557:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6035,14 +5962,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 375, + "id": 371, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2586:1:2", + "src": "2568:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -6050,21 +5977,21 @@ }, "value": "2" }, - "src": "2575:12:2", + "src": "2557:12:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2554:33:2", + "src": "2536:33:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 378, + "id": 374, "nodeType": "ExpressionStatement", - "src": "2554:33:2" + "src": "2536:33:2" } ] } @@ -6072,19 +5999,19 @@ { "expression": { "argumentTypes": null, - "id": 384, + "id": 380, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 381, + "id": 377, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "2611:6:2", + "src": "2593:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -6096,18 +6023,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 382, + "id": 378, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "2620:10:2", + "src": "2602:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 383, + "id": 379, "isConstant": false, "isLValue": false, "isPure": true, @@ -6115,95 +6042,93 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2620:20:2", + "src": "2602:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2611:29:2", + "src": "2593:29:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 385, + "id": 381, "nodeType": "ExpressionStatement", - "src": "2611:29:2" + "src": "2593:29:2" } ] }, "documentation": null, - "id": 387, + "id": 383, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, - "id": 323, + "id": 319, "modifierName": { "argumentTypes": null, - "id": 322, + "id": 318, "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1078, - "src": "2109:13:2", + "referencedDeclaration": 1074, + "src": "2091:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2109:13:2" + "src": "2091:13:2" }, { "arguments": null, - "id": 325, + "id": 321, "modifierName": { "argumentTypes": null, - "id": 324, + "id": 320, "name": "onlyCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "2123:12:2", + "src": "2105:12:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2123:12:2" + "src": "2105:12:2" } ], "name": "activateMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 321, + "id": 317, "nodeType": "ParameterList", "parameters": [], - "src": "2099:2:2" + "src": "2081:2:2" }, - "payable": false, "returnParameters": { - "id": 326, + "id": 322, "nodeType": "ParameterList", "parameters": [], - "src": "2136:0:2" + "src": "2118:0:2" }, - "scope": 786, - "src": "2077:571:2", + "scope": 782, + "src": "2059:571:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 410, + "id": 406, "nodeType": "Block", - "src": "2717:138:2", + "src": "2699:138:2", "statements": [ { "expression": { @@ -6215,19 +6140,19 @@ "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, - "id": 398, + "id": 394, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 395, + "id": 391, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "2736:6:2", + "src": "2718:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -6239,18 +6164,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 396, + "id": 392, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "2746:10:2", + "src": "2728:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 397, + "id": 393, "isConstant": false, "isLValue": false, "isPure": true, @@ -6258,13 +6183,13 @@ "memberName": "Deactivated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2746:22:2", + "src": "2728:22:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2736:32:2", + "src": "2718:32:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6278,21 +6203,21 @@ "typeString": "bool" } ], - "id": 394, + "id": 390, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "2728:7:2", + "referencedDeclaration": 1537, + "src": "2710:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 399, + "id": 395, "isConstant": false, "isLValue": false, "isPure": false, @@ -6300,32 +6225,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2728:41:2", + "src": "2710:41:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 400, + "id": 396, "nodeType": "ExpressionStatement", - "src": "2728:41:2" + "src": "2710:41:2" }, { "expression": { "argumentTypes": null, - "id": 404, + "id": 400, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 401, + "id": 397, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "2790:6:2", + "src": "2772:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -6337,18 +6262,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 402, + "id": 398, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "2799:10:2", + "src": "2781:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 403, + "id": 399, "isConstant": false, "isLValue": false, "isPure": true, @@ -6356,38 +6281,38 @@ "memberName": "Deactivated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2799:22:2", + "src": "2781:22:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2790:31:2", + "src": "2772:31:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 405, + "id": 401, "nodeType": "ExpressionStatement", - "src": "2790:31:2" + "src": "2772:31:2" }, { "expression": { "argumentTypes": null, - "id": 408, + "id": 404, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 406, + "id": 402, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, - "src": "2832:7:2", + "src": "2814:7:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6398,14 +6323,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 407, + "id": 403, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2842:5:2", + "src": "2824:5:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6413,89 +6338,87 @@ }, "value": "false" }, - "src": "2832:15:2", + "src": "2814:15:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 409, + "id": 405, "nodeType": "ExpressionStatement", - "src": "2832:15:2" + "src": "2814:15:2" } ] }, "documentation": null, - "id": 411, + "id": 407, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, - "id": 390, + "id": 386, "modifierName": { "argumentTypes": null, - "id": 389, + "id": 385, "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1078, - "src": "2690:13:2", + "referencedDeclaration": 1074, + "src": "2672:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2690:13:2" + "src": "2672:13:2" }, { "arguments": null, - "id": 392, + "id": 388, "modifierName": { "argumentTypes": null, - "id": 391, + "id": 387, "name": "onlyCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "2704:12:2", + "src": "2686:12:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2704:12:2" + "src": "2686:12:2" } ], "name": "deactivateMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 388, + "id": 384, "nodeType": "ParameterList", "parameters": [], - "src": "2680:2:2" + "src": "2662:2:2" }, - "payable": false, "returnParameters": { - "id": 393, + "id": 389, "nodeType": "ParameterList", "parameters": [], - "src": "2717:0:2" + "src": "2699:0:2" }, - "scope": 786, - "src": "2656:199:2", + "scope": 782, + "src": "2638:199:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 437, + "id": 433, "nodeType": "Block", - "src": "2930:142:2", + "src": "2912:142:2", "statements": [ { "expression": { @@ -6507,19 +6430,19 @@ "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, - "id": 422, + "id": 418, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 419, + "id": 415, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "2949:6:2", + "src": "2931:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -6531,18 +6454,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 420, + "id": 416, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "2959:10:2", + "src": "2941:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 421, + "id": 417, "isConstant": false, "isLValue": false, "isPure": true, @@ -6550,13 +6473,13 @@ "memberName": "Deactivated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2959:22:2", + "src": "2941:22:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2949:32:2", + "src": "2931:32:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6570,21 +6493,21 @@ "typeString": "bool" } ], - "id": 418, + "id": 414, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "2941:7:2", + "referencedDeclaration": 1537, + "src": "2923:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 423, + "id": 419, "isConstant": false, "isLValue": false, "isPure": false, @@ -6592,15 +6515,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2941:41:2", + "src": "2923:41:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 424, + "id": 420, "nodeType": "ExpressionStatement", - "src": "2941:41:2" + "src": "2923:41:2" }, { "expression": { @@ -6608,12 +6531,12 @@ "arguments": [ { "argumentTypes": null, - "id": 428, + "id": 424, "name": "newMinerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 413, - "src": "3015:15:2", + "referencedDeclaration": 409, + "src": "2997:15:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6627,14 +6550,14 @@ "arguments": [ { "argumentTypes": null, - "id": 432, + "id": 428, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1572, - "src": "3057:4:2", + "referencedDeclaration": 1570, + "src": "3039:4:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoMiner_$786", + "typeIdentifier": "t_contract$_AlgoMiner_$782", "typeString": "contract AlgoMiner" } } @@ -6642,24 +6565,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_AlgoMiner_$786", + "typeIdentifier": "t_contract$_AlgoMiner_$782", "typeString": "contract AlgoMiner" } ], - "id": 431, + "id": 427, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3049:7:2", + "src": "3031:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 433, + "id": 429, "isConstant": false, "isLValue": false, "isPure": false, @@ -6667,7 +6590,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3049:13:2", + "src": "3031:13:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6683,32 +6606,32 @@ ], "expression": { "argumentTypes": null, - "id": 429, + "id": 425, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "3032:6:2", + "referencedDeclaration": 968, + "src": "3014:6:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" } }, - "id": 430, + "id": 426, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 1323, - "src": "3032:16:2", + "referencedDeclaration": 1348, + "src": "3014:16:2", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 434, + "id": 430, "isConstant": false, "isLValue": false, "isPure": false, @@ -6716,7 +6639,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3032:31:2", + "src": "3014:31:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6736,32 +6659,32 @@ ], "expression": { "argumentTypes": null, - "id": 425, + "id": 421, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "2995:6:2", + "referencedDeclaration": 968, + "src": "2977:6:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" } }, - "id": 427, + "id": 423, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1403, - "src": "2995:19:2", + "referencedDeclaration": 1399, + "src": "2977:19:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1378_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1378_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1374_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1374_$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 435, + "id": 431, "isConstant": false, "isLValue": false, "isPure": false, @@ -6769,57 +6692,56 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2995:69:2", + "src": "2977:69:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 436, + "id": 432, "nodeType": "ExpressionStatement", - "src": "2995:69:2" + "src": "2977:69:2" } ] }, "documentation": null, - "id": 438, + "id": 434, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, - "id": 416, + "id": 412, "modifierName": { "argumentTypes": null, - "id": 415, + "id": 411, "name": "onlyCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "2917:12:2", + "src": "2899:12:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2917:12:2" + "src": "2899:12:2" } ], "name": "migrateMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 414, + "id": 410, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 413, + "id": 409, "name": "newMinerAddress", "nodeType": "VariableDeclaration", - "scope": 438, - "src": "2885:23:2", + "scope": 434, + "src": "2867:23:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6827,10 +6749,11 @@ "typeString": "address" }, "typeName": { - "id": 412, + "id": 408, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2885:7:2", + "src": "2867:7:2", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6840,26 +6763,25 @@ "visibility": "internal" } ], - "src": "2884:25:2" + "src": "2866:25:2" }, - "payable": false, "returnParameters": { - "id": 417, + "id": 413, "nodeType": "ParameterList", "parameters": [], - "src": "2930:0:2" + "src": "2912:0:2" }, - "scope": 786, - "src": "2863:209:2", + "scope": 782, + "src": "2845:209:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 457, + "id": 453, "nodeType": "Block", - "src": "3139:108:2", + "src": "3121:108:2", "statements": [ { "expression": { @@ -6871,19 +6793,19 @@ "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, - "id": 449, + "id": 445, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 446, + "id": 442, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "3158:6:2", + "src": "3140:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -6895,18 +6817,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 447, + "id": 443, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "3168:10:2", + "src": "3150:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 448, + "id": 444, "isConstant": false, "isLValue": false, "isPure": true, @@ -6914,13 +6836,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3168:20:2", + "src": "3150:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3158:30:2", + "src": "3140:30:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6934,21 +6856,21 @@ "typeString": "bool" } ], - "id": 445, + "id": 441, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "3150:7:2", + "referencedDeclaration": 1537, + "src": "3132:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 450, + "id": 446, "isConstant": false, "isLValue": false, "isPure": false, @@ -6956,32 +6878,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3150:39:2", + "src": "3132:39:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 451, + "id": 447, "nodeType": "ExpressionStatement", - "src": "3150:39:2" + "src": "3132:39:2" }, { "expression": { "argumentTypes": null, - "id": 455, + "id": 451, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 452, + "id": 448, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "3210:6:2", + "src": "3192:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -6993,18 +6915,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 453, + "id": 449, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "3219:10:2", + "src": "3201:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 454, + "id": 450, "isConstant": false, "isLValue": false, "isPure": true, @@ -7012,95 +6934,93 @@ "memberName": "Suspended", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3219:20:2", + "src": "3201:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3210:29:2", + "src": "3192:29:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 456, + "id": 452, "nodeType": "ExpressionStatement", - "src": "3210:29:2" + "src": "3192:29:2" } ] }, "documentation": null, - "id": 458, + "id": 454, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, - "id": 441, + "id": 437, "modifierName": { "argumentTypes": null, - "id": 440, + "id": 436, "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1078, - "src": "3110:13:2", + "referencedDeclaration": 1074, + "src": "3092:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3110:13:2" + "src": "3092:13:2" }, { "arguments": null, - "id": 443, + "id": 439, "modifierName": { "argumentTypes": null, - "id": 442, + "id": 438, "name": "onlySupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 814, - "src": "3124:14:2", + "referencedDeclaration": 810, + "src": "3106:14:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3124:14:2" + "src": "3106:14:2" } ], "name": "pauseMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 439, + "id": 435, "nodeType": "ParameterList", "parameters": [], - "src": "3100:2:2" + "src": "3082:2:2" }, - "payable": false, "returnParameters": { - "id": 444, + "id": 440, "nodeType": "ParameterList", "parameters": [], - "src": "3139:0:2" + "src": "3121:0:2" }, - "scope": 786, - "src": "3080:167:2", + "scope": 782, + "src": "3062:167:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 477, + "id": 473, "nodeType": "Block", - "src": "3315:100:2", + "src": "3297:100:2", "statements": [ { "expression": { @@ -7112,19 +7032,19 @@ "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, - "id": 469, + "id": 465, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 466, + "id": 462, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "3334:6:2", + "src": "3316:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -7136,18 +7056,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 467, + "id": 463, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "3344:10:2", + "src": "3326:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 468, + "id": 464, "isConstant": false, "isLValue": false, "isPure": true, @@ -7155,13 +7075,13 @@ "memberName": "Suspended", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3344:20:2", + "src": "3326:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3334:30:2", + "src": "3316:30:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7175,21 +7095,21 @@ "typeString": "bool" } ], - "id": 465, + "id": 461, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "3326:7:2", + "referencedDeclaration": 1537, + "src": "3308:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 470, + "id": 466, "isConstant": false, "isLValue": false, "isPure": false, @@ -7197,32 +7117,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3326:39:2", + "src": "3308:39:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 471, + "id": 467, "nodeType": "ExpressionStatement", - "src": "3326:39:2" + "src": "3308:39:2" }, { "expression": { "argumentTypes": null, - "id": 475, + "id": 471, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 472, + "id": 468, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "3378:6:2", + "src": "3360:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -7234,18 +7154,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 473, + "id": 469, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "3387:10:2", + "src": "3369:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 474, + "id": 470, "isConstant": false, "isLValue": false, "isPure": true, @@ -7253,95 +7173,93 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3387:20:2", + "src": "3369:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3378:29:2", + "src": "3360:29:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 476, + "id": 472, "nodeType": "ExpressionStatement", - "src": "3378:29:2" + "src": "3360:29:2" } ] }, "documentation": null, - "id": 478, + "id": 474, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, - "id": 461, + "id": 457, "modifierName": { "argumentTypes": null, - "id": 460, + "id": 456, "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1078, - "src": "3286:13:2", + "referencedDeclaration": 1074, + "src": "3268:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3286:13:2" + "src": "3268:13:2" }, { "arguments": null, - "id": 463, + "id": 459, "modifierName": { "argumentTypes": null, - "id": 462, + "id": 458, "name": "onlySupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 814, - "src": "3300:14:2", + "referencedDeclaration": 810, + "src": "3282:14:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3300:14:2" + "src": "3282:14:2" } ], "name": "resumeMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 459, + "id": 455, "nodeType": "ParameterList", "parameters": [], - "src": "3276:2:2" + "src": "3258:2:2" }, - "payable": false, "returnParameters": { - "id": 464, + "id": 460, "nodeType": "ParameterList", "parameters": [], - "src": "3315:0:2" + "src": "3297:0:2" }, - "scope": 786, - "src": "3255:160:2", + "scope": 782, + "src": "3237:160:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 513, + "id": 509, "nodeType": "Block", - "src": "3493:193:2", + "src": "3475:193:2", "statements": [ { "expression": { @@ -7353,19 +7271,19 @@ "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, - "id": 489, + "id": 485, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 486, + "id": 482, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "3512:6:2", + "src": "3494:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -7377,18 +7295,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 487, + "id": 483, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "3522:10:2", + "src": "3504:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 488, + "id": 484, "isConstant": false, "isLValue": false, "isPure": true, @@ -7396,13 +7314,13 @@ "memberName": "Stopped", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3522:18:2", + "src": "3504:18:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3512:28:2", + "src": "3494:28:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7416,21 +7334,21 @@ "typeString": "bool" } ], - "id": 485, + "id": 481, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "3504:7:2", + "referencedDeclaration": 1537, + "src": "3486:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 490, + "id": 486, "isConstant": false, "isLValue": false, "isPure": false, @@ -7438,15 +7356,77 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3504:37:2", + "src": "3486:37:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 491, + "id": 487, "nodeType": "ExpressionStatement", - "src": "3504:37:2" + "src": "3486:37:2" + }, + { + "expression": { + "argumentTypes": null, + "id": 491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 488, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 230, + "src": "3544:6:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$220", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 489, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "3553:10:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 490, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Stopped", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3553:18:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$220", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "3544:27:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$220", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "id": 492, + "nodeType": "ExpressionStatement", + "src": "3544:27:2" }, { "expression": { @@ -7458,74 +7438,12 @@ "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 492, - "name": "_state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 230, - "src": "3562:6:2", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$220", - "typeString": "enum AlgoMiner.MinerState" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 493, - "name": "MinerState", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 220, - "src": "3571:10:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", - "typeString": "type(enum AlgoMiner.MinerState)" - } - }, - "id": 494, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Stopped", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3571:18:2", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$220", - "typeString": "enum AlgoMiner.MinerState" - } - }, - "src": "3562:27:2", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$220", - "typeString": "enum AlgoMiner.MinerState" - } - }, - "id": 496, - "nodeType": "ExpressionStatement", - "src": "3562:27:2" - }, - { - "expression": { - "argumentTypes": null, - "id": 499, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 497, + "id": 493, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, - "src": "3600:7:2", + "src": "3582:7:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7536,14 +7454,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 498, + "id": 494, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3610:5:2", + "src": "3592:5:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -7551,32 +7469,32 @@ }, "value": "false" }, - "src": "3600:15:2", + "src": "3582:15:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 500, + "id": 496, "nodeType": "ExpressionStatement", - "src": "3600:15:2" + "src": "3582:15:2" }, { "expression": { "argumentTypes": null, - "id": 505, + "id": 501, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 501, + "id": 497, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 226, - "src": "3626:6:2", + "src": "3608:6:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7590,14 +7508,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 503, + "id": 499, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3643:1:2", + "src": "3625:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7613,20 +7531,20 @@ "typeString": "int_const 0" } ], - "id": 502, + "id": 498, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3635:7:2", + "src": "3617:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 504, + "id": 500, "isConstant": false, "isLValue": false, "isPure": true, @@ -7634,38 +7552,38 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3635:10:2", + "src": "3617:10:2", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "src": "3626:19:2", + "src": "3608:19:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 506, + "id": 502, "nodeType": "ExpressionStatement", - "src": "3626:19:2" + "src": "3608:19:2" }, { "expression": { "argumentTypes": null, - "id": 511, + "id": 507, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 507, + "id": 503, "name": "_referral", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 228, - "src": "3656:9:2", + "src": "3638:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7679,14 +7597,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 509, + "id": 505, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3676:1:2", + "src": "3658:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7702,20 +7620,20 @@ "typeString": "int_const 0" } ], - "id": 508, + "id": 504, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3668:7:2", + "src": "3650:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 510, + "id": 506, "isConstant": false, "isLValue": false, "isPure": true, @@ -7723,95 +7641,93 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3668:10:2", + "src": "3650:10:2", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "src": "3656:22:2", + "src": "3638:22:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 512, + "id": 508, "nodeType": "ExpressionStatement", - "src": "3656:22:2" + "src": "3638:22:2" } ] }, "documentation": null, - "id": 514, + "id": 510, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, - "id": 481, + "id": 477, "modifierName": { "argumentTypes": null, - "id": 480, + "id": 476, "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1078, - "src": "3464:13:2", + "referencedDeclaration": 1074, + "src": "3446:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3464:13:2" + "src": "3446:13:2" }, { "arguments": null, - "id": 483, + "id": 479, "modifierName": { "argumentTypes": null, - "id": 482, + "id": 478, "name": "onlySupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 814, - "src": "3478:14:2", + "referencedDeclaration": 810, + "src": "3460:14:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3478:14:2" + "src": "3460:14:2" } ], "name": "stopAndRemoveOwnership", "nodeType": "FunctionDefinition", "parameters": { - "id": 479, + "id": 475, "nodeType": "ParameterList", "parameters": [], - "src": "3454:2:2" + "src": "3436:2:2" }, - "payable": false, "returnParameters": { - "id": 484, + "id": 480, "nodeType": "ParameterList", "parameters": [], - "src": "3493:0:2" + "src": "3475:0:2" }, - "scope": 786, - "src": "3423:263:2", + "scope": 782, + "src": "3405:263:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 545, + "id": 541, "nodeType": "Block", - "src": "3803:174:2", + "src": "3785:174:2", "statements": [ { "expression": { @@ -7823,19 +7739,19 @@ "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, - "id": 529, + "id": 525, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 526, + "id": 522, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "3822:6:2", + "src": "3804:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -7847,18 +7763,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 527, + "id": 523, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "3832:10:2", + "src": "3814:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 528, + "id": 524, "isConstant": false, "isLValue": false, "isPure": true, @@ -7866,13 +7782,13 @@ "memberName": "Stopped", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3832:18:2", + "src": "3814:18:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3822:28:2", + "src": "3804:28:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7886,21 +7802,21 @@ "typeString": "bool" } ], - "id": 525, + "id": 521, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "3814:7:2", + "referencedDeclaration": 1537, + "src": "3796:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 530, + "id": 526, "isConstant": false, "isLValue": false, "isPure": false, @@ -7908,32 +7824,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3814:37:2", + "src": "3796:37:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 531, + "id": 527, "nodeType": "ExpressionStatement", - "src": "3814:37:2" + "src": "3796:37:2" }, { "expression": { "argumentTypes": null, - "id": 535, + "id": 531, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 532, + "id": 528, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "3864:6:2", + "src": "3846:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -7945,18 +7861,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 533, + "id": 529, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "3873:10:2", + "src": "3855:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 534, + "id": 530, "isConstant": false, "isLValue": false, "isPure": true, @@ -7964,21 +7880,67 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3873:20:2", + "src": "3855:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3864:29:2", + "src": "3846:29:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, + "id": 532, + "nodeType": "ExpressionStatement", + "src": "3846:29:2" + }, + { + "expression": { + "argumentTypes": null, + "id": 535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 533, + "name": "_miner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 226, + "src": "3886:6:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 534, + "name": "newOwnerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 512, + "src": "3895:15:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3886:24:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, "id": 536, "nodeType": "ExpressionStatement", - "src": "3864:29:2" + "src": "3886:24:2" }, { "expression": { @@ -7991,11 +7953,11 @@ "leftHandSide": { "argumentTypes": null, "id": 537, - "name": "_miner", + "name": "_referral", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 226, - "src": "3904:6:2", + "referencedDeclaration": 228, + "src": "3921:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8006,17 +7968,17 @@ "rightHandSide": { "argumentTypes": null, "id": 538, - "name": "newOwnerAddress", + "name": "newReferralAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 516, - "src": "3913:15:2", + "referencedDeclaration": 514, + "src": "3933:18:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3904:24:2", + "src": "3921:30:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8024,114 +7986,67 @@ }, "id": 540, "nodeType": "ExpressionStatement", - "src": "3904:24:2" - }, - { - "expression": { - "argumentTypes": null, - "id": 543, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 541, - "name": "_referral", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 228, - "src": "3939:9:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 542, - "name": "newReferralAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 518, - "src": "3951:18:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3939:30:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 544, - "nodeType": "ExpressionStatement", - "src": "3939:30:2" + "src": "3921:30:2" } ] }, "documentation": null, - "id": 546, + "id": 542, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, - "id": 521, + "id": 517, "modifierName": { "argumentTypes": null, - "id": 520, + "id": 516, "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1078, - "src": "3774:13:2", + "referencedDeclaration": 1074, + "src": "3756:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3774:13:2" + "src": "3756:13:2" }, { "arguments": null, - "id": 523, + "id": 519, "modifierName": { "argumentTypes": null, - "id": 522, + "id": 518, "name": "onlySupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 814, - "src": "3788:14:2", + "referencedDeclaration": 810, + "src": "3770:14:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3788:14:2" + "src": "3770:14:2" } ], "name": "resetMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 519, + "id": 515, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 516, + "id": 512, "name": "newOwnerAddress", "nodeType": "VariableDeclaration", - "scope": 546, - "src": "3714:23:2", + "scope": 542, + "src": "3696:23:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8139,10 +8054,11 @@ "typeString": "address" }, "typeName": { - "id": 515, + "id": 511, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3714:7:2", + "src": "3696:7:2", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8153,11 +8069,11 @@ }, { "constant": false, - "id": 518, + "id": 514, "name": "newReferralAddress", "nodeType": "VariableDeclaration", - "scope": 546, - "src": "3739:26:2", + "scope": 542, + "src": "3721:26:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8165,10 +8081,11 @@ "typeString": "address" }, "typeName": { - "id": 517, + "id": 513, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3739:7:2", + "src": "3721:7:2", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8178,26 +8095,25 @@ "visibility": "internal" } ], - "src": "3713:53:2" + "src": "3695:53:2" }, - "payable": false, "returnParameters": { - "id": 524, + "id": 520, "nodeType": "ParameterList", "parameters": [], - "src": "3803:0:2" + "src": "3785:0:2" }, - "scope": 786, - "src": "3694:283:2", + "scope": 782, + "src": "3676:283:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 569, + "id": 565, "nodeType": "Block", - "src": "4039:121:2", + "src": "4021:121:2", "statements": [ { "expression": { @@ -8209,19 +8125,19 @@ "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, - "id": 557, + "id": 553, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 554, + "id": 550, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "4058:6:2", + "src": "4040:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -8233,18 +8149,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 555, + "id": 551, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "4068:10:2", + "src": "4050:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 556, + "id": 552, "isConstant": false, "isLValue": false, "isPure": true, @@ -8252,13 +8168,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4068:20:2", + "src": "4050:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "4058:30:2", + "src": "4040:30:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8272,21 +8188,21 @@ "typeString": "bool" } ], - "id": 553, + "id": 549, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "4050:7:2", + "referencedDeclaration": 1537, + "src": "4032:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 558, + "id": 554, "isConstant": false, "isLValue": false, "isPure": false, @@ -8294,15 +8210,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4050:39:2", + "src": "4032:39:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 559, + "id": 555, "nodeType": "ExpressionStatement", - "src": "4050:39:2" + "src": "4032:39:2" }, { "expression": { @@ -8310,7 +8226,7 @@ "arguments": [ { "argumentTypes": null, - "id": 562, + "id": 558, "isConstant": false, "isLValue": false, "isPure": false, @@ -8318,15 +8234,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "4108:8:2", + "src": "4090:8:2", "subExpression": { "argumentTypes": null, - "id": 561, + "id": 557, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, - "src": "4109:7:2", + "src": "4091:7:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8345,21 +8261,21 @@ "typeString": "bool" } ], - "id": 560, + "id": 556, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "4100:7:2", + "referencedDeclaration": 1537, + "src": "4082:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 563, + "id": 559, "isConstant": false, "isLValue": false, "isPure": false, @@ -8367,32 +8283,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4100:17:2", + "src": "4082:17:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 564, + "id": 560, "nodeType": "ExpressionStatement", - "src": "4100:17:2" + "src": "4082:17:2" }, { "expression": { "argumentTypes": null, - "id": 567, + "id": 563, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 565, + "id": 561, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, - "src": "4138:7:2", + "src": "4120:7:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8403,14 +8319,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 566, + "id": 562, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "4148:4:2", + "src": "4130:4:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -8418,89 +8334,87 @@ }, "value": "true" }, - "src": "4138:14:2", + "src": "4120:14:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 568, + "id": 564, "nodeType": "ExpressionStatement", - "src": "4138:14:2" + "src": "4120:14:2" } ] }, "documentation": null, - "id": 570, + "id": 566, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, - "id": 549, + "id": 545, "modifierName": { "argumentTypes": null, - "id": 548, + "id": 544, "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1078, - "src": "4015:13:2", + "referencedDeclaration": 1074, + "src": "3997:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4015:13:2" + "src": "3997:13:2" }, { "arguments": null, - "id": 551, + "id": 547, "modifierName": { "argumentTypes": null, - "id": 550, + "id": 546, "name": "onlyMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 320, - "src": "4029:9:2", + "referencedDeclaration": 316, + "src": "4011:9:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4029:9:2" + "src": "4011:9:2" } ], "name": "startMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 547, + "id": 543, "nodeType": "ParameterList", "parameters": [], - "src": "4005:2:2" + "src": "3987:2:2" }, - "payable": false, "returnParameters": { - "id": 552, + "id": 548, "nodeType": "ParameterList", "parameters": [], - "src": "4039:0:2" + "src": "4021:0:2" }, - "scope": 786, - "src": "3985:175:2", + "scope": 782, + "src": "3967:175:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 592, + "id": 588, "nodeType": "Block", - "src": "4221:121:2", + "src": "4203:121:2", "statements": [ { "expression": { @@ -8512,19 +8426,19 @@ "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, - "id": 581, + "id": 577, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 578, + "id": 574, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "4240:6:2", + "src": "4222:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -8536,18 +8450,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 579, + "id": 575, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "4250:10:2", + "src": "4232:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 580, + "id": 576, "isConstant": false, "isLValue": false, "isPure": true, @@ -8555,13 +8469,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4250:20:2", + "src": "4232:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "4240:30:2", + "src": "4222:30:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8575,15 +8489,72 @@ "typeString": "bool" } ], - "id": 577, + "id": 573, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "4232:7:2", + "referencedDeclaration": 1537, + "src": "4214:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4214:39:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 579, + "nodeType": "ExpressionStatement", + "src": "4214:39:2" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 581, + "name": "_mining", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 232, + "src": "4272:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 580, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1537, + 1538 + ], + "referencedDeclaration": 1537, + "src": "4264:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -8597,7 +8568,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4232:39:2", + "src": "4264:16:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -8605,81 +8576,24 @@ }, "id": 583, "nodeType": "ExpressionStatement", - "src": "4232:39:2" + "src": "4264:16:2" }, { "expression": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 585, - "name": "_mining", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 232, - "src": "4290:7:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 584, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1540, - 1541 - ], - "referencedDeclaration": 1540, - "src": "4282:7:2", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, "id": 586, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4282:16:2", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 587, - "nodeType": "ExpressionStatement", - "src": "4282:16:2" - }, - { - "expression": { - "argumentTypes": null, - "id": 590, - "isConstant": false, - "isLValue": false, - "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 588, + "id": 584, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, - "src": "4319:7:2", + "src": "4301:7:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8690,14 +8604,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 589, + "id": 585, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "4329:5:2", + "src": "4311:5:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -8705,89 +8619,87 @@ }, "value": "false" }, - "src": "4319:15:2", + "src": "4301:15:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 591, + "id": 587, "nodeType": "ExpressionStatement", - "src": "4319:15:2" + "src": "4301:15:2" } ] }, "documentation": null, - "id": 593, + "id": 589, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, - "id": 573, + "id": 569, "modifierName": { "argumentTypes": null, - "id": 572, + "id": 568, "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1078, - "src": "4197:13:2", + "referencedDeclaration": 1074, + "src": "4179:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4197:13:2" + "src": "4179:13:2" }, { "arguments": null, - "id": 575, + "id": 571, "modifierName": { "argumentTypes": null, - "id": 574, + "id": 570, "name": "onlyMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 320, - "src": "4211:9:2", + "referencedDeclaration": 316, + "src": "4193:9:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4211:9:2" + "src": "4193:9:2" } ], "name": "stopMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 571, + "id": 567, "nodeType": "ParameterList", "parameters": [], - "src": "4187:2:2" + "src": "4169:2:2" }, - "payable": false, "returnParameters": { - "id": 576, + "id": 572, "nodeType": "ParameterList", "parameters": [], - "src": "4221:0:2" + "src": "4203:0:2" }, - "scope": 786, - "src": "4168:174:2", + "scope": 782, + "src": "4150:174:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 696, + "id": 692, "nodeType": "Block", - "src": "4398:800:2", + "src": "4380:800:2", "statements": [ { "expression": { @@ -8799,19 +8711,19 @@ "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" }, - "id": 604, + "id": 600, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 601, + "id": 597, "name": "_minerType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 222, - "src": "4417:10:2", + "src": "4399:10:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" @@ -8823,18 +8735,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 602, + "id": 598, "name": "MinerType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 215, - "src": "4431:9:2", + "src": "4413:9:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerType_$215_$", "typeString": "type(enum AlgoMiner.MinerType)" } }, - "id": 603, + "id": 599, "isConstant": false, "isLValue": false, "isPure": true, @@ -8842,13 +8754,13 @@ "memberName": "PoolBased", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4431:19:2", + "src": "4413:19:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" } }, - "src": "4417:33:2", + "src": "4399:33:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8862,21 +8774,21 @@ "typeString": "bool" } ], - "id": 600, + "id": 596, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "4409:7:2", + "referencedDeclaration": 1537, + "src": "4391:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 605, + "id": 601, "isConstant": false, "isLValue": false, "isPure": false, @@ -8884,15 +8796,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4409:42:2", + "src": "4391:42:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 606, + "id": 602, "nodeType": "ExpressionStatement", - "src": "4409:42:2" + "src": "4391:42:2" }, { "expression": { @@ -8904,19 +8816,19 @@ "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, - "id": 611, + "id": 607, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 608, + "id": 604, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "4470:6:2", + "src": "4452:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -8928,18 +8840,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 609, + "id": 605, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "4480:10:2", + "src": "4462:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 610, + "id": 606, "isConstant": false, "isLValue": false, "isPure": true, @@ -8947,13 +8859,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4480:20:2", + "src": "4462:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "4470:30:2", + "src": "4452:30:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8967,15 +8879,72 @@ "typeString": "bool" } ], - "id": 607, + "id": 603, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "4462:7:2", + "referencedDeclaration": 1537, + "src": "4444:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4444:39:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 609, + "nodeType": "ExpressionStatement", + "src": "4444:39:2" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 611, + "name": "_mining", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 232, + "src": "4502:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 610, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1537, + 1538 + ], + "referencedDeclaration": 1537, + "src": "4494:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -8989,7 +8958,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4462:39:2", + "src": "4494:16:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -8997,64 +8966,7 @@ }, "id": 613, "nodeType": "ExpressionStatement", - "src": "4462:39:2" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 615, - "name": "_mining", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 232, - "src": "4520:7:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 614, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1540, - 1541 - ], - "referencedDeclaration": 1540, - "src": "4512:7:2", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 616, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4512:16:2", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 617, - "nodeType": "ExpressionStatement", - "src": "4512:16:2" + "src": "4494:16:2" }, { "condition": { @@ -9063,19 +8975,19 @@ "typeIdentifier": "t_uint16", "typeString": "uint16" }, - "id": 620, + "id": 616, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 618, + "id": 614, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 236, - "src": "4544:11:2", + "src": "4526:11:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -9086,14 +8998,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 619, + "id": 615, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4559:1:2", + "src": "4541:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9101,21 +9013,21 @@ }, "value": "0" }, - "src": "4544:16:2", + "src": "4526:16:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 654, + "id": 650, "nodeType": "Block", - "src": "4641:238:2", + "src": "4623:238:2", "statements": [ { "expression": { "argumentTypes": null, - "id": 631, + "id": 627, "isConstant": false, "isLValue": false, "isPure": false, @@ -9123,15 +9035,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4656:13:2", + "src": "4638:13:2", "subExpression": { "argumentTypes": null, - "id": 630, + "id": 626, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 236, - "src": "4656:11:2", + "src": "4638:11:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -9142,9 +9054,9 @@ "typeString": "uint16" } }, - "id": 632, + "id": 628, "nodeType": "ExpressionStatement", - "src": "4656:13:2" + "src": "4638:13:2" }, { "condition": { @@ -9153,19 +9065,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 638, + "id": 634, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 633, + "id": 629, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 236, - "src": "4687:11:2", + "src": "4669:11:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -9182,19 +9094,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 636, + "id": 632, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 634, + "id": 630, "name": "DAYS_PER_YEAR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 212, - "src": "4703:13:2", + "src": "4685:13:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9205,14 +9117,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 635, + "id": 631, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4719:1:2", + "src": "4701:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -9220,45 +9132,45 @@ }, "value": "1" }, - "src": "4703:17:2", + "src": "4685:17:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 637, + "id": 633, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "4702:19:2", + "src": "4684:19:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4687:34:2", + "src": "4669:34:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 653, + "id": 649, "nodeType": "IfStatement", - "src": "4684:184:2", + "src": "4666:184:2", "trueBody": { - "id": 652, + "id": 648, "nodeType": "Block", - "src": "4723:145:2", + "src": "4705:145:2", "statements": [ { "expression": { "argumentTypes": null, - "id": 640, + "id": 636, "isConstant": false, "isLValue": false, "isPure": false, @@ -9266,15 +9178,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4742:14:2", + "src": "4724:14:2", "subExpression": { "argumentTypes": null, - "id": 639, + "id": 635, "name": "_currentYear", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 234, - "src": "4742:12:2", + "src": "4724:12:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -9285,26 +9197,26 @@ "typeString": "uint8" } }, - "id": 641, + "id": 637, "nodeType": "ExpressionStatement", - "src": "4742:14:2" + "src": "4724:14:2" }, { "expression": { "argumentTypes": null, - "id": 644, + "id": 640, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 642, + "id": 638, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 236, - "src": "4775:11:2", + "src": "4757:11:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -9315,14 +9227,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 643, + "id": 639, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4789:1:2", + "src": "4771:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -9330,32 +9242,32 @@ }, "value": "1" }, - "src": "4775:15:2", + "src": "4757:15:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 645, + "id": 641, "nodeType": "ExpressionStatement", - "src": "4775:15:2" + "src": "4757:15:2" }, { "expression": { "argumentTypes": null, - "id": 650, + "id": 646, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 646, + "id": 642, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 238, - "src": "4809:18:2", + "src": "4791:18:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9369,19 +9281,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 649, + "id": 645, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 647, + "id": 643, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 238, - "src": "4830:18:2", + "src": "4812:18:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9392,14 +9304,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 648, + "id": 644, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4851:1:2", + "src": "4833:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -9407,35 +9319,86 @@ }, "value": "2" }, - "src": "4830:22:2", + "src": "4812:22:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4809:43:2", + "src": "4791:43:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 651, + "id": 647, "nodeType": "ExpressionStatement", - "src": "4809:43:2" + "src": "4791:43:2" } ] } } ] }, - "id": 655, + "id": 651, "nodeType": "IfStatement", - "src": "4541:338:2", + "src": "4523:338:2", "trueBody": { - "id": 629, + "id": 625, "nodeType": "Block", - "src": "4562:73:2", + "src": "4544:73:2", "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 617, + "name": "_currentYear", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 234, + "src": "4559:12:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 618, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4574:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4559:16:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 620, + "nodeType": "ExpressionStatement", + "src": "4559:16:2" + }, { "expression": { "argumentTypes": null, @@ -9447,14 +9410,14 @@ "leftHandSide": { "argumentTypes": null, "id": 621, - "name": "_currentYear", + "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 234, - "src": "4577:12:2", + "referencedDeclaration": 236, + "src": "4590:11:2", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint16", + "typeString": "uint16" } }, "nodeType": "Assignment", @@ -9469,7 +9432,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4592:1:2", + "src": "4604:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -9477,82 +9440,31 @@ }, "value": "1" }, - "src": "4577:16:2", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 624, - "nodeType": "ExpressionStatement", - "src": "4577:16:2" - }, - { - "expression": { - "argumentTypes": null, - "id": 627, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 625, - "name": "_currentDay", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 236, - "src": "4608:11:2", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "31", - "id": 626, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4622:1:2", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "4608:15:2", + "src": "4590:15:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 628, + "id": 624, "nodeType": "ExpressionStatement", - "src": "4608:15:2" + "src": "4590:15:2" } ] } }, { "assignments": [ - 657 + 653 ], "declarations": [ { "constant": false, - "id": 657, + "id": 653, "name": "minerTokens", "nodeType": "VariableDeclaration", - "scope": 697, - "src": "4891:19:2", + "scope": 692, + "src": "4873:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9560,10 +9472,10 @@ "typeString": "uint256" }, "typeName": { - "id": 656, + "id": 652, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4891:7:2", + "src": "4873:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9573,26 +9485,26 @@ "visibility": "internal" } ], - "id": 661, + "id": 657, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 660, + "id": 656, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 658, + "id": 654, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 238, - "src": "4913:18:2", + "src": "4895:18:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9602,38 +9514,38 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 659, + "id": 655, "name": "DAYS_PER_YEAR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 212, - "src": "4934:13:2", + "src": "4916:13:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4913:34:2", + "src": "4895:34:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "4891:56:2" + "src": "4873:56:2" }, { "assignments": [ - 663 + 659 ], "declarations": [ { "constant": false, - "id": 663, + "id": 659, "name": "referralTokens", "nodeType": "VariableDeclaration", - "scope": 697, - "src": "4958:22:2", + "scope": 692, + "src": "4940:22:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9641,10 +9553,10 @@ "typeString": "uint256" }, "typeName": { - "id": 662, + "id": 658, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4958:7:2", + "src": "4940:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9654,14 +9566,14 @@ "visibility": "internal" } ], - "id": 669, + "id": 665, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 668, + "id": 664, "isConstant": false, "isLValue": false, "isPure": false, @@ -9672,19 +9584,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 666, + "id": 662, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 664, + "id": 660, "name": "minerTokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 657, - "src": "4983:11:2", + "referencedDeclaration": 653, + "src": "4965:11:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9695,14 +9607,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "3130", - "id": 665, + "id": 661, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4997:2:2", + "src": "4979:2:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", @@ -9710,7 +9622,7 @@ }, "value": "10" }, - "src": "4983:16:2", + "src": "4965:16:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9721,14 +9633,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "313030", - "id": 667, + "id": 663, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5002:3:2", + "src": "4984:3:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_100_by_1", @@ -9736,14 +9648,14 @@ }, "value": "100" }, - "src": "4983:22:2", + "src": "4965:22:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "4958:47:2" + "src": "4940:47:2" }, { "expression": { @@ -9755,19 +9667,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 673, + "id": 669, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 671, + "id": 667, "name": "minerTokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 657, - "src": "5026:11:2", + "referencedDeclaration": 653, + "src": "5008:11:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9778,14 +9690,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 672, + "id": 668, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5040:1:2", + "src": "5022:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9793,7 +9705,7 @@ }, "value": "0" }, - "src": "5026:15:2", + "src": "5008:15:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9807,21 +9719,21 @@ "typeString": "bool" } ], - "id": 670, + "id": 666, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "5018:7:2", + "referencedDeclaration": 1537, + "src": "5000:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 674, + "id": 670, "isConstant": false, "isLValue": false, "isPure": false, @@ -9829,15 +9741,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5018:24:2", + "src": "5000:24:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 675, + "id": 671, "nodeType": "ExpressionStatement", - "src": "5018:24:2" + "src": "5000:24:2" }, { "expression": { @@ -9849,19 +9761,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 679, + "id": 675, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 677, + "id": 673, "name": "referralTokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 663, - "src": "5061:14:2", + "referencedDeclaration": 659, + "src": "5043:14:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9872,14 +9784,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 678, + "id": 674, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5078:1:2", + "src": "5060:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9887,7 +9799,7 @@ }, "value": "0" }, - "src": "5061:18:2", + "src": "5043:18:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9901,21 +9813,21 @@ "typeString": "bool" } ], - "id": 676, + "id": 672, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "5053:7:2", + "referencedDeclaration": 1537, + "src": "5035:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 680, + "id": 676, "isConstant": false, "isLValue": false, "isPure": false, @@ -9923,15 +9835,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5053:27:2", + "src": "5035:27:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 681, + "id": 677, "nodeType": "ExpressionStatement", - "src": "5053:27:2" + "src": "5035:27:2" }, { "expression": { @@ -9939,12 +9851,12 @@ "arguments": [ { "argumentTypes": null, - "id": 685, + "id": 681, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 226, - "src": "5113:6:2", + "src": "5095:6:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9952,12 +9864,12 @@ }, { "argumentTypes": null, - "id": 686, + "id": 682, "name": "minerTokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 657, - "src": "5121:11:2", + "referencedDeclaration": 653, + "src": "5103:11:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9977,32 +9889,32 @@ ], "expression": { "argumentTypes": null, - "id": 682, + "id": 678, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "5093:6:2", + "referencedDeclaration": 968, + "src": "5075:6:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" } }, - "id": 684, + "id": 680, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1403, - "src": "5093:19:2", + "referencedDeclaration": 1399, + "src": "5075:19:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1378_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1378_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1374_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1374_$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 687, + "id": 683, "isConstant": false, "isLValue": false, "isPure": false, @@ -10010,15 +9922,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5093:40:2", + "src": "5075:40:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 688, + "id": 684, "nodeType": "ExpressionStatement", - "src": "5093:40:2" + "src": "5075:40:2" }, { "expression": { @@ -10026,12 +9938,12 @@ "arguments": [ { "argumentTypes": null, - "id": 692, + "id": 688, "name": "_referral", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 228, - "src": "5164:9:2", + "src": "5146:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10039,12 +9951,12 @@ }, { "argumentTypes": null, - "id": 693, + "id": 689, "name": "referralTokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 663, - "src": "5175:14:2", + "referencedDeclaration": 659, + "src": "5157:14:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10064,32 +9976,32 @@ ], "expression": { "argumentTypes": null, - "id": 689, + "id": 685, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "5144:6:2", + "referencedDeclaration": 968, + "src": "5126:6:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" } }, - "id": 691, + "id": 687, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1403, - "src": "5144:19:2", + "referencedDeclaration": 1399, + "src": "5126:19:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1378_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1378_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1374_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1374_$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 694, + "id": 690, "isConstant": false, "isLValue": false, "isPure": false, @@ -10097,89 +10009,87 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5144:46:2", + "src": "5126:46:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 695, + "id": 691, "nodeType": "ExpressionStatement", - "src": "5144:46:2" + "src": "5126:46:2" } ] }, "documentation": null, - "id": 697, + "id": 693, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, - "id": 596, + "id": 592, "modifierName": { "argumentTypes": null, - "id": 595, + "id": 591, "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1078, - "src": "4373:13:2", + "referencedDeclaration": 1074, + "src": "4355:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4373:13:2" + "src": "4355:13:2" }, { "arguments": null, - "id": 598, + "id": 594, "modifierName": { "argumentTypes": null, - "id": 597, + "id": 593, "name": "onlySystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 901, - "src": "4387:10:2", + "referencedDeclaration": 897, + "src": "4369:10:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4387:10:2" + "src": "4369:10:2" } ], "name": "mine", "nodeType": "FunctionDefinition", "parameters": { - "id": 594, + "id": 590, "nodeType": "ParameterList", "parameters": [], - "src": "4363:2:2" + "src": "4345:2:2" }, - "payable": false, "returnParameters": { - "id": 599, + "id": 595, "nodeType": "ParameterList", "parameters": [], - "src": "4398:0:2" + "src": "4380:0:2" }, - "scope": 786, - "src": "4350:848:2", + "scope": 782, + "src": "4332:848:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 705, + "id": 701, "nodeType": "Block", - "src": "5247:31:2", + "src": "5229:31:2", "statements": [ { "expression": { @@ -10187,20 +10097,20 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 702, + "id": 698, "name": "_terminate", "nodeType": "Identifier", "overloadedDeclarations": [ - 1016 + 1012 ], - "referencedDeclaration": 1016, - "src": "5258:10:2", + "referencedDeclaration": 1012, + "src": "5240:10:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 703, + "id": 699, "isConstant": false, "isLValue": false, "isPure": false, @@ -10208,83 +10118,81 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5258:12:2", + "src": "5240:12:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 704, + "id": 700, "nodeType": "ExpressionStatement", - "src": "5258:12:2" + "src": "5240:12:2" } ] }, "documentation": null, - "id": 706, + "id": 702, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, - "id": 700, + "id": 696, "modifierName": { "argumentTypes": null, - "id": 699, + "id": 695, "name": "onlyCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "5234:12:2", + "src": "5216:12:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "5234:12:2" + "src": "5216:12:2" } ], "name": "terminate", "nodeType": "FunctionDefinition", "parameters": { - "id": 698, + "id": 694, "nodeType": "ParameterList", "parameters": [], - "src": "5224:2:2" + "src": "5206:2:2" }, - "payable": false, "returnParameters": { - "id": 701, + "id": 697, "nodeType": "ParameterList", "parameters": [], - "src": "5247:0:2" + "src": "5229:0:2" }, - "scope": 786, - "src": "5206:72:2", + "scope": 782, + "src": "5188:72:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 713, + "id": 709, "nodeType": "Block", - "src": "5336:30:2", + "src": "5318:30:2", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 711, + "id": 707, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "5354:4:2", + "src": "5336:4:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -10292,39 +10200,37 @@ }, "value": "true" }, - "functionReturnParameters": 710, - "id": 712, + "functionReturnParameters": 706, + "id": 708, "nodeType": "Return", - "src": "5347:11:2" + "src": "5329:11:2" } ] }, "documentation": null, - "id": 714, + "id": 710, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "isAlgoMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 707, + "id": 703, "nodeType": "ParameterList", "parameters": [], - "src": "5306:2:2" + "src": "5288:2:2" }, - "payable": false, "returnParameters": { - "id": 710, + "id": 706, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 709, + "id": 705, "name": "", "nodeType": "VariableDeclaration", - "scope": 714, - "src": "5330:4:2", + "scope": 710, + "src": "5312:4:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10332,10 +10238,10 @@ "typeString": "bool" }, "typeName": { - "id": 708, + "id": 704, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "5330:4:2", + "src": "5312:4:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10345,19 +10251,19 @@ "visibility": "internal" } ], - "src": "5329:6:2" + "src": "5311:6:2" }, - "scope": 786, - "src": "5286:80:2", + "scope": 782, + "src": "5268:80:2", "stateMutability": "pure", - "superFunction": 1024, + "superFunction": 1020, "visibility": "public" }, { "body": { - "id": 723, + "id": 719, "nodeType": "Block", - "src": "5426:43:2", + "src": "5408:43:2", "statements": [ { "expression": { @@ -10365,12 +10271,12 @@ "arguments": [ { "argumentTypes": null, - "id": 720, + "id": 716, "name": "_minerType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 222, - "src": "5450:10:2", + "src": "5432:10:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerType_$215", "typeString": "enum AlgoMiner.MinerType" @@ -10384,20 +10290,20 @@ "typeString": "enum AlgoMiner.MinerType" } ], - "id": 719, + "id": 715, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "5444:5:2", + "src": "5426:5:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)" }, "typeName": "uint8" }, - "id": 721, + "id": 717, "isConstant": false, "isLValue": false, "isPure": false, @@ -10405,45 +10311,43 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5444:17:2", + "src": "5426:17:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "functionReturnParameters": 718, - "id": 722, + "functionReturnParameters": 714, + "id": 718, "nodeType": "Return", - "src": "5437:24:2" + "src": "5419:24:2" } ] }, "documentation": null, - "id": 724, + "id": 720, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "getMinerType", "nodeType": "FunctionDefinition", "parameters": { - "id": 715, + "id": 711, "nodeType": "ParameterList", "parameters": [], - "src": "5395:2:2" + "src": "5377:2:2" }, - "payable": false, "returnParameters": { - "id": 718, + "id": 714, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 717, + "id": 713, "name": "", "nodeType": "VariableDeclaration", - "scope": 724, - "src": "5419:5:2", + "scope": 720, + "src": "5401:5:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10451,10 +10355,10 @@ "typeString": "uint8" }, "typeName": { - "id": 716, + "id": 712, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "5419:5:2", + "src": "5401:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -10464,67 +10368,65 @@ "visibility": "internal" } ], - "src": "5418:7:2" + "src": "5400:7:2" }, - "scope": 786, - "src": "5374:95:2", + "scope": 782, + "src": "5356:95:2", "stateMutability": "view", - "superFunction": 1029, + "superFunction": 1025, "visibility": "public" }, { "body": { - "id": 731, + "id": 727, "nodeType": "Block", - "src": "5528:35:2", + "src": "5510:35:2", "statements": [ { "expression": { "argumentTypes": null, - "id": 729, + "id": 725, "name": "_category", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 224, - "src": "5546:9:2", + "src": "5528:9:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "functionReturnParameters": 728, - "id": 730, + "functionReturnParameters": 724, + "id": 726, "nodeType": "Return", - "src": "5539:16:2" + "src": "5521:16:2" } ] }, "documentation": null, - "id": 732, + "id": 728, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "getCategory", "nodeType": "FunctionDefinition", "parameters": { - "id": 725, + "id": 721, "nodeType": "ParameterList", "parameters": [], - "src": "5497:2:2" + "src": "5479:2:2" }, - "payable": false, "returnParameters": { - "id": 728, + "id": 724, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 727, + "id": 723, "name": "", "nodeType": "VariableDeclaration", - "scope": 732, - "src": "5521:5:2", + "scope": 728, + "src": "5503:5:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10532,10 +10434,10 @@ "typeString": "uint8" }, "typeName": { - "id": 726, + "id": 722, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "5521:5:2", + "src": "5503:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -10545,67 +10447,65 @@ "visibility": "internal" } ], - "src": "5520:7:2" + "src": "5502:7:2" }, - "scope": 786, - "src": "5477:86:2", + "scope": 782, + "src": "5459:86:2", "stateMutability": "view", - "superFunction": 1034, + "superFunction": 1030, "visibility": "public" }, { "body": { - "id": 739, + "id": 735, "nodeType": "Block", - "src": "5621:32:2", + "src": "5603:32:2", "statements": [ { "expression": { "argumentTypes": null, - "id": 737, + "id": 733, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 226, - "src": "5639:6:2", + "src": "5621:6:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "functionReturnParameters": 736, - "id": 738, + "functionReturnParameters": 732, + "id": 734, "nodeType": "Return", - "src": "5632:13:2" + "src": "5614:13:2" } ] }, "documentation": null, - "id": 740, + "id": 736, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "getMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 733, + "id": 729, "nodeType": "ParameterList", "parameters": [], - "src": "5588:2:2" + "src": "5570:2:2" }, - "payable": false, "returnParameters": { - "id": 736, + "id": 732, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 735, + "id": 731, "name": "", "nodeType": "VariableDeclaration", - "scope": 740, - "src": "5612:7:2", + "scope": 736, + "src": "5594:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10613,10 +10513,11 @@ "typeString": "address" }, "typeName": { - "id": 734, + "id": 730, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5612:7:2", + "src": "5594:7:2", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10626,67 +10527,65 @@ "visibility": "internal" } ], - "src": "5611:9:2" + "src": "5593:9:2" }, - "scope": 786, - "src": "5571:82:2", + "scope": 782, + "src": "5553:82:2", "stateMutability": "view", - "superFunction": 1039, + "superFunction": 1035, "visibility": "public" }, { "body": { - "id": 747, + "id": 743, "nodeType": "Block", - "src": "5714:35:2", + "src": "5696:35:2", "statements": [ { "expression": { "argumentTypes": null, - "id": 745, + "id": 741, "name": "_referral", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 228, - "src": "5732:9:2", + "src": "5714:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "functionReturnParameters": 744, - "id": 746, + "functionReturnParameters": 740, + "id": 742, "nodeType": "Return", - "src": "5725:16:2" + "src": "5707:16:2" } ] }, "documentation": null, - "id": 748, + "id": 744, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "getReferral", "nodeType": "FunctionDefinition", "parameters": { - "id": 741, + "id": 737, "nodeType": "ParameterList", "parameters": [], - "src": "5681:2:2" + "src": "5663:2:2" }, - "payable": false, "returnParameters": { - "id": 744, + "id": 740, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 743, + "id": 739, "name": "", "nodeType": "VariableDeclaration", - "scope": 748, - "src": "5705:7:2", + "scope": 744, + "src": "5687:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10694,10 +10593,11 @@ "typeString": "address" }, "typeName": { - "id": 742, + "id": 738, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5705:7:2", + "src": "5687:7:2", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10707,19 +10607,19 @@ "visibility": "internal" } ], - "src": "5704:9:2" + "src": "5686:9:2" }, - "scope": 786, - "src": "5661:88:2", + "scope": 782, + "src": "5643:88:2", "stateMutability": "view", - "superFunction": 1044, + "superFunction": 1040, "visibility": "public" }, { "body": { - "id": 760, + "id": 756, "nodeType": "Block", - "src": "5804:67:2", + "src": "5786:67:2", "statements": [ { "expression": { @@ -10728,7 +10628,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 758, + "id": 754, "isConstant": false, "isLValue": false, "isPure": false, @@ -10739,19 +10639,19 @@ "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" }, - "id": 756, + "id": 752, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 753, + "id": 749, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 230, - "src": "5822:6:2", + "src": "5804:6:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" @@ -10763,18 +10663,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 754, + "id": 750, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, - "src": "5832:10:2", + "src": "5814:10:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_MinerState_$220_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 755, + "id": 751, "isConstant": false, "isLValue": false, "isPure": true, @@ -10782,13 +10682,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "5832:20:2", + "src": "5814:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_MinerState_$220", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "5822:30:2", + "src": "5804:30:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10798,56 +10698,54 @@ "operator": "&&", "rightExpression": { "argumentTypes": null, - "id": 757, + "id": 753, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, - "src": "5856:7:2", + "src": "5838:7:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "5822:41:2", + "src": "5804:41:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 752, - "id": 759, + "functionReturnParameters": 748, + "id": 755, "nodeType": "Return", - "src": "5815:48:2" + "src": "5797:48:2" } ] }, "documentation": null, - "id": 761, + "id": 757, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "isMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 749, + "id": 745, "nodeType": "ParameterList", "parameters": [], - "src": "5774:2:2" + "src": "5756:2:2" }, - "payable": false, "returnParameters": { - "id": 752, + "id": 748, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 751, + "id": 747, "name": "", "nodeType": "VariableDeclaration", - "scope": 761, - "src": "5798:4:2", + "scope": 757, + "src": "5780:4:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10855,10 +10753,10 @@ "typeString": "bool" }, "typeName": { - "id": 750, + "id": 746, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "5798:4:2", + "src": "5780:4:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10868,67 +10766,65 @@ "visibility": "internal" } ], - "src": "5797:6:2" + "src": "5779:6:2" }, - "scope": 786, - "src": "5757:114:2", + "scope": 782, + "src": "5739:114:2", "stateMutability": "view", - "superFunction": 1049, + "superFunction": 1045, "visibility": "public" }, { "body": { - "id": 768, + "id": 764, "nodeType": "Block", - "src": "5933:38:2", + "src": "5915:38:2", "statements": [ { "expression": { "argumentTypes": null, - "id": 766, + "id": 762, "name": "_currentYear", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 234, - "src": "5951:12:2", + "src": "5933:12:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "functionReturnParameters": 765, - "id": 767, + "functionReturnParameters": 761, + "id": 763, "nodeType": "Return", - "src": "5944:19:2" + "src": "5926:19:2" } ] }, "documentation": null, - "id": 769, + "id": 765, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "getCurrentYear", "nodeType": "FunctionDefinition", "parameters": { - "id": 762, + "id": 758, "nodeType": "ParameterList", "parameters": [], - "src": "5902:2:2" + "src": "5884:2:2" }, - "payable": false, "returnParameters": { - "id": 765, + "id": 761, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 764, + "id": 760, "name": "", "nodeType": "VariableDeclaration", - "scope": 769, - "src": "5926:5:2", + "scope": 765, + "src": "5908:5:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10936,10 +10832,10 @@ "typeString": "uint8" }, "typeName": { - "id": 763, + "id": 759, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "5926:5:2", + "src": "5908:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -10949,67 +10845,65 @@ "visibility": "internal" } ], - "src": "5925:7:2" + "src": "5907:7:2" }, - "scope": 786, - "src": "5879:92:2", + "scope": 782, + "src": "5861:92:2", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 776, + "id": 772, "nodeType": "Block", - "src": "6033:37:2", + "src": "6015:37:2", "statements": [ { "expression": { "argumentTypes": null, - "id": 774, + "id": 770, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 236, - "src": "6051:11:2", + "src": "6033:11:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "functionReturnParameters": 773, - "id": 775, + "functionReturnParameters": 769, + "id": 771, "nodeType": "Return", - "src": "6044:18:2" + "src": "6026:18:2" } ] }, "documentation": null, - "id": 777, + "id": 773, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "getCurrentDay", "nodeType": "FunctionDefinition", "parameters": { - "id": 770, + "id": 766, "nodeType": "ParameterList", "parameters": [], - "src": "6001:2:2" + "src": "5983:2:2" }, - "payable": false, "returnParameters": { - "id": 773, + "id": 769, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 772, + "id": 768, "name": "", "nodeType": "VariableDeclaration", - "scope": 777, - "src": "6025:6:2", + "scope": 773, + "src": "6007:6:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11017,10 +10911,10 @@ "typeString": "uint16" }, "typeName": { - "id": 771, + "id": 767, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "6025:6:2", + "src": "6007:6:2", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -11030,67 +10924,65 @@ "visibility": "internal" } ], - "src": "6024:8:2" + "src": "6006:8:2" }, - "scope": 786, - "src": "5979:91:2", + "scope": 782, + "src": "5961:91:2", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 784, + "id": 780, "nodeType": "Block", - "src": "6140:44:2", + "src": "6122:44:2", "statements": [ { "expression": { "argumentTypes": null, - "id": 782, + "id": 778, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 238, - "src": "6158:18:2", + "src": "6140:18:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 781, - "id": 783, + "functionReturnParameters": 777, + "id": 779, "nodeType": "Return", - "src": "6151:25:2" + "src": "6133:25:2" } ] }, "documentation": null, - "id": 785, + "id": 781, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "getCurrentYearSupply", "nodeType": "FunctionDefinition", "parameters": { - "id": 778, + "id": 774, "nodeType": "ParameterList", "parameters": [], - "src": "6107:2:2" + "src": "6089:2:2" }, - "payable": false, "returnParameters": { - "id": 781, + "id": 777, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 780, + "id": 776, "name": "", "nodeType": "VariableDeclaration", - "scope": 785, - "src": "6131:7:2", + "scope": 781, + "src": "6113:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11098,10 +10990,10 @@ "typeString": "uint256" }, "typeName": { - "id": 779, + "id": 775, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6131:7:2", + "src": "6113:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11111,20 +11003,20 @@ "visibility": "internal" } ], - "src": "6130:9:2" + "src": "6112:9:2" }, - "scope": 786, - "src": "6078:106:2", + "scope": 782, + "src": "6060:106:2", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 787, - "src": "620:5567:2" + "scope": 783, + "src": "619:5550:2" } ], - "src": "0:6189:2" + "src": "0:6171:2" }, "id": 2 }, @@ -11133,31 +11025,30 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol", "exportedSymbols": { "AlgoSupervisorRole": [ - 873 + 869 ] }, - "id": 874, + "id": 870, "nodeType": "SourceUnit", "nodes": [ { - "id": 788, + "id": 784, "literals": [ "solidity", - "^", - "0.4", - ".24" + "0.5", + ".4" ], "nodeType": "PragmaDirective", - "src": "0:24:3" + "src": "0:22:3" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", - "id": 789, + "id": 785, "nodeType": "ImportDirective", - "scope": 874, - "sourceUnit": 1182, - "src": "28:189:3", + "scope": 870, + "sourceUnit": 1178, + "src": "26:189:3", "symbolAliases": [], "unitAlias": "" }, @@ -11167,64 +11058,64 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 873, + "id": 869, "linearizedBaseContracts": [ - 873 + 869 ], "name": "AlgoSupervisorRole", "nodeType": "ContractDefinition", "nodes": [ { - "id": 792, + "id": 788, "libraryName": { "contractScope": null, - "id": 790, + "id": 786, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1181, - "src": "262:5:3", + "referencedDeclaration": 1177, + "src": "260:5:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$1181", + "typeIdentifier": "t_contract$_Roles_$1177", "typeString": "library Roles" } }, "nodeType": "UsingForDirective", - "src": "256:27:3", + "src": "254:27:3", "typeName": { "contractScope": null, - "id": 791, + "id": 787, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1094, - "src": "272:10:3", + "referencedDeclaration": 1090, + "src": "270:10:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1090_storage_ptr", "typeString": "struct Roles.Role" } } }, { "constant": false, - "id": 794, + "id": 790, "name": "_supervisors", "nodeType": "VariableDeclaration", - "scope": 873, - "src": "291:31:3", + "scope": 869, + "src": "289:31:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1094_storage", + "typeIdentifier": "t_struct$_Role_$1090_storage", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 793, + "id": 789, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1094, - "src": "291:10:3", + "referencedDeclaration": 1090, + "src": "289:10:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1090_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -11233,9 +11124,9 @@ }, { "body": { - "id": 802, + "id": 798, "nodeType": "Block", - "src": "355:45:3", + "src": "353:45:3", "statements": [ { "expression": { @@ -11245,18 +11136,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 798, + "id": 794, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1537, - "src": "381:3:3", + "referencedDeclaration": 1534, + "src": "379:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 799, + "id": 795, "isConstant": false, "isLValue": false, "isPure": false, @@ -11264,32 +11155,32 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "381:10:3", + "src": "379:10:3", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } ], - "id": 797, + "id": 793, "name": "_addSupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 860, - "src": "366:14:3", + "referencedDeclaration": 856, + "src": "364:14:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 800, + "id": 796, "isConstant": false, "isLValue": false, "isPure": false, @@ -11297,50 +11188,48 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "366:26:3", + "src": "364:26:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 801, + "id": 797, "nodeType": "ExpressionStatement", - "src": "366:26:3" + "src": "364:26:3" } ] }, "documentation": null, - "id": 803, + "id": 799, "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, + "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 795, + "id": 791, "nodeType": "ParameterList", "parameters": [], - "src": "343:2:3" + "src": "341:2:3" }, - "payable": false, "returnParameters": { - "id": 796, + "id": 792, "nodeType": "ParameterList", "parameters": [], - "src": "355:0:3" + "src": "353:0:3" }, - "scope": 873, - "src": "331:69:3", + "scope": 869, + "src": "329:69:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 813, + "id": 809, "nodeType": "Block", - "src": "434:64:3", + "src": "432:64:3", "statements": [ { "expression": { @@ -11353,18 +11242,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 807, + "id": 803, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1537, - "src": "466:3:3", + "referencedDeclaration": 1534, + "src": "464:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 808, + "id": 804, "isConstant": false, "isLValue": false, "isPure": false, @@ -11372,32 +11261,32 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "466:10:3", + "src": "464:10:3", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } ], - "id": 806, + "id": 802, "name": "isSupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 827, - "src": "453:12:3", + "referencedDeclaration": 823, + "src": "451:12:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)" } }, - "id": 809, + "id": 805, "isConstant": false, "isLValue": false, "isPure": false, @@ -11405,7 +11294,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "453:24:3", + "src": "451:24:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11419,21 +11308,21 @@ "typeString": "bool" } ], - "id": 805, + "id": 801, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "445:7:3", + "referencedDeclaration": 1537, + "src": "443:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 810, + "id": 806, "isConstant": false, "isLValue": false, "isPure": false, @@ -11441,41 +11330,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "445:33:3", + "src": "443:33:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 811, + "id": 807, "nodeType": "ExpressionStatement", - "src": "445:33:3" + "src": "443:33:3" }, { - "id": 812, + "id": 808, "nodeType": "PlaceholderStatement", - "src": "489:1:3" + "src": "487:1:3" } ] }, "documentation": null, - "id": 814, + "id": 810, "name": "onlySupervisor", "nodeType": "ModifierDefinition", "parameters": { - "id": 804, + "id": 800, "nodeType": "ParameterList", "parameters": [], - "src": "431:2:3" + "src": "429:2:3" }, - "src": "408:90:3", + "src": "406:90:3", "visibility": "internal" }, { "body": { - "id": 826, + "id": 822, "nodeType": "Block", - "src": "572:51:3", + "src": "570:51:3", "statements": [ { "expression": { @@ -11483,12 +11372,12 @@ "arguments": [ { "argumentTypes": null, - "id": 823, + "id": 819, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 816, - "src": "607:7:3", + "referencedDeclaration": 812, + "src": "605:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11504,32 +11393,32 @@ ], "expression": { "argumentTypes": null, - "id": 821, + "id": 817, "name": "_supervisors", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "590:12:3", + "referencedDeclaration": 790, + "src": "588:12:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1094_storage", + "typeIdentifier": "t_struct$_Role_$1090_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 822, + "id": 818, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 1180, - "src": "590:16:3", + "referencedDeclaration": 1176, + "src": "588:16:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1094_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1094_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1090_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1090_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 824, + "id": 820, "isConstant": false, "isLValue": false, "isPure": false, @@ -11537,38 +11426,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "590:25:3", + "src": "588:25:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 820, - "id": 825, + "functionReturnParameters": 816, + "id": 821, "nodeType": "Return", - "src": "583:32:3" + "src": "581:32:3" } ] }, "documentation": null, - "id": 827, + "id": 823, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "isSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 817, + "id": 813, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 816, + "id": 812, "name": "account", "nodeType": "VariableDeclaration", - "scope": 827, - "src": "528:15:3", + "scope": 823, + "src": "526:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11576,10 +11464,11 @@ "typeString": "address" }, "typeName": { - "id": 815, + "id": 811, "name": "address", "nodeType": "ElementaryTypeName", - "src": "528:7:3", + "src": "526:7:3", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11589,20 +11478,19 @@ "visibility": "internal" } ], - "src": "527:17:3" + "src": "525:17:3" }, - "payable": false, "returnParameters": { - "id": 820, + "id": 816, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 819, + "id": 815, "name": "", "nodeType": "VariableDeclaration", - "scope": 827, - "src": "566:4:3", + "scope": 823, + "src": "564:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11610,10 +11498,10 @@ "typeString": "bool" }, "typeName": { - "id": 818, + "id": 814, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "566:4:3", + "src": "564:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11623,19 +11511,19 @@ "visibility": "internal" } ], - "src": "565:6:3" + "src": "563:6:3" }, - "scope": 873, - "src": "506:117:3", + "scope": 869, + "src": "504:117:3", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 838, + "id": 834, "nodeType": "Block", - "src": "693:42:3", + "src": "691:42:3", "statements": [ { "expression": { @@ -11643,12 +11531,12 @@ "arguments": [ { "argumentTypes": null, - "id": 835, + "id": 831, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 829, - "src": "719:7:3", + "referencedDeclaration": 825, + "src": "717:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11662,18 +11550,18 @@ "typeString": "address" } ], - "id": 834, + "id": 830, "name": "_addSupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 860, - "src": "704:14:3", + "referencedDeclaration": 856, + "src": "702:14:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 836, + "id": 832, "isConstant": false, "isLValue": false, "isPure": false, @@ -11681,57 +11569,56 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "704:23:3", + "src": "702:23:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 837, + "id": 833, "nodeType": "ExpressionStatement", - "src": "704:23:3" + "src": "702:23:3" } ] }, "documentation": null, - "id": 839, + "id": 835, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, - "id": 832, + "id": 828, "modifierName": { "argumentTypes": null, - "id": 831, + "id": 827, "name": "onlySupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 814, - "src": "678:14:3", + "referencedDeclaration": 810, + "src": "676:14:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "678:14:3" + "src": "676:14:3" } ], "name": "addSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 830, + "id": 826, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 829, + "id": 825, "name": "account", "nodeType": "VariableDeclaration", - "scope": 839, - "src": "654:15:3", + "scope": 835, + "src": "652:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11739,10 +11626,11 @@ "typeString": "address" }, "typeName": { - "id": 828, + "id": 824, "name": "address", "nodeType": "ElementaryTypeName", - "src": "654:7:3", + "src": "652:7:3", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11752,26 +11640,25 @@ "visibility": "internal" } ], - "src": "653:17:3" + "src": "651:17:3" }, - "payable": false, "returnParameters": { - "id": 833, + "id": 829, "nodeType": "ParameterList", "parameters": [], - "src": "693:0:3" + "src": "691:0:3" }, - "scope": 873, - "src": "631:104:3", + "scope": 869, + "src": "629:104:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 847, + "id": 843, "nodeType": "Block", - "src": "780:48:3", + "src": "778:48:3", "statements": [ { "expression": { @@ -11781,18 +11668,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 843, + "id": 839, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1537, - "src": "809:3:3", + "referencedDeclaration": 1534, + "src": "807:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 844, + "id": 840, "isConstant": false, "isLValue": false, "isPure": false, @@ -11800,32 +11687,32 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "809:10:3", + "src": "807:10:3", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } ], - "id": 842, + "id": 838, "name": "_removeSupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 872, - "src": "791:17:3", + "referencedDeclaration": 868, + "src": "789:17:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 845, + "id": 841, "isConstant": false, "isLValue": false, "isPure": false, @@ -11833,50 +11720,48 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "791:29:3", + "src": "789:29:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 846, + "id": 842, "nodeType": "ExpressionStatement", - "src": "791:29:3" + "src": "789:29:3" } ] }, "documentation": null, - "id": 848, + "id": 844, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "renounceSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 840, + "id": 836, "nodeType": "ParameterList", "parameters": [], - "src": "770:2:3" + "src": "768:2:3" }, - "payable": false, "returnParameters": { - "id": 841, + "id": 837, "nodeType": "ParameterList", "parameters": [], - "src": "780:0:3" + "src": "778:0:3" }, - "scope": 873, - "src": "743:85:3", + "scope": 869, + "src": "741:85:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 859, + "id": 855, "nodeType": "Block", - "src": "886:44:3", + "src": "884:44:3", "statements": [ { "expression": { @@ -11884,12 +11769,12 @@ "arguments": [ { "argumentTypes": null, - "id": 856, + "id": 852, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 850, - "src": "914:7:3", + "referencedDeclaration": 846, + "src": "912:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11905,32 +11790,32 @@ ], "expression": { "argumentTypes": null, - "id": 853, + "id": 849, "name": "_supervisors", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "897:12:3", + "referencedDeclaration": 790, + "src": "895:12:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1094_storage", + "typeIdentifier": "t_struct$_Role_$1090_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 855, + "id": 851, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1126, - "src": "897:16:3", + "referencedDeclaration": 1122, + "src": "895:16:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1094_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1094_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1090_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1090_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 857, + "id": 853, "isConstant": false, "isLValue": false, "isPure": false, @@ -11938,37 +11823,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "897:25:3", + "src": "895:25:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 858, + "id": 854, "nodeType": "ExpressionStatement", - "src": "897:25:3" + "src": "895:25:3" } ] }, "documentation": null, - "id": 860, + "id": 856, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "_addSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 851, + "id": 847, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 850, + "id": 846, "name": "account", "nodeType": "VariableDeclaration", - "scope": 860, - "src": "860:15:3", + "scope": 856, + "src": "858:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11976,10 +11860,11 @@ "typeString": "address" }, "typeName": { - "id": 849, + "id": 845, "name": "address", "nodeType": "ElementaryTypeName", - "src": "860:7:3", + "src": "858:7:3", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11989,26 +11874,25 @@ "visibility": "internal" } ], - "src": "859:17:3" + "src": "857:17:3" }, - "payable": false, "returnParameters": { - "id": 852, + "id": 848, "nodeType": "ParameterList", "parameters": [], - "src": "886:0:3" + "src": "884:0:3" }, - "scope": 873, - "src": "836:94:3", + "scope": 869, + "src": "834:94:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 871, + "id": 867, "nodeType": "Block", - "src": "991:47:3", + "src": "989:47:3", "statements": [ { "expression": { @@ -12016,12 +11900,12 @@ "arguments": [ { "argumentTypes": null, - "id": 868, + "id": 864, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 862, - "src": "1022:7:3", + "referencedDeclaration": 858, + "src": "1020:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12037,32 +11921,32 @@ ], "expression": { "argumentTypes": null, - "id": 865, + "id": 861, "name": "_supervisors", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "1002:12:3", + "referencedDeclaration": 790, + "src": "1000:12:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1094_storage", + "typeIdentifier": "t_struct$_Role_$1090_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 867, + "id": 863, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 1157, - "src": "1002:19:3", + "referencedDeclaration": 1153, + "src": "1000:19:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1094_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1094_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1090_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1090_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 869, + "id": 865, "isConstant": false, "isLValue": false, "isPure": false, @@ -12070,37 +11954,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1002:28:3", + "src": "1000:28:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 870, + "id": 866, "nodeType": "ExpressionStatement", - "src": "1002:28:3" + "src": "1000:28:3" } ] }, "documentation": null, - "id": 872, + "id": 868, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "_removeSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 863, + "id": 859, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 862, + "id": 858, "name": "account", "nodeType": "VariableDeclaration", - "scope": 872, - "src": "965:15:3", + "scope": 868, + "src": "963:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12108,10 +11991,11 @@ "typeString": "address" }, "typeName": { - "id": 861, + "id": 857, "name": "address", "nodeType": "ElementaryTypeName", - "src": "965:7:3", + "src": "963:7:3", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12121,27 +12005,26 @@ "visibility": "internal" } ], - "src": "964:17:3" + "src": "962:17:3" }, - "payable": false, "returnParameters": { - "id": 864, + "id": 860, "nodeType": "ParameterList", "parameters": [], - "src": "991:0:3" + "src": "989:0:3" }, - "scope": 873, - "src": "938:100:3", + "scope": 869, + "src": "936:100:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 874, - "src": "221:820:3" + "scope": 870, + "src": "219:820:3" } ], - "src": "0:1043:3" + "src": "0:1041:3" }, "id": 3 }, @@ -12150,31 +12033,30 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol", "exportedSymbols": { "AlgoSystemRole": [ - 960 + 956 ] }, - "id": 961, + "id": 957, "nodeType": "SourceUnit", "nodes": [ { - "id": 875, + "id": 871, "literals": [ "solidity", - "^", - "0.4", - ".24" + "0.5", + ".4" ], "nodeType": "PragmaDirective", - "src": "0:24:4" + "src": "0:22:4" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", - "id": 876, + "id": 872, "nodeType": "ImportDirective", - "scope": 961, - "sourceUnit": 1182, - "src": "28:189:4", + "scope": 957, + "sourceUnit": 1178, + "src": "26:189:4", "symbolAliases": [], "unitAlias": "" }, @@ -12184,64 +12066,64 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 960, + "id": 956, "linearizedBaseContracts": [ - 960 + 956 ], "name": "AlgoSystemRole", "nodeType": "ContractDefinition", "nodes": [ { - "id": 879, + "id": 875, "libraryName": { "contractScope": null, - "id": 877, + "id": 873, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1181, - "src": "258:5:4", + "referencedDeclaration": 1177, + "src": "256:5:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$1181", + "typeIdentifier": "t_contract$_Roles_$1177", "typeString": "library Roles" } }, "nodeType": "UsingForDirective", - "src": "252:27:4", + "src": "250:27:4", "typeName": { "contractScope": null, - "id": 878, + "id": 874, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1094, - "src": "268:10:4", + "referencedDeclaration": 1090, + "src": "266:10:4", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1090_storage_ptr", "typeString": "struct Roles.Role" } } }, { "constant": false, - "id": 881, + "id": 877, "name": "_systemMembers", "nodeType": "VariableDeclaration", - "scope": 960, - "src": "287:33:4", + "scope": 956, + "src": "285:33:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1094_storage", + "typeIdentifier": "t_struct$_Role_$1090_storage", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 880, + "id": 876, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1094, - "src": "287:10:4", + "referencedDeclaration": 1090, + "src": "285:10:4", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1090_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -12250,9 +12132,9 @@ }, { "body": { - "id": 889, + "id": 885, "nodeType": "Block", - "src": "353:41:4", + "src": "351:41:4", "statements": [ { "expression": { @@ -12262,18 +12144,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 885, + "id": 881, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1537, - "src": "375:3:4", + "referencedDeclaration": 1534, + "src": "373:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 886, + "id": 882, "isConstant": false, "isLValue": false, "isPure": false, @@ -12281,32 +12163,32 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "375:10:4", + "src": "373:10:4", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } ], - "id": 884, + "id": 880, "name": "_addSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 947, - "src": "364:10:4", + "referencedDeclaration": 943, + "src": "362:10:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 887, + "id": 883, "isConstant": false, "isLValue": false, "isPure": false, @@ -12314,50 +12196,48 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "364:22:4", + "src": "362:22:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 888, + "id": 884, "nodeType": "ExpressionStatement", - "src": "364:22:4" + "src": "362:22:4" } ] }, "documentation": null, - "id": 890, + "id": 886, "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, + "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 882, + "id": 878, "nodeType": "ParameterList", "parameters": [], - "src": "341:2:4" + "src": "339:2:4" }, - "payable": false, "returnParameters": { - "id": 883, + "id": 879, "nodeType": "ParameterList", "parameters": [], - "src": "353:0:4" + "src": "351:0:4" }, - "scope": 960, - "src": "329:65:4", + "scope": 956, + "src": "327:65:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 900, + "id": 896, "nodeType": "Block", - "src": "424:60:4", + "src": "422:60:4", "statements": [ { "expression": { @@ -12370,18 +12250,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 894, + "id": 890, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1537, - "src": "452:3:4", + "referencedDeclaration": 1534, + "src": "450:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 895, + "id": 891, "isConstant": false, "isLValue": false, "isPure": false, @@ -12389,32 +12269,32 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "452:10:4", + "src": "450:10:4", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } ], - "id": 893, + "id": 889, "name": "isSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 914, - "src": "443:8:4", + "referencedDeclaration": 910, + "src": "441:8:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)" } }, - "id": 896, + "id": 892, "isConstant": false, "isLValue": false, "isPure": false, @@ -12422,7 +12302,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "443:20:4", + "src": "441:20:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -12436,21 +12316,21 @@ "typeString": "bool" } ], - "id": 892, + "id": 888, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "435:7:4", + "referencedDeclaration": 1537, + "src": "433:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 897, + "id": 893, "isConstant": false, "isLValue": false, "isPure": false, @@ -12458,41 +12338,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "435:29:4", + "src": "433:29:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 898, + "id": 894, "nodeType": "ExpressionStatement", - "src": "435:29:4" + "src": "433:29:4" }, { - "id": 899, + "id": 895, "nodeType": "PlaceholderStatement", - "src": "475:1:4" + "src": "473:1:4" } ] }, "documentation": null, - "id": 901, + "id": 897, "name": "onlySystem", "nodeType": "ModifierDefinition", "parameters": { - "id": 891, + "id": 887, "nodeType": "ParameterList", "parameters": [], - "src": "421:2:4" + "src": "419:2:4" }, - "src": "402:82:4", + "src": "400:82:4", "visibility": "internal" }, { "body": { - "id": 913, + "id": 909, "nodeType": "Block", - "src": "554:53:4", + "src": "552:53:4", "statements": [ { "expression": { @@ -12500,12 +12380,12 @@ "arguments": [ { "argumentTypes": null, - "id": 910, + "id": 906, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 903, - "src": "591:7:4", + "referencedDeclaration": 899, + "src": "589:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12521,32 +12401,32 @@ ], "expression": { "argumentTypes": null, - "id": 908, + "id": 904, "name": "_systemMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 881, - "src": "572:14:4", + "referencedDeclaration": 877, + "src": "570:14:4", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1094_storage", + "typeIdentifier": "t_struct$_Role_$1090_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 909, + "id": 905, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 1180, - "src": "572:18:4", + "referencedDeclaration": 1176, + "src": "570:18:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1094_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1094_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1090_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1090_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 911, + "id": 907, "isConstant": false, "isLValue": false, "isPure": false, @@ -12554,38 +12434,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "572:27:4", + "src": "570:27:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 907, - "id": 912, + "functionReturnParameters": 903, + "id": 908, "nodeType": "Return", - "src": "565:34:4" + "src": "563:34:4" } ] }, "documentation": null, - "id": 914, + "id": 910, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "isSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 904, + "id": 900, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 903, + "id": 899, "name": "account", "nodeType": "VariableDeclaration", - "scope": 914, - "src": "510:15:4", + "scope": 910, + "src": "508:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12593,10 +12472,11 @@ "typeString": "address" }, "typeName": { - "id": 902, + "id": 898, "name": "address", "nodeType": "ElementaryTypeName", - "src": "510:7:4", + "src": "508:7:4", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12606,20 +12486,19 @@ "visibility": "internal" } ], - "src": "509:17:4" + "src": "507:17:4" }, - "payable": false, "returnParameters": { - "id": 907, + "id": 903, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 906, + "id": 902, "name": "", "nodeType": "VariableDeclaration", - "scope": 914, - "src": "548:4:4", + "scope": 910, + "src": "546:4:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12627,10 +12506,10 @@ "typeString": "bool" }, "typeName": { - "id": 905, + "id": 901, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "548:4:4", + "src": "546:4:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -12640,19 +12519,19 @@ "visibility": "internal" } ], - "src": "547:6:4" + "src": "545:6:4" }, - "scope": 960, - "src": "492:115:4", + "scope": 956, + "src": "490:115:4", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 925, + "id": 921, "nodeType": "Block", - "src": "669:38:4", + "src": "667:38:4", "statements": [ { "expression": { @@ -12660,12 +12539,12 @@ "arguments": [ { "argumentTypes": null, - "id": 922, + "id": 918, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 916, - "src": "691:7:4", + "referencedDeclaration": 912, + "src": "689:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12679,18 +12558,18 @@ "typeString": "address" } ], - "id": 921, + "id": 917, "name": "_addSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 947, - "src": "680:10:4", + "referencedDeclaration": 943, + "src": "678:10:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 923, + "id": 919, "isConstant": false, "isLValue": false, "isPure": false, @@ -12698,57 +12577,56 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "680:19:4", + "src": "678:19:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 924, + "id": 920, "nodeType": "ExpressionStatement", - "src": "680:19:4" + "src": "678:19:4" } ] }, "documentation": null, - "id": 926, + "id": 922, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, - "id": 919, + "id": 915, "modifierName": { "argumentTypes": null, - "id": 918, + "id": 914, "name": "onlySystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 901, - "src": "658:10:4", + "referencedDeclaration": 897, + "src": "656:10:4", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "658:10:4" + "src": "656:10:4" } ], "name": "addSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 917, + "id": 913, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 916, + "id": 912, "name": "account", "nodeType": "VariableDeclaration", - "scope": 926, - "src": "634:15:4", + "scope": 922, + "src": "632:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12756,10 +12634,11 @@ "typeString": "address" }, "typeName": { - "id": 915, + "id": 911, "name": "address", "nodeType": "ElementaryTypeName", - "src": "634:7:4", + "src": "632:7:4", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12769,26 +12648,25 @@ "visibility": "internal" } ], - "src": "633:17:4" + "src": "631:17:4" }, - "payable": false, "returnParameters": { - "id": 920, + "id": 916, "nodeType": "ParameterList", "parameters": [], - "src": "669:0:4" + "src": "667:0:4" }, - "scope": 960, - "src": "615:92:4", + "scope": 956, + "src": "613:92:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 934, + "id": 930, "nodeType": "Block", - "src": "748:44:4", + "src": "746:44:4", "statements": [ { "expression": { @@ -12798,18 +12676,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 930, + "id": 926, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1537, - "src": "773:3:4", + "referencedDeclaration": 1534, + "src": "771:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 931, + "id": 927, "isConstant": false, "isLValue": false, "isPure": false, @@ -12817,32 +12695,32 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "773:10:4", + "src": "771:10:4", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } ], - "id": 929, + "id": 925, "name": "_removeSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "759:13:4", + "referencedDeclaration": 955, + "src": "757:13:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 932, + "id": 928, "isConstant": false, "isLValue": false, "isPure": false, @@ -12850,50 +12728,48 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "759:25:4", + "src": "757:25:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 933, + "id": 929, "nodeType": "ExpressionStatement", - "src": "759:25:4" + "src": "757:25:4" } ] }, "documentation": null, - "id": 935, + "id": 931, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "renounceSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 927, + "id": 923, "nodeType": "ParameterList", "parameters": [], - "src": "738:2:4" + "src": "736:2:4" }, - "payable": false, "returnParameters": { - "id": 928, + "id": 924, "nodeType": "ParameterList", "parameters": [], - "src": "748:0:4" + "src": "746:0:4" }, - "scope": 960, - "src": "715:77:4", + "scope": 956, + "src": "713:77:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 946, + "id": 942, "nodeType": "Block", - "src": "846:46:4", + "src": "844:46:4", "statements": [ { "expression": { @@ -12901,12 +12777,12 @@ "arguments": [ { "argumentTypes": null, - "id": 943, + "id": 939, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 937, - "src": "876:7:4", + "referencedDeclaration": 933, + "src": "874:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12922,32 +12798,32 @@ ], "expression": { "argumentTypes": null, - "id": 940, + "id": 936, "name": "_systemMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 881, - "src": "857:14:4", + "referencedDeclaration": 877, + "src": "855:14:4", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1094_storage", + "typeIdentifier": "t_struct$_Role_$1090_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 942, + "id": 938, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1126, - "src": "857:18:4", + "referencedDeclaration": 1122, + "src": "855:18:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1094_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1094_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1090_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1090_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 944, + "id": 940, "isConstant": false, "isLValue": false, "isPure": false, @@ -12955,37 +12831,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "857:27:4", + "src": "855:27:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 945, + "id": 941, "nodeType": "ExpressionStatement", - "src": "857:27:4" + "src": "855:27:4" } ] }, "documentation": null, - "id": 947, + "id": 943, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "_addSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 938, + "id": 934, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 937, + "id": 933, "name": "account", "nodeType": "VariableDeclaration", - "scope": 947, - "src": "820:15:4", + "scope": 943, + "src": "818:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12993,10 +12868,11 @@ "typeString": "address" }, "typeName": { - "id": 936, + "id": 932, "name": "address", "nodeType": "ElementaryTypeName", - "src": "820:7:4", + "src": "818:7:4", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13006,26 +12882,25 @@ "visibility": "internal" } ], - "src": "819:17:4" + "src": "817:17:4" }, - "payable": false, "returnParameters": { - "id": 939, + "id": 935, "nodeType": "ParameterList", "parameters": [], - "src": "846:0:4" + "src": "844:0:4" }, - "scope": 960, - "src": "800:92:4", + "scope": 956, + "src": "798:92:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 958, + "id": 954, "nodeType": "Block", - "src": "949:49:4", + "src": "947:49:4", "statements": [ { "expression": { @@ -13033,12 +12908,12 @@ "arguments": [ { "argumentTypes": null, - "id": 955, + "id": 951, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 949, - "src": "982:7:4", + "referencedDeclaration": 945, + "src": "980:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13054,32 +12929,32 @@ ], "expression": { "argumentTypes": null, - "id": 952, + "id": 948, "name": "_systemMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 881, - "src": "960:14:4", + "referencedDeclaration": 877, + "src": "958:14:4", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1094_storage", + "typeIdentifier": "t_struct$_Role_$1090_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 954, + "id": 950, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 1157, - "src": "960:21:4", + "referencedDeclaration": 1153, + "src": "958:21:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1094_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1094_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1090_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1090_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 956, + "id": 952, "isConstant": false, "isLValue": false, "isPure": false, @@ -13087,37 +12962,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "960:30:4", + "src": "958:30:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 957, + "id": 953, "nodeType": "ExpressionStatement", - "src": "960:30:4" + "src": "958:30:4" } ] }, "documentation": null, - "id": 959, + "id": 955, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "_removeSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 950, + "id": 946, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 949, + "id": 945, "name": "account", "nodeType": "VariableDeclaration", - "scope": 959, - "src": "923:15:4", + "scope": 955, + "src": "921:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13125,10 +12999,11 @@ "typeString": "address" }, "typeName": { - "id": 948, + "id": 944, "name": "address", "nodeType": "ElementaryTypeName", - "src": "923:7:4", + "src": "921:7:4", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13138,27 +13013,26 @@ "visibility": "internal" } ], - "src": "922:17:4" + "src": "920:17:4" }, - "payable": false, "returnParameters": { - "id": 951, + "id": 947, "nodeType": "ParameterList", "parameters": [], - "src": "949:0:4" + "src": "947:0:4" }, - "scope": 960, - "src": "900:98:4", + "scope": 956, + "src": "898:98:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 961, - "src": "221:780:4" + "scope": 957, + "src": "219:780:4" } ], - "src": "0:1003:4" + "src": "0:1001:4" }, "id": 4 }, @@ -13167,52 +13041,52 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol", "exportedSymbols": { "ERC20TokenHolder": [ - 1017 + 1013 ] }, - "id": 1018, + "id": 1014, "nodeType": "SourceUnit", "nodes": [ { - "id": 962, + "id": 958, "literals": [ "solidity", - "0.4", - ".24" + "0.5", + ".4" ], "nodeType": "PragmaDirective", - "src": "0:23:5" + "src": "0:22:5" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "id": 963, + "id": 959, "nodeType": "ImportDirective", - "scope": 1018, - "sourceUnit": 1379, - "src": "27:195:5", + "scope": 1014, + "sourceUnit": 1375, + "src": "26:195:5", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", - "id": 964, + "id": 960, "nodeType": "ImportDirective", - "scope": 1018, - "sourceUnit": 1523, - "src": "224:198:5", + "scope": 1014, + "sourceUnit": 1520, + "src": "223:198:5", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", "file": "./Terminable.sol", - "id": 965, + "id": 961, "nodeType": "ImportDirective", - "scope": 1018, - "sourceUnit": 1088, - "src": "426:26:5", + "scope": 1014, + "sourceUnit": 1084, + "src": "425:26:5", "symbolAliases": [], "unitAlias": "" }, @@ -13222,86 +13096,86 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 966, + "id": 962, "name": "Terminable", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1087, - "src": "485:10:5", + "referencedDeclaration": 1083, + "src": "484:10:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_Terminable_$1087", + "typeIdentifier": "t_contract$_Terminable_$1083", "typeString": "contract Terminable" } }, - "id": 967, + "id": 963, "nodeType": "InheritanceSpecifier", - "src": "485:10:5" + "src": "484:10:5" } ], "contractDependencies": [ - 1087 + 1083 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 1017, + "id": 1013, "linearizedBaseContracts": [ - 1017, - 1087 + 1013, + 1083 ], "name": "ERC20TokenHolder", "nodeType": "ContractDefinition", "nodes": [ { - "id": 970, + "id": 966, "libraryName": { "contractScope": null, - "id": 968, + "id": 964, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1522, - "src": "509:9:5", + "referencedDeclaration": 1519, + "src": "508:9:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1522", + "typeIdentifier": "t_contract$_SafeERC20_$1519", "typeString": "library SafeERC20" } }, "nodeType": "UsingForDirective", - "src": "503:27:5", + "src": "502:27:5", "typeName": { "contractScope": null, - "id": 969, + "id": 965, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1378, - "src": "523:6:5", + "referencedDeclaration": 1374, + "src": "522:6:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" } } }, { "constant": false, - "id": 972, + "id": 968, "name": "_token", "nodeType": "VariableDeclaration", - "scope": 1017, - "src": "538:22:5", + "scope": 1013, + "src": "537:22:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 971, + "id": 967, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1378, - "src": "538:6:5", + "referencedDeclaration": 1374, + "src": "537:6:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" } }, @@ -13310,28 +13184,28 @@ }, { "body": { - "id": 985, + "id": 981, "nodeType": "Block", - "src": "625:48:5", + "src": "624:48:5", "statements": [ { "expression": { "argumentTypes": null, - "id": 983, + "id": 979, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 979, + "id": 975, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "636:6:5", + "referencedDeclaration": 968, + "src": "635:6:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" } }, @@ -13342,12 +13216,12 @@ "arguments": [ { "argumentTypes": null, - "id": 981, + "id": 977, "name": "tokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 974, - "src": "652:12:5", + "referencedDeclaration": 970, + "src": "651:12:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13361,18 +13235,18 @@ "typeString": "address" } ], - "id": 980, + "id": 976, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1378, - "src": "645:6:5", + "referencedDeclaration": 1374, + "src": "644:6:5", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$1378_$", + "typeIdentifier": "t_type$_t_contract$_IERC20_$1374_$", "typeString": "type(contract IERC20)" } }, - "id": 982, + "id": 978, "isConstant": false, "isLValue": false, "isPure": false, @@ -13380,63 +13254,62 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "645:20:5", + "src": "644:20:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" } }, - "src": "636:29:5", + "src": "635:29:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" } }, - "id": 984, + "id": 980, "nodeType": "ExpressionStatement", - "src": "636:29:5" + "src": "635:29:5" } ] }, "documentation": null, - "id": 986, + "id": 982, "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, + "kind": "constructor", "modifiers": [ { "arguments": [], - "id": 977, + "id": 973, "modifierName": { "argumentTypes": null, - "id": 976, + "id": 972, "name": "Terminable", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1087, - "src": "603:10:5", + "referencedDeclaration": 1083, + "src": "602:10:5", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Terminable_$1087_$", + "typeIdentifier": "t_type$_t_contract$_Terminable_$1083_$", "typeString": "type(contract Terminable)" } }, "nodeType": "ModifierInvocation", - "src": "603:12:5" + "src": "602:12:5" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 975, + "id": 971, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 974, + "id": 970, "name": "tokenAddress", "nodeType": "VariableDeclaration", - "scope": 986, - "src": "581:20:5", + "scope": 982, + "src": "580:20:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13444,10 +13317,11 @@ "typeString": "address" }, "typeName": { - "id": 973, + "id": 969, "name": "address", "nodeType": "ElementaryTypeName", - "src": "581:7:5", + "src": "580:7:5", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13457,39 +13331,38 @@ "visibility": "internal" } ], - "src": "580:22:5" + "src": "579:22:5" }, - "payable": false, "returnParameters": { - "id": 978, + "id": 974, "nodeType": "ParameterList", "parameters": [], - "src": "625:0:5" + "src": "624:0:5" }, - "scope": 1017, - "src": "569:104:5", + "scope": 1013, + "src": "568:104:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1015, + "id": 1011, "nodeType": "Block", - "src": "712:214:5", + "src": "711:214:5", "statements": [ { "assignments": [ - 990 + 986 ], "declarations": [ { "constant": false, - "id": 990, + "id": 986, "name": "currentBalance", "nodeType": "VariableDeclaration", - "scope": 1016, - "src": "723:22:5", + "scope": 1011, + "src": "722:22:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13497,10 +13370,10 @@ "typeString": "uint256" }, "typeName": { - "id": 989, + "id": 985, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "723:7:5", + "src": "722:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13510,7 +13383,7 @@ "visibility": "internal" } ], - "id": 997, + "id": 993, "initialValue": { "argumentTypes": null, "arguments": [ @@ -13519,14 +13392,14 @@ "arguments": [ { "argumentTypes": null, - "id": 994, + "id": 990, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1566, - "src": "773:4:5", + "referencedDeclaration": 1564, + "src": "772:4:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20TokenHolder_$1017", + "typeIdentifier": "t_contract$_ERC20TokenHolder_$1013", "typeString": "contract ERC20TokenHolder" } } @@ -13534,24 +13407,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ERC20TokenHolder_$1017", + "typeIdentifier": "t_contract$_ERC20TokenHolder_$1013", "typeString": "contract ERC20TokenHolder" } ], - "id": 993, + "id": 989, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "765:7:5", + "src": "764:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 995, + "id": 991, "isConstant": false, "isLValue": false, "isPure": false, @@ -13559,7 +13432,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "765:13:5", + "src": "764:13:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13575,32 +13448,32 @@ ], "expression": { "argumentTypes": null, - "id": 991, + "id": 987, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "748:6:5", + "referencedDeclaration": 968, + "src": "747:6:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" } }, - "id": 992, + "id": 988, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 1323, - "src": "748:16:5", + "referencedDeclaration": 1348, + "src": "747:16:5", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 996, + "id": 992, "isConstant": false, "isLValue": false, "isPure": false, @@ -13608,14 +13481,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "748:31:5", + "src": "747:31:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "723:56:5" + "src": "722:56:5" }, { "condition": { @@ -13624,19 +13497,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1000, + "id": 996, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 998, + "id": 994, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 990, - "src": "793:14:5", + "referencedDeclaration": 986, + "src": "792:14:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13647,14 +13520,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 999, + "id": 995, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "810:1:5", + "src": "809:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -13662,20 +13535,20 @@ }, "value": "0" }, - "src": "793:18:5", + "src": "792:18:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1009, + "id": 1005, "nodeType": "IfStatement", - "src": "790:95:5", + "src": "789:95:5", "trueBody": { - "id": 1008, + "id": 1004, "nodeType": "Block", - "src": "813:72:5", + "src": "812:72:5", "statements": [ { "expression": { @@ -13683,12 +13556,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1004, + "id": 1000, "name": "_creator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1054, - "src": "848:8:5", + "referencedDeclaration": 1050, + "src": "847:8:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13696,12 +13569,12 @@ }, { "argumentTypes": null, - "id": 1005, + "id": 1001, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 990, - "src": "858:14:5", + "referencedDeclaration": 986, + "src": "857:14:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13721,32 +13594,32 @@ ], "expression": { "argumentTypes": null, - "id": 1001, + "id": 997, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "828:6:5", + "referencedDeclaration": 968, + "src": "827:6:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" } }, - "id": 1003, + "id": 999, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1403, - "src": "828:19:5", + "referencedDeclaration": 1399, + "src": "827:19:5", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1378_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1378_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1374_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1374_$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 1006, + "id": 1002, "isConstant": false, "isLValue": false, "isPure": false, @@ -13754,15 +13627,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "828:45:5", + "src": "827:45:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1007, + "id": 1003, "nodeType": "ExpressionStatement", - "src": "828:45:5" + "src": "827:45:5" } ] } @@ -13775,32 +13648,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 1010, + "id": 1006, "name": "Terminable", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1087, - "src": "895:10:5", + "referencedDeclaration": 1083, + "src": "894:10:5", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Terminable_$1087_$", + "typeIdentifier": "t_type$_t_contract$_Terminable_$1083_$", "typeString": "type(contract Terminable)" } }, - "id": 1012, + "id": 1008, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "_terminate", "nodeType": "MemberAccess", - "referencedDeclaration": 1086, - "src": "895:21:5", + "referencedDeclaration": 1082, + "src": "894:21:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 1013, + "id": 1009, "isConstant": false, "isLValue": false, "isPure": false, @@ -13808,51 +13681,49 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "895:23:5", + "src": "894:23:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1014, + "id": 1010, "nodeType": "ExpressionStatement", - "src": "895:23:5" + "src": "894:23:5" } ] }, "documentation": null, - "id": 1016, + "id": 1012, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "_terminate", "nodeType": "FunctionDefinition", "parameters": { - "id": 987, + "id": 983, "nodeType": "ParameterList", "parameters": [], - "src": "700:2:5" + "src": "699:2:5" }, - "payable": false, "returnParameters": { - "id": 988, + "id": 984, "nodeType": "ParameterList", "parameters": [], - "src": "712:0:5" + "src": "711:0:5" }, - "scope": 1017, - "src": "681:245:5", + "scope": 1013, + "src": "680:245:5", "stateMutability": "nonpayable", - "superFunction": 1086, + "superFunction": 1082, "visibility": "internal" } ], - "scope": 1018, - "src": "456:473:5" + "scope": 1014, + "src": "455:473:5" } ], - "src": "0:929:5" + "src": "0:928:5" }, "id": 5 }, @@ -13861,21 +13732,21 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", "exportedSymbols": { "IAlgoMiner": [ - 1050 + 1046 ] }, - "id": 1051, + "id": 1047, "nodeType": "SourceUnit", "nodes": [ { - "id": 1019, + "id": 1015, "literals": [ "solidity", - "0.4", - ".24" + "0.5", + ".4" ], "nodeType": "PragmaDirective", - "src": "0:23:6" + "src": "0:22:6" }, { "baseContracts": [], @@ -13883,9 +13754,9 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 1050, + "id": 1046, "linearizedBaseContracts": [ - 1050 + 1046 ], "name": "IAlgoMiner", "nodeType": "ContractDefinition", @@ -13893,31 +13764,29 @@ { "body": null, "documentation": null, - "id": 1024, + "id": 1020, "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "isAlgoMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1020, + "id": 1016, "nodeType": "ParameterList", "parameters": [], - "src": "74:2:6" + "src": "73:2:6" }, - "payable": false, "returnParameters": { - "id": 1023, + "id": 1019, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1022, + "id": 1018, "name": "", "nodeType": "VariableDeclaration", - "scope": 1024, - "src": "98:4:6", + "scope": 1020, + "src": "97:4:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13925,10 +13794,10 @@ "typeString": "bool" }, "typeName": { - "id": 1021, + "id": 1017, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "98:4:6", + "src": "97:4:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -13938,10 +13807,10 @@ "visibility": "internal" } ], - "src": "97:6:6" + "src": "96:6:6" }, - "scope": 1050, - "src": "54:50:6", + "scope": 1046, + "src": "53:50:6", "stateMutability": "pure", "superFunction": null, "visibility": "public" @@ -13949,31 +13818,29 @@ { "body": null, "documentation": null, - "id": 1029, + "id": 1025, "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "getMinerType", "nodeType": "FunctionDefinition", "parameters": { - "id": 1025, + "id": 1021, "nodeType": "ParameterList", "parameters": [], - "src": "131:2:6" + "src": "130:2:6" }, - "payable": false, "returnParameters": { - "id": 1028, + "id": 1024, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1027, + "id": 1023, "name": "", "nodeType": "VariableDeclaration", - "scope": 1029, - "src": "155:5:6", + "scope": 1025, + "src": "154:5:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13981,10 +13848,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1026, + "id": 1022, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "155:5:6", + "src": "154:5:6", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -13994,10 +13861,10 @@ "visibility": "internal" } ], - "src": "154:7:6" + "src": "153:7:6" }, - "scope": 1050, - "src": "110:52:6", + "scope": 1046, + "src": "109:52:6", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -14005,31 +13872,29 @@ { "body": null, "documentation": null, - "id": 1034, + "id": 1030, "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "getCategory", "nodeType": "FunctionDefinition", "parameters": { - "id": 1030, + "id": 1026, "nodeType": "ParameterList", "parameters": [], - "src": "188:2:6" + "src": "187:2:6" }, - "payable": false, "returnParameters": { - "id": 1033, + "id": 1029, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1032, + "id": 1028, "name": "", "nodeType": "VariableDeclaration", - "scope": 1034, - "src": "212:5:6", + "scope": 1030, + "src": "211:5:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14037,10 +13902,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1031, + "id": 1027, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "212:5:6", + "src": "211:5:6", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -14050,10 +13915,10 @@ "visibility": "internal" } ], - "src": "211:7:6" + "src": "210:7:6" }, - "scope": 1050, - "src": "168:51:6", + "scope": 1046, + "src": "167:51:6", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -14061,31 +13926,29 @@ { "body": null, "documentation": null, - "id": 1039, + "id": 1035, "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "getMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1035, + "id": 1031, "nodeType": "ParameterList", "parameters": [], - "src": "242:2:6" + "src": "241:2:6" }, - "payable": false, "returnParameters": { - "id": 1038, + "id": 1034, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1037, + "id": 1033, "name": "", "nodeType": "VariableDeclaration", - "scope": 1039, - "src": "266:7:6", + "scope": 1035, + "src": "265:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14093,10 +13956,11 @@ "typeString": "address" }, "typeName": { - "id": 1036, + "id": 1032, "name": "address", "nodeType": "ElementaryTypeName", - "src": "266:7:6", + "src": "265:7:6", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14106,10 +13970,10 @@ "visibility": "internal" } ], - "src": "265:9:6" + "src": "264:9:6" }, - "scope": 1050, - "src": "225:50:6", + "scope": 1046, + "src": "224:50:6", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -14117,31 +13981,29 @@ { "body": null, "documentation": null, - "id": 1044, + "id": 1040, "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "getReferral", "nodeType": "FunctionDefinition", "parameters": { - "id": 1040, + "id": 1036, "nodeType": "ParameterList", "parameters": [], - "src": "301:2:6" + "src": "300:2:6" }, - "payable": false, "returnParameters": { - "id": 1043, + "id": 1039, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1042, + "id": 1038, "name": "", "nodeType": "VariableDeclaration", - "scope": 1044, - "src": "325:7:6", + "scope": 1040, + "src": "324:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14149,10 +14011,11 @@ "typeString": "address" }, "typeName": { - "id": 1041, + "id": 1037, "name": "address", "nodeType": "ElementaryTypeName", - "src": "325:7:6", + "src": "324:7:6", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14162,10 +14025,10 @@ "visibility": "internal" } ], - "src": "324:9:6" + "src": "323:9:6" }, - "scope": 1050, - "src": "281:53:6", + "scope": 1046, + "src": "280:53:6", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -14173,31 +14036,29 @@ { "body": null, "documentation": null, - "id": 1049, + "id": 1045, "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "isMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 1045, + "id": 1041, "nodeType": "ParameterList", "parameters": [], - "src": "357:2:6" + "src": "356:2:6" }, - "payable": false, "returnParameters": { - "id": 1048, + "id": 1044, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1047, + "id": 1043, "name": "", "nodeType": "VariableDeclaration", - "scope": 1049, - "src": "381:4:6", + "scope": 1045, + "src": "380:4:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14205,10 +14066,10 @@ "typeString": "bool" }, "typeName": { - "id": 1046, + "id": 1042, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "381:4:6", + "src": "380:4:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14218,20 +14079,20 @@ "visibility": "internal" } ], - "src": "380:6:6" + "src": "379:6:6" }, - "scope": 1050, - "src": "340:47:6", + "scope": 1046, + "src": "339:47:6", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1051, - "src": "27:363:6" + "scope": 1047, + "src": "26:363:6" } ], - "src": "0:390:6" + "src": "0:389:6" }, "id": 6 }, @@ -14240,21 +14101,21 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", "exportedSymbols": { "Terminable": [ - 1087 + 1083 ] }, - "id": 1088, + "id": 1084, "nodeType": "SourceUnit", "nodes": [ { - "id": 1052, + "id": 1048, "literals": [ "solidity", - "0.4", - ".24" + "0.5", + ".4" ], "nodeType": "PragmaDirective", - "src": "0:23:7" + "src": "0:22:7" }, { "baseContracts": [], @@ -14262,20 +14123,20 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 1087, + "id": 1083, "linearizedBaseContracts": [ - 1087 + 1083 ], "name": "Terminable", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 1054, + "id": 1050, "name": "_creator", "nodeType": "VariableDeclaration", - "scope": 1087, - "src": "56:25:7", + "scope": 1083, + "src": "55:25:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -14283,10 +14144,11 @@ "typeString": "address" }, "typeName": { - "id": 1053, + "id": 1049, "name": "address", "nodeType": "ElementaryTypeName", - "src": "56:7:7", + "src": "55:7:7", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14297,11 +14159,11 @@ }, { "constant": false, - "id": 1056, + "id": 1052, "name": "_terminated", "nodeType": "VariableDeclaration", - "scope": 1087, - "src": "88:25:7", + "scope": 1083, + "src": "87:25:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -14309,10 +14171,10 @@ "typeString": "bool" }, "typeName": { - "id": 1055, + "id": 1051, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "88:4:7", + "src": "87:4:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14323,26 +14185,26 @@ }, { "body": { - "id": 1068, + "id": 1064, "nodeType": "Block", - "src": "145:70:7", + "src": "144:70:7", "statements": [ { "expression": { "argumentTypes": null, - "id": 1062, + "id": 1058, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1059, + "id": 1055, "name": "_creator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1054, - "src": "156:8:7", + "referencedDeclaration": 1050, + "src": "155:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14354,18 +14216,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1060, + "id": 1056, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1537, - "src": "167:3:7", + "referencedDeclaration": 1534, + "src": "166:3:7", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1061, + "id": 1057, "isConstant": false, "isLValue": false, "isPure": false, @@ -14373,38 +14235,38 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "167:10:7", + "src": "166:10:7", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "src": "156:21:7", + "src": "155:21:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1063, + "id": 1059, "nodeType": "ExpressionStatement", - "src": "156:21:7" + "src": "155:21:7" }, { "expression": { "argumentTypes": null, - "id": 1066, + "id": 1062, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1064, + "id": 1060, "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1056, - "src": "188:11:7", + "referencedDeclaration": 1052, + "src": "187:11:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14415,14 +14277,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 1065, + "id": 1061, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "202:5:7", + "src": "201:5:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -14430,50 +14292,48 @@ }, "value": "false" }, - "src": "188:19:7", + "src": "187:19:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1067, + "id": 1063, "nodeType": "ExpressionStatement", - "src": "188:19:7" + "src": "187:19:7" } ] }, "documentation": null, - "id": 1069, + "id": 1065, "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, + "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1057, + "id": 1053, "nodeType": "ParameterList", "parameters": [], - "src": "133:2:7" + "src": "132:2:7" }, - "payable": false, "returnParameters": { - "id": 1058, + "id": 1054, "nodeType": "ParameterList", "parameters": [], - "src": "145:0:7" + "src": "144:0:7" }, - "scope": 1087, - "src": "122:93:7", + "scope": 1083, + "src": "121:93:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1077, + "id": 1073, "nodeType": "Block", - "src": "248:52:7", + "src": "247:52:7", "statements": [ { "expression": { @@ -14481,7 +14341,7 @@ "arguments": [ { "argumentTypes": null, - "id": 1073, + "id": 1069, "isConstant": false, "isLValue": false, "isPure": false, @@ -14489,15 +14349,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "267:12:7", + "src": "266:12:7", "subExpression": { "argumentTypes": null, - "id": 1072, + "id": 1068, "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1056, - "src": "268:11:7", + "referencedDeclaration": 1052, + "src": "267:11:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14516,21 +14376,21 @@ "typeString": "bool" } ], - "id": 1071, + "id": 1067, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "259:7:7", + "referencedDeclaration": 1537, + "src": "258:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1074, + "id": 1070, "isConstant": false, "isLValue": false, "isPure": false, @@ -14538,58 +14398,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "259:21:7", + "src": "258:21:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1075, + "id": 1071, "nodeType": "ExpressionStatement", - "src": "259:21:7" + "src": "258:21:7" }, { - "id": 1076, + "id": 1072, "nodeType": "PlaceholderStatement", - "src": "291:1:7" + "src": "290:1:7" } ] }, "documentation": null, - "id": 1078, + "id": 1074, "name": "notTerminated", "nodeType": "ModifierDefinition", "parameters": { - "id": 1070, + "id": 1066, "nodeType": "ParameterList", "parameters": [], - "src": "245:2:7" + "src": "244:2:7" }, - "src": "223:77:7", + "src": "222:77:7", "visibility": "internal" }, { "body": { - "id": 1085, + "id": 1081, "nodeType": "Block", - "src": "339:37:7", + "src": "338:37:7", "statements": [ { "expression": { "argumentTypes": null, - "id": 1083, + "id": 1079, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1081, + "id": 1077, "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1056, - "src": "350:11:7", + "referencedDeclaration": 1052, + "src": "349:11:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14600,14 +14460,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 1082, + "id": 1078, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "364:4:7", + "src": "363:4:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -14615,51 +14475,49 @@ }, "value": "true" }, - "src": "350:18:7", + "src": "349:18:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1084, + "id": 1080, "nodeType": "ExpressionStatement", - "src": "350:18:7" + "src": "349:18:7" } ] }, "documentation": null, - "id": 1086, + "id": 1082, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "_terminate", "nodeType": "FunctionDefinition", "parameters": { - "id": 1079, + "id": 1075, "nodeType": "ParameterList", "parameters": [], - "src": "327:2:7" + "src": "326:2:7" }, - "payable": false, "returnParameters": { - "id": 1080, + "id": 1076, "nodeType": "ParameterList", "parameters": [], - "src": "339:0:7" + "src": "338:0:7" }, - "scope": 1087, - "src": "308:68:7", + "scope": 1083, + "src": "307:68:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 1088, - "src": "27:352:7" + "scope": 1084, + "src": "26:352:7" } ], - "src": "0:379:7" + "src": "0:378:7" }, "id": 7 }, @@ -14668,22 +14526,22 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "exportedSymbols": { "Roles": [ - 1181 + 1177 ] }, - "id": 1182, + "id": 1178, "nodeType": "SourceUnit", "nodes": [ { - "id": 1089, + "id": 1085, "literals": [ "solidity", "^", - "0.4", - ".24" + "0.5", + ".0" ], "nodeType": "PragmaDirective", - "src": "0:24:8" + "src": "0:23:8" }, { "baseContracts": [], @@ -14691,24 +14549,24 @@ "contractKind": "library", "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", "fullyImplemented": true, - "id": 1181, + "id": 1177, "linearizedBaseContracts": [ - 1181 + 1177 ], "name": "Roles", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "Roles.Role", - "id": 1094, + "id": 1090, "members": [ { "constant": false, - "id": 1093, + "id": 1089, "name": "bearer", "nodeType": "VariableDeclaration", - "scope": 1094, - "src": "145:32:8", + "scope": 1090, + "src": "150:32:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14716,28 +14574,28 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 1092, + "id": 1088, "keyType": { - "id": 1090, + "id": 1086, "name": "address", "nodeType": "ElementaryTypeName", - "src": "154:7:8", + "src": "159:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "145:25:8", + "src": "150:25:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 1091, + "id": 1087, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "165:4:8", + "src": "170:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14750,15 +14608,15 @@ ], "name": "Role", "nodeType": "StructDefinition", - "scope": 1181, - "src": "127:55:8", + "scope": 1177, + "src": "128:61:8", "visibility": "public" }, { "body": { - "id": 1125, + "id": 1121, "nodeType": "Block", - "src": "302:109:8", + "src": "317:123:8", "statements": [ { "expression": { @@ -14770,19 +14628,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1106, + "id": 1102, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1102, + "id": 1098, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1098, - "src": "316:7:8", + "referencedDeclaration": 1094, + "src": "335:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14796,14 +14654,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1104, + "id": 1100, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "335:1:8", + "src": "354:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -14819,20 +14677,20 @@ "typeString": "int_const 0" } ], - "id": 1103, + "id": 1099, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "327:7:8", + "src": "346:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1105, + "id": 1101, "isConstant": false, "isLValue": false, "isPure": true, @@ -14840,13 +14698,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "327:10:8", + "src": "346:10:8", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "src": "316:21:8", + "src": "335:21:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14860,21 +14718,21 @@ "typeString": "bool" } ], - "id": 1101, + "id": 1097, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "308:7:8", + "referencedDeclaration": 1537, + "src": "327:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1107, + "id": 1103, "isConstant": false, "isLValue": false, "isPure": false, @@ -14882,15 +14740,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "308:30:8", + "src": "327:30:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1108, + "id": 1104, "nodeType": "ExpressionStatement", - "src": "308:30:8" + "src": "327:30:8" }, { "expression": { @@ -14898,7 +14756,7 @@ "arguments": [ { "argumentTypes": null, - "id": 1114, + "id": 1110, "isConstant": false, "isLValue": false, "isPure": false, @@ -14906,31 +14764,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "352:19:8", + "src": "375:19:8", "subExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1111, + "id": 1107, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1096, - "src": "357:4:8", + "referencedDeclaration": 1092, + "src": "380:4:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1090_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, { "argumentTypes": null, - "id": 1112, + "id": 1108, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1098, - "src": "363:7:8", + "referencedDeclaration": 1094, + "src": "386:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14940,7 +14798,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1090_storage_ptr", "typeString": "struct Roles.Role storage pointer" }, { @@ -14948,18 +14806,18 @@ "typeString": "address" } ], - "id": 1110, + "id": 1106, "name": "has", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1180, - "src": "353:3:8", + "referencedDeclaration": 1176, + "src": "376:3:8", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1094_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1090_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 1113, + "id": 1109, "isConstant": false, "isLValue": false, "isPure": false, @@ -14967,7 +14825,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "353:18:8", + "src": "376:18:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14986,21 +14844,21 @@ "typeString": "bool" } ], - "id": 1109, + "id": 1105, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "344:7:8", + "referencedDeclaration": 1537, + "src": "367:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1115, + "id": 1111, "isConstant": false, "isLValue": false, "isPure": false, @@ -15008,20 +14866,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "344:28:8", + "src": "367:28:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1116, + "id": 1112, "nodeType": "ExpressionStatement", - "src": "344:28:8" + "src": "367:28:8" }, { "expression": { "argumentTypes": null, - "id": 1123, + "id": 1119, "isConstant": false, "isLValue": false, "isPure": false, @@ -15032,40 +14890,40 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1117, + "id": 1113, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1096, - "src": "379:4:8", + "referencedDeclaration": 1092, + "src": "406:4:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1090_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 1120, + "id": 1116, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 1093, - "src": "379:11:8", + "referencedDeclaration": 1089, + "src": "406:11:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 1121, + "id": 1117, "indexExpression": { "argumentTypes": null, - "id": 1119, + "id": 1115, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1098, - "src": "391:7:8", + "referencedDeclaration": 1094, + "src": "418:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15076,7 +14934,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "379:20:8", + "src": "406:20:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -15087,14 +14945,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 1122, + "id": 1118, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "402:4:8", + "src": "429:4:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -15102,52 +14960,51 @@ }, "value": "true" }, - "src": "379:27:8", + "src": "406:27:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1124, + "id": 1120, "nodeType": "ExpressionStatement", - "src": "379:27:8" + "src": "406:27:8" } ] }, "documentation": "@dev give an account access to this role", - "id": 1126, + "id": 1122, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 1099, + "id": 1095, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1096, + "id": 1092, "name": "role", "nodeType": "VariableDeclaration", - "scope": 1126, - "src": "257:17:8", + "scope": 1122, + "src": "272:17:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1090_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 1095, + "id": 1091, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1094, - "src": "257:4:8", + "referencedDeclaration": 1090, + "src": "272:4:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1090_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -15156,11 +15013,11 @@ }, { "constant": false, - "id": 1098, + "id": 1094, "name": "account", "nodeType": "VariableDeclaration", - "scope": 1126, - "src": "276:15:8", + "scope": 1122, + "src": "291:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15168,10 +15025,11 @@ "typeString": "address" }, "typeName": { - "id": 1097, + "id": 1093, "name": "address", "nodeType": "ElementaryTypeName", - "src": "276:7:8", + "src": "291:7:8", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15181,26 +15039,25 @@ "visibility": "internal" } ], - "src": "256:36:8" + "src": "271:36:8" }, - "payable": false, "returnParameters": { - "id": 1100, + "id": 1096, "nodeType": "ParameterList", "parameters": [], - "src": "302:0:8" + "src": "317:0:8" }, - "scope": 1181, - "src": "244:167:8", + "scope": 1177, + "src": "259:181:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1156, + "id": 1152, "nodeType": "Block", - "src": "538:109:8", + "src": "575:123:8", "statements": [ { "expression": { @@ -15212,19 +15069,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1138, + "id": 1134, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1134, + "id": 1130, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1130, - "src": "552:7:8", + "referencedDeclaration": 1126, + "src": "593:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15238,14 +15095,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1136, + "id": 1132, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "571:1:8", + "src": "612:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -15261,20 +15118,20 @@ "typeString": "int_const 0" } ], - "id": 1135, + "id": 1131, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "563:7:8", + "src": "604:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1137, + "id": 1133, "isConstant": false, "isLValue": false, "isPure": true, @@ -15282,13 +15139,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "563:10:8", + "src": "604:10:8", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "src": "552:21:8", + "src": "593:21:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -15302,21 +15159,21 @@ "typeString": "bool" } ], - "id": 1133, + "id": 1129, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "544:7:8", + "referencedDeclaration": 1537, + "src": "585:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1139, + "id": 1135, "isConstant": false, "isLValue": false, "isPure": false, @@ -15324,15 +15181,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "544:30:8", + "src": "585:30:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1140, + "id": 1136, "nodeType": "ExpressionStatement", - "src": "544:30:8" + "src": "585:30:8" }, { "expression": { @@ -15343,25 +15200,25 @@ "arguments": [ { "argumentTypes": null, - "id": 1143, + "id": 1139, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1128, - "src": "592:4:8", + "referencedDeclaration": 1124, + "src": "637:4:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1090_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, { "argumentTypes": null, - "id": 1144, + "id": 1140, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1130, - "src": "598:7:8", + "referencedDeclaration": 1126, + "src": "643:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15371,7 +15228,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1090_storage_ptr", "typeString": "struct Roles.Role storage pointer" }, { @@ -15379,18 +15236,18 @@ "typeString": "address" } ], - "id": 1142, + "id": 1138, "name": "has", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1180, - "src": "588:3:8", + "referencedDeclaration": 1176, + "src": "633:3:8", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1094_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1090_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 1145, + "id": 1141, "isConstant": false, "isLValue": false, "isPure": false, @@ -15398,7 +15255,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "588:18:8", + "src": "633:18:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -15412,21 +15269,21 @@ "typeString": "bool" } ], - "id": 1141, + "id": 1137, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "580:7:8", + "referencedDeclaration": 1537, + "src": "625:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1146, + "id": 1142, "isConstant": false, "isLValue": false, "isPure": false, @@ -15434,20 +15291,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "580:27:8", + "src": "625:27:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1147, + "id": 1143, "nodeType": "ExpressionStatement", - "src": "580:27:8" + "src": "625:27:8" }, { "expression": { "argumentTypes": null, - "id": 1154, + "id": 1150, "isConstant": false, "isLValue": false, "isPure": false, @@ -15458,40 +15315,40 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1148, + "id": 1144, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1128, - "src": "614:4:8", + "referencedDeclaration": 1124, + "src": "663:4:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1090_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 1151, + "id": 1147, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 1093, - "src": "614:11:8", + "referencedDeclaration": 1089, + "src": "663:11:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 1152, + "id": 1148, "indexExpression": { "argumentTypes": null, - "id": 1150, + "id": 1146, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1130, - "src": "626:7:8", + "referencedDeclaration": 1126, + "src": "675:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15502,7 +15359,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "614:20:8", + "src": "663:20:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -15513,14 +15370,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 1153, + "id": 1149, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "637:5:8", + "src": "686:5:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -15528,52 +15385,51 @@ }, "value": "false" }, - "src": "614:28:8", + "src": "663:28:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1155, + "id": 1151, "nodeType": "ExpressionStatement", - "src": "614:28:8" + "src": "663:28:8" } ] }, "documentation": "@dev remove an account's access to this role", - "id": 1157, + "id": 1153, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "remove", "nodeType": "FunctionDefinition", "parameters": { - "id": 1131, + "id": 1127, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1128, + "id": 1124, "name": "role", "nodeType": "VariableDeclaration", - "scope": 1157, - "src": "493:17:8", + "scope": 1153, + "src": "530:17:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1090_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 1127, + "id": 1123, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1094, - "src": "493:4:8", + "referencedDeclaration": 1090, + "src": "530:4:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1090_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -15582,11 +15438,11 @@ }, { "constant": false, - "id": 1130, + "id": 1126, "name": "account", "nodeType": "VariableDeclaration", - "scope": 1157, - "src": "512:15:8", + "scope": 1153, + "src": "549:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15594,10 +15450,11 @@ "typeString": "address" }, "typeName": { - "id": 1129, + "id": 1125, "name": "address", "nodeType": "ElementaryTypeName", - "src": "512:7:8", + "src": "549:7:8", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15607,26 +15464,25 @@ "visibility": "internal" } ], - "src": "492:36:8" + "src": "529:36:8" }, - "payable": false, "returnParameters": { - "id": 1132, + "id": 1128, "nodeType": "ParameterList", "parameters": [], - "src": "538:0:8" + "src": "575:0:8" }, - "scope": 1181, - "src": "477:170:8", + "scope": 1177, + "src": "514:184:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1179, + "id": 1175, "nodeType": "Block", - "src": "817:74:8", + "src": "864:84:8", "statements": [ { "expression": { @@ -15638,19 +15494,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1171, + "id": 1167, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1167, + "id": 1163, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "831:7:8", + "referencedDeclaration": 1157, + "src": "882:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15664,14 +15520,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1169, + "id": 1165, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "850:1:8", + "src": "901:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -15687,20 +15543,20 @@ "typeString": "int_const 0" } ], - "id": 1168, + "id": 1164, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "842:7:8", + "src": "893:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1170, + "id": 1166, "isConstant": false, "isLValue": false, "isPure": true, @@ -15708,13 +15564,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "842:10:8", + "src": "893:10:8", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "src": "831:21:8", + "src": "882:21:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -15728,21 +15584,21 @@ "typeString": "bool" } ], - "id": 1166, + "id": 1162, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "823:7:8", + "referencedDeclaration": 1537, + "src": "874:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1172, + "id": 1168, "isConstant": false, "isLValue": false, "isPure": false, @@ -15750,15 +15606,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "823:30:8", + "src": "874:30:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1173, + "id": 1169, "nodeType": "ExpressionStatement", - "src": "823:30:8" + "src": "874:30:8" }, { "expression": { @@ -15767,40 +15623,40 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1174, + "id": 1170, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1159, - "src": "866:4:8", + "referencedDeclaration": 1155, + "src": "921:4:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1090_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 1175, + "id": 1171, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 1093, - "src": "866:11:8", + "referencedDeclaration": 1089, + "src": "921:11:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 1177, + "id": 1173, "indexExpression": { "argumentTypes": null, - "id": 1176, + "id": 1172, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "878:7:8", + "referencedDeclaration": 1157, + "src": "933:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15811,53 +15667,52 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "866:20:8", + "src": "921:20:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 1165, - "id": 1178, + "functionReturnParameters": 1161, + "id": 1174, "nodeType": "Return", - "src": "859:27:8" + "src": "914:27:8" } ] }, "documentation": "@dev check if an account has this role\n@return bool", - "id": 1180, + "id": 1176, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "has", "nodeType": "FunctionDefinition", "parameters": { - "id": 1162, + "id": 1158, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1159, + "id": 1155, "name": "role", "nodeType": "VariableDeclaration", - "scope": 1180, - "src": "738:17:8", + "scope": 1176, + "src": "799:17:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1090_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 1158, + "id": 1154, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1094, - "src": "738:4:8", + "referencedDeclaration": 1090, + "src": "799:4:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$1094_storage_ptr", + "typeIdentifier": "t_struct$_Role_$1090_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -15866,11 +15721,11 @@ }, { "constant": false, - "id": 1161, + "id": 1157, "name": "account", "nodeType": "VariableDeclaration", - "scope": 1180, - "src": "757:15:8", + "scope": 1176, + "src": "818:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15878,10 +15733,11 @@ "typeString": "address" }, "typeName": { - "id": 1160, + "id": 1156, "name": "address", "nodeType": "ElementaryTypeName", - "src": "757:7:8", + "src": "818:7:8", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15891,20 +15747,19 @@ "visibility": "internal" } ], - "src": "737:36:8" + "src": "798:36:8" }, - "payable": false, "returnParameters": { - "id": 1165, + "id": 1161, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1164, + "id": 1160, "name": "", "nodeType": "VariableDeclaration", - "scope": 1180, - "src": "809:4:8", + "scope": 1176, + "src": "858:4:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15912,10 +15767,10 @@ "typeString": "bool" }, "typeName": { - "id": 1163, + "id": 1159, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "809:4:8", + "src": "858:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -15925,20 +15780,20 @@ "visibility": "internal" } ], - "src": "808:6:8" + "src": "857:6:8" }, - "scope": 1181, - "src": "725:166:8", + "scope": 1177, + "src": "786:162:8", "stateMutability": "view", "superFunction": null, "visibility": "internal" } ], - "scope": 1182, - "src": "109:784:8" + "scope": 1178, + "src": "108:842:8" } ], - "src": "0:894:8" + "src": "0:951:8" }, "id": 8 }, @@ -15947,41 +15802,41 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "exportedSymbols": { "SafeMath": [ - 1309 + 1305 ] }, - "id": 1310, + "id": 1306, "nodeType": "SourceUnit", "nodes": [ { - "id": 1183, + "id": 1179, "literals": [ "solidity", "^", - "0.4", - ".24" + "0.5", + ".0" ], "nodeType": "PragmaDirective", - "src": "0:24:9" + "src": "0:23:9" }, { "baseContracts": [], "contractDependencies": [], "contractKind": "library", - "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", + "documentation": "@title SafeMath\n@dev Unsigned math operations with safety checks that revert on error", "fullyImplemented": true, - "id": 1309, + "id": 1305, "linearizedBaseContracts": [ - 1309 + 1305 ], "name": "SafeMath", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1215, + "id": 1211, "nodeType": "Block", - "src": "271:314:9", + "src": "296:354:9", "statements": [ { "condition": { @@ -15990,19 +15845,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1194, + "id": 1190, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1192, + "id": 1188, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1185, - "src": "486:1:9", + "referencedDeclaration": 1181, + "src": "527:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16013,14 +15868,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1193, + "id": 1189, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "491:1:9", + "src": "532:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -16028,33 +15883,33 @@ }, "value": "0" }, - "src": "486:6:9", + "src": "527:6:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1198, + "id": 1194, "nodeType": "IfStatement", - "src": "482:35:9", + "src": "523:45:9", "trueBody": { - "id": 1197, + "id": 1193, "nodeType": "Block", - "src": "494:23:9", + "src": "535:33:9", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "30", - "id": 1195, + "id": 1191, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "509:1:9", + "src": "556:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -16062,26 +15917,26 @@ }, "value": "0" }, - "functionReturnParameters": 1191, - "id": 1196, + "functionReturnParameters": 1187, + "id": 1192, "nodeType": "Return", - "src": "502:8:9" + "src": "549:8:9" } ] } }, { "assignments": [ - 1200 + 1196 ], "declarations": [ { "constant": false, - "id": 1200, + "id": 1196, "name": "c", "nodeType": "VariableDeclaration", - "scope": 1216, - "src": "523:9:9", + "scope": 1211, + "src": "578:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16089,10 +15944,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1199, + "id": 1195, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "523:7:9", + "src": "578:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16102,26 +15957,26 @@ "visibility": "internal" } ], - "id": 1204, + "id": 1200, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1203, + "id": 1199, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1201, + "id": 1197, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1185, - "src": "535:1:9", + "referencedDeclaration": 1181, + "src": "590:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16131,25 +15986,25 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 1202, + "id": 1198, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1187, - "src": "539:1:9", + "referencedDeclaration": 1183, + "src": "594:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "535:5:9", + "src": "590:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "523:17:9" + "src": "578:17:9" }, { "expression": { @@ -16161,7 +16016,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1210, + "id": 1206, "isConstant": false, "isLValue": false, "isPure": false, @@ -16172,19 +16027,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1208, + "id": 1204, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1206, + "id": 1202, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1200, - "src": "554:1:9", + "referencedDeclaration": 1196, + "src": "613:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16194,18 +16049,18 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 1207, + "id": 1203, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1185, - "src": "558:1:9", + "referencedDeclaration": 1181, + "src": "617:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "554:5:9", + "src": "613:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16215,18 +16070,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1209, + "id": 1205, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1187, - "src": "563:1:9", + "referencedDeclaration": 1183, + "src": "622:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "554:10:9", + "src": "613:10:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -16240,21 +16095,21 @@ "typeString": "bool" } ], - "id": 1205, + "id": 1201, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "546:7:9", + "referencedDeclaration": 1537, + "src": "605:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1211, + "id": 1207, "isConstant": false, "isLValue": false, "isPure": false, @@ -16262,56 +16117,55 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "546:19:9", + "src": "605:19:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1212, + "id": 1208, "nodeType": "ExpressionStatement", - "src": "546:19:9" + "src": "605:19:9" }, { "expression": { "argumentTypes": null, - "id": 1213, + "id": 1209, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1200, - "src": "579:1:9", + "referencedDeclaration": 1196, + "src": "642:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1191, - "id": 1214, + "functionReturnParameters": 1187, + "id": 1210, "nodeType": "Return", - "src": "572:8:9" + "src": "635:8:9" } ] }, - "documentation": "@dev Multiplies two numbers, reverts on overflow.", - "id": 1216, + "documentation": "@dev Multiplies two unsigned integers, reverts on overflow.", + "id": 1212, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "mul", "nodeType": "FunctionDefinition", "parameters": { - "id": 1188, + "id": 1184, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1185, + "id": 1181, "name": "a", "nodeType": "VariableDeclaration", - "scope": 1216, - "src": "217:9:9", + "scope": 1212, + "src": "242:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16319,10 +16173,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1184, + "id": 1180, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "217:7:9", + "src": "242:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16333,11 +16187,11 @@ }, { "constant": false, - "id": 1187, + "id": 1183, "name": "b", "nodeType": "VariableDeclaration", - "scope": 1216, - "src": "228:9:9", + "scope": 1212, + "src": "253:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16345,10 +16199,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1186, + "id": 1182, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "228:7:9", + "src": "253:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16358,20 +16212,19 @@ "visibility": "internal" } ], - "src": "216:22:9" + "src": "241:22:9" }, - "payable": false, "returnParameters": { - "id": 1191, + "id": 1187, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1190, + "id": 1186, "name": "", "nodeType": "VariableDeclaration", - "scope": 1216, - "src": "262:7:9", + "scope": 1212, + "src": "287:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16379,10 +16232,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1189, + "id": 1185, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "262:7:9", + "src": "287:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16392,19 +16245,19 @@ "visibility": "internal" } ], - "src": "261:9:9" + "src": "286:9:9" }, - "scope": 1309, - "src": "204:381:9", + "scope": 1305, + "src": "229:421:9", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1239, + "id": 1235, "nodeType": "Block", - "src": "762:203:9", + "src": "845:229:9", "statements": [ { "expression": { @@ -16416,19 +16269,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1228, + "id": 1224, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1226, + "id": 1222, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1220, - "src": "776:1:9", + "referencedDeclaration": 1216, + "src": "929:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16439,14 +16292,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1227, + "id": 1223, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "780:1:9", + "src": "933:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -16454,7 +16307,7 @@ }, "value": "0" }, - "src": "776:5:9", + "src": "929:5:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -16468,21 +16321,21 @@ "typeString": "bool" } ], - "id": 1225, + "id": 1221, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "768:7:9", + "referencedDeclaration": 1537, + "src": "921:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1229, + "id": 1225, "isConstant": false, "isLValue": false, "isPure": false, @@ -16490,28 +16343,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "768:14:9", + "src": "921:14:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1230, + "id": 1226, "nodeType": "ExpressionStatement", - "src": "768:14:9" + "src": "921:14:9" }, { "assignments": [ - 1232 + 1228 ], "declarations": [ { "constant": false, - "id": 1232, + "id": 1228, "name": "c", "nodeType": "VariableDeclaration", - "scope": 1240, - "src": "846:9:9", + "scope": 1235, + "src": "945:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16519,10 +16372,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1231, + "id": 1227, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "846:7:9", + "src": "945:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16532,26 +16385,26 @@ "visibility": "internal" } ], - "id": 1236, + "id": 1232, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1235, + "id": 1231, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1233, + "id": 1229, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1218, - "src": "858:1:9", + "referencedDeclaration": 1214, + "src": "957:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16561,66 +16414,65 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 1234, + "id": 1230, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1220, - "src": "862:1:9", + "referencedDeclaration": 1216, + "src": "961:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "858:5:9", + "src": "957:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "846:17:9" + "src": "945:17:9" }, { "expression": { "argumentTypes": null, - "id": 1237, + "id": 1233, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1232, - "src": "959:1:9", + "referencedDeclaration": 1228, + "src": "1066:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1224, - "id": 1238, + "functionReturnParameters": 1220, + "id": 1234, "nodeType": "Return", - "src": "952:8:9" + "src": "1059:8:9" } ] }, - "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", - "id": 1240, + "documentation": "@dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.", + "id": 1236, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "div", "nodeType": "FunctionDefinition", "parameters": { - "id": 1221, + "id": 1217, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1218, + "id": 1214, "name": "a", "nodeType": "VariableDeclaration", - "scope": 1240, - "src": "708:9:9", + "scope": 1236, + "src": "791:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16628,10 +16480,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1217, + "id": 1213, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "708:7:9", + "src": "791:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16642,11 +16494,11 @@ }, { "constant": false, - "id": 1220, + "id": 1216, "name": "b", "nodeType": "VariableDeclaration", - "scope": 1240, - "src": "719:9:9", + "scope": 1236, + "src": "802:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16654,10 +16506,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1219, + "id": 1215, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "719:7:9", + "src": "802:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16667,20 +16519,19 @@ "visibility": "internal" } ], - "src": "707:22:9" + "src": "790:22:9" }, - "payable": false, "returnParameters": { - "id": 1224, + "id": 1220, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1223, + "id": 1219, "name": "", "nodeType": "VariableDeclaration", - "scope": 1240, - "src": "753:7:9", + "scope": 1236, + "src": "836:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16688,10 +16539,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1222, + "id": 1218, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "753:7:9", + "src": "836:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16701,19 +16552,19 @@ "visibility": "internal" } ], - "src": "752:9:9" + "src": "835:9:9" }, - "scope": 1309, - "src": "695:270:9", + "scope": 1305, + "src": "778:296:9", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1263, + "id": 1259, "nodeType": "Block", - "src": "1145:64:9", + "src": "1272:78:9", "statements": [ { "expression": { @@ -16725,19 +16576,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1252, + "id": 1248, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1250, + "id": 1246, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1244, - "src": "1159:1:9", + "referencedDeclaration": 1240, + "src": "1290:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16747,18 +16598,18 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 1251, + "id": 1247, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1242, - "src": "1164:1:9", + "referencedDeclaration": 1238, + "src": "1295:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1159:6:9", + "src": "1290:6:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -16772,21 +16623,21 @@ "typeString": "bool" } ], - "id": 1249, + "id": 1245, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "1151:7:9", + "referencedDeclaration": 1537, + "src": "1282:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1253, + "id": 1249, "isConstant": false, "isLValue": false, "isPure": false, @@ -16794,28 +16645,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1151:15:9", + "src": "1282:15:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1254, + "id": 1250, "nodeType": "ExpressionStatement", - "src": "1151:15:9" + "src": "1282:15:9" }, { "assignments": [ - 1256 + 1252 ], "declarations": [ { "constant": false, - "id": 1256, + "id": 1252, "name": "c", "nodeType": "VariableDeclaration", - "scope": 1264, - "src": "1172:9:9", + "scope": 1259, + "src": "1307:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16823,10 +16674,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1255, + "id": 1251, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1172:7:9", + "src": "1307:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16836,26 +16687,26 @@ "visibility": "internal" } ], - "id": 1260, + "id": 1256, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1259, + "id": 1255, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1257, + "id": 1253, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1242, - "src": "1184:1:9", + "referencedDeclaration": 1238, + "src": "1319:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16865,66 +16716,65 @@ "operator": "-", "rightExpression": { "argumentTypes": null, - "id": 1258, + "id": 1254, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1244, - "src": "1188:1:9", + "referencedDeclaration": 1240, + "src": "1323:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1184:5:9", + "src": "1319:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1172:17:9" + "src": "1307:17:9" }, { "expression": { "argumentTypes": null, - "id": 1261, + "id": 1257, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1256, - "src": "1203:1:9", + "referencedDeclaration": 1252, + "src": "1342:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1248, - "id": 1262, + "functionReturnParameters": 1244, + "id": 1258, "nodeType": "Return", - "src": "1196:8:9" + "src": "1335:8:9" } ] }, - "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", - "id": 1264, + "documentation": "@dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).", + "id": 1260, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "sub", "nodeType": "FunctionDefinition", "parameters": { - "id": 1245, + "id": 1241, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1242, + "id": 1238, "name": "a", "nodeType": "VariableDeclaration", - "scope": 1264, - "src": "1091:9:9", + "scope": 1260, + "src": "1218:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16932,10 +16782,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1241, + "id": 1237, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1091:7:9", + "src": "1218:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16946,11 +16796,11 @@ }, { "constant": false, - "id": 1244, + "id": 1240, "name": "b", "nodeType": "VariableDeclaration", - "scope": 1264, - "src": "1102:9:9", + "scope": 1260, + "src": "1229:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16958,10 +16808,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1243, + "id": 1239, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1102:7:9", + "src": "1229:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16971,20 +16821,19 @@ "visibility": "internal" } ], - "src": "1090:22:9" + "src": "1217:22:9" }, - "payable": false, "returnParameters": { - "id": 1248, + "id": 1244, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1247, + "id": 1243, "name": "", "nodeType": "VariableDeclaration", - "scope": 1264, - "src": "1136:7:9", + "scope": 1260, + "src": "1263:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16992,10 +16841,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1246, + "id": 1242, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1136:7:9", + "src": "1263:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -17005,32 +16854,32 @@ "visibility": "internal" } ], - "src": "1135:9:9" + "src": "1262:9:9" }, - "scope": 1309, - "src": "1078:131:9", + "scope": 1305, + "src": "1205:145:9", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1287, + "id": 1283, "nodeType": "Block", - "src": "1339:64:9", + "src": "1498:78:9", "statements": [ { "assignments": [ - 1274 + 1270 ], "declarations": [ { "constant": false, - "id": 1274, + "id": 1270, "name": "c", "nodeType": "VariableDeclaration", - "scope": 1288, - "src": "1345:9:9", + "scope": 1283, + "src": "1508:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -17038,10 +16887,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1273, + "id": 1269, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1345:7:9", + "src": "1508:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -17051,26 +16900,26 @@ "visibility": "internal" } ], - "id": 1278, + "id": 1274, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1277, + "id": 1273, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1275, + "id": 1271, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1266, - "src": "1357:1:9", + "referencedDeclaration": 1262, + "src": "1520:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -17080,25 +16929,25 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 1276, + "id": 1272, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1268, - "src": "1361:1:9", + "referencedDeclaration": 1264, + "src": "1524:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1357:5:9", + "src": "1520:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1345:17:9" + "src": "1508:17:9" }, { "expression": { @@ -17110,19 +16959,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1282, + "id": 1278, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1280, + "id": 1276, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1274, - "src": "1376:1:9", + "referencedDeclaration": 1270, + "src": "1543:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -17132,18 +16981,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 1281, + "id": 1277, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1266, - "src": "1381:1:9", + "referencedDeclaration": 1262, + "src": "1548:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1376:6:9", + "src": "1543:6:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -17157,21 +17006,21 @@ "typeString": "bool" } ], - "id": 1279, + "id": 1275, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "1368:7:9", + "referencedDeclaration": 1537, + "src": "1535:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1283, + "id": 1279, "isConstant": false, "isLValue": false, "isPure": false, @@ -17179,56 +17028,55 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1368:15:9", + "src": "1535:15:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1284, + "id": 1280, "nodeType": "ExpressionStatement", - "src": "1368:15:9" + "src": "1535:15:9" }, { "expression": { "argumentTypes": null, - "id": 1285, + "id": 1281, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1274, - "src": "1397:1:9", + "referencedDeclaration": 1270, + "src": "1568:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1272, - "id": 1286, + "functionReturnParameters": 1268, + "id": 1282, "nodeType": "Return", - "src": "1390:8:9" + "src": "1561:8:9" } ] }, - "documentation": "@dev Adds two numbers, reverts on overflow.", - "id": 1288, + "documentation": "@dev Adds two unsigned integers, reverts on overflow.", + "id": 1284, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 1269, + "id": 1265, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1266, + "id": 1262, "name": "a", "nodeType": "VariableDeclaration", - "scope": 1288, - "src": "1285:9:9", + "scope": 1284, + "src": "1444:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -17236,10 +17084,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1265, + "id": 1261, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1285:7:9", + "src": "1444:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -17250,11 +17098,11 @@ }, { "constant": false, - "id": 1268, + "id": 1264, "name": "b", "nodeType": "VariableDeclaration", - "scope": 1288, - "src": "1296:9:9", + "scope": 1284, + "src": "1455:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -17262,10 +17110,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1267, + "id": 1263, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1296:7:9", + "src": "1455:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -17275,20 +17123,19 @@ "visibility": "internal" } ], - "src": "1284:22:9" + "src": "1443:22:9" }, - "payable": false, "returnParameters": { - "id": 1272, + "id": 1268, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1271, + "id": 1267, "name": "", "nodeType": "VariableDeclaration", - "scope": 1288, - "src": "1330:7:9", + "scope": 1284, + "src": "1489:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -17296,10 +17143,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1270, + "id": 1266, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1330:7:9", + "src": "1489:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -17309,19 +17156,19 @@ "visibility": "internal" } ], - "src": "1329:9:9" + "src": "1488:9:9" }, - "scope": 1309, - "src": "1272:131:9", + "scope": 1305, + "src": "1431:145:9", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1307, + "id": 1303, "nodeType": "Block", - "src": "1602:44:9", + "src": "1795:54:9", "statements": [ { "expression": { @@ -17333,19 +17180,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1300, + "id": 1296, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1298, + "id": 1294, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1292, - "src": "1616:1:9", + "referencedDeclaration": 1288, + "src": "1813:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -17356,14 +17203,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1299, + "id": 1295, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1621:1:9", + "src": "1818:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -17371,7 +17218,7 @@ }, "value": "0" }, - "src": "1616:6:9", + "src": "1813:6:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -17385,21 +17232,21 @@ "typeString": "bool" } ], - "id": 1297, + "id": 1293, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "1608:7:9", + "referencedDeclaration": 1537, + "src": "1805:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1301, + "id": 1297, "isConstant": false, "isLValue": false, "isPure": false, @@ -17407,15 +17254,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1608:15:9", + "src": "1805:15:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1302, + "id": 1298, "nodeType": "ExpressionStatement", - "src": "1608:15:9" + "src": "1805:15:9" }, { "expression": { @@ -17424,19 +17271,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1305, + "id": 1301, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1303, + "id": 1299, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1290, - "src": "1636:1:9", + "referencedDeclaration": 1286, + "src": "1837:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -17446,49 +17293,48 @@ "operator": "%", "rightExpression": { "argumentTypes": null, - "id": 1304, + "id": 1300, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1292, - "src": "1640:1:9", + "referencedDeclaration": 1288, + "src": "1841:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1636:5:9", + "src": "1837:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1296, - "id": 1306, + "functionReturnParameters": 1292, + "id": 1302, "nodeType": "Return", - "src": "1629:12:9" + "src": "1830:12:9" } ] }, - "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", - "id": 1308, + "documentation": "@dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", + "id": 1304, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "mod", "nodeType": "FunctionDefinition", "parameters": { - "id": 1293, + "id": 1289, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1290, + "id": 1286, "name": "a", "nodeType": "VariableDeclaration", - "scope": 1308, - "src": "1548:9:9", + "scope": 1304, + "src": "1741:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -17496,10 +17342,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1289, + "id": 1285, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1548:7:9", + "src": "1741:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -17510,11 +17356,11 @@ }, { "constant": false, - "id": 1292, + "id": 1288, "name": "b", "nodeType": "VariableDeclaration", - "scope": 1308, - "src": "1559:9:9", + "scope": 1304, + "src": "1752:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -17522,10 +17368,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1291, + "id": 1287, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1559:7:9", + "src": "1752:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -17535,20 +17381,19 @@ "visibility": "internal" } ], - "src": "1547:22:9" + "src": "1740:22:9" }, - "payable": false, "returnParameters": { - "id": 1296, + "id": 1292, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1295, + "id": 1291, "name": "", "nodeType": "VariableDeclaration", - "scope": 1308, - "src": "1593:7:9", + "scope": 1304, + "src": "1786:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -17556,10 +17401,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1294, + "id": 1290, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1593:7:9", + "src": "1786:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -17569,20 +17414,20 @@ "visibility": "internal" } ], - "src": "1592:9:9" + "src": "1785:9:9" }, - "scope": 1309, - "src": "1535:111:9", + "scope": 1305, + "src": "1728:121:9", "stateMutability": "pure", "superFunction": null, "visibility": "internal" } ], - "scope": 1310, - "src": "117:1531:9" + "scope": 1306, + "src": "125:1726:9" } ], - "src": "0:1649:9" + "src": "0:1852:9" }, "id": 9 }, @@ -17591,22 +17436,22 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "exportedSymbols": { "IERC20": [ - 1378 + 1374 ] }, - "id": 1379, + "id": 1375, "nodeType": "SourceUnit", "nodes": [ { - "id": 1311, + "id": 1307, "literals": [ "solidity", "^", - "0.4", - ".24" + "0.5", + ".0" ], "nodeType": "PragmaDirective", - "src": "0:24:10" + "src": "0:23:10" }, { "baseContracts": [], @@ -17614,9 +17459,9 @@ "contractKind": "interface", "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", "fullyImplemented": false, - "id": 1378, + "id": 1374, "linearizedBaseContracts": [ - 1378 + 1374 ], "name": "IERC20", "nodeType": "ContractDefinition", @@ -17626,18 +17471,70 @@ "documentation": null, "id": 1316, "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], - "name": "totalSupply", + "name": "transfer", "nodeType": "FunctionDefinition", "parameters": { "id": 1312, "nodeType": "ParameterList", - "parameters": [], - "src": "156:2:10" + "parameters": [ + { + "constant": false, + "id": 1309, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1316, + "src": "155:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1308, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "155:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1311, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1316, + "src": "167:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1310, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "167:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "154:27:10" }, - "payable": false, "returnParameters": { "id": 1315, "nodeType": "ParameterList", @@ -17648,56 +17545,55 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 1316, - "src": "182:7:10", + "src": "200:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" }, "typeName": { "id": 1313, - "name": "uint256", + "name": "bool", "nodeType": "ElementaryTypeName", - "src": "182:7:10", + "src": "200:4:10", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, "value": null, "visibility": "internal" } ], - "src": "181:9:10" + "src": "199:6:10" }, - "scope": 1378, - "src": "136:55:10", - "stateMutability": "view", + "scope": 1374, + "src": "137:69:10", + "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, { "body": null, "documentation": null, - "id": 1323, + "id": 1325, "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], - "name": "balanceOf", + "name": "approve", "nodeType": "FunctionDefinition", "parameters": { - "id": 1319, + "id": 1321, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1318, - "name": "who", + "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1323, - "src": "214:11:10", + "scope": 1325, + "src": "229:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -17708,90 +17604,8 @@ "id": 1317, "name": "address", "nodeType": "ElementaryTypeName", - "src": "214:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "213:13:10" - }, - "payable": false, - "returnParameters": { - "id": 1322, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1321, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1323, - "src": "250:7:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1320, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "250:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "249:9:10" - }, - "scope": 1378, - "src": "195:64:10", - "stateMutability": "view", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 1332, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "allowance", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1328, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1325, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 1332, - "src": "282:13:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1324, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "282:7:10", + "src": "229:7:10", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -17802,11 +17616,92 @@ }, { "constant": false, - "id": 1327, - "name": "spender", + "id": 1320, + "name": "value", "nodeType": "VariableDeclaration", - "scope": 1332, - "src": "297:15:10", + "scope": 1325, + "src": "246:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1319, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "246:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "228:32:10" + }, + "returnParameters": { + "id": 1324, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1323, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1325, + "src": "279:4:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1322, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "279:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "278:6:10" + }, + "scope": 1374, + "src": "212:73:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1336, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1332, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1327, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 1336, + "src": "313:12:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -17817,90 +17712,8 @@ "id": 1326, "name": "address", "nodeType": "ElementaryTypeName", - "src": "297:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "281:32:10" - }, - "payable": false, - "returnParameters": { - "id": 1331, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1330, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1332, - "src": "341:7:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1329, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "341:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "340:9:10" - }, - "scope": 1378, - "src": "263:87:10", - "stateMutability": "view", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 1341, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "transfer", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1337, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1334, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1341, - "src": "372:10:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1333, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "372:7:10", + "src": "313:7:10", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -17911,11 +17724,38 @@ }, { "constant": false, - "id": 1336, + "id": 1329, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1336, + "src": "327:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1328, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "327:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1331, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1341, - "src": "384:13:10", + "scope": 1336, + "src": "339:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -17923,10 +17763,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1335, + "id": 1330, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "384:7:10", + "src": "339:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -17936,9 +17776,62 @@ "visibility": "internal" } ], - "src": "371:27:10" + "src": "312:41:10" + }, + "returnParameters": { + "id": 1335, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1334, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1336, + "src": "372:4:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1333, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "372:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "371:6:10" + }, + "scope": 1374, + "src": "291:87:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1341, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1337, + "nodeType": "ParameterList", + "parameters": [], + "src": "404:2:10" }, - "payable": false, "returnParameters": { "id": 1340, "nodeType": "ParameterList", @@ -17949,56 +17842,55 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 1341, - "src": "417:4:10", + "src": "430:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { "id": 1338, - "name": "bool", + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "417:4:10", + "src": "430:7:10", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], - "src": "416:6:10" + "src": "429:9:10" }, - "scope": 1378, - "src": "354:69:10", - "stateMutability": "nonpayable", + "scope": 1374, + "src": "384:55:10", + "stateMutability": "view", "superFunction": null, "visibility": "external" }, { "body": null, "documentation": null, - "id": 1350, + "id": 1348, "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], - "name": "approve", + "name": "balanceOf", "nodeType": "FunctionDefinition", "parameters": { - "id": 1346, + "id": 1344, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1343, - "name": "spender", + "name": "who", "nodeType": "VariableDeclaration", - "scope": 1350, - "src": "444:15:10", + "scope": 1348, + "src": "464:11:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -18009,7 +17901,90 @@ "id": 1342, "name": "address", "nodeType": "ElementaryTypeName", - "src": "444:7:10", + "src": "464:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "463:13:10" + }, + "returnParameters": { + "id": 1347, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1346, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1348, + "src": "500:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1345, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "500:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "499:9:10" + }, + "scope": 1374, + "src": "445:64:10", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1357, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1353, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1350, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1357, + "src": "534:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1349, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "534:7:10", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -18018,96 +17993,13 @@ "value": null, "visibility": "internal" }, - { - "constant": false, - "id": 1345, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1350, - "src": "461:13:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1344, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "461:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "443:32:10" - }, - "payable": false, - "returnParameters": { - "id": 1349, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1348, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1350, - "src": "498:4:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1347, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "498:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "497:6:10" - }, - "scope": 1378, - "src": "427:77:10", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 1361, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "transferFrom", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1357, - "nodeType": "ParameterList", - "parameters": [ { "constant": false, "id": 1352, - "name": "from", + "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1361, - "src": "530:12:10", + "scope": 1357, + "src": "549:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -18118,7 +18010,8 @@ "id": 1351, "name": "address", "nodeType": "ElementaryTypeName", - "src": "530:7:10", + "src": "549:7:10", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -18126,40 +18019,21 @@ }, "value": null, "visibility": "internal" - }, + } + ], + "src": "533:32:10" + }, + "returnParameters": { + "id": 1356, + "nodeType": "ParameterList", + "parameters": [ { "constant": false, - "id": 1354, - "name": "to", + "id": 1355, + "name": "", "nodeType": "VariableDeclaration", - "scope": 1361, - "src": "544:10:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1353, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "544:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1356, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1361, - "src": "556:13:10", + "scope": 1357, + "src": "589:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -18167,10 +18041,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1355, + "id": 1354, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "556:7:10", + "src": "589:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -18180,66 +18054,32 @@ "visibility": "internal" } ], - "src": "529:41:10" + "src": "588:9:10" }, - "payable": false, - "returnParameters": { - "id": 1360, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1359, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1361, - "src": "593:4:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1358, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "593:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "592:6:10" - }, - "scope": 1378, - "src": "508:91:10", - "stateMutability": "nonpayable", + "scope": 1374, + "src": "515:83:10", + "stateMutability": "view", "superFunction": null, "visibility": "external" }, { "anonymous": false, "documentation": null, - "id": 1369, + "id": 1365, "name": "Transfer", "nodeType": "EventDefinition", "parameters": { - "id": 1368, + "id": 1364, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1363, + "id": 1359, "indexed": true, "name": "from", "nodeType": "VariableDeclaration", - "scope": 1369, - "src": "623:20:10", + "scope": 1365, + "src": "619:20:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -18247,10 +18087,11 @@ "typeString": "address" }, "typeName": { - "id": 1362, + "id": 1358, "name": "address", "nodeType": "ElementaryTypeName", - "src": "623:7:10", + "src": "619:7:10", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -18261,12 +18102,12 @@ }, { "constant": false, - "id": 1365, + "id": 1361, "indexed": true, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1369, - "src": "649:18:10", + "scope": 1365, + "src": "641:18:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -18274,10 +18115,11 @@ "typeString": "address" }, "typeName": { - "id": 1364, + "id": 1360, "name": "address", "nodeType": "ElementaryTypeName", - "src": "649:7:10", + "src": "641:7:10", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -18288,12 +18130,12 @@ }, { "constant": false, - "id": 1367, + "id": 1363, "indexed": false, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1369, - "src": "673:13:10", + "scope": 1365, + "src": "661:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -18301,10 +18143,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1366, + "id": 1362, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "673:7:10", + "src": "661:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -18314,28 +18156,28 @@ "visibility": "internal" } ], - "src": "617:73:10" + "src": "618:57:10" }, - "src": "603:88:10" + "src": "604:72:10" }, { "anonymous": false, "documentation": null, - "id": 1377, + "id": 1373, "name": "Approval", "nodeType": "EventDefinition", "parameters": { - "id": 1376, + "id": 1372, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1371, + "id": 1367, "indexed": true, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1377, - "src": "715:21:10", + "scope": 1373, + "src": "697:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -18343,10 +18185,11 @@ "typeString": "address" }, "typeName": { - "id": 1370, + "id": 1366, "name": "address", "nodeType": "ElementaryTypeName", - "src": "715:7:10", + "src": "697:7:10", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -18357,12 +18200,12 @@ }, { "constant": false, - "id": 1373, + "id": 1369, "indexed": true, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1377, - "src": "742:23:10", + "scope": 1373, + "src": "720:23:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -18370,10 +18213,11 @@ "typeString": "address" }, "typeName": { - "id": 1372, + "id": 1368, "name": "address", "nodeType": "ElementaryTypeName", - "src": "742:7:10", + "src": "720:7:10", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -18384,12 +18228,12 @@ }, { "constant": false, - "id": 1375, + "id": 1371, "indexed": false, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1377, - "src": "771:13:10", + "scope": 1373, + "src": "745:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -18397,10 +18241,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1374, + "id": 1370, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "771:7:10", + "src": "745:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -18410,16 +18254,16 @@ "visibility": "internal" } ], - "src": "709:79:10" + "src": "696:63:10" }, - "src": "695:94:10" + "src": "682:78:10" } ], - "scope": 1379, - "src": "115:676:10" + "scope": 1375, + "src": "114:648:10" } ], - "src": "0:792:10" + "src": "0:763:10" }, "id": 10 }, @@ -18428,42 +18272,42 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "exportedSymbols": { "SafeERC20": [ - 1522 + 1519 ] }, - "id": 1523, + "id": 1520, "nodeType": "SourceUnit", "nodes": [ { - "id": 1380, + "id": 1376, "literals": [ "solidity", "^", - "0.4", - ".24" + "0.5", + ".0" ], "nodeType": "PragmaDirective", - "src": "0:24:11" + "src": "0:23:11" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "./IERC20.sol", - "id": 1381, + "id": 1377, "nodeType": "ImportDirective", - "scope": 1523, - "sourceUnit": 1379, - "src": "26:22:11", + "scope": 1520, + "sourceUnit": 1375, + "src": "25:22:11", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "file": "../../math/SafeMath.sol", - "id": 1382, + "id": 1378, "nodeType": "ImportDirective", - "scope": 1523, - "sourceUnit": 1310, - "src": "49:33:11", + "scope": 1520, + "sourceUnit": 1306, + "src": "48:33:11", "symbolAliases": [], "unitAlias": "" }, @@ -18473,31 +18317,31 @@ "contractKind": "library", "documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.", "fullyImplemented": true, - "id": 1522, + "id": 1519, "linearizedBaseContracts": [ - 1522 + 1519 ], "name": "SafeERC20", "nodeType": "ContractDefinition", "nodes": [ { - "id": 1385, + "id": 1381, "libraryName": { "contractScope": null, - "id": 1383, + "id": 1379, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1309, + "referencedDeclaration": 1305, "src": "382:8:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$1309", + "typeIdentifier": "t_contract$_SafeMath_$1305", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", "src": "376:27:11", "typeName": { - "id": 1384, + "id": 1380, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "395:7:11", @@ -18509,9 +18353,9 @@ }, { "body": { - "id": 1402, + "id": 1398, "nodeType": "Block", - "src": "501:45:11", + "src": "481:51:11", "statements": [ { "expression": { @@ -18522,12 +18366,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1397, + "id": 1393, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1389, - "src": "530:2:11", + "referencedDeclaration": 1385, + "src": "514:2:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -18535,12 +18379,12 @@ }, { "argumentTypes": null, - "id": 1398, + "id": 1394, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1391, - "src": "534:5:11", + "referencedDeclaration": 1387, + "src": "518:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -18560,32 +18404,32 @@ ], "expression": { "argumentTypes": null, - "id": 1395, + "id": 1391, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1387, - "src": "515:5:11", + "referencedDeclaration": 1383, + "src": "499:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" } }, - "id": 1396, + "id": 1392, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1341, - "src": "515:14:11", + "referencedDeclaration": 1316, + "src": "499:14:11", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1399, + "id": 1395, "isConstant": false, "isLValue": false, "isPure": false, @@ -18593,7 +18437,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "515:25:11", + "src": "499:25:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -18607,21 +18451,21 @@ "typeString": "bool" } ], - "id": 1394, + "id": 1390, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "507:7:11", + "referencedDeclaration": 1537, + "src": "491:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1400, + "id": 1396, "isConstant": false, "isLValue": false, "isPure": false, @@ -18629,52 +18473,51 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "507:34:11", + "src": "491:34:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1401, + "id": 1397, "nodeType": "ExpressionStatement", - "src": "507:34:11" + "src": "491:34:11" } ] }, "documentation": null, - "id": 1403, + "id": 1399, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "safeTransfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 1392, + "id": 1388, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1387, + "id": 1383, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1403, - "src": "434:12:11", + "scope": 1399, + "src": "431:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1386, + "id": 1382, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1378, - "src": "434:6:11", + "referencedDeclaration": 1374, + "src": "431:6:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" } }, @@ -18683,11 +18526,11 @@ }, { "constant": false, - "id": 1389, + "id": 1385, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1403, - "src": "452:10:11", + "scope": 1399, + "src": "445:10:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -18695,10 +18538,11 @@ "typeString": "address" }, "typeName": { - "id": 1388, + "id": 1384, "name": "address", "nodeType": "ElementaryTypeName", - "src": "452:7:11", + "src": "445:7:11", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -18709,11 +18553,11 @@ }, { "constant": false, - "id": 1391, + "id": 1387, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1403, - "src": "468:13:11", + "scope": 1399, + "src": "457:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -18721,10 +18565,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1390, + "id": 1386, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "468:7:11", + "src": "457:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -18734,26 +18578,25 @@ "visibility": "internal" } ], - "src": "428:57:11" + "src": "430:41:11" }, - "payable": false, "returnParameters": { - "id": 1393, + "id": 1389, "nodeType": "ParameterList", "parameters": [], - "src": "501:0:11" + "src": "481:0:11" }, - "scope": 1522, - "src": "407:139:11", + "scope": 1519, + "src": "409:123:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1423, + "id": 1419, "nodeType": "Block", - "src": "666:55:11", + "src": "628:61:11", "statements": [ { "expression": { @@ -18764,12 +18607,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1417, + "id": 1413, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1407, - "src": "699:4:11", + "referencedDeclaration": 1403, + "src": "665:4:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -18777,12 +18620,12 @@ }, { "argumentTypes": null, - "id": 1418, + "id": 1414, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1409, - "src": "705:2:11", + "referencedDeclaration": 1405, + "src": "671:2:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -18790,12 +18633,12 @@ }, { "argumentTypes": null, - "id": 1419, + "id": 1415, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1411, - "src": "709:5:11", + "referencedDeclaration": 1407, + "src": "675:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -18819,32 +18662,32 @@ ], "expression": { "argumentTypes": null, - "id": 1415, + "id": 1411, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1405, - "src": "680:5:11", + "referencedDeclaration": 1401, + "src": "646:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" } }, - "id": 1416, + "id": 1412, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", - "referencedDeclaration": 1361, - "src": "680:18:11", + "referencedDeclaration": 1336, + "src": "646:18:11", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)" } }, - "id": 1420, + "id": 1416, "isConstant": false, "isLValue": false, "isPure": false, @@ -18852,7 +18695,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "680:35:11", + "src": "646:35:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -18866,21 +18709,21 @@ "typeString": "bool" } ], - "id": 1414, + "id": 1410, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "672:7:11", + "referencedDeclaration": 1537, + "src": "638:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1421, + "id": 1417, "isConstant": false, "isLValue": false, "isPure": false, @@ -18888,117 +18731,118 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "672:44:11", + "src": "638:44:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1422, + "id": 1418, "nodeType": "ExpressionStatement", - "src": "672:44:11" + "src": "638:44:11" } ] }, "documentation": null, - "id": 1424, + "id": 1420, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "safeTransferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 1412, + "id": 1408, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1405, + "id": 1401, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1424, - "src": "581:12:11", + "scope": 1420, + "src": "564:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1404, + "id": 1400, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1378, - "src": "581:6:11", + "referencedDeclaration": 1374, + "src": "564:6:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" } }, "value": null, "visibility": "internal" }, + { + "constant": false, + "id": 1403, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 1420, + "src": "578:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1402, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "578:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1405, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1420, + "src": "592:10:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1404, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "592:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, { "constant": false, "id": 1407, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 1424, - "src": "599:12:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1406, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "599:7:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1409, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1424, - "src": "617:10:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1408, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "617:7:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1411, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1424, - "src": "633:13:11", + "scope": 1420, + "src": "604:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -19006,10 +18850,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1410, + "id": 1406, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "633:7:11", + "src": "604:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -19019,26 +18863,25 @@ "visibility": "internal" } ], - "src": "575:75:11" + "src": "563:55:11" }, - "payable": false, "returnParameters": { - "id": 1413, + "id": 1409, "nodeType": "ParameterList", "parameters": [], - "src": "666:0:11" + "src": "628:0:11" }, - "scope": 1522, - "src": "550:171:11", + "scope": 1519, + "src": "538:151:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1458, + "id": 1455, "nodeType": "Block", - "src": "823:330:11", + "src": "771:353:11", "statements": [ { "expression": { @@ -19050,7 +18893,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1447, + "id": 1444, "isConstant": false, "isLValue": false, "isPure": false, @@ -19064,19 +18907,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1436, + "id": 1432, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1434, + "id": 1430, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1430, - "src": "1045:5:11", + "referencedDeclaration": 1426, + "src": "1007:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -19087,14 +18930,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1435, + "id": 1431, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1054:1:11", + "src": "1016:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -19102,21 +18945,21 @@ }, "value": "0" }, - "src": "1045:10:11", + "src": "1007:10:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 1437, + "id": 1433, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "1044:12:11", + "src": "1006:12:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -19133,7 +18976,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1445, + "id": 1442, "isConstant": false, "isLValue": false, "isPure": false, @@ -19143,28 +18986,50 @@ "arguments": [ { "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1440, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1537, - "src": "1077:3:11", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" + "arguments": [ + { + "argumentTypes": null, + "id": 1437, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1558, + "src": "1047:4:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$1519", + "typeString": "library SafeERC20" + } } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$1519", + "typeString": "library SafeERC20" + } + ], + "id": 1436, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1039:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" }, - "id": 1441, + "id": 1438, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "typeConversion", "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1077:10:11", + "names": [], + "nodeType": "FunctionCall", + "src": "1039:13:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -19172,12 +19037,12 @@ }, { "argumentTypes": null, - "id": 1442, + "id": 1439, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1428, - "src": "1089:7:11", + "referencedDeclaration": 1424, + "src": "1054:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -19197,32 +19062,32 @@ ], "expression": { "argumentTypes": null, - "id": 1438, + "id": 1434, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1426, - "src": "1061:5:11", + "referencedDeclaration": 1422, + "src": "1023:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" } }, - "id": 1439, + "id": 1435, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 1332, - "src": "1061:15:11", + "referencedDeclaration": 1357, + "src": "1023:15:11", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1443, + "id": 1440, "isConstant": false, "isLValue": false, "isPure": false, @@ -19230,7 +19095,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1061:36:11", + "src": "1023:39:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -19241,14 +19106,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1444, + "id": 1441, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1101:1:11", + "src": "1066:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -19256,27 +19121,27 @@ }, "value": "0" }, - "src": "1061:41:11", + "src": "1023:44:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 1446, + "id": 1443, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "1060:43:11", + "src": "1022:46:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1044:59:11", + "src": "1006:62:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -19290,21 +19155,21 @@ "typeString": "bool" } ], - "id": 1433, + "id": 1429, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "1036:7:11", + "referencedDeclaration": 1537, + "src": "998:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1448, + "id": 1445, "isConstant": false, "isLValue": false, "isPure": false, @@ -19312,15 +19177,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1036:68:11", + "src": "998:71:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1449, + "id": 1446, "nodeType": "ExpressionStatement", - "src": "1036:68:11" + "src": "998:71:11" }, { "expression": { @@ -19331,12 +19196,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1453, + "id": 1450, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1428, - "src": "1132:7:11", + "referencedDeclaration": 1424, + "src": "1101:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -19344,12 +19209,12 @@ }, { "argumentTypes": null, - "id": 1454, + "id": 1451, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1430, - "src": "1141:5:11", + "referencedDeclaration": 1426, + "src": "1110:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -19369,32 +19234,32 @@ ], "expression": { "argumentTypes": null, - "id": 1451, + "id": 1448, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1426, - "src": "1118:5:11", + "referencedDeclaration": 1422, + "src": "1087:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" } }, - "id": 1452, + "id": 1449, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 1350, - "src": "1118:13:11", + "referencedDeclaration": 1325, + "src": "1087:13:11", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1455, + "id": 1452, "isConstant": false, "isLValue": false, "isPure": false, @@ -19402,7 +19267,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1118:29:11", + "src": "1087:29:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -19416,21 +19281,21 @@ "typeString": "bool" } ], - "id": 1450, + "id": 1447, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "1110:7:11", + "referencedDeclaration": 1537, + "src": "1079:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1456, + "id": 1453, "isConstant": false, "isLValue": false, "isPure": false, @@ -19438,52 +19303,51 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1110:38:11", + "src": "1079:38:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1457, + "id": 1454, "nodeType": "ExpressionStatement", - "src": "1110:38:11" + "src": "1079:38:11" } ] }, "documentation": null, - "id": 1459, + "id": 1456, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "safeApprove", "nodeType": "FunctionDefinition", "parameters": { - "id": 1431, + "id": 1427, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1426, + "id": 1422, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1459, - "src": "751:12:11", + "scope": 1456, + "src": "716:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1425, + "id": 1421, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1378, - "src": "751:6:11", + "referencedDeclaration": 1374, + "src": "716:6:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" } }, @@ -19492,11 +19356,11 @@ }, { "constant": false, - "id": 1428, + "id": 1424, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1459, - "src": "769:15:11", + "scope": 1456, + "src": "730:15:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -19504,10 +19368,11 @@ "typeString": "address" }, "typeName": { - "id": 1427, + "id": 1423, "name": "address", "nodeType": "ElementaryTypeName", - "src": "769:7:11", + "src": "730:7:11", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -19518,11 +19383,11 @@ }, { "constant": false, - "id": 1430, + "id": 1426, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1459, - "src": "790:13:11", + "scope": 1456, + "src": "747:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -19530,10 +19395,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1429, + "id": 1425, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "790:7:11", + "src": "747:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -19543,39 +19408,38 @@ "visibility": "internal" } ], - "src": "745:62:11" + "src": "715:46:11" }, - "payable": false, "returnParameters": { - "id": 1432, + "id": 1428, "nodeType": "ParameterList", "parameters": [], - "src": "823:0:11" + "src": "771:0:11" }, - "scope": 1522, - "src": "725:428:11", + "scope": 1519, + "src": "695:429:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1489, + "id": 1486, "nodeType": "Block", - "src": "1265:135:11", + "src": "1216:145:11", "statements": [ { "assignments": [ - 1469 + 1466 ], "declarations": [ { "constant": false, - "id": 1469, + "id": 1466, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 1490, - "src": "1271:20:11", + "scope": 1486, + "src": "1226:20:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -19583,10 +19447,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1468, + "id": 1465, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1271:7:11", + "src": "1226:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -19596,18 +19460,18 @@ "visibility": "internal" } ], - "id": 1480, + "id": 1477, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1478, + "id": 1475, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1465, - "src": "1338:5:11", + "referencedDeclaration": 1462, + "src": "1293:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -19629,14 +19493,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1473, + "id": 1470, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1560, - "src": "1318:4:11", + "referencedDeclaration": 1558, + "src": "1273:4:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1522", + "typeIdentifier": "t_contract$_SafeERC20_$1519", "typeString": "library SafeERC20" } } @@ -19644,24 +19508,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$1522", + "typeIdentifier": "t_contract$_SafeERC20_$1519", "typeString": "library SafeERC20" } ], - "id": 1472, + "id": 1469, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1310:7:11", + "src": "1265:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1474, + "id": 1471, "isConstant": false, "isLValue": false, "isPure": false, @@ -19669,7 +19533,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1310:13:11", + "src": "1265:13:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -19677,12 +19541,12 @@ }, { "argumentTypes": null, - "id": 1475, + "id": 1472, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1463, - "src": "1325:7:11", + "referencedDeclaration": 1460, + "src": "1280:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -19702,32 +19566,32 @@ ], "expression": { "argumentTypes": null, - "id": 1470, + "id": 1467, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1461, - "src": "1294:5:11", + "referencedDeclaration": 1458, + "src": "1249:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" } }, - "id": 1471, + "id": 1468, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 1332, - "src": "1294:15:11", + "referencedDeclaration": 1357, + "src": "1249:15:11", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1476, + "id": 1473, "isConstant": false, "isLValue": false, "isPure": false, @@ -19735,27 +19599,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1294:39:11", + "src": "1249:39:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1477, + "id": 1474, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1288, - "src": "1294:43:11", + "referencedDeclaration": 1284, + "src": "1249:43:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1479, + "id": 1476, "isConstant": false, "isLValue": false, "isPure": false, @@ -19763,14 +19627,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1294:50:11", + "src": "1249:50:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1271:73:11" + "src": "1226:73:11" }, { "expression": { @@ -19781,12 +19645,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1484, + "id": 1481, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1463, - "src": "1372:7:11", + "referencedDeclaration": 1460, + "src": "1331:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -19794,12 +19658,12 @@ }, { "argumentTypes": null, - "id": 1485, + "id": 1482, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "1381:12:11", + "referencedDeclaration": 1466, + "src": "1340:12:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -19819,32 +19683,32 @@ ], "expression": { "argumentTypes": null, - "id": 1482, + "id": 1479, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1461, - "src": "1358:5:11", + "referencedDeclaration": 1458, + "src": "1317:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" } }, - "id": 1483, + "id": 1480, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 1350, - "src": "1358:13:11", + "referencedDeclaration": 1325, + "src": "1317:13:11", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1486, + "id": 1483, "isConstant": false, "isLValue": false, "isPure": false, @@ -19852,7 +19716,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1358:36:11", + "src": "1317:36:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -19866,21 +19730,21 @@ "typeString": "bool" } ], - "id": 1481, + "id": 1478, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "1350:7:11", + "referencedDeclaration": 1537, + "src": "1309:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1487, + "id": 1484, "isConstant": false, "isLValue": false, "isPure": false, @@ -19888,52 +19752,51 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1350:45:11", + "src": "1309:45:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1488, + "id": 1485, "nodeType": "ExpressionStatement", - "src": "1350:45:11" + "src": "1309:45:11" } ] }, "documentation": null, - "id": 1490, + "id": 1487, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "safeIncreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1466, + "id": 1463, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1461, + "id": 1458, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1490, - "src": "1193:12:11", + "scope": 1487, + "src": "1161:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1460, + "id": 1457, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1378, - "src": "1193:6:11", + "referencedDeclaration": 1374, + "src": "1161:6:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" } }, @@ -19942,11 +19805,11 @@ }, { "constant": false, - "id": 1463, + "id": 1460, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1490, - "src": "1211:15:11", + "scope": 1487, + "src": "1175:15:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -19954,10 +19817,11 @@ "typeString": "address" }, "typeName": { - "id": 1462, + "id": 1459, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1211:7:11", + "src": "1175:7:11", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -19968,11 +19832,11 @@ }, { "constant": false, - "id": 1465, + "id": 1462, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1490, - "src": "1232:13:11", + "scope": 1487, + "src": "1192:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -19980,10 +19844,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1464, + "id": 1461, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1232:7:11", + "src": "1192:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -19993,39 +19857,38 @@ "visibility": "internal" } ], - "src": "1187:62:11" + "src": "1160:46:11" }, - "payable": false, "returnParameters": { - "id": 1467, + "id": 1464, "nodeType": "ParameterList", "parameters": [], - "src": "1265:0:11" + "src": "1216:0:11" }, - "scope": 1522, - "src": "1157:243:11", + "scope": 1519, + "src": "1130:231:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1520, + "id": 1517, "nodeType": "Block", - "src": "1512:135:11", + "src": "1453:145:11", "statements": [ { "assignments": [ - 1500 + 1497 ], "declarations": [ { "constant": false, - "id": 1500, + "id": 1497, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 1521, - "src": "1518:20:11", + "scope": 1517, + "src": "1463:20:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -20033,10 +19896,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1499, + "id": 1496, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1518:7:11", + "src": "1463:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -20046,18 +19909,18 @@ "visibility": "internal" } ], - "id": 1511, + "id": 1508, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1509, + "id": 1506, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1496, - "src": "1585:5:11", + "referencedDeclaration": 1493, + "src": "1530:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -20079,14 +19942,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1504, + "id": 1501, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1560, - "src": "1565:4:11", + "referencedDeclaration": 1558, + "src": "1510:4:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1522", + "typeIdentifier": "t_contract$_SafeERC20_$1519", "typeString": "library SafeERC20" } } @@ -20094,24 +19957,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$1522", + "typeIdentifier": "t_contract$_SafeERC20_$1519", "typeString": "library SafeERC20" } ], - "id": 1503, + "id": 1500, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1557:7:11", + "src": "1502:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1505, + "id": 1502, "isConstant": false, "isLValue": false, "isPure": false, @@ -20119,7 +19982,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1557:13:11", + "src": "1502:13:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -20127,12 +19990,12 @@ }, { "argumentTypes": null, - "id": 1506, + "id": 1503, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1494, - "src": "1572:7:11", + "referencedDeclaration": 1491, + "src": "1517:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -20152,32 +20015,32 @@ ], "expression": { "argumentTypes": null, - "id": 1501, + "id": 1498, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1492, - "src": "1541:5:11", + "referencedDeclaration": 1489, + "src": "1486:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" } }, - "id": 1502, + "id": 1499, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 1332, - "src": "1541:15:11", + "referencedDeclaration": 1357, + "src": "1486:15:11", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1507, + "id": 1504, "isConstant": false, "isLValue": false, "isPure": false, @@ -20185,27 +20048,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1541:39:11", + "src": "1486:39:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1508, + "id": 1505, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 1264, - "src": "1541:43:11", + "referencedDeclaration": 1260, + "src": "1486:43:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1510, + "id": 1507, "isConstant": false, "isLValue": false, "isPure": false, @@ -20213,14 +20076,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1541:50:11", + "src": "1486:50:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1518:73:11" + "src": "1463:73:11" }, { "expression": { @@ -20231,12 +20094,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1515, + "id": 1512, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1494, - "src": "1619:7:11", + "referencedDeclaration": 1491, + "src": "1568:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -20244,12 +20107,12 @@ }, { "argumentTypes": null, - "id": 1516, + "id": 1513, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1500, - "src": "1628:12:11", + "referencedDeclaration": 1497, + "src": "1577:12:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -20269,32 +20132,32 @@ ], "expression": { "argumentTypes": null, - "id": 1513, + "id": 1510, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1492, - "src": "1605:5:11", + "referencedDeclaration": 1489, + "src": "1554:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" } }, - "id": 1514, + "id": 1511, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 1350, - "src": "1605:13:11", + "referencedDeclaration": 1325, + "src": "1554:13:11", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1517, + "id": 1514, "isConstant": false, "isLValue": false, "isPure": false, @@ -20302,7 +20165,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1605:36:11", + "src": "1554:36:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -20316,21 +20179,21 @@ "typeString": "bool" } ], - "id": 1512, + "id": 1509, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1540, - 1541 + 1537, + 1538 ], - "referencedDeclaration": 1540, - "src": "1597:7:11", + "referencedDeclaration": 1537, + "src": "1546:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1518, + "id": 1515, "isConstant": false, "isLValue": false, "isPure": false, @@ -20338,52 +20201,51 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1597:45:11", + "src": "1546:45:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1519, + "id": 1516, "nodeType": "ExpressionStatement", - "src": "1597:45:11" + "src": "1546:45:11" } ] }, "documentation": null, - "id": 1521, + "id": 1518, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "safeDecreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1497, + "id": 1494, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1492, + "id": 1489, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1521, - "src": "1440:12:11", + "scope": 1518, + "src": "1398:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1491, + "id": 1488, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1378, - "src": "1440:6:11", + "referencedDeclaration": 1374, + "src": "1398:6:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1378", + "typeIdentifier": "t_contract$_IERC20_$1374", "typeString": "contract IERC20" } }, @@ -20392,11 +20254,11 @@ }, { "constant": false, - "id": 1494, + "id": 1491, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1521, - "src": "1458:15:11", + "scope": 1518, + "src": "1412:15:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -20404,10 +20266,11 @@ "typeString": "address" }, "typeName": { - "id": 1493, + "id": 1490, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1458:7:11", + "src": "1412:7:11", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -20418,11 +20281,11 @@ }, { "constant": false, - "id": 1496, + "id": 1493, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1521, - "src": "1479:13:11", + "scope": 1518, + "src": "1429:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -20430,10 +20293,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1495, + "id": 1492, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1479:7:11", + "src": "1429:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -20443,27 +20306,26 @@ "visibility": "internal" } ], - "src": "1434:62:11" + "src": "1397:46:11" }, - "payable": false, "returnParameters": { - "id": 1498, + "id": 1495, "nodeType": "ParameterList", "parameters": [], - "src": "1512:0:11" + "src": "1453:0:11" }, - "scope": 1522, - "src": "1404:243:11", + "scope": 1519, + "src": "1367:231:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 1523, - "src": "353:1296:11" + "scope": 1520, + "src": "352:1248:11" } ], - "src": "0:1650:11" + "src": "0:1601:11" }, "id": 11 } diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin index a36c0e042..e60d416fa 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b5060405160a080620014d1833981016040908152815160208301519183015160608401516080909401516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790559294919262000087906401000000006200018e810204565b6200009b33640100000000620001ac810204565b620000af33640100000000620001c7810204565b60008460ff1610158015620000c8575060058460ff1611155b1515620000d457600080fd5b600160a060020a0383161515620000ea57600080fd5b6000856001811115620000f957fe5b14156200011657600160a060020a03821615156200011657600080fd5b6005805486919060ff1916600183818111156200012f57fe5b0217905550506005805461ff00191661010060ff9590951694909402939093176201000060b060020a03191662010000600160a060020a03938416021790925560068054600160a060020a031916929091169190911790555062000275565b620001a960028264010000000062001186620001e282021704565b50565b620001a960038264010000000062001186620001e282021704565b620001a960048264010000000062001186620001e282021704565b600160a060020a0381161515620001f857600080fd5b6200020d82826401000000006200023d810204565b156200021857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200025557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61124c80620002856000396000f3006080604052600436106101745763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630c08bf888114610179578063162f986d146101905780631777fb4b146101a557806319a74ab3146101ce57806321b79d98146101e3578063231d4e2a146101f857806329d10b6e146102195780632e6b68491461023a578063302c11ca1461025b578063329b1c921461028c57806334cdcf26146102a1578063363aa6c7146102c25780633e6968b6146102d7578063427534a4146103035780634969ae7014610318578063608d3d3d1461034357806374be75921461036457806380258e471461038557806381a244591461039a5780638329138f146103bb57806399f4b251146103e25780639e614ca0146103f7578063b2a32cd51461040c578063be95249414610421578063cdfd0f6414610436578063ce41607a1461045d578063d43acc7914610472578063da40867914610487578063e9d618591461049c575b600080fd5b34801561018557600080fd5b5061018e6104b1565b005b34801561019c57600080fd5b5061018e6104cf565b3480156101b157600080fd5b506101ba61053e565b604080519115158252519081900360200190f35b3480156101da57600080fd5b506101ba610543565b3480156101ef57600080fd5b5061018e61057a565b34801561020457600080fd5b5061018e600160a060020a0360043516610610565b34801561022557600080fd5b5061018e600160a060020a03600435166106fc565b34801561024657600080fd5b5061018e600160a060020a0360043516610719565b34801561026757600080fd5b50610270610736565b60408051600160a060020a039092168252519081900360200190f35b34801561029857600080fd5b5061027061074b565b3480156102ad57600080fd5b506101ba600160a060020a036004351661075a565b3480156102ce57600080fd5b5061018e610775565b3480156102e357600080fd5b506102ec610826565b6040805161ffff9092168252519081900360200190f35b34801561030f57600080fd5b5061018e610837565b34801561032457600080fd5b5061032d6108a3565b6040805160ff9092168252519081900360200190f35b34801561034f57600080fd5b506101ba600160a060020a03600435166108b7565b34801561037057600080fd5b5061018e600160a060020a03600435166108ca565b34801561039157600080fd5b5061032d6108e7565b3480156103a657600080fd5b506101ba600160a060020a03600435166108f5565b3480156103c757600080fd5b5061018e600160a060020a0360043581169060243516610908565b3480156103ee57600080fd5b5061018e6109bb565b34801561040357600080fd5b5061018e610bfc565b34801561041857600080fd5b5061018e610c6d565b34801561042d57600080fd5b5061018e610dcb565b34801561044257600080fd5b5061044b610dd4565b60408051918252519081900360200190f35b34801561046957600080fd5b5061032d610dda565b34801561047e57600080fd5b5061018e610dfd565b34801561049357600080fd5b5061018e610e06565b3480156104a857600080fd5b5061018e610e97565b6104ba336108b7565b15156104c557600080fd5b6104cd610ea0565b565b60005460a060020a900460ff16156104e657600080fd5b6104ef336108f5565b15156104fa57600080fd5b600160065460a060020a900460ff16600381111561051457fe5b1461051e57600080fd5b600680546002919060a060020a60ff02191660a060020a835b0217905550565b600190565b6000600160065460a060020a900460ff16600381111561055f57fe5b148015610575575060065460a860020a900460ff165b905090565b60005460a060020a900460ff161561059157600080fd5b600554620100009004600160a060020a031633146105ae57600080fd5b600160065460a060020a900460ff1660038111156105c857fe5b146105d257600080fd5b60065460a860020a900460ff16156105e957600080fd5b6006805475ff000000000000000000000000000000000000000000191660a860020a179055565b610619336108b7565b151561062457600080fd5b600060065460a060020a900460ff16600381111561063e57fe5b1461064857600080fd5b600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516106f9928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d60208110156106de57600080fd5b5051600154600160a060020a0316919063ffffffff610f6716565b50565b610705336108f5565b151561071057600080fd5b6106f98161101f565b610722336108b7565b151561072d57600080fd5b6106f981611030565b600554620100009004600160a060020a031690565b600654600160a060020a031690565b600061076d60028363ffffffff61104116565b90505b919050565b60005460a060020a900460ff161561078c57600080fd5b610795336108f5565b15156107a057600080fd5b600360065460a060020a900460ff1660038111156107ba57fe5b14156107c557600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff00001916905560a060020a60ff021916740300000000000000000000000000000000000000001775ff00ffffffffffffffffffffffffffffffffffffffff19169055565b60065460b860020a900461ffff1690565b60005460a060020a900460ff161561084e57600080fd5b610857336108f5565b151561086257600080fd5b600260065460a060020a900460ff16600381111561087c57fe5b1461088657600080fd5b600680546001919060a060020a60ff02191660a060020a83610537565b60055460009060ff16600181111561057557fe5b600061076d60038363ffffffff61104116565b6108d33361075a565b15156108de57600080fd5b6106f981611078565b600554610100900460ff1690565b600061076d60048363ffffffff61104116565b60005460a060020a900460ff161561091f57600080fd5b610928336108f5565b151561093357600080fd5b600360065460a060020a900460ff16600381111561094d57fe5b1461095757600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a039687160217905560a060020a60ff02191660a060020a1773ffffffffffffffffffffffffffffffffffffffff191691909216179055565b60008054819060a060020a900460ff16156109d557600080fd5b6109de3361075a565b15156109e957600080fd5b600060055460ff1660018111156109fc57fe5b14610a0657600080fd5b600160065460a060020a900460ff166003811115610a2057fe5b14610a2a57600080fd5b60065460a860020a900460ff161515610a4257600080fd5b60065460b860020a900461ffff161515610ab8576006805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610b80565b60068054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610b80576006805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600754600290046007555b505060075461016d90046064600a82020460008211610b9e57600080fd5b60008111610bab57600080fd5b600554600154610bd591600160a060020a039182169162010000909104168463ffffffff610f6716565b600654600154610bf891600160a060020a0391821691168363ffffffff610f6716565b5050565b60005460a060020a900460ff1615610c1357600080fd5b610c1c336108b7565b1515610c2757600080fd5b600060065460a060020a900460ff166003811115610c4157fe5b1415610c4c57600080fd5b6006805475ffff000000000000000000000000000000000000000019169055565b600080548190819060a060020a900460ff1615610c8957600080fd5b610c92336108b7565b1515610c9d57600080fd5b600060065460a060020a900460ff166003811115610cb757fe5b14610cc157600080fd5b600060055460ff166001811115610cd457fe5b148015610ce15750600754155b15610db057600554610cfa90610100900460ff16611089565b92506064600a8402600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519390920486019450600160a060020a0316916370a08231916024808201926020929091908290030181600087803b158015610d6e57600080fd5b505af1158015610d82573d6000803e3d6000fd5b505050506040513d6020811015610d9857600080fd5b50519050818114610da857600080fd5b600283046007555b50506006805460a060020a60ff02191660a060020a17905550565b6104cd3361113b565b60075490565b600654760100000000000000000000000000000000000000000000900460ff1690565b6104cd3361114c565b60005460a060020a900460ff1615610e1d57600080fd5b600554620100009004600160a060020a03163314610e3a57600080fd5b600160065460a060020a900460ff166003811115610e5457fe5b14610e5e57600080fd5b60065460a860020a900460ff161515610e7657600080fd5b6006805475ff00000000000000000000000000000000000000000019169055565b6104cd3361115d565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610f0557600080fd5b505af1158015610f19573d6000803e3d6000fd5b505050506040513d6020811015610f2f57600080fd5b505190506000811115610f5f57600054600154610f5f91600160a060020a0391821691168363ffffffff610f6716565b6106f961116e565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610fe357600080fd5b505af1158015610ff7573d6000803e3d6000fd5b505050506040513d602081101561100d57600080fd5b5051151561101a57600080fd5b505050565b6106f960048263ffffffff61118616565b6106f960038263ffffffff61118616565b6000600160a060020a038216151561105857600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106f960028263ffffffff61118616565b600060ff821615156110a6575069152d02c7e14af6800000610770565b8160ff16600114156110c3575069d3c21bcecceda1000000610770565b8160ff16600214156110e157506a01a784379d99db42000000610770565b8160ff16600314156110ff57506a027b46536c66c8e3000000610770565b8160ff166004141561111d57506a034f086f3b33b684000000610770565b8160ff166005141561077057506a0422ca8b0a00a425000000610770565b6106f960048263ffffffff6111d416565b6106f960038263ffffffff6111d416565b6106f960028263ffffffff6111d416565b6000805460a060020a60ff02191660a060020a179055565b600160a060020a038116151561119b57600080fd5b6111a58282611041565b156111af57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a03811615156111e957600080fd5b6111f38282611041565b15156111fe57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058202935a8fadd5caa8f5a9312cd903c07814b3de5662642cabdc9018c364221db570029 \ No newline at end of file +60806040523480156200001157600080fd5b5060405160a08062001458833981018060405260a08110156200003357600080fd5b5080516020820151604083015160608401516080909401516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a038416179055939492939192916200009a906401000000006200018e810204565b620000ae33640100000000620001ac810204565b620000c233640100000000620001c7810204565b600560ff85161115620000d457600080fd5b600160a060020a0383161515620000ea57600080fd5b6000856001811115620000f957fe5b14156200011657600160a060020a03821615156200011657600080fd5b6005805486919060ff1916600183818111156200012f57fe5b0217905550506005805461ff00191661010060ff9590951694909402939093176201000060b060020a03191662010000600160a060020a03938416021790925560068054600160a060020a031916929091169190911790555062000275565b620001a96002826401000000006200110d620001e282021704565b50565b620001a96003826401000000006200110d620001e282021704565b620001a96004826401000000006200110d620001e282021704565b600160a060020a0381161515620001f857600080fd5b6200020d82826401000000006200023d810204565b156200021857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200025557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6111d380620002856000396000f3fe608060405234801561001057600080fd5b50600436106101ec576000357c0100000000000000000000000000000000000000000000000000000000900480634969ae70116101215780639e614ca0116100bf578063ce41607a1161008e578063ce41607a14610422578063d43acc791461042a578063da40867914610432578063e9d618591461043a576101ec565b80639e614ca0146103f0578063b2a32cd5146103f8578063be95249414610400578063cdfd0f6414610408576101ec565b806380258e47116100fb57806380258e471461038c57806381a24459146103945780638329138f146103ba57806399f4b251146103e8576101ec565b80634969ae7014610322578063608d3d3d1461034057806374be759214610366576101ec565b80632e6b68491161018e57806334cdcf261161016857806334cdcf26146102cd578063363aa6c7146102f35780633e6968b6146102fb578063427534a41461031a576101ec565b80632e6b68491461027b578063302c11ca146102a1578063329b1c92146102c5576101ec565b806319a74ab3116101ca57806319a74ab31461021f57806321b79d9814610227578063231d4e2a1461022f57806329d10b6e14610255576101ec565b80630c08bf88146101f1578063162f986d146101fb5780631777fb4b14610203575b600080fd5b6101f9610442565b005b6101f9610460565b61020b6104cf565b604080519115158252519081900360200190f35b61020b6104d4565b6101f961050b565b6101f96004803603602081101561024557600080fd5b5035600160a060020a03166105a1565b6101f96004803603602081101561026b57600080fd5b5035600160a060020a031661068b565b6101f96004803603602081101561029157600080fd5b5035600160a060020a03166106a8565b6102a96106c5565b60408051600160a060020a039092168252519081900360200190f35b6102a96106da565b61020b600480360360208110156102e357600080fd5b5035600160a060020a03166106e9565b6101f9610704565b6103036107b5565b6040805161ffff9092168252519081900360200190f35b6101f96107c6565b61032a610832565b6040805160ff9092168252519081900360200190f35b61020b6004803603602081101561035657600080fd5b5035600160a060020a0316610846565b6101f96004803603602081101561037c57600080fd5b5035600160a060020a0316610859565b61032a610876565b61020b600480360360208110156103aa57600080fd5b5035600160a060020a0316610884565b6101f9600480360360408110156103d057600080fd5b50600160a060020a0381358116916020013516610897565b6101f961094a565b6101f9610b86565b6101f9610bf7565b6101f9610d53565b610410610d5c565b60408051918252519081900360200190f35b61032a610d62565b6101f9610d85565b6101f9610d8e565b6101f9610e1f565b61044b33610846565b151561045657600080fd5b61045e610e28565b565b60005460a060020a900460ff161561047757600080fd5b61048033610884565b151561048b57600080fd5b600160065460a060020a900460ff1660038111156104a557fe5b146104af57600080fd5b600680546002919060a060020a60ff02191660a060020a835b0217905550565b600190565b6000600160065460a060020a900460ff1660038111156104f057fe5b148015610506575060065460a860020a900460ff165b905090565b60005460a060020a900460ff161561052257600080fd5b600554620100009004600160a060020a0316331461053f57600080fd5b600160065460a060020a900460ff16600381111561055957fe5b1461056357600080fd5b60065460a860020a900460ff161561057a57600080fd5b6006805475ff000000000000000000000000000000000000000000191660a860020a179055565b6105aa33610846565b15156105b557600080fd5b600060065460a060020a900460ff1660038111156105cf57fe5b146105d957600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051610688928492600160a060020a03909116916370a0823191602480820192602092909190829003018186803b15801561064357600080fd5b505afa158015610657573d6000803e3d6000fd5b505050506040513d602081101561066d57600080fd5b5051600154600160a060020a0316919063ffffffff610eee16565b50565b61069433610884565b151561069f57600080fd5b61068881610fa6565b6106b133610846565b15156106bc57600080fd5b61068881610fb7565b600554620100009004600160a060020a031690565b600654600160a060020a031690565b60006106fc60028363ffffffff610fc816565b90505b919050565b60005460a060020a900460ff161561071b57600080fd5b61072433610884565b151561072f57600080fd5b600360065460a060020a900460ff16600381111561074957fe5b141561075457600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff00001916905560a060020a60ff021916740300000000000000000000000000000000000000001775ff00ffffffffffffffffffffffffffffffffffffffff19169055565b60065460b860020a900461ffff1690565b60005460a060020a900460ff16156107dd57600080fd5b6107e633610884565b15156107f157600080fd5b600260065460a060020a900460ff16600381111561080b57fe5b1461081557600080fd5b600680546001919060a060020a60ff02191660a060020a836104c8565b60055460009060ff16600181111561050657fe5b60006106fc60038363ffffffff610fc816565b610862336106e9565b151561086d57600080fd5b61068881610fff565b600554610100900460ff1690565b60006106fc60048363ffffffff610fc816565b60005460a060020a900460ff16156108ae57600080fd5b6108b733610884565b15156108c257600080fd5b600360065460a060020a900460ff1660038111156108dc57fe5b146108e657600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a039687160217905560a060020a60ff02191660a060020a1773ffffffffffffffffffffffffffffffffffffffff191691909216179055565b60005460a060020a900460ff161561096157600080fd5b61096a336106e9565b151561097557600080fd5b600060055460ff16600181111561098857fe5b1461099257600080fd5b600160065460a060020a900460ff1660038111156109ac57fe5b146109b657600080fd5b60065460a860020a900460ff1615156109ce57600080fd5b60065460b860020a900461ffff161515610a44576006805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610b0c565b60068054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610b0c576006805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600754600290046007555b60075461016d90046064600a82020460008211610b2857600080fd5b60008111610b3557600080fd5b600554600154610b5f91600160a060020a039182169162010000909104168463ffffffff610eee16565b600654600154610b8291600160a060020a0391821691168363ffffffff610eee16565b5050565b60005460a060020a900460ff1615610b9d57600080fd5b610ba633610846565b1515610bb157600080fd5b600060065460a060020a900460ff166003811115610bcb57fe5b1415610bd657600080fd5b6006805475ffff000000000000000000000000000000000000000019169055565b60005460a060020a900460ff1615610c0e57600080fd5b610c1733610846565b1515610c2257600080fd5b600060065460a060020a900460ff166003811115610c3c57fe5b14610c4657600080fd5b600060055460ff166001811115610c5957fe5b148015610c665750600754155b1561081557600554600090610c8290610100900460ff16611010565b600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519293506064600a850204840192600092600160a060020a0316916370a08231916024808301926020929190829003018186803b158015610cf357600080fd5b505afa158015610d07573d6000803e3d6000fd5b505050506040513d6020811015610d1d57600080fd5b50519050818114610d2d57600080fd5b600283046007555050600680546001925060a060020a60ff02191660a060020a836104c8565b61045e336110c2565b60075490565b600654760100000000000000000000000000000000000000000000900460ff1690565b61045e336110d3565b60005460a060020a900460ff1615610da557600080fd5b600554620100009004600160a060020a03163314610dc257600080fd5b600160065460a060020a900460ff166003811115610ddc57fe5b14610de657600080fd5b60065460a860020a900460ff161515610dfe57600080fd5b6006805475ff00000000000000000000000000000000000000000019169055565b61045e336110e4565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a08231916024808301926020929190829003018186803b158015610e8c57600080fd5b505afa158015610ea0573d6000803e3d6000fd5b505050506040513d6020811015610eb657600080fd5b505190506000811115610ee657600054600154610ee691600160a060020a0391821691168363ffffffff610eee16565b6106886110f5565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610f6a57600080fd5b505af1158015610f7e573d6000803e3d6000fd5b505050506040513d6020811015610f9457600080fd5b50511515610fa157600080fd5b505050565b61068860048263ffffffff61110d16565b61068860038263ffffffff61110d16565b6000600160a060020a0382161515610fdf57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61068860028263ffffffff61110d16565b600060ff8216151561102d575069152d02c7e14af68000006106ff565b8160ff166001141561104a575069d3c21bcecceda10000006106ff565b8160ff166002141561106857506a01a784379d99db420000006106ff565b8160ff166003141561108657506a027b46536c66c8e30000006106ff565b8160ff16600414156110a457506a034f086f3b33b6840000006106ff565b8160ff16600514156106ff57506a0422ca8b0a00a4250000006106ff565b61068860048263ffffffff61115b16565b61068860038263ffffffff61115b16565b61068860028263ffffffff61115b16565b6000805460a060020a60ff02191660a060020a179055565b600160a060020a038116151561112257600080fd5b61112c8282610fc8565b1561113657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561117057600080fd5b61117a8282610fc8565b151561118557600080fd5b600160a060020a0316600090815260209190915260409020805460ff1916905556fea165627a7a72305820a2a7d81c4bf237d833a792f3dd14af3f88c7c6e7d320648513595fcbe01959490029 \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json index 8cf00d50a..cff6704e3 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json @@ -393,7 +393,7 @@ "type": "constructor" } ], - "bytecode": "60806040523480156200001157600080fd5b5060405160a080620014d1833981016040908152815160208301519183015160608401516080909401516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790559294919262000087906401000000006200018e810204565b6200009b33640100000000620001ac810204565b620000af33640100000000620001c7810204565b60008460ff1610158015620000c8575060058460ff1611155b1515620000d457600080fd5b600160a060020a0383161515620000ea57600080fd5b6000856001811115620000f957fe5b14156200011657600160a060020a03821615156200011657600080fd5b6005805486919060ff1916600183818111156200012f57fe5b0217905550506005805461ff00191661010060ff9590951694909402939093176201000060b060020a03191662010000600160a060020a03938416021790925560068054600160a060020a031916929091169190911790555062000275565b620001a960028264010000000062001186620001e282021704565b50565b620001a960038264010000000062001186620001e282021704565b620001a960048264010000000062001186620001e282021704565b600160a060020a0381161515620001f857600080fd5b6200020d82826401000000006200023d810204565b156200021857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200025557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61124c80620002856000396000f3006080604052600436106101745763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630c08bf888114610179578063162f986d146101905780631777fb4b146101a557806319a74ab3146101ce57806321b79d98146101e3578063231d4e2a146101f857806329d10b6e146102195780632e6b68491461023a578063302c11ca1461025b578063329b1c921461028c57806334cdcf26146102a1578063363aa6c7146102c25780633e6968b6146102d7578063427534a4146103035780634969ae7014610318578063608d3d3d1461034357806374be75921461036457806380258e471461038557806381a244591461039a5780638329138f146103bb57806399f4b251146103e25780639e614ca0146103f7578063b2a32cd51461040c578063be95249414610421578063cdfd0f6414610436578063ce41607a1461045d578063d43acc7914610472578063da40867914610487578063e9d618591461049c575b600080fd5b34801561018557600080fd5b5061018e6104b1565b005b34801561019c57600080fd5b5061018e6104cf565b3480156101b157600080fd5b506101ba61053e565b604080519115158252519081900360200190f35b3480156101da57600080fd5b506101ba610543565b3480156101ef57600080fd5b5061018e61057a565b34801561020457600080fd5b5061018e600160a060020a0360043516610610565b34801561022557600080fd5b5061018e600160a060020a03600435166106fc565b34801561024657600080fd5b5061018e600160a060020a0360043516610719565b34801561026757600080fd5b50610270610736565b60408051600160a060020a039092168252519081900360200190f35b34801561029857600080fd5b5061027061074b565b3480156102ad57600080fd5b506101ba600160a060020a036004351661075a565b3480156102ce57600080fd5b5061018e610775565b3480156102e357600080fd5b506102ec610826565b6040805161ffff9092168252519081900360200190f35b34801561030f57600080fd5b5061018e610837565b34801561032457600080fd5b5061032d6108a3565b6040805160ff9092168252519081900360200190f35b34801561034f57600080fd5b506101ba600160a060020a03600435166108b7565b34801561037057600080fd5b5061018e600160a060020a03600435166108ca565b34801561039157600080fd5b5061032d6108e7565b3480156103a657600080fd5b506101ba600160a060020a03600435166108f5565b3480156103c757600080fd5b5061018e600160a060020a0360043581169060243516610908565b3480156103ee57600080fd5b5061018e6109bb565b34801561040357600080fd5b5061018e610bfc565b34801561041857600080fd5b5061018e610c6d565b34801561042d57600080fd5b5061018e610dcb565b34801561044257600080fd5b5061044b610dd4565b60408051918252519081900360200190f35b34801561046957600080fd5b5061032d610dda565b34801561047e57600080fd5b5061018e610dfd565b34801561049357600080fd5b5061018e610e06565b3480156104a857600080fd5b5061018e610e97565b6104ba336108b7565b15156104c557600080fd5b6104cd610ea0565b565b60005460a060020a900460ff16156104e657600080fd5b6104ef336108f5565b15156104fa57600080fd5b600160065460a060020a900460ff16600381111561051457fe5b1461051e57600080fd5b600680546002919060a060020a60ff02191660a060020a835b0217905550565b600190565b6000600160065460a060020a900460ff16600381111561055f57fe5b148015610575575060065460a860020a900460ff165b905090565b60005460a060020a900460ff161561059157600080fd5b600554620100009004600160a060020a031633146105ae57600080fd5b600160065460a060020a900460ff1660038111156105c857fe5b146105d257600080fd5b60065460a860020a900460ff16156105e957600080fd5b6006805475ff000000000000000000000000000000000000000000191660a860020a179055565b610619336108b7565b151561062457600080fd5b600060065460a060020a900460ff16600381111561063e57fe5b1461064857600080fd5b600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516106f9928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d60208110156106de57600080fd5b5051600154600160a060020a0316919063ffffffff610f6716565b50565b610705336108f5565b151561071057600080fd5b6106f98161101f565b610722336108b7565b151561072d57600080fd5b6106f981611030565b600554620100009004600160a060020a031690565b600654600160a060020a031690565b600061076d60028363ffffffff61104116565b90505b919050565b60005460a060020a900460ff161561078c57600080fd5b610795336108f5565b15156107a057600080fd5b600360065460a060020a900460ff1660038111156107ba57fe5b14156107c557600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff00001916905560a060020a60ff021916740300000000000000000000000000000000000000001775ff00ffffffffffffffffffffffffffffffffffffffff19169055565b60065460b860020a900461ffff1690565b60005460a060020a900460ff161561084e57600080fd5b610857336108f5565b151561086257600080fd5b600260065460a060020a900460ff16600381111561087c57fe5b1461088657600080fd5b600680546001919060a060020a60ff02191660a060020a83610537565b60055460009060ff16600181111561057557fe5b600061076d60038363ffffffff61104116565b6108d33361075a565b15156108de57600080fd5b6106f981611078565b600554610100900460ff1690565b600061076d60048363ffffffff61104116565b60005460a060020a900460ff161561091f57600080fd5b610928336108f5565b151561093357600080fd5b600360065460a060020a900460ff16600381111561094d57fe5b1461095757600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a039687160217905560a060020a60ff02191660a060020a1773ffffffffffffffffffffffffffffffffffffffff191691909216179055565b60008054819060a060020a900460ff16156109d557600080fd5b6109de3361075a565b15156109e957600080fd5b600060055460ff1660018111156109fc57fe5b14610a0657600080fd5b600160065460a060020a900460ff166003811115610a2057fe5b14610a2a57600080fd5b60065460a860020a900460ff161515610a4257600080fd5b60065460b860020a900461ffff161515610ab8576006805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610b80565b60068054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610b80576006805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600754600290046007555b505060075461016d90046064600a82020460008211610b9e57600080fd5b60008111610bab57600080fd5b600554600154610bd591600160a060020a039182169162010000909104168463ffffffff610f6716565b600654600154610bf891600160a060020a0391821691168363ffffffff610f6716565b5050565b60005460a060020a900460ff1615610c1357600080fd5b610c1c336108b7565b1515610c2757600080fd5b600060065460a060020a900460ff166003811115610c4157fe5b1415610c4c57600080fd5b6006805475ffff000000000000000000000000000000000000000019169055565b600080548190819060a060020a900460ff1615610c8957600080fd5b610c92336108b7565b1515610c9d57600080fd5b600060065460a060020a900460ff166003811115610cb757fe5b14610cc157600080fd5b600060055460ff166001811115610cd457fe5b148015610ce15750600754155b15610db057600554610cfa90610100900460ff16611089565b92506064600a8402600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519390920486019450600160a060020a0316916370a08231916024808201926020929091908290030181600087803b158015610d6e57600080fd5b505af1158015610d82573d6000803e3d6000fd5b505050506040513d6020811015610d9857600080fd5b50519050818114610da857600080fd5b600283046007555b50506006805460a060020a60ff02191660a060020a17905550565b6104cd3361113b565b60075490565b600654760100000000000000000000000000000000000000000000900460ff1690565b6104cd3361114c565b60005460a060020a900460ff1615610e1d57600080fd5b600554620100009004600160a060020a03163314610e3a57600080fd5b600160065460a060020a900460ff166003811115610e5457fe5b14610e5e57600080fd5b60065460a860020a900460ff161515610e7657600080fd5b6006805475ff00000000000000000000000000000000000000000019169055565b6104cd3361115d565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610f0557600080fd5b505af1158015610f19573d6000803e3d6000fd5b505050506040513d6020811015610f2f57600080fd5b505190506000811115610f5f57600054600154610f5f91600160a060020a0391821691168363ffffffff610f6716565b6106f961116e565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610fe357600080fd5b505af1158015610ff7573d6000803e3d6000fd5b505050506040513d602081101561100d57600080fd5b5051151561101a57600080fd5b505050565b6106f960048263ffffffff61118616565b6106f960038263ffffffff61118616565b6000600160a060020a038216151561105857600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106f960028263ffffffff61118616565b600060ff821615156110a6575069152d02c7e14af6800000610770565b8160ff16600114156110c3575069d3c21bcecceda1000000610770565b8160ff16600214156110e157506a01a784379d99db42000000610770565b8160ff16600314156110ff57506a027b46536c66c8e3000000610770565b8160ff166004141561111d57506a034f086f3b33b684000000610770565b8160ff166005141561077057506a0422ca8b0a00a425000000610770565b6106f960048263ffffffff6111d416565b6106f960038263ffffffff6111d416565b6106f960028263ffffffff6111d416565b6000805460a060020a60ff02191660a060020a179055565b600160a060020a038116151561119b57600080fd5b6111a58282611041565b156111af57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a03811615156111e957600080fd5b6111f38282611041565b15156111fe57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058202935a8fadd5caa8f5a9312cd903c07814b3de5662642cabdc9018c364221db570029", + "bytecode": "60806040523480156200001157600080fd5b5060405160a08062001458833981018060405260a08110156200003357600080fd5b5080516020820151604083015160608401516080909401516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a038416179055939492939192916200009a906401000000006200018e810204565b620000ae33640100000000620001ac810204565b620000c233640100000000620001c7810204565b600560ff85161115620000d457600080fd5b600160a060020a0383161515620000ea57600080fd5b6000856001811115620000f957fe5b14156200011657600160a060020a03821615156200011657600080fd5b6005805486919060ff1916600183818111156200012f57fe5b0217905550506005805461ff00191661010060ff9590951694909402939093176201000060b060020a03191662010000600160a060020a03938416021790925560068054600160a060020a031916929091169190911790555062000275565b620001a96002826401000000006200110d620001e282021704565b50565b620001a96003826401000000006200110d620001e282021704565b620001a96004826401000000006200110d620001e282021704565b600160a060020a0381161515620001f857600080fd5b6200020d82826401000000006200023d810204565b156200021857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200025557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6111d380620002856000396000f3fe608060405234801561001057600080fd5b50600436106101ec576000357c0100000000000000000000000000000000000000000000000000000000900480634969ae70116101215780639e614ca0116100bf578063ce41607a1161008e578063ce41607a14610422578063d43acc791461042a578063da40867914610432578063e9d618591461043a576101ec565b80639e614ca0146103f0578063b2a32cd5146103f8578063be95249414610400578063cdfd0f6414610408576101ec565b806380258e47116100fb57806380258e471461038c57806381a24459146103945780638329138f146103ba57806399f4b251146103e8576101ec565b80634969ae7014610322578063608d3d3d1461034057806374be759214610366576101ec565b80632e6b68491161018e57806334cdcf261161016857806334cdcf26146102cd578063363aa6c7146102f35780633e6968b6146102fb578063427534a41461031a576101ec565b80632e6b68491461027b578063302c11ca146102a1578063329b1c92146102c5576101ec565b806319a74ab3116101ca57806319a74ab31461021f57806321b79d9814610227578063231d4e2a1461022f57806329d10b6e14610255576101ec565b80630c08bf88146101f1578063162f986d146101fb5780631777fb4b14610203575b600080fd5b6101f9610442565b005b6101f9610460565b61020b6104cf565b604080519115158252519081900360200190f35b61020b6104d4565b6101f961050b565b6101f96004803603602081101561024557600080fd5b5035600160a060020a03166105a1565b6101f96004803603602081101561026b57600080fd5b5035600160a060020a031661068b565b6101f96004803603602081101561029157600080fd5b5035600160a060020a03166106a8565b6102a96106c5565b60408051600160a060020a039092168252519081900360200190f35b6102a96106da565b61020b600480360360208110156102e357600080fd5b5035600160a060020a03166106e9565b6101f9610704565b6103036107b5565b6040805161ffff9092168252519081900360200190f35b6101f96107c6565b61032a610832565b6040805160ff9092168252519081900360200190f35b61020b6004803603602081101561035657600080fd5b5035600160a060020a0316610846565b6101f96004803603602081101561037c57600080fd5b5035600160a060020a0316610859565b61032a610876565b61020b600480360360208110156103aa57600080fd5b5035600160a060020a0316610884565b6101f9600480360360408110156103d057600080fd5b50600160a060020a0381358116916020013516610897565b6101f961094a565b6101f9610b86565b6101f9610bf7565b6101f9610d53565b610410610d5c565b60408051918252519081900360200190f35b61032a610d62565b6101f9610d85565b6101f9610d8e565b6101f9610e1f565b61044b33610846565b151561045657600080fd5b61045e610e28565b565b60005460a060020a900460ff161561047757600080fd5b61048033610884565b151561048b57600080fd5b600160065460a060020a900460ff1660038111156104a557fe5b146104af57600080fd5b600680546002919060a060020a60ff02191660a060020a835b0217905550565b600190565b6000600160065460a060020a900460ff1660038111156104f057fe5b148015610506575060065460a860020a900460ff165b905090565b60005460a060020a900460ff161561052257600080fd5b600554620100009004600160a060020a0316331461053f57600080fd5b600160065460a060020a900460ff16600381111561055957fe5b1461056357600080fd5b60065460a860020a900460ff161561057a57600080fd5b6006805475ff000000000000000000000000000000000000000000191660a860020a179055565b6105aa33610846565b15156105b557600080fd5b600060065460a060020a900460ff1660038111156105cf57fe5b146105d957600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051610688928492600160a060020a03909116916370a0823191602480820192602092909190829003018186803b15801561064357600080fd5b505afa158015610657573d6000803e3d6000fd5b505050506040513d602081101561066d57600080fd5b5051600154600160a060020a0316919063ffffffff610eee16565b50565b61069433610884565b151561069f57600080fd5b61068881610fa6565b6106b133610846565b15156106bc57600080fd5b61068881610fb7565b600554620100009004600160a060020a031690565b600654600160a060020a031690565b60006106fc60028363ffffffff610fc816565b90505b919050565b60005460a060020a900460ff161561071b57600080fd5b61072433610884565b151561072f57600080fd5b600360065460a060020a900460ff16600381111561074957fe5b141561075457600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff00001916905560a060020a60ff021916740300000000000000000000000000000000000000001775ff00ffffffffffffffffffffffffffffffffffffffff19169055565b60065460b860020a900461ffff1690565b60005460a060020a900460ff16156107dd57600080fd5b6107e633610884565b15156107f157600080fd5b600260065460a060020a900460ff16600381111561080b57fe5b1461081557600080fd5b600680546001919060a060020a60ff02191660a060020a836104c8565b60055460009060ff16600181111561050657fe5b60006106fc60038363ffffffff610fc816565b610862336106e9565b151561086d57600080fd5b61068881610fff565b600554610100900460ff1690565b60006106fc60048363ffffffff610fc816565b60005460a060020a900460ff16156108ae57600080fd5b6108b733610884565b15156108c257600080fd5b600360065460a060020a900460ff1660038111156108dc57fe5b146108e657600080fd5b600680546005805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a039687160217905560a060020a60ff02191660a060020a1773ffffffffffffffffffffffffffffffffffffffff191691909216179055565b60005460a060020a900460ff161561096157600080fd5b61096a336106e9565b151561097557600080fd5b600060055460ff16600181111561098857fe5b1461099257600080fd5b600160065460a060020a900460ff1660038111156109ac57fe5b146109b657600080fd5b60065460a860020a900460ff1615156109ce57600080fd5b60065460b860020a900461ffff161515610a44576006805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610b0c565b60068054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610b0c576006805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600754600290046007555b60075461016d90046064600a82020460008211610b2857600080fd5b60008111610b3557600080fd5b600554600154610b5f91600160a060020a039182169162010000909104168463ffffffff610eee16565b600654600154610b8291600160a060020a0391821691168363ffffffff610eee16565b5050565b60005460a060020a900460ff1615610b9d57600080fd5b610ba633610846565b1515610bb157600080fd5b600060065460a060020a900460ff166003811115610bcb57fe5b1415610bd657600080fd5b6006805475ffff000000000000000000000000000000000000000019169055565b60005460a060020a900460ff1615610c0e57600080fd5b610c1733610846565b1515610c2257600080fd5b600060065460a060020a900460ff166003811115610c3c57fe5b14610c4657600080fd5b600060055460ff166001811115610c5957fe5b148015610c665750600754155b1561081557600554600090610c8290610100900460ff16611010565b600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519293506064600a850204840192600092600160a060020a0316916370a08231916024808301926020929190829003018186803b158015610cf357600080fd5b505afa158015610d07573d6000803e3d6000fd5b505050506040513d6020811015610d1d57600080fd5b50519050818114610d2d57600080fd5b600283046007555050600680546001925060a060020a60ff02191660a060020a836104c8565b61045e336110c2565b60075490565b600654760100000000000000000000000000000000000000000000900460ff1690565b61045e336110d3565b60005460a060020a900460ff1615610da557600080fd5b600554620100009004600160a060020a03163314610dc257600080fd5b600160065460a060020a900460ff166003811115610ddc57fe5b14610de657600080fd5b60065460a860020a900460ff161515610dfe57600080fd5b6006805475ff00000000000000000000000000000000000000000019169055565b61045e336110e4565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a08231916024808301926020929190829003018186803b158015610e8c57600080fd5b505afa158015610ea0573d6000803e3d6000fd5b505050506040513d6020811015610eb657600080fd5b505190506000811115610ee657600054600154610ee691600160a060020a0391821691168363ffffffff610eee16565b6106886110f5565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610f6a57600080fd5b505af1158015610f7e573d6000803e3d6000fd5b505050506040513d6020811015610f9457600080fd5b50511515610fa157600080fd5b505050565b61068860048263ffffffff61110d16565b61068860038263ffffffff61110d16565b6000600160a060020a0382161515610fdf57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61068860028263ffffffff61110d16565b600060ff8216151561102d575069152d02c7e14af68000006106ff565b8160ff166001141561104a575069d3c21bcecceda10000006106ff565b8160ff166002141561106857506a01a784379d99db420000006106ff565b8160ff166003141561108657506a027b46536c66c8e30000006106ff565b8160ff16600414156110a457506a034f086f3b33b6840000006106ff565b8160ff16600514156106ff57506a0422ca8b0a00a4250000006106ff565b61068860048263ffffffff61115b16565b61068860038263ffffffff61115b16565b61068860028263ffffffff61115b16565b6000805460a060020a60ff02191660a060020a179055565b600160a060020a038116151561112257600080fd5b61112c8282610fc8565b1561113657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561117057600080fd5b61117a8282610fc8565b151561118557600080fd5b600160a060020a0316600090815260209190915260409020805460ff1916905556fea165627a7a72305820a2a7d81c4bf237d833a792f3dd14af3f88c7c6e7d320648513595fcbe01959490029", "functionHashes": { "activateMiner()": "b2a32cd5", "addCoreTeam(address)": "2e6b6849", @@ -427,7 +427,7 @@ }, "gasEstimates": { "creation": { - "codeDepositCost": "936800", + "codeDepositCost": "912600", "executionCost": "infinite", "totalCost": "infinite" }, @@ -437,16 +437,16 @@ "addSupervisor(address)": "infinite", "addSystem(address)": "infinite", "deactivateMiner()": "infinite", - "getCategory()": "784", - "getCurrentDay()": "737", - "getCurrentYear()": "960", - "getCurrentYearSupply()": "912", - "getMiner()": "724", - "getMinerType()": "744", - "getReferral()": "735", - "isAlgoMiner()": "234", + "getCategory()": "474", + "getCurrentDay()": "581", + "getCurrentYear()": "473", + "getCurrentYearSupply()": "514", + "getMiner()": "635", + "getMinerType()": "501", + "getReferral()": "646", + "isAlgoMiner()": "300", "isCoreTeam(address)": "infinite", - "isMining()": "881", + "isMining()": "880", "isSupervisor(address)": "infinite", "isSystem(address)": "infinite", "migrateMiner(address)": "infinite", @@ -457,9 +457,9 @@ "renounceSystem()": "infinite", "resetMiner(address,address)": "infinite", "resumeMining()": "infinite", - "startMining()": "21742", + "startMining()": "21741", "stopAndRemoveOwnership()": "infinite", - "stopMining()": "22182", + "stopMining()": "21695", "terminate()": "infinite" } } diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json index fd6a01337..ae00e7b9d 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json @@ -9,9 +9,9 @@ "evm": { "bytecode": { "linkReferences": {}, - "object": "6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a72305820a82cc7d287f8450e22843025dd73eaa06172ebd434e1e3cf86a642a33d96584e0029", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x35 DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xa8 0x2c 0xc7 0xd2 DUP8 0xf8 GASLIMIT 0xe 0x22 DUP5 ADDRESS 0x25 0xdd PUSH20 0xEAA06172EBD434E1E3CF86A642A33D96584E0029 ", - "sourceMap": "27:1033:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27:1033:0;;;;;;;" + "object": "6080604052348015600f57600080fd5b50603580601d6000396000f3fe6080604052600080fdfea165627a7a72305820c142737f5004f0e270be8e9321f75139c2de559ee56245828f39cd6b8e6ac07b0029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x35 DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 0xc1 TIMESTAMP PUSH20 0x7F5004F0E270BE8E9321F75139C2DE559EE56245 DUP3 DUP16 CODECOPY 0xcd PUSH12 0x8E6AC07B0029000000000000 ", + "sourceMap": "26:1033:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26:1033:0;;;;;;;" }, "gasEstimates": { "creation": { @@ -25,7 +25,7 @@ }, "methodIdentifiers": {} }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol\":\"AlgoCommon\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol\":{\"keccak256\":\"0x2314139702cc63c8daa379e521abea3be32730ba896f68f3f865749907e64539\",\"urls\":[\"bzzr://b945e0ec5a4ca8a52b5e816c5bb00807d0ca43c5363102821b36c8c4ee98a2d5\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.4+commit.9549d8ff\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol\":\"AlgoCommon\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol\":{\"keccak256\":\"0x014debd2c96ba7aba7faef24eac1f1a5d46791b55ae55fbd51d7945bf21277e0\",\"urls\":[\"bzzr://b8d1cffc7f1bfdc8c911d90b785cf9c2723b24bd162d7cfd730e127f56932fe9\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -196,13 +196,13 @@ "evm": { "bytecode": { "linkReferences": {}, - "object": "608060405234801561001057600080fd5b506040516040806107f28339810160405280516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561006f90640100000000610093810204565b6003805483919060ff19166001838181111561008757fe5b0217905550505061013c565b6100ab6002826401000000006105e16100ae82021704565b50565b600160a060020a03811615156100c357600080fd5b6100d68282640100000000610105810204565b156100e057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561011c57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106a78061014b6000396000f3006080604052600436106100535763ffffffff60e060020a6000350416630c08bf8881146100585780632e6b68491461006f578063608d3d3d14610090578063d43acc79146100c5578063fe4028bb146100da575b600080fd5b34801561006457600080fd5b5061006d6100fb565b005b34801561007b57600080fd5b5061006d600160a060020a0360043516610119565b34801561009c57600080fd5b506100b1600160a060020a0360043516610139565b604080519115158252519081900360200190f35b3480156100d157600080fd5b5061006d610154565b3480156100e657600080fd5b5061006d600160a060020a036004351661015d565b61010433610139565b151561010f57600080fd5b610117610339565b565b61012233610139565b151561012d57600080fd5b61013681610400565b50565b600061014c60028363ffffffff61041116565b90505b919050565b61011733610448565b600080548190819074010000000000000000000000000000000000000000900460ff161561018a57600080fd5b61019333610139565b151561019e57600080fd5b600160a060020a03841660009081526004602052604090205460ff16156101c457600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561020557600080fd5b505af1158015610219573d6000803e3d6000fd5b505050506040513d602081101561022f57600080fd5b5051151561023c57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561027a57600080fd5b505af115801561028e573d6000803e3d6000fd5b505050506040513d60208110156102a457600080fd5b50519150600060ff8316108015906102c0575060058260ff1611155b15156102cb57600080fd5b6102d482610459565b9050600160035460ff1660018111156102e957fe5b14156102f9576064600a82020490505b600160a060020a038085166000908152600460205260409020805460ff19166001908117909155546103339116858363ffffffff61050b16565b50505050565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561039e57600080fd5b505af11580156103b2573d6000803e3d6000fd5b505050506040513d60208110156103c857600080fd5b5051905060008111156103f8576000546001546103f891600160a060020a0391821691168363ffffffff61050b16565b6101366105aa565b61013660028263ffffffff6105e116565b6000600160a060020a038216151561042857600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61013660028263ffffffff61062f16565b600060ff82161515610476575069152d02c7e14af680000061014f565b8160ff1660011415610493575069d3c21bcecceda100000061014f565b8160ff16600214156104b157506a01a784379d99db4200000061014f565b8160ff16600314156104cf57506a027b46536c66c8e300000061014f565b8160ff16600414156104ed57506a034f086f3b33b68400000061014f565b8160ff166005141561014f57506a0422ca8b0a00a42500000061014f565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561056e57600080fd5b505af1158015610582573d6000803e3d6000fd5b505050506040513d602081101561059857600080fd5b505115156105a557600080fd5b505050565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a03811615156105f657600080fd5b6106008282610411565b1561060a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561064457600080fd5b61064e8282610411565b151561065957600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820607cdb7d48cff40583123be547a706873bba6b846ef7d5e3d0130e7698d76c6e0029", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 PUSH2 0x7F2 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP2 DUP3 AND DUP2 OR PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND OR SWAP1 SSTORE PUSH2 0x6F SWAP1 PUSH5 0x100000000 PUSH2 0x93 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD DUP4 SWAP2 SWAP1 PUSH1 0xFF NOT AND PUSH1 0x1 DUP4 DUP2 DUP2 GT ISZERO PUSH2 0x87 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP POP POP PUSH2 0x13C JUMP JUMPDEST PUSH2 0xAB PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH2 0x5E1 PUSH2 0xAE DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 DUP3 DUP3 PUSH5 0x100000000 PUSH2 0x105 DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH2 0xE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x11C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x6A7 DUP1 PUSH2 0x14B PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x53 JUMPI PUSH4 0xFFFFFFFF PUSH1 0xE0 PUSH1 0x2 EXP PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0xC08BF88 DUP2 EQ PUSH2 0x58 JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x90 JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0xC5 JUMPI DUP1 PUSH4 0xFE4028BB EQ PUSH2 0xDA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D PUSH2 0xFB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB1 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x139 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D PUSH2 0x154 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x15D JUMP JUMPDEST PUSH2 0x104 CALLER PUSH2 0x139 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x10F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x117 PUSH2 0x339 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x122 CALLER PUSH2 0x139 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x12D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x136 DUP2 PUSH2 0x400 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14C PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x411 AND JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x117 CALLER PUSH2 0x448 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 DUP2 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x18A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x193 CALLER PUSH2 0x139 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 SWAP3 POP DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x219 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x22F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x23C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x28E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP PUSH1 0x0 PUSH1 0xFF DUP4 AND LT DUP1 ISZERO SWAP1 PUSH2 0x2C0 JUMPI POP PUSH1 0x5 DUP3 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2D4 DUP3 PUSH2 0x459 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x3 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x2E9 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x2F9 JUMPI PUSH1 0x64 PUSH1 0xA DUP3 MUL DIV SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x333 SWAP2 AND DUP6 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x50B AND JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0x3F8 JUMPI PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0x3F8 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0x50B AND JUMP JUMPDEST PUSH2 0x136 PUSH2 0x5AA JUMP JUMPDEST PUSH2 0x136 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x5E1 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x136 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x62F AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND ISZERO ISZERO PUSH2 0x476 JUMPI POP PUSH10 0x152D02C7E14AF6800000 PUSH2 0x14F JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x493 JUMPI POP PUSH10 0xD3C21BCECCEDA1000000 PUSH2 0x14F JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x4B1 JUMPI POP PUSH11 0x1A784379D99DB42000000 PUSH2 0x14F JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x4CF JUMPI POP PUSH11 0x27B46536C66C8E3000000 PUSH2 0x14F JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x4ED JUMPI POP PUSH11 0x34F086F3B33B684000000 PUSH2 0x14F JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x14F JUMPI POP PUSH11 0x422CA8B0A00A425000000 PUSH2 0x14F JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x56E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x582 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x598 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x5A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x5F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x600 DUP3 DUP3 PUSH2 0x411 JUMP JUMPDEST ISZERO PUSH2 0x60A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x644 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64E DUP3 DUP3 PUSH2 0x411 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x659 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 PUSH1 0x7C 0xdb PUSH30 0x48CFF40583123BE547A706873BBA6B846EF7D5E3D0130E7698D76C6E0029 ", - "sourceMap": "552:1259:2:-;;;822:176;8:9:-1;5:2;;;30:1;27;20:12;5:2;822:176:2;;;;;;;;;;;;;;;;;;;156:8:5;:21;;167:10;-1:-1:-1;;;;;;156:21:5;;;;;-1:-1:-1;;;;;;188:19:5;;;;-1:-1:-1;636:29:3;;;;;-1:-1:-1;;;;;636:29:3;;;;;368:24:1;;:12;;;;:24;:::i;:::-;970:9:2;:20;;982:8;;970:9;-1:-1:-1;;970:20:2;;982:8;970:20;;;;;;;;;;;;;822:176;;552:1259;;824:96:1;883:29;:16;904:7;883:20;;;;;;:29;:::i;:::-;824:96;:::o;244:167:6:-;-1:-1:-1;;;;;316:21:6;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:6;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:6;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:6;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:6;:11;:20;;;;;;;;;;;;;;;725:166::o;552:1259:2:-;;;;;;;" + "object": "608060405234801561001057600080fd5b506040516040806107e88339810180604052604081101561003057600080fd5b5080516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561007f906401000000006100a3810204565b6003805483919060ff19166001838181111561009757fe5b0217905550505061014c565b6100bb6002826401000000006105c76100be82021704565b50565b600160a060020a03811615156100d357600080fd5b6100e68282640100000000610115810204565b156100f057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561012c57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61068d8061015b6000396000f3fe608060405234801561001057600080fd5b506004361061005a5760e060020a60003504630c08bf88811461005f5780632e6b684914610069578063608d3d3d1461008f578063d43acc79146100c9578063fe4028bb146100d1575b600080fd5b6100676100f7565b005b6100676004803603602081101561007f57600080fd5b5035600160a060020a0316610115565b6100b5600480360360208110156100a557600080fd5b5035600160a060020a0316610135565b604080519115158252519081900360200190f35b610067610150565b610067600480360360208110156100e757600080fd5b5035600160a060020a0316610159565b61010033610135565b151561010b57600080fd5b610113610320565b565b61011e33610135565b151561012957600080fd5b610132816103e6565b50565b600061014860028363ffffffff6103f716565b90505b919050565b6101133361042e565b60005474010000000000000000000000000000000000000000900460ff161561018157600080fd5b61018a33610135565b151561019557600080fd5b600160a060020a03811660009081526004602052604090205460ff16156101bb57600080fd5b600081905080600160a060020a0316631777fb4b6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156101fc57600080fd5b505afa158015610210573d6000803e3d6000fd5b505050506040513d602081101561022657600080fd5b5051151561023357600080fd5b600081600160a060020a03166380258e476040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561027157600080fd5b505afa158015610285573d6000803e3d6000fd5b505050506040513d602081101561029b57600080fd5b50519050600560ff821611156102b057600080fd5b60006102bb8261043f565b9050600160035460ff1660018111156102d057fe5b14156102e0576064600a82020490505b600160a060020a038085166000908152600460205260409020805460ff191660019081179091555461031a9116858363ffffffff6104f116565b50505050565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a08231916024808301926020929190829003018186803b15801561038457600080fd5b505afa158015610398573d6000803e3d6000fd5b505050506040513d60208110156103ae57600080fd5b5051905060008111156103de576000546001546103de91600160a060020a0391821691168363ffffffff6104f116565b610132610590565b61013260028263ffffffff6105c716565b6000600160a060020a038216151561040e57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61013260028263ffffffff61061516565b600060ff8216151561045c575069152d02c7e14af680000061014b565b8160ff1660011415610479575069d3c21bcecceda100000061014b565b8160ff166002141561049757506a01a784379d99db4200000061014b565b8160ff16600314156104b557506a027b46536c66c8e300000061014b565b8160ff16600414156104d357506a034f086f3b33b68400000061014b565b8160ff166005141561014b57506a0422ca8b0a00a42500000061014b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561055457600080fd5b505af1158015610568573d6000803e3d6000fd5b505050506040513d602081101561057e57600080fd5b5051151561058b57600080fd5b505050565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a03811615156105dc57600080fd5b6105e682826103f7565b156105f057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561062a57600080fd5b61063482826103f7565b151561063f57600080fd5b600160a060020a0316600090815260209190915260409020805460ff1916905556fea165627a7a72305820da6d23ac8f4b151242d9a9cc936a0d9469d337bb92eddce5cc529e4f80d49b290029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 PUSH2 0x7E8 DUP4 CODECOPY DUP2 ADD DUP1 PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP2 DUP3 AND DUP2 OR PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND OR SWAP1 SSTORE PUSH2 0x7F SWAP1 PUSH5 0x100000000 PUSH2 0xA3 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD DUP4 SWAP2 SWAP1 PUSH1 0xFF NOT AND PUSH1 0x1 DUP4 DUP2 DUP2 GT ISZERO PUSH2 0x97 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP POP POP PUSH2 0x14C JUMP JUMPDEST PUSH2 0xBB PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH2 0x5C7 PUSH2 0xBE DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE6 DUP3 DUP3 PUSH5 0x100000000 PUSH2 0x115 DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x68D DUP1 PUSH2 0x15B PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x5A JUMPI PUSH1 0xE0 PUSH1 0x2 EXP PUSH1 0x0 CALLDATALOAD DIV PUSH4 0xC08BF88 DUP2 EQ PUSH2 0x5F JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0x69 JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x8F JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0xFE4028BB EQ PUSH2 0xD1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x67 PUSH2 0xF7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x67 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH2 0x115 JUMP JUMPDEST PUSH2 0xB5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH2 0x135 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x67 PUSH2 0x150 JUMP JUMPDEST PUSH2 0x67 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH2 0x159 JUMP JUMPDEST PUSH2 0x100 CALLER PUSH2 0x135 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x113 PUSH2 0x320 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x11E CALLER PUSH2 0x135 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x129 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x132 DUP2 PUSH2 0x3E6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x148 PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x3F7 AND JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x113 CALLER PUSH2 0x42E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18A CALLER PUSH2 0x135 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x210 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x226 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x285 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x5 PUSH1 0xFF DUP3 AND GT ISZERO PUSH2 0x2B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2BB DUP3 PUSH2 0x43F JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x3 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x2D0 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x2E0 JUMPI PUSH1 0x64 PUSH1 0xA DUP3 MUL DIV SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x31A SWAP2 AND DUP6 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x4F1 AND JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x384 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x398 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0x3DE JUMPI PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0x3DE SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0x4F1 AND JUMP JUMPDEST PUSH2 0x132 PUSH2 0x590 JUMP JUMPDEST PUSH2 0x132 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x5C7 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x40E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x132 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x615 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND ISZERO ISZERO PUSH2 0x45C JUMPI POP PUSH10 0x152D02C7E14AF6800000 PUSH2 0x14B JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x479 JUMPI POP PUSH10 0xD3C21BCECCEDA1000000 PUSH2 0x14B JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x497 JUMPI POP PUSH11 0x1A784379D99DB42000000 PUSH2 0x14B JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x4B5 JUMPI POP PUSH11 0x27B46536C66C8E3000000 PUSH2 0x14B JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x4D3 JUMPI POP PUSH11 0x34F086F3B33B684000000 PUSH2 0x14B JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x14B JUMPI POP PUSH11 0x422CA8B0A00A425000000 PUSH2 0x14B JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x554 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x568 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x57E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x58B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x5DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5E6 DUP3 DUP3 PUSH2 0x3F7 JUMP JUMPDEST ISZERO PUSH2 0x5F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x62A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x634 DUP3 DUP3 PUSH2 0x3F7 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x63F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 0xda PUSH14 0x23AC8F4B151242D9A9CC936A0D94 PUSH10 0xD337BB92EDDCE5CC529E 0x4f DUP1 0xd4 SWAP12 0x29 STOP 0x29 ", + "sourceMap": "551:1237:2:-;;;821:176;8:9:-1;5:2;;;30:1;27;20:12;5:2;821:176:2;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;821:176:2;;;;;;;155:8:5;:21;;166:10;-1:-1:-1;;;;;;155:21:5;;;;;-1:-1:-1;;;;;;187:19:5;;;;-1:-1:-1;635:29:3;;;;;-1:-1:-1;;;;;635:29:3;;;;;366:24:1;;:12;;;;:24;:::i;:::-;969:9:2;:20;;981:8;;969:9;-1:-1:-1;;969:20:2;;981:8;969:20;;;;;;;;;;;;;821:176;;551:1237;;822:96:1;881:29;:16;902:7;881:20;;;;;;:29;:::i;:::-;822:96;:::o;259:181:6:-;-1:-1:-1;;;;;335:21:6;;;;327:30;;;;;;376:18;380:4;386:7;376:3;;;;:18;:::i;:::-;375:19;367:28;;;;;;-1:-1:-1;;;;;406:20:6;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;406:27:6;429:4;406:27;;;259:181::o;786:162::-;858:4;-1:-1:-1;;;;;882:21:6;;;;874:30;;;;;;-1:-1:-1;;;;;;921:20:6;:11;:20;;;;;;;;;;;;;;;786:162::o;551:1237:2:-;;;;;;;" }, "gasEstimates": { "creation": { - "codeDepositCost": "340600", + "codeDepositCost": "335400", "executionCost": "infinite", "totalCost": "infinite" }, @@ -222,7 +222,7 @@ "transferToMiner(address)": "fe4028bb" } }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"terminate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"transferToMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"poolType\",\"type\":\"uint8\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":\"AlgoPool\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol\":{\"keccak256\":\"0x2314139702cc63c8daa379e521abea3be32730ba896f68f3f865749907e64539\",\"urls\":[\"bzzr://b945e0ec5a4ca8a52b5e816c5bb00807d0ca43c5363102821b36c8c4ee98a2d5\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":{\"keccak256\":\"0x044738efccefb3e008461bf78cc7bf52d39172dffd6bde0dd26446fc2e739866\",\"urls\":[\"bzzr://e8c3fa402a1f5c222df47b0b9dd0c10ea6f62afc2d269133a330f0ee7aa7297e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol\":{\"keccak256\":\"0x71adbf7f060599239b7a981594e43dc8fbe8597fd2853b6fe9e70ff39883d73a\",\"urls\":[\"bzzr://70691c1638cdc0f744f8c5b5a94e4f857ba40ad053816cfbd15e13ed41a3bc66\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0x1b1359f75f7d5a943ab06caea36824f0a6448c5ffa1a32ed7e26cee81cf3683a\",\"urls\":[\"bzzr://26177d59d0c84fa4e632538fbd44802f219e6501b0828533badcf80701cea0f5\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol\":{\"keccak256\":\"0x29a8fa3204dbd204355714601ce21d7d717a586a4de21009d8f2a3ca7981963f\",\"urls\":[\"bzzr://55d9b762620cef1e6f7b11a26d6cc123f5b608a59e0d36f9bc0a1e8ff0ff5c42\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.4+commit.9549d8ff\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"terminate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"transferToMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"poolType\",\"type\":\"uint8\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":\"AlgoPool\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCommon.sol\":{\"keccak256\":\"0x014debd2c96ba7aba7faef24eac1f1a5d46791b55ae55fbd51d7945bf21277e0\",\"urls\":[\"bzzr://b8d1cffc7f1bfdc8c911d90b785cf9c2723b24bd162d7cfd730e127f56932fe9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0x8252ea038586ac8cf89aea6810c1a75d84c2eba48d6b0ecc5f1783929de398a3\",\"urls\":[\"bzzr://3bd6a88368eeb6abb70573d16d481bc20bc22b6c0d3e60702c59c9fab4202528\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":{\"keccak256\":\"0xc30444f5c43be3fa9d5c27d4c8d3024c8e8182215d0750b120094fe5f7beb1cd\",\"urls\":[\"bzzr://fb67170fc2d84ce83219d2091c6df3183a413d26c81cfeaa632a6afc78cebb1c\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol\":{\"keccak256\":\"0x2c964fd13fcc46f0326055bd50569f2bfb32ea7963780763d77b85ed51320205\",\"urls\":[\"bzzr://3fd83f4de7769670f420f04909921357a8ace3b9e0eb08b7c9df0ee57741d347\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0x861339f0f02c28b332f5d8dc165127fa1a402bbbfd7c3923acca26a6139e4f2b\",\"urls\":[\"bzzr://87e5728ff1289cbcc9669fae3a5b994b3a4e0788a2673595adcac700eea8c411\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol\":{\"keccak256\":\"0x8704856f4ea109e3df4805b3b3dd7d9b9026e94f80c42c6d750356d46036a530\",\"urls\":[\"bzzr://18db91d498a487cbc7085490ff2bf017849f88bb4032ea7d840bab3561c45cf4\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0x659ba0f9a3392cd50a8a5fafaf5dfd8c6a0878f6a4613bceff4e90dceddcd865\",\"urls\":[\"bzzr://f704341d520fbc98716541f1b3f67737f0ee6e94adf072a66acb2bd25d593c2b\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x965012d27b4262d7a41f5028cbb30c51ebd9ecd4be8fb30380aaa7a3c64fbc8b\",\"urls\":[\"bzzr://41ca38f6b0fa4b77b0feec43e422cfbec48b7eb38a41edf0b85c77e8d9a296b1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x079c4e23ee448f529e43bfa3c4e8fb4be52cd0318ee923a276835bedf45b93d8\",\"urls\":[\"bzzr://48248e86f64407a95f241d6c5c8cfea6b4d4ebf4ebb467e5c98c8af3868fafe4\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x05fcee7431cd35cd312e14e7f316a44ca3ccc5fb3b859aefc15c1a5db94add7e\",\"urls\":[\"bzzr://5ba67fb83aa7806883a335d53a27dcf1f53b75fa38dedd57893cc84633aa4d4c\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -409,15 +409,16 @@ "Roles": { "abi": [], "devdoc": { + "details": "Library for managing addresses assigned to a Role.", "methods": {}, "title": "Roles" }, "evm": { "bytecode": { "linkReferences": {}, - "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820ba9d82b11504517181f938ed511f09c0a22046ef39e2e32460a2175b508e16a80029", - "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xba SWAP14 DUP3 0xb1 ISZERO DIV MLOAD PUSH18 0x81F938ED511F09C0A22046EF39E2E32460A2 OR JUMPDEST POP DUP15 AND 0xa8 STOP 0x29 ", - "sourceMap": "109:784:6:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582072caac54fe9b00b8b816307b2a5ded8de356c5be6012002ca36f81b18422d8260029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 PUSH19 0xCAAC54FE9B00B8B816307B2A5DED8DE356C5BE PUSH1 0x12 STOP 0x2c LOG3 PUSH16 0x81B18422D82600290000000000000000 ", + "sourceMap": "108:842:6:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -433,7 +434,7 @@ }, "methodIdentifiers": {} }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"Roles\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":\"Roles\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.4+commit.9549d8ff\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for managing addresses assigned to a Role.\",\"methods\":{},\"title\":\"Roles\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":\"Roles\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0x659ba0f9a3392cd50a8a5fafaf5dfd8c6a0878f6a4613bceff4e90dceddcd865\",\"urls\":[\"bzzr://f704341d520fbc98716541f1b3f67737f0ee6e94adf072a66acb2bd25d593c2b\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -443,15 +444,16 @@ "SafeMath": { "abi": [], "devdoc": { + "details": "Unsigned math operations with safety checks that revert on error", "methods": {}, "title": "SafeMath" }, "evm": { "bytecode": { "linkReferences": {}, - "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820da2bd0dd3588878574232c2d13f92e16f4b0e8ad94ede9adb0d087f862d4f8cf0029", - "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xda 0x2b 0xd0 0xdd CALLDATALOAD DUP9 DUP8 DUP6 PUSH21 0x232C2D13F92E16F4B0E8AD94EDE9ADB0D087F862D4 0xf8 0xcf STOP 0x29 ", - "sourceMap": "117:1531:7:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820c8fdc9a15986ffb647c7551d6f3c5b251c8209308e82491b559a3ee6cc289f670029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 0xc8 REVERT 0xc9 LOG1 MSIZE DUP7 SELFDESTRUCT 0xb6 0x47 0xc7 SSTORE SAR PUSH16 0x3C5B251C8209308E82491B559A3EE6CC 0x28 SWAP16 PUSH8 0x29000000000000 ", + "sourceMap": "125:1726:7:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -469,7 +471,7 @@ }, "methodIdentifiers": {} }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"SafeMath\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.4+commit.9549d8ff\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Unsigned math operations with safety checks that revert on error\",\"methods\":{},\"title\":\"SafeMath\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x965012d27b4262d7a41f5028cbb30c51ebd9ecd4be8fb30380aaa7a3c64fbc8b\",\"urls\":[\"bzzr://41ca38f6b0fa4b77b0feec43e422cfbec48b7eb38a41edf0b85c77e8d9a296b1\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -653,6 +655,7 @@ } ], "devdoc": { + "details": "see https://github.com/ethereum/EIPs/issues/20", "methods": {}, "title": "ERC20 interface" }, @@ -683,15 +686,16 @@ "SafeERC20": { "abi": [], "devdoc": { + "details": "Wrappers around ERC20 operations that throw on failure. To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.", "methods": {}, "title": "SafeERC20" }, "evm": { "bytecode": { "linkReferences": {}, - "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820c0f55d8db2bd761049fa5ba6b6c207a4d595b758946aba3715580373517606710029", - "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xc0 0xf5 0x5d DUP14 0xb2 0xbd PUSH23 0x1049FA5BA6B6C207A4D595B758946ABA37155803735176 MOD PUSH18 0x2900000000000000000000000000000000 ", - "sourceMap": "353:1296:9:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820f19c7b62e065f91bc3f26e33372ab3fae2852e0b472cd6bb775c347272d9d5120029", + "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 CALL SWAP13 PUSH28 0x62E065F91BC3F26E33372AB3FAE2852E0B472CD6BB775C347272D9D5 SLT STOP 0x29 ", + "sourceMap": "352:1248:9:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -709,7 +713,7 @@ }, "methodIdentifiers": {} }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"SafeERC20\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.4+commit.9549d8ff\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers around ERC20 operations that throw on failure. To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"methods\":{},\"title\":\"SafeERC20\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x965012d27b4262d7a41f5028cbb30c51ebd9ecd4be8fb30380aaa7a3c64fbc8b\",\"urls\":[\"bzzr://41ca38f6b0fa4b77b0feec43e422cfbec48b7eb38a41edf0b85c77e8d9a296b1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x079c4e23ee448f529e43bfa3c4e8fb4be52cd0318ee923a276835bedf45b93d8\",\"urls\":[\"bzzr://48248e86f64407a95f241d6c5c8cfea6b4d4ebf4ebb467e5c98c8af3868fafe4\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x05fcee7431cd35cd312e14e7f316a44ca3ccc5fb3b859aefc15c1a5db94add7e\",\"urls\":[\"bzzr://5ba67fb83aa7806883a335d53a27dcf1f53b75fa38dedd57893cc84633aa4d4c\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -732,11 +736,11 @@ "id": 1, "literals": [ "solidity", - "0.4", - ".24" + "0.5", + ".4" ], "nodeType": "PragmaDirective", - "src": "0:23:0" + "src": "0:22:0" }, { "baseContracts": [], @@ -757,7 +761,7 @@ "name": "TOKEN_FACTOR", "nodeType": "VariableDeclaration", "scope": 97, - "src": "56:58:0", + "src": "55:58:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -768,7 +772,7 @@ "id": 2, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "56:7:0", + "src": "55:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -795,7 +799,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "97:2:0", + "src": "96:2:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", @@ -818,7 +822,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "111:2:0", + "src": "110:2:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_18_by_1", @@ -840,7 +844,7 @@ "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "103:7:0", + "src": "102:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" @@ -855,13 +859,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "103:11:0", + "src": "102:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "97:17:0", + "src": "96:17:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -875,7 +879,7 @@ "name": "CAT_0_VALUE", "nodeType": "VariableDeclaration", "scope": 97, - "src": "121:61:0", + "src": "120:61:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -886,7 +890,7 @@ "id": 9, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "121:7:0", + "src": "120:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -913,7 +917,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "161:6:0", + "src": "160:6:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_100000_by_1", @@ -930,13 +934,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8, - "src": "170:12:0", + "src": "169:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "161:21:0", + "src": "160:21:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -950,7 +954,7 @@ "name": "CAT_1_VALUE", "nodeType": "VariableDeclaration", "scope": 97, - "src": "189:62:0", + "src": "188:62:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -961,7 +965,7 @@ "id": 14, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "189:7:0", + "src": "188:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -988,7 +992,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "229:7:0", + "src": "228:7:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000000_by_1", @@ -1005,13 +1009,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8, - "src": "239:12:0", + "src": "238:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "229:22:0", + "src": "228:22:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1025,7 +1029,7 @@ "name": "CAT_2_VALUE", "nodeType": "VariableDeclaration", "scope": 97, - "src": "258:66:0", + "src": "257:66:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1036,7 +1040,7 @@ "id": 19, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "258:7:0", + "src": "257:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1074,7 +1078,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "298:1:0", + "src": "297:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -1094,7 +1098,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "302:7:0", + "src": "301:7:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000000_by_1", @@ -1102,7 +1106,7 @@ }, "value": "1000000" }, - "src": "298:11:0", + "src": "297:11:0", "typeDescriptions": { "typeIdentifier": "t_rational_2000000_by_1", "typeString": "int_const 2000000" @@ -1117,13 +1121,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8, - "src": "312:12:0", + "src": "311:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "298:26:0", + "src": "297:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1137,7 +1141,7 @@ "name": "CAT_3_VALUE", "nodeType": "VariableDeclaration", "scope": 97, - "src": "331:66:0", + "src": "330:66:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1148,7 +1152,7 @@ "id": 26, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "331:7:0", + "src": "330:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1186,7 +1190,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "371:1:0", + "src": "370:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", @@ -1206,7 +1210,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "375:7:0", + "src": "374:7:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000000_by_1", @@ -1214,7 +1218,7 @@ }, "value": "1000000" }, - "src": "371:11:0", + "src": "370:11:0", "typeDescriptions": { "typeIdentifier": "t_rational_3000000_by_1", "typeString": "int_const 3000000" @@ -1229,13 +1233,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8, - "src": "385:12:0", + "src": "384:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "371:26:0", + "src": "370:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1249,7 +1253,7 @@ "name": "CAT_4_VALUE", "nodeType": "VariableDeclaration", "scope": 97, - "src": "404:66:0", + "src": "403:66:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1260,7 +1264,7 @@ "id": 33, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "404:7:0", + "src": "403:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1298,7 +1302,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "444:1:0", + "src": "443:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", @@ -1318,7 +1322,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "448:7:0", + "src": "447:7:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000000_by_1", @@ -1326,7 +1330,7 @@ }, "value": "1000000" }, - "src": "444:11:0", + "src": "443:11:0", "typeDescriptions": { "typeIdentifier": "t_rational_4000000_by_1", "typeString": "int_const 4000000" @@ -1341,13 +1345,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8, - "src": "458:12:0", + "src": "457:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "444:26:0", + "src": "443:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1361,7 +1365,7 @@ "name": "CAT_5_VALUE", "nodeType": "VariableDeclaration", "scope": 97, - "src": "477:66:0", + "src": "476:66:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1372,7 +1376,7 @@ "id": 40, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "477:7:0", + "src": "476:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1410,7 +1414,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "517:1:0", + "src": "516:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -1430,7 +1434,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "521:7:0", + "src": "520:7:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000000_by_1", @@ -1438,7 +1442,7 @@ }, "value": "1000000" }, - "src": "517:11:0", + "src": "516:11:0", "typeDescriptions": { "typeIdentifier": "t_rational_5000000_by_1", "typeString": "int_const 5000000" @@ -1453,13 +1457,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8, - "src": "531:12:0", + "src": "530:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "517:26:0", + "src": "516:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1471,7 +1475,7 @@ "body": { "id": 95, "nodeType": "Block", - "src": "631:426:0", + "src": "630:426:0", "statements": [ { "condition": { @@ -1492,7 +1496,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 48, - "src": "645:8:0", + "src": "644:8:0", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1510,7 +1514,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "657:1:0", + "src": "656:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1518,7 +1522,7 @@ }, "value": "0" }, - "src": "645:13:0", + "src": "644:13:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1543,7 +1547,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 48, - "src": "714:8:0", + "src": "713:8:0", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1561,7 +1565,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "726:1:0", + "src": "725:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -1569,7 +1573,7 @@ }, "value": "1" }, - "src": "714:13:0", + "src": "713:13:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1594,7 +1598,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 48, - "src": "783:8:0", + "src": "782:8:0", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1612,7 +1616,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "795:1:0", + "src": "794:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -1620,7 +1624,7 @@ }, "value": "2" }, - "src": "783:13:0", + "src": "782:13:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1645,7 +1649,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 48, - "src": "852:8:0", + "src": "851:8:0", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1663,7 +1667,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "864:1:0", + "src": "863:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", @@ -1671,7 +1675,7 @@ }, "value": "3" }, - "src": "852:13:0", + "src": "851:13:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1696,7 +1700,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 48, - "src": "921:8:0", + "src": "920:8:0", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1714,7 +1718,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "933:1:0", + "src": "932:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", @@ -1722,7 +1726,7 @@ }, "value": "4" }, - "src": "921:13:0", + "src": "920:13:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1747,7 +1751,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 48, - "src": "990:8:0", + "src": "989:8:0", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1765,7 +1769,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1002:1:0", + "src": "1001:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -1773,7 +1777,7 @@ }, "value": "5" }, - "src": "990:13:0", + "src": "989:13:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1782,11 +1786,11 @@ "falseBody": null, "id": 89, "nodeType": "IfStatement", - "src": "987:63:0", + "src": "986:63:0", "trueBody": { "id": 88, "nodeType": "Block", - "src": "1005:45:0", + "src": "1004:45:0", "statements": [ { "expression": { @@ -1796,7 +1800,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 46, - "src": "1027:11:0", + "src": "1026:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1805,18 +1809,18 @@ "functionReturnParameters": 52, "id": 87, "nodeType": "Return", - "src": "1020:18:0" + "src": "1019:18:0" } ] } }, "id": 90, "nodeType": "IfStatement", - "src": "918:132:0", + "src": "917:132:0", "trueBody": { "id": 82, "nodeType": "Block", - "src": "936:45:0", + "src": "935:45:0", "statements": [ { "expression": { @@ -1826,7 +1830,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39, - "src": "958:11:0", + "src": "957:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1835,18 +1839,18 @@ "functionReturnParameters": 52, "id": 81, "nodeType": "Return", - "src": "951:18:0" + "src": "950:18:0" } ] } }, "id": 91, "nodeType": "IfStatement", - "src": "849:201:0", + "src": "848:201:0", "trueBody": { "id": 76, "nodeType": "Block", - "src": "867:45:0", + "src": "866:45:0", "statements": [ { "expression": { @@ -1856,7 +1860,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 32, - "src": "889:11:0", + "src": "888:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1865,18 +1869,18 @@ "functionReturnParameters": 52, "id": 75, "nodeType": "Return", - "src": "882:18:0" + "src": "881:18:0" } ] } }, "id": 92, "nodeType": "IfStatement", - "src": "780:270:0", + "src": "779:270:0", "trueBody": { "id": 70, "nodeType": "Block", - "src": "798:45:0", + "src": "797:45:0", "statements": [ { "expression": { @@ -1886,7 +1890,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 25, - "src": "820:11:0", + "src": "819:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1895,18 +1899,18 @@ "functionReturnParameters": 52, "id": 69, "nodeType": "Return", - "src": "813:18:0" + "src": "812:18:0" } ] } }, "id": 93, "nodeType": "IfStatement", - "src": "711:339:0", + "src": "710:339:0", "trueBody": { "id": 64, "nodeType": "Block", - "src": "729:45:0", + "src": "728:45:0", "statements": [ { "expression": { @@ -1916,7 +1920,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18, - "src": "751:11:0", + "src": "750:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1925,18 +1929,18 @@ "functionReturnParameters": 52, "id": 63, "nodeType": "Return", - "src": "744:18:0" + "src": "743:18:0" } ] } }, "id": 94, "nodeType": "IfStatement", - "src": "642:408:0", + "src": "641:408:0", "trueBody": { "id": 58, "nodeType": "Block", - "src": "660:45:0", + "src": "659:45:0", "statements": [ { "expression": { @@ -1946,7 +1950,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 13, - "src": "682:11:0", + "src": "681:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1955,7 +1959,7 @@ "functionReturnParameters": 52, "id": 57, "nodeType": "Return", - "src": "675:18:0" + "src": "674:18:0" } ] } @@ -1965,8 +1969,7 @@ "documentation": null, "id": 96, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "getCapacityByCategory", "nodeType": "FunctionDefinition", @@ -1980,7 +1983,7 @@ "name": "category", "nodeType": "VariableDeclaration", "scope": 96, - "src": "583:14:0", + "src": "582:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1991,7 +1994,7 @@ "id": 47, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "583:5:0", + "src": "582:5:0", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2001,9 +2004,8 @@ "visibility": "internal" } ], - "src": "582:16:0" + "src": "581:16:0" }, - "payable": false, "returnParameters": { "id": 52, "nodeType": "ParameterList", @@ -2014,7 +2016,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 96, - "src": "622:7:0", + "src": "621:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2025,7 +2027,7 @@ "id": 50, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "622:7:0", + "src": "621:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2035,20 +2037,20 @@ "visibility": "internal" } ], - "src": "621:9:0" + "src": "620:9:0" }, "scope": 97, - "src": "552:505:0", + "src": "551:505:0", "stateMutability": "pure", "superFunction": null, "visibility": "internal" } ], "scope": 98, - "src": "27:1033:0" + "src": "26:1033:0" } ], - "src": "0:1060:0" + "src": "0:1059:0" }, "id": 0 }, @@ -2067,12 +2069,11 @@ "id": 99, "literals": [ "solidity", - "^", - "0.4", - ".24" + "0.5", + ".4" ], "nodeType": "PragmaDirective", - "src": "0:24:1" + "src": "0:22:1" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", @@ -2080,8 +2081,8 @@ "id": 100, "nodeType": "ImportDirective", "scope": 185, - "sourceUnit": 537, - "src": "28:189:1", + "sourceUnit": 533, + "src": "26:189:1", "symbolAliases": [], "unitAlias": "" }, @@ -2105,24 +2106,24 @@ "id": 101, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 536, - "src": "260:5:1", + "referencedDeclaration": 532, + "src": "258:5:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$536", + "typeIdentifier": "t_contract$_Roles_$532", "typeString": "library Roles" } }, "nodeType": "UsingForDirective", - "src": "254:27:1", + "src": "252:27:1", "typeName": { "contractScope": null, "id": 102, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 449, - "src": "270:10:1", + "referencedDeclaration": 445, + "src": "268:10:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$449_storage_ptr", + "typeIdentifier": "t_struct$_Role_$445_storage_ptr", "typeString": "struct Roles.Role" } } @@ -2133,11 +2134,11 @@ "name": "_coreTeamMembers", "nodeType": "VariableDeclaration", "scope": 184, - "src": "289:35:1", + "src": "287:35:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$449_storage", + "typeIdentifier": "t_struct$_Role_$445_storage", "typeString": "struct Roles.Role" }, "typeName": { @@ -2145,10 +2146,10 @@ "id": 104, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 449, - "src": "289:10:1", + "referencedDeclaration": 445, + "src": "287:10:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$449_storage_ptr", + "typeIdentifier": "t_struct$_Role_$445_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -2159,7 +2160,7 @@ "body": { "id": 113, "nodeType": "Block", - "src": "357:43:1", + "src": "355:43:1", "statements": [ { "expression": { @@ -2173,8 +2174,8 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 892, - "src": "381:3:1", + "referencedDeclaration": 889, + "src": "379:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" @@ -2188,18 +2189,18 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "381:10:1", + "src": "379:10:1", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } ], "id": 108, @@ -2207,7 +2208,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 171, - "src": "368:12:1", + "src": "366:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" @@ -2221,7 +2222,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "368:24:1", + "src": "366:24:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -2229,15 +2230,14 @@ }, "id": 112, "nodeType": "ExpressionStatement", - "src": "368:24:1" + "src": "366:24:1" } ] }, "documentation": null, "id": 114, "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, + "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", @@ -2245,17 +2245,16 @@ "id": 106, "nodeType": "ParameterList", "parameters": [], - "src": "345:2:1" + "src": "343:2:1" }, - "payable": false, "returnParameters": { "id": 107, "nodeType": "ParameterList", "parameters": [], - "src": "357:0:1" + "src": "355:0:1" }, "scope": 184, - "src": "333:67:1", + "src": "331:67:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" @@ -2264,7 +2263,7 @@ "body": { "id": 124, "nodeType": "Block", - "src": "432:62:1", + "src": "430:62:1", "statements": [ { "expression": { @@ -2281,8 +2280,8 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 892, - "src": "462:3:1", + "referencedDeclaration": 889, + "src": "460:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" @@ -2296,18 +2295,18 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "462:10:1", + "src": "460:10:1", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } ], "id": 117, @@ -2315,7 +2314,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 138, - "src": "451:10:1", + "src": "449:10:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)" @@ -2329,7 +2328,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "451:22:1", + "src": "449:22:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2347,11 +2346,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 895, - 896 + 892, + 893 ], - "referencedDeclaration": 895, - "src": "443:7:1", + "referencedDeclaration": 892, + "src": "441:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -2365,7 +2364,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "443:31:1", + "src": "441:31:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -2373,12 +2372,12 @@ }, "id": 122, "nodeType": "ExpressionStatement", - "src": "443:31:1" + "src": "441:31:1" }, { "id": 123, "nodeType": "PlaceholderStatement", - "src": "485:1:1" + "src": "483:1:1" } ] }, @@ -2390,16 +2389,16 @@ "id": 115, "nodeType": "ParameterList", "parameters": [], - "src": "429:2:1" + "src": "427:2:1" }, - "src": "408:86:1", + "src": "406:86:1", "visibility": "internal" }, { "body": { "id": 137, "nodeType": "Block", - "src": "566:55:1", + "src": "564:55:1", "statements": [ { "expression": { @@ -2412,7 +2411,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 127, - "src": "605:7:1", + "src": "603:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2433,9 +2432,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 105, - "src": "584:16:1", + "src": "582:16:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$449_storage", + "typeIdentifier": "t_struct$_Role_$445_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -2446,10 +2445,10 @@ "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 535, - "src": "584:20:1", + "referencedDeclaration": 531, + "src": "582:20:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$449_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$449_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$445_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$445_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, @@ -2461,7 +2460,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "584:29:1", + "src": "582:29:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2470,15 +2469,14 @@ "functionReturnParameters": 131, "id": 136, "nodeType": "Return", - "src": "577:36:1" + "src": "575:36:1" } ] }, "documentation": null, "id": 138, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "isCoreTeam", "nodeType": "FunctionDefinition", @@ -2492,7 +2490,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 138, - "src": "522:15:1", + "src": "520:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2503,7 +2501,8 @@ "id": 126, "name": "address", "nodeType": "ElementaryTypeName", - "src": "522:7:1", + "src": "520:7:1", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2513,9 +2512,8 @@ "visibility": "internal" } ], - "src": "521:17:1" + "src": "519:17:1" }, - "payable": false, "returnParameters": { "id": 131, "nodeType": "ParameterList", @@ -2526,7 +2524,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 138, - "src": "560:4:1", + "src": "558:4:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2537,7 +2535,7 @@ "id": 129, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "560:4:1", + "src": "558:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2547,10 +2545,10 @@ "visibility": "internal" } ], - "src": "559:6:1" + "src": "557:6:1" }, "scope": 184, - "src": "502:119:1", + "src": "500:119:1", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -2559,7 +2557,7 @@ "body": { "id": 149, "nodeType": "Block", - "src": "687:40:1", + "src": "685:40:1", "statements": [ { "expression": { @@ -2572,7 +2570,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 140, - "src": "711:7:1", + "src": "709:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2591,7 +2589,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 171, - "src": "698:12:1", + "src": "696:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" @@ -2605,7 +2603,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "698:21:1", + "src": "696:21:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -2613,15 +2611,14 @@ }, "id": 148, "nodeType": "ExpressionStatement", - "src": "698:21:1" + "src": "696:21:1" } ] }, "documentation": null, "id": 150, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, @@ -2633,14 +2630,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "674:12:1", + "src": "672:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "674:12:1" + "src": "672:12:1" } ], "name": "addCoreTeam", @@ -2655,7 +2652,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 150, - "src": "650:15:1", + "src": "648:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2666,7 +2663,8 @@ "id": 139, "name": "address", "nodeType": "ElementaryTypeName", - "src": "650:7:1", + "src": "648:7:1", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2676,17 +2674,16 @@ "visibility": "internal" } ], - "src": "649:17:1" + "src": "647:17:1" }, - "payable": false, "returnParameters": { "id": 144, "nodeType": "ParameterList", "parameters": [], - "src": "687:0:1" + "src": "685:0:1" }, "scope": 184, - "src": "629:98:1", + "src": "627:98:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -2695,7 +2692,7 @@ "body": { "id": 158, "nodeType": "Block", - "src": "770:46:1", + "src": "768:46:1", "statements": [ { "expression": { @@ -2709,8 +2706,8 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 892, - "src": "797:3:1", + "referencedDeclaration": 889, + "src": "795:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" @@ -2724,18 +2721,18 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "797:10:1", + "src": "795:10:1", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } ], "id": 153, @@ -2743,7 +2740,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 183, - "src": "781:15:1", + "src": "779:15:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" @@ -2757,7 +2754,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "781:27:1", + "src": "779:27:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -2765,15 +2762,14 @@ }, "id": 157, "nodeType": "ExpressionStatement", - "src": "781:27:1" + "src": "779:27:1" } ] }, "documentation": null, "id": 159, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "renounceCoreTeam", "nodeType": "FunctionDefinition", @@ -2781,17 +2777,16 @@ "id": 151, "nodeType": "ParameterList", "parameters": [], - "src": "760:2:1" + "src": "758:2:1" }, - "payable": false, "returnParameters": { "id": 152, "nodeType": "ParameterList", "parameters": [], - "src": "770:0:1" + "src": "768:0:1" }, "scope": 184, - "src": "735:81:1", + "src": "733:81:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -2800,7 +2795,7 @@ "body": { "id": 170, "nodeType": "Block", - "src": "872:48:1", + "src": "870:48:1", "statements": [ { "expression": { @@ -2813,7 +2808,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 161, - "src": "904:7:1", + "src": "902:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2834,9 +2829,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 105, - "src": "883:16:1", + "src": "881:16:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$449_storage", + "typeIdentifier": "t_struct$_Role_$445_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -2847,10 +2842,10 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 481, - "src": "883:20:1", + "referencedDeclaration": 477, + "src": "881:20:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$449_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$449_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$445_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$445_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -2862,7 +2857,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "883:29:1", + "src": "881:29:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -2870,15 +2865,14 @@ }, "id": 169, "nodeType": "ExpressionStatement", - "src": "883:29:1" + "src": "881:29:1" } ] }, "documentation": null, "id": 171, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "_addCoreTeam", "nodeType": "FunctionDefinition", @@ -2892,7 +2886,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 171, - "src": "846:15:1", + "src": "844:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2903,7 +2897,8 @@ "id": 160, "name": "address", "nodeType": "ElementaryTypeName", - "src": "846:7:1", + "src": "844:7:1", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2913,17 +2908,16 @@ "visibility": "internal" } ], - "src": "845:17:1" + "src": "843:17:1" }, - "payable": false, "returnParameters": { "id": 163, "nodeType": "ParameterList", "parameters": [], - "src": "872:0:1" + "src": "870:0:1" }, "scope": 184, - "src": "824:96:1", + "src": "822:96:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" @@ -2932,7 +2926,7 @@ "body": { "id": 182, "nodeType": "Block", - "src": "979:51:1", + "src": "977:51:1", "statements": [ { "expression": { @@ -2945,7 +2939,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 173, - "src": "1014:7:1", + "src": "1012:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2966,9 +2960,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 105, - "src": "990:16:1", + "src": "988:16:1", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$449_storage", + "typeIdentifier": "t_struct$_Role_$445_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -2979,10 +2973,10 @@ "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 512, - "src": "990:23:1", + "referencedDeclaration": 508, + "src": "988:23:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$449_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$449_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$445_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$445_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -2994,7 +2988,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "990:32:1", + "src": "988:32:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -3002,15 +2996,14 @@ }, "id": 181, "nodeType": "ExpressionStatement", - "src": "990:32:1" + "src": "988:32:1" } ] }, "documentation": null, "id": 183, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "_removeCoreTeam", "nodeType": "FunctionDefinition", @@ -3024,7 +3017,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 183, - "src": "953:15:1", + "src": "951:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3035,7 +3028,8 @@ "id": 172, "name": "address", "nodeType": "ElementaryTypeName", - "src": "953:7:1", + "src": "951:7:1", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3045,27 +3039,26 @@ "visibility": "internal" } ], - "src": "952:17:1" + "src": "950:17:1" }, - "payable": false, "returnParameters": { "id": 175, "nodeType": "ParameterList", "parameters": [], - "src": "979:0:1" + "src": "977:0:1" }, "scope": 184, - "src": "928:102:1", + "src": "926:102:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], "scope": 185, - "src": "221:812:1" + "src": "219:812:1" } ], - "src": "0:1035:1" + "src": "0:1033:1" }, "id": 1 }, @@ -3074,30 +3067,30 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol", "exportedSymbols": { "AlgoPool": [ - 315 + 311 ] }, - "id": 316, + "id": 312, "nodeType": "SourceUnit", "nodes": [ { "id": 186, "literals": [ "solidity", - "0.4", - ".24" + "0.5", + ".4" ], "nodeType": "PragmaDirective", - "src": "0:23:2" + "src": "0:22:2" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "id": 187, "nodeType": "ImportDirective", - "scope": 316, - "sourceUnit": 734, - "src": "27:195:2", + "scope": 312, + "sourceUnit": 730, + "src": "26:195:2", "symbolAliases": [], "unitAlias": "" }, @@ -3106,9 +3099,9 @@ "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "id": 188, "nodeType": "ImportDirective", - "scope": 316, - "sourceUnit": 878, - "src": "224:198:2", + "scope": 312, + "sourceUnit": 875, + "src": "223:198:2", "symbolAliases": [], "unitAlias": "" }, @@ -3117,9 +3110,9 @@ "file": "./IAlgoMiner.sol", "id": 189, "nodeType": "ImportDirective", - "scope": 316, - "sourceUnit": 406, - "src": "426:26:2", + "scope": 312, + "sourceUnit": 402, + "src": "425:26:2", "symbolAliases": [], "unitAlias": "" }, @@ -3128,9 +3121,9 @@ "file": "./AlgoCommon.sol", "id": 190, "nodeType": "ImportDirective", - "scope": 316, + "scope": 312, "sourceUnit": 98, - "src": "454:26:2", + "src": "453:26:2", "symbolAliases": [], "unitAlias": "" }, @@ -3139,9 +3132,9 @@ "file": "./ERC20TokenHolder.sol", "id": 191, "nodeType": "ImportDirective", - "scope": 316, - "sourceUnit": 373, - "src": "482:32:2", + "scope": 312, + "sourceUnit": 369, + "src": "481:32:2", "symbolAliases": [], "unitAlias": "" }, @@ -3150,9 +3143,9 @@ "file": "./AlgoCoreTeamRole.sol", "id": 192, "nodeType": "ImportDirective", - "scope": 316, + "scope": 312, "sourceUnit": 185, - "src": "516:32:2", + "src": "515:32:2", "symbolAliases": [], "unitAlias": "" }, @@ -3166,7 +3159,7 @@ "name": "AlgoCommon", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 97, - "src": "573:10:2", + "src": "572:10:2", "typeDescriptions": { "typeIdentifier": "t_contract$_AlgoCommon_$97", "typeString": "contract AlgoCommon" @@ -3174,7 +3167,7 @@ }, "id": 194, "nodeType": "InheritanceSpecifier", - "src": "573:10:2" + "src": "572:10:2" }, { "arguments": null, @@ -3183,16 +3176,16 @@ "id": 195, "name": "ERC20TokenHolder", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 372, - "src": "585:16:2", + "referencedDeclaration": 368, + "src": "584:16:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20TokenHolder_$372", + "typeIdentifier": "t_contract$_ERC20TokenHolder_$368", "typeString": "contract ERC20TokenHolder" } }, "id": 196, "nodeType": "InheritanceSpecifier", - "src": "585:16:2" + "src": "584:16:2" }, { "arguments": null, @@ -3202,7 +3195,7 @@ "name": "AlgoCoreTeamRole", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 184, - "src": "603:16:2", + "src": "602:16:2", "typeDescriptions": { "typeIdentifier": "t_contract$_AlgoCoreTeamRole_$184", "typeString": "contract AlgoCoreTeamRole" @@ -3210,24 +3203,24 @@ }, "id": 198, "nodeType": "InheritanceSpecifier", - "src": "603:16:2" + "src": "602:16:2" } ], "contractDependencies": [ - 97, - 372, + 438, 184, - 442 + 368, + 97 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 315, + "id": 311, "linearizedBaseContracts": [ - 315, + 311, 184, - 372, - 442, + 368, + 438, 97 ], "name": "AlgoPool", @@ -3240,24 +3233,24 @@ "id": 199, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 877, - "src": "633:9:2", + "referencedDeclaration": 874, + "src": "632:9:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$877", + "typeIdentifier": "t_contract$_SafeERC20_$874", "typeString": "library SafeERC20" } }, "nodeType": "UsingForDirective", - "src": "627:27:2", + "src": "626:27:2", "typeName": { "contractScope": null, "id": 200, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 733, - "src": "647:6:2", + "referencedDeclaration": 729, + "src": "646:6:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$733", + "typeIdentifier": "t_contract$_IERC20_$729", "typeString": "contract IERC20" } } @@ -3270,26 +3263,26 @@ "id": 202, "name": "MinerPool", "nodeType": "EnumValue", - "src": "687:9:2" + "src": "686:9:2" }, { "id": 203, "name": "ReferralPool", "nodeType": "EnumValue", - "src": "707:12:2" + "src": "706:12:2" } ], "name": "PoolType", "nodeType": "EnumDefinition", - "src": "662:64:2" + "src": "661:64:2" }, { "constant": false, "id": 206, "name": "_poolType", "nodeType": "VariableDeclaration", - "scope": 315, - "src": "734:26:2", + "scope": 311, + "src": "733:26:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3302,7 +3295,7 @@ "name": "PoolType", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 204, - "src": "734:8:2", + "src": "733:8:2", "typeDescriptions": { "typeIdentifier": "t_enum$_PoolType_$204", "typeString": "enum AlgoPool.PoolType" @@ -3316,8 +3309,8 @@ "id": 210, "name": "_fundedMiners", "nodeType": "VariableDeclaration", - "scope": 315, - "src": "767:46:2", + "scope": 311, + "src": "766:46:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3330,14 +3323,14 @@ "id": 207, "name": "address", "nodeType": "ElementaryTypeName", - "src": "775:7:2", + "src": "774:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "767:24:2", + "src": "766:24:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" @@ -3346,7 +3339,7 @@ "id": 208, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "786:4:2", + "src": "785:4:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3360,7 +3353,7 @@ "body": { "id": 226, "nodeType": "Block", - "src": "959:39:2", + "src": "958:39:2", "statements": [ { "expression": { @@ -3377,7 +3370,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 206, - "src": "970:9:2", + "src": "969:9:2", "typeDescriptions": { "typeIdentifier": "t_enum$_PoolType_$204", "typeString": "enum AlgoPool.PoolType" @@ -3392,13 +3385,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 212, - "src": "982:8:2", + "src": "981:8:2", "typeDescriptions": { "typeIdentifier": "t_enum$_PoolType_$204", "typeString": "enum AlgoPool.PoolType" } }, - "src": "970:20:2", + "src": "969:20:2", "typeDescriptions": { "typeIdentifier": "t_enum$_PoolType_$204", "typeString": "enum AlgoPool.PoolType" @@ -3406,15 +3399,14 @@ }, "id": 225, "nodeType": "ExpressionStatement", - "src": "970:20:2" + "src": "969:20:2" } ] }, "documentation": null, "id": 227, "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, + "kind": "constructor", "modifiers": [ { "arguments": [ @@ -3425,7 +3417,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 214, - "src": "901:12:2", + "src": "900:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3439,15 +3431,15 @@ "name": "ERC20TokenHolder", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 372, - "src": "884:16:2", + "referencedDeclaration": 368, + "src": "883:16:2", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20TokenHolder_$372_$", + "typeIdentifier": "t_type$_t_contract$_ERC20TokenHolder_$368_$", "typeString": "type(contract ERC20TokenHolder)" } }, "nodeType": "ModifierInvocation", - "src": "884:30:2" + "src": "883:30:2" }, { "arguments": [], @@ -3459,14 +3451,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 184, - "src": "924:16:2", + "src": "923:16:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_AlgoCoreTeamRole_$184_$", "typeString": "type(contract AlgoCoreTeamRole)" } }, "nodeType": "ModifierInvocation", - "src": "924:18:2" + "src": "923:18:2" } ], "name": "", @@ -3481,7 +3473,7 @@ "name": "poolType", "nodeType": "VariableDeclaration", "scope": 227, - "src": "834:17:2", + "src": "833:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3494,7 +3486,7 @@ "name": "PoolType", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 204, - "src": "834:8:2", + "src": "833:8:2", "typeDescriptions": { "typeIdentifier": "t_enum$_PoolType_$204", "typeString": "enum AlgoPool.PoolType" @@ -3509,7 +3501,7 @@ "name": "tokenAddress", "nodeType": "VariableDeclaration", "scope": 227, - "src": "853:20:2", + "src": "852:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3520,7 +3512,8 @@ "id": 213, "name": "address", "nodeType": "ElementaryTypeName", - "src": "853:7:2", + "src": "852:7:2", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3530,26 +3523,25 @@ "visibility": "internal" } ], - "src": "833:41:2" + "src": "832:41:2" }, - "payable": false, "returnParameters": { "id": 221, "nodeType": "ParameterList", "parameters": [], - "src": "959:0:2" + "src": "958:0:2" }, - "scope": 315, - "src": "822:176:2", + "scope": 311, + "src": "821:176:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 304, + "id": 300, "nodeType": "Block", - "src": "1087:641:2", + "src": "1086:619:2", "statements": [ { "expression": { @@ -3565,7 +3557,7 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1106:28:2", + "src": "1105:28:2", "subExpression": { "argumentTypes": null, "baseExpression": { @@ -3575,7 +3567,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 210, - "src": "1107:13:2", + "src": "1106:13:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" @@ -3589,7 +3581,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 229, - "src": "1121:12:2", + "src": "1120:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3600,7 +3592,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1107:27:2", + "src": "1106:27:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3623,11 +3615,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 895, - 896 + 892, + 893 ], - "referencedDeclaration": 895, - "src": "1098:7:2", + "referencedDeclaration": 892, + "src": "1097:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -3641,7 +3633,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1098:37:2", + "src": "1097:37:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -3649,7 +3641,7 @@ }, "id": 242, "nodeType": "ExpressionStatement", - "src": "1098:37:2" + "src": "1097:37:2" }, { "assignments": [ @@ -3661,12 +3653,12 @@ "id": 244, "name": "algoMiner", "nodeType": "VariableDeclaration", - "scope": 305, - "src": "1148:20:2", + "scope": 300, + "src": "1147:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$405", + "typeIdentifier": "t_contract$_IAlgoMiner_$401", "typeString": "contract IAlgoMiner" }, "typeName": { @@ -3674,10 +3666,10 @@ "id": 243, "name": "IAlgoMiner", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 405, - "src": "1148:10:2", + "referencedDeclaration": 401, + "src": "1147:10:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$405", + "typeIdentifier": "t_contract$_IAlgoMiner_$401", "typeString": "contract IAlgoMiner" } }, @@ -3696,7 +3688,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 229, - "src": "1182:12:2", + "src": "1181:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3714,10 +3706,10 @@ "name": "IAlgoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 405, - "src": "1171:10:2", + "referencedDeclaration": 401, + "src": "1170:10:2", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$405_$", + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$401_$", "typeString": "type(contract IAlgoMiner)" } }, @@ -3729,14 +3721,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1171:24:2", + "src": "1170:24:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$405", + "typeIdentifier": "t_contract$_IAlgoMiner_$401", "typeString": "contract IAlgoMiner" } }, "nodeType": "VariableDeclarationStatement", - "src": "1148:47:2" + "src": "1147:47:2" }, { "expression": { @@ -3754,9 +3746,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 244, - "src": "1224:9:2", + "src": "1223:9:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$405", + "typeIdentifier": "t_contract$_IAlgoMiner_$401", "typeString": "contract IAlgoMiner" } }, @@ -3767,8 +3759,8 @@ "lValueRequested": false, "memberName": "isAlgoMiner", "nodeType": "MemberAccess", - "referencedDeclaration": 379, - "src": "1224:21:2", + "referencedDeclaration": 375, + "src": "1223:21:2", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$__$returns$_t_bool_$", "typeString": "function () pure external returns (bool)" @@ -3782,7 +3774,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1224:23:2", + "src": "1223:23:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3800,11 +3792,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 895, - 896 + 892, + 893 ], - "referencedDeclaration": 895, - "src": "1216:7:2", + "referencedDeclaration": 892, + "src": "1215:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -3818,7 +3810,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1216:32:2", + "src": "1215:32:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -3826,7 +3818,7 @@ }, "id": 254, "nodeType": "ExpressionStatement", - "src": "1216:32:2" + "src": "1215:32:2" }, { "assignments": [ @@ -3838,8 +3830,8 @@ "id": 256, "name": "minerCategory", "nodeType": "VariableDeclaration", - "scope": 305, - "src": "1269:19:2", + "scope": 300, + "src": "1268:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3850,7 +3842,7 @@ "id": 255, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1269:5:2", + "src": "1268:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3873,9 +3865,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 244, - "src": "1291:9:2", + "src": "1290:9:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$405", + "typeIdentifier": "t_contract$_IAlgoMiner_$401", "typeString": "contract IAlgoMiner" } }, @@ -3886,8 +3878,8 @@ "lValueRequested": false, "memberName": "getCategory", "nodeType": "MemberAccess", - "referencedDeclaration": 389, - "src": "1291:21:2", + "referencedDeclaration": 385, + "src": "1290:21:2", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" @@ -3901,14 +3893,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1291:23:2", + "src": "1290:23:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", - "src": "1269:45:2" + "src": "1268:45:2" }, { "expression": { @@ -3917,117 +3909,48 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint8", + "typeString": "uint8" }, - "id": 268, + "id": 264, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "commonType": { + "id": 262, + "name": "minerCategory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 256, + "src": "1334:13:2", + "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" - }, - "id": 264, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 262, - "name": "minerCategory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "1335:13:2", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 263, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1352:1:2", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1335:18:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" } }, "nodeType": "BinaryOperation", - "operator": "&&", + "operator": "<=", "rightExpression": { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 267, + "hexValue": "35", + "id": 263, "isConstant": false, "isLValue": false, - "isPure": false, + "isPure": true, + "kind": "number", "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 265, - "name": "minerCategory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "1357:13:2", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "35", - "id": 266, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1374:1:2", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_5_by_1", - "typeString": "int_const 5" - }, - "value": "5" - }, - "src": "1357:18:2", + "nodeType": "Literal", + "src": "1351:1:2", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" }, - "src": "1335:40:2", + "src": "1334:18:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4045,17 +3968,17 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 895, - 896 + 892, + 893 ], - "referencedDeclaration": 895, - "src": "1327:7:2", + "referencedDeclaration": 892, + "src": "1326:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 269, + "id": 265, "isConstant": false, "isLValue": false, "isPure": false, @@ -4063,28 +3986,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1327:49:2", + "src": "1326:27:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 270, + "id": 266, "nodeType": "ExpressionStatement", - "src": "1327:49:2" + "src": "1326:27:2" }, { "assignments": [ - 272 + 268 ], "declarations": [ { "constant": false, - "id": 272, + "id": 268, "name": "value", "nodeType": "VariableDeclaration", - "scope": 305, - "src": "1389:13:2", + "scope": 300, + "src": "1366:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4092,10 +4015,10 @@ "typeString": "uint256" }, "typeName": { - "id": 271, + "id": 267, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1389:7:2", + "src": "1366:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4105,18 +4028,18 @@ "visibility": "internal" } ], - "id": 276, + "id": 272, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 274, + "id": 270, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 256, - "src": "1427:13:2", + "src": "1404:13:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4130,18 +4053,18 @@ "typeString": "uint8" } ], - "id": 273, + "id": 269, "name": "getCapacityByCategory", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, - "src": "1405:21:2", + "src": "1382:21:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint8_$returns$_t_uint256_$", "typeString": "function (uint8) pure returns (uint256)" } }, - "id": 275, + "id": 271, "isConstant": false, "isLValue": false, "isPure": false, @@ -4149,14 +4072,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1405:36:2", + "src": "1382:36:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1389:52:2" + "src": "1366:52:2" }, { "condition": { @@ -4165,19 +4088,19 @@ "typeIdentifier": "t_enum$_PoolType_$204", "typeString": "enum AlgoPool.PoolType" }, - "id": 280, + "id": 276, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 277, + "id": 273, "name": "_poolType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 206, - "src": "1536:9:2", + "src": "1513:9:2", "typeDescriptions": { "typeIdentifier": "t_enum$_PoolType_$204", "typeString": "enum AlgoPool.PoolType" @@ -4189,18 +4112,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 278, + "id": 274, "name": "PoolType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 204, - "src": "1549:8:2", + "src": "1526:8:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_PoolType_$204_$", "typeString": "type(enum AlgoPool.PoolType)" } }, - "id": 279, + "id": 275, "isConstant": false, "isLValue": false, "isPure": true, @@ -4208,43 +4131,43 @@ "memberName": "ReferralPool", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1549:21:2", + "src": "1526:21:2", "typeDescriptions": { "typeIdentifier": "t_enum$_PoolType_$204", "typeString": "enum AlgoPool.PoolType" } }, - "src": "1536:34:2", + "src": "1513:34:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 290, + "id": 286, "nodeType": "IfStatement", - "src": "1533:90:2", + "src": "1510:90:2", "trueBody": { - "id": 289, + "id": 285, "nodeType": "Block", - "src": "1572:51:2", + "src": "1549:51:2", "statements": [ { "expression": { "argumentTypes": null, - "id": 287, + "id": 283, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 281, + "id": 277, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 272, - "src": "1587:5:2", + "referencedDeclaration": 268, + "src": "1564:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4258,7 +4181,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 286, + "id": 282, "isConstant": false, "isLValue": false, "isPure": false, @@ -4269,19 +4192,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 284, + "id": 280, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 282, + "id": 278, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 272, - "src": "1595:5:2", + "referencedDeclaration": 268, + "src": "1572:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4292,14 +4215,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "3130", - "id": 283, + "id": 279, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1603:2:2", + "src": "1580:2:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", @@ -4307,7 +4230,7 @@ }, "value": "10" }, - "src": "1595:10:2", + "src": "1572:10:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4318,14 +4241,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "313030", - "id": 285, + "id": 281, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1608:3:2", + "src": "1585:3:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_100_by_1", @@ -4333,21 +4256,21 @@ }, "value": "100" }, - "src": "1595:16:2", + "src": "1572:16:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1587:24:2", + "src": "1564:24:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 288, + "id": 284, "nodeType": "ExpressionStatement", - "src": "1587:24:2" + "src": "1564:24:2" } ] } @@ -4355,7 +4278,7 @@ { "expression": { "argumentTypes": null, - "id": 295, + "id": 291, "isConstant": false, "isLValue": false, "isPure": false, @@ -4364,26 +4287,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 291, + "id": 287, "name": "_fundedMiners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 210, - "src": "1635:13:2", + "src": "1612:13:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 293, + "id": 289, "indexExpression": { "argumentTypes": null, - "id": 292, + "id": 288, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 229, - "src": "1649:12:2", + "src": "1626:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4394,7 +4317,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1635:27:2", + "src": "1612:27:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4405,14 +4328,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 294, + "id": 290, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1665:4:2", + "src": "1642:4:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4420,15 +4343,15 @@ }, "value": "true" }, - "src": "1635:34:2", + "src": "1612:34:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 296, + "id": 292, "nodeType": "ExpressionStatement", - "src": "1635:34:2" + "src": "1612:34:2" }, { "expression": { @@ -4436,12 +4359,12 @@ "arguments": [ { "argumentTypes": null, - "id": 300, + "id": 296, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 229, - "src": "1700:12:2", + "src": "1677:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4449,12 +4372,12 @@ }, { "argumentTypes": null, - "id": 301, + "id": 297, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 272, - "src": "1714:5:2", + "referencedDeclaration": 268, + "src": "1691:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4474,32 +4397,32 @@ ], "expression": { "argumentTypes": null, - "id": 297, + "id": 293, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 327, - "src": "1680:6:2", + "referencedDeclaration": 323, + "src": "1657:6:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$733", + "typeIdentifier": "t_contract$_IERC20_$729", "typeString": "contract IERC20" } }, - "id": 299, + "id": 295, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 758, - "src": "1680:19:2", + "referencedDeclaration": 754, + "src": "1657:19:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$733_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$733_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$729_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$729_$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 302, + "id": 298, "isConstant": false, "isLValue": false, "isPure": false, @@ -4507,23 +4430,22 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1680:40:2", + "src": "1657:40:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 303, + "id": 299, "nodeType": "ExpressionStatement", - "src": "1680:40:2" + "src": "1657:40:2" } ] }, "documentation": null, - "id": 305, + "id": 301, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, @@ -4534,15 +4456,15 @@ "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 433, - "src": "1060:13:2", + "referencedDeclaration": 429, + "src": "1059:13:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1060:13:2" + "src": "1059:13:2" }, { "arguments": null, @@ -4554,14 +4476,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "1074:12:2", + "src": "1073:12:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1074:12:2" + "src": "1073:12:2" } ], "name": "transferToMiner", @@ -4575,8 +4497,8 @@ "id": 229, "name": "minerAddress", "nodeType": "VariableDeclaration", - "scope": 305, - "src": "1031:20:2", + "scope": 301, + "src": "1030:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4587,7 +4509,8 @@ "id": 228, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1031:7:2", + "src": "1030:7:2", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4597,26 +4520,25 @@ "visibility": "internal" } ], - "src": "1030:22:2" + "src": "1029:22:2" }, - "payable": false, "returnParameters": { "id": 235, "nodeType": "ParameterList", "parameters": [], - "src": "1087:0:2" + "src": "1086:0:2" }, - "scope": 315, - "src": "1006:722:2", + "scope": 311, + "src": "1005:700:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 313, + "id": 309, "nodeType": "Block", - "src": "1777:31:2", + "src": "1754:31:2", "statements": [ { "expression": { @@ -4624,20 +4546,20 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 310, + "id": 306, "name": "_terminate", "nodeType": "Identifier", "overloadedDeclarations": [ - 371 + 367 ], - "referencedDeclaration": 371, - "src": "1788:10:2", + "referencedDeclaration": 367, + "src": "1765:10:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 311, + "id": 307, "isConstant": false, "isLValue": false, "isPure": false, @@ -4645,71 +4567,69 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1788:12:2", + "src": "1765:12:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 312, + "id": 308, "nodeType": "ExpressionStatement", - "src": "1788:12:2" + "src": "1765:12:2" } ] }, "documentation": null, - "id": 314, + "id": 310, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [ { "arguments": null, - "id": 308, + "id": 304, "modifierName": { "argumentTypes": null, - "id": 307, + "id": 303, "name": "onlyCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, - "src": "1764:12:2", + "src": "1741:12:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1764:12:2" + "src": "1741:12:2" } ], "name": "terminate", "nodeType": "FunctionDefinition", "parameters": { - "id": 306, + "id": 302, "nodeType": "ParameterList", "parameters": [], - "src": "1754:2:2" + "src": "1731:2:2" }, - "payable": false, "returnParameters": { - "id": 309, + "id": 305, "nodeType": "ParameterList", "parameters": [], - "src": "1777:0:2" + "src": "1754:0:2" }, - "scope": 315, - "src": "1736:72:2", + "scope": 311, + "src": "1713:72:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 316, - "src": "552:1259:2" + "scope": 312, + "src": "551:1237:2" } ], - "src": "0:1813:2" + "src": "0:1790:2" }, "id": 2 }, @@ -4718,52 +4638,52 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol", "exportedSymbols": { "ERC20TokenHolder": [ - 372 + 368 ] }, - "id": 373, + "id": 369, "nodeType": "SourceUnit", "nodes": [ { - "id": 317, + "id": 313, "literals": [ "solidity", - "0.4", - ".24" + "0.5", + ".4" ], "nodeType": "PragmaDirective", - "src": "0:23:3" + "src": "0:22:3" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "id": 318, + "id": 314, "nodeType": "ImportDirective", - "scope": 373, - "sourceUnit": 734, - "src": "27:195:3", + "scope": 369, + "sourceUnit": 730, + "src": "26:195:3", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", - "id": 319, + "id": 315, "nodeType": "ImportDirective", - "scope": 373, - "sourceUnit": 878, - "src": "224:198:3", + "scope": 369, + "sourceUnit": 875, + "src": "223:198:3", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", "file": "./Terminable.sol", - "id": 320, + "id": 316, "nodeType": "ImportDirective", - "scope": 373, - "sourceUnit": 443, - "src": "426:26:3", + "scope": 369, + "sourceUnit": 439, + "src": "425:26:3", "symbolAliases": [], "unitAlias": "" }, @@ -4773,86 +4693,86 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 321, + "id": 317, "name": "Terminable", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 442, - "src": "485:10:3", + "referencedDeclaration": 438, + "src": "484:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_Terminable_$442", + "typeIdentifier": "t_contract$_Terminable_$438", "typeString": "contract Terminable" } }, - "id": 322, + "id": 318, "nodeType": "InheritanceSpecifier", - "src": "485:10:3" + "src": "484:10:3" } ], "contractDependencies": [ - 442 + 438 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 372, + "id": 368, "linearizedBaseContracts": [ - 372, - 442 + 368, + 438 ], "name": "ERC20TokenHolder", "nodeType": "ContractDefinition", "nodes": [ { - "id": 325, + "id": 321, "libraryName": { "contractScope": null, - "id": 323, + "id": 319, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 877, - "src": "509:9:3", + "referencedDeclaration": 874, + "src": "508:9:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$877", + "typeIdentifier": "t_contract$_SafeERC20_$874", "typeString": "library SafeERC20" } }, "nodeType": "UsingForDirective", - "src": "503:27:3", + "src": "502:27:3", "typeName": { "contractScope": null, - "id": 324, + "id": 320, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 733, - "src": "523:6:3", + "referencedDeclaration": 729, + "src": "522:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$733", + "typeIdentifier": "t_contract$_IERC20_$729", "typeString": "contract IERC20" } } }, { "constant": false, - "id": 327, + "id": 323, "name": "_token", "nodeType": "VariableDeclaration", - "scope": 372, - "src": "538:22:3", + "scope": 368, + "src": "537:22:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$733", + "typeIdentifier": "t_contract$_IERC20_$729", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 326, + "id": 322, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 733, - "src": "538:6:3", + "referencedDeclaration": 729, + "src": "537:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$733", + "typeIdentifier": "t_contract$_IERC20_$729", "typeString": "contract IERC20" } }, @@ -4861,28 +4781,28 @@ }, { "body": { - "id": 340, + "id": 336, "nodeType": "Block", - "src": "625:48:3", + "src": "624:48:3", "statements": [ { "expression": { "argumentTypes": null, - "id": 338, + "id": 334, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 334, + "id": 330, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 327, - "src": "636:6:3", + "referencedDeclaration": 323, + "src": "635:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$733", + "typeIdentifier": "t_contract$_IERC20_$729", "typeString": "contract IERC20" } }, @@ -4893,12 +4813,12 @@ "arguments": [ { "argumentTypes": null, - "id": 336, + "id": 332, "name": "tokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 329, - "src": "652:12:3", + "referencedDeclaration": 325, + "src": "651:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4912,18 +4832,18 @@ "typeString": "address" } ], - "id": 335, + "id": 331, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 733, - "src": "645:6:3", + "referencedDeclaration": 729, + "src": "644:6:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$733_$", + "typeIdentifier": "t_type$_t_contract$_IERC20_$729_$", "typeString": "type(contract IERC20)" } }, - "id": 337, + "id": 333, "isConstant": false, "isLValue": false, "isPure": false, @@ -4931,63 +4851,62 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "645:20:3", + "src": "644:20:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$733", + "typeIdentifier": "t_contract$_IERC20_$729", "typeString": "contract IERC20" } }, - "src": "636:29:3", + "src": "635:29:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$733", + "typeIdentifier": "t_contract$_IERC20_$729", "typeString": "contract IERC20" } }, - "id": 339, + "id": 335, "nodeType": "ExpressionStatement", - "src": "636:29:3" + "src": "635:29:3" } ] }, "documentation": null, - "id": 341, + "id": 337, "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, + "kind": "constructor", "modifiers": [ { "arguments": [], - "id": 332, + "id": 328, "modifierName": { "argumentTypes": null, - "id": 331, + "id": 327, "name": "Terminable", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 442, - "src": "603:10:3", + "referencedDeclaration": 438, + "src": "602:10:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Terminable_$442_$", + "typeIdentifier": "t_type$_t_contract$_Terminable_$438_$", "typeString": "type(contract Terminable)" } }, "nodeType": "ModifierInvocation", - "src": "603:12:3" + "src": "602:12:3" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 330, + "id": 326, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 329, + "id": 325, "name": "tokenAddress", "nodeType": "VariableDeclaration", - "scope": 341, - "src": "581:20:3", + "scope": 337, + "src": "580:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4995,10 +4914,11 @@ "typeString": "address" }, "typeName": { - "id": 328, + "id": 324, "name": "address", "nodeType": "ElementaryTypeName", - "src": "581:7:3", + "src": "580:7:3", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5008,39 +4928,38 @@ "visibility": "internal" } ], - "src": "580:22:3" + "src": "579:22:3" }, - "payable": false, "returnParameters": { - "id": 333, + "id": 329, "nodeType": "ParameterList", "parameters": [], - "src": "625:0:3" + "src": "624:0:3" }, - "scope": 372, - "src": "569:104:3", + "scope": 368, + "src": "568:104:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 370, + "id": 366, "nodeType": "Block", - "src": "712:214:3", + "src": "711:214:3", "statements": [ { "assignments": [ - 345 + 341 ], "declarations": [ { "constant": false, - "id": 345, + "id": 341, "name": "currentBalance", "nodeType": "VariableDeclaration", - "scope": 371, - "src": "723:22:3", + "scope": 366, + "src": "722:22:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5048,10 +4967,10 @@ "typeString": "uint256" }, "typeName": { - "id": 344, + "id": 340, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "723:7:3", + "src": "722:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5061,7 +4980,7 @@ "visibility": "internal" } ], - "id": 352, + "id": 348, "initialValue": { "argumentTypes": null, "arguments": [ @@ -5070,14 +4989,14 @@ "arguments": [ { "argumentTypes": null, - "id": 349, + "id": 345, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 921, - "src": "773:4:3", + "referencedDeclaration": 919, + "src": "772:4:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20TokenHolder_$372", + "typeIdentifier": "t_contract$_ERC20TokenHolder_$368", "typeString": "contract ERC20TokenHolder" } } @@ -5085,24 +5004,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ERC20TokenHolder_$372", + "typeIdentifier": "t_contract$_ERC20TokenHolder_$368", "typeString": "contract ERC20TokenHolder" } ], - "id": 348, + "id": 344, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "765:7:3", + "src": "764:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 350, + "id": 346, "isConstant": false, "isLValue": false, "isPure": false, @@ -5110,7 +5029,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "765:13:3", + "src": "764:13:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5126,32 +5045,32 @@ ], "expression": { "argumentTypes": null, - "id": 346, + "id": 342, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 327, - "src": "748:6:3", + "referencedDeclaration": 323, + "src": "747:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$733", + "typeIdentifier": "t_contract$_IERC20_$729", "typeString": "contract IERC20" } }, - "id": 347, + "id": 343, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 678, - "src": "748:16:3", + "referencedDeclaration": 703, + "src": "747:16:3", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 351, + "id": 347, "isConstant": false, "isLValue": false, "isPure": false, @@ -5159,14 +5078,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "748:31:3", + "src": "747:31:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "723:56:3" + "src": "722:56:3" }, { "condition": { @@ -5175,19 +5094,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 355, + "id": 351, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 353, + "id": 349, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 345, - "src": "793:14:3", + "referencedDeclaration": 341, + "src": "792:14:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5198,14 +5117,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 354, + "id": 350, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "810:1:3", + "src": "809:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5213,20 +5132,20 @@ }, "value": "0" }, - "src": "793:18:3", + "src": "792:18:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 364, + "id": 360, "nodeType": "IfStatement", - "src": "790:95:3", + "src": "789:95:3", "trueBody": { - "id": 363, + "id": 359, "nodeType": "Block", - "src": "813:72:3", + "src": "812:72:3", "statements": [ { "expression": { @@ -5234,12 +5153,12 @@ "arguments": [ { "argumentTypes": null, - "id": 359, + "id": 355, "name": "_creator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 409, - "src": "848:8:3", + "referencedDeclaration": 405, + "src": "847:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5247,12 +5166,12 @@ }, { "argumentTypes": null, - "id": 360, + "id": 356, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 345, - "src": "858:14:3", + "referencedDeclaration": 341, + "src": "857:14:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5272,32 +5191,32 @@ ], "expression": { "argumentTypes": null, - "id": 356, + "id": 352, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 327, - "src": "828:6:3", + "referencedDeclaration": 323, + "src": "827:6:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$733", + "typeIdentifier": "t_contract$_IERC20_$729", "typeString": "contract IERC20" } }, - "id": 358, + "id": 354, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 758, - "src": "828:19:3", + "referencedDeclaration": 754, + "src": "827:19:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$733_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$733_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$729_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$729_$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 361, + "id": 357, "isConstant": false, "isLValue": false, "isPure": false, @@ -5305,15 +5224,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "828:45:3", + "src": "827:45:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 362, + "id": 358, "nodeType": "ExpressionStatement", - "src": "828:45:3" + "src": "827:45:3" } ] } @@ -5326,32 +5245,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 365, + "id": 361, "name": "Terminable", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 442, - "src": "895:10:3", + "referencedDeclaration": 438, + "src": "894:10:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Terminable_$442_$", + "typeIdentifier": "t_type$_t_contract$_Terminable_$438_$", "typeString": "type(contract Terminable)" } }, - "id": 367, + "id": 363, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "_terminate", "nodeType": "MemberAccess", - "referencedDeclaration": 441, - "src": "895:21:3", + "referencedDeclaration": 437, + "src": "894:21:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 368, + "id": 364, "isConstant": false, "isLValue": false, "isPure": false, @@ -5359,51 +5278,49 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "895:23:3", + "src": "894:23:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 369, + "id": 365, "nodeType": "ExpressionStatement", - "src": "895:23:3" + "src": "894:23:3" } ] }, "documentation": null, - "id": 371, + "id": 367, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "_terminate", "nodeType": "FunctionDefinition", "parameters": { - "id": 342, + "id": 338, "nodeType": "ParameterList", "parameters": [], - "src": "700:2:3" + "src": "699:2:3" }, - "payable": false, "returnParameters": { - "id": 343, + "id": 339, "nodeType": "ParameterList", "parameters": [], - "src": "712:0:3" + "src": "711:0:3" }, - "scope": 372, - "src": "681:245:3", + "scope": 368, + "src": "680:245:3", "stateMutability": "nonpayable", - "superFunction": 441, + "superFunction": 437, "visibility": "internal" } ], - "scope": 373, - "src": "456:473:3" + "scope": 369, + "src": "455:473:3" } ], - "src": "0:929:3" + "src": "0:928:3" }, "id": 3 }, @@ -5412,21 +5329,21 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", "exportedSymbols": { "IAlgoMiner": [ - 405 + 401 ] }, - "id": 406, + "id": 402, "nodeType": "SourceUnit", "nodes": [ { - "id": 374, + "id": 370, "literals": [ "solidity", - "0.4", - ".24" + "0.5", + ".4" ], "nodeType": "PragmaDirective", - "src": "0:23:4" + "src": "0:22:4" }, { "baseContracts": [], @@ -5434,9 +5351,9 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 405, + "id": 401, "linearizedBaseContracts": [ - 405 + 401 ], "name": "IAlgoMiner", "nodeType": "ContractDefinition", @@ -5444,31 +5361,29 @@ { "body": null, "documentation": null, - "id": 379, + "id": 375, "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "isAlgoMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 375, + "id": 371, "nodeType": "ParameterList", "parameters": [], - "src": "74:2:4" + "src": "73:2:4" }, - "payable": false, "returnParameters": { - "id": 378, + "id": 374, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 377, + "id": 373, "name": "", "nodeType": "VariableDeclaration", - "scope": 379, - "src": "98:4:4", + "scope": 375, + "src": "97:4:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5476,10 +5391,10 @@ "typeString": "bool" }, "typeName": { - "id": 376, + "id": 372, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "98:4:4", + "src": "97:4:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5489,10 +5404,10 @@ "visibility": "internal" } ], - "src": "97:6:4" + "src": "96:6:4" }, - "scope": 405, - "src": "54:50:4", + "scope": 401, + "src": "53:50:4", "stateMutability": "pure", "superFunction": null, "visibility": "public" @@ -5500,31 +5415,29 @@ { "body": null, "documentation": null, - "id": 384, + "id": 380, "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "getMinerType", "nodeType": "FunctionDefinition", "parameters": { - "id": 380, + "id": 376, "nodeType": "ParameterList", "parameters": [], - "src": "131:2:4" + "src": "130:2:4" }, - "payable": false, "returnParameters": { - "id": 383, + "id": 379, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 382, + "id": 378, "name": "", "nodeType": "VariableDeclaration", - "scope": 384, - "src": "155:5:4", + "scope": 380, + "src": "154:5:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5532,10 +5445,10 @@ "typeString": "uint8" }, "typeName": { - "id": 381, + "id": 377, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "155:5:4", + "src": "154:5:4", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5545,10 +5458,10 @@ "visibility": "internal" } ], - "src": "154:7:4" + "src": "153:7:4" }, - "scope": 405, - "src": "110:52:4", + "scope": 401, + "src": "109:52:4", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -5556,31 +5469,29 @@ { "body": null, "documentation": null, - "id": 389, + "id": 385, "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "getCategory", "nodeType": "FunctionDefinition", "parameters": { - "id": 385, + "id": 381, "nodeType": "ParameterList", "parameters": [], - "src": "188:2:4" + "src": "187:2:4" }, - "payable": false, "returnParameters": { - "id": 388, + "id": 384, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 387, + "id": 383, "name": "", "nodeType": "VariableDeclaration", - "scope": 389, - "src": "212:5:4", + "scope": 385, + "src": "211:5:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5588,10 +5499,10 @@ "typeString": "uint8" }, "typeName": { - "id": 386, + "id": 382, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "212:5:4", + "src": "211:5:4", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5601,10 +5512,10 @@ "visibility": "internal" } ], - "src": "211:7:4" + "src": "210:7:4" }, - "scope": 405, - "src": "168:51:4", + "scope": 401, + "src": "167:51:4", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -5612,31 +5523,29 @@ { "body": null, "documentation": null, - "id": 394, + "id": 390, "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "getMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 390, + "id": 386, "nodeType": "ParameterList", "parameters": [], - "src": "242:2:4" + "src": "241:2:4" }, - "payable": false, "returnParameters": { - "id": 393, + "id": 389, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 392, + "id": 388, "name": "", "nodeType": "VariableDeclaration", - "scope": 394, - "src": "266:7:4", + "scope": 390, + "src": "265:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5644,10 +5553,11 @@ "typeString": "address" }, "typeName": { - "id": 391, + "id": 387, "name": "address", "nodeType": "ElementaryTypeName", - "src": "266:7:4", + "src": "265:7:4", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5657,10 +5567,10 @@ "visibility": "internal" } ], - "src": "265:9:4" + "src": "264:9:4" }, - "scope": 405, - "src": "225:50:4", + "scope": 401, + "src": "224:50:4", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -5668,31 +5578,29 @@ { "body": null, "documentation": null, - "id": 399, + "id": 395, "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "getReferral", "nodeType": "FunctionDefinition", "parameters": { - "id": 395, + "id": 391, "nodeType": "ParameterList", "parameters": [], - "src": "301:2:4" + "src": "300:2:4" }, - "payable": false, "returnParameters": { - "id": 398, + "id": 394, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 397, + "id": 393, "name": "", "nodeType": "VariableDeclaration", - "scope": 399, - "src": "325:7:4", + "scope": 395, + "src": "324:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5700,10 +5608,11 @@ "typeString": "address" }, "typeName": { - "id": 396, + "id": 392, "name": "address", "nodeType": "ElementaryTypeName", - "src": "325:7:4", + "src": "324:7:4", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5713,10 +5622,10 @@ "visibility": "internal" } ], - "src": "324:9:4" + "src": "323:9:4" }, - "scope": 405, - "src": "281:53:4", + "scope": 401, + "src": "280:53:4", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -5724,31 +5633,29 @@ { "body": null, "documentation": null, - "id": 404, + "id": 400, "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "isMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 400, + "id": 396, "nodeType": "ParameterList", "parameters": [], - "src": "357:2:4" + "src": "356:2:4" }, - "payable": false, "returnParameters": { - "id": 403, + "id": 399, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 402, + "id": 398, "name": "", "nodeType": "VariableDeclaration", - "scope": 404, - "src": "381:4:4", + "scope": 400, + "src": "380:4:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5756,10 +5663,10 @@ "typeString": "bool" }, "typeName": { - "id": 401, + "id": 397, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "381:4:4", + "src": "380:4:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5769,20 +5676,20 @@ "visibility": "internal" } ], - "src": "380:6:4" + "src": "379:6:4" }, - "scope": 405, - "src": "340:47:4", + "scope": 401, + "src": "339:47:4", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 406, - "src": "27:363:4" + "scope": 402, + "src": "26:363:4" } ], - "src": "0:390:4" + "src": "0:389:4" }, "id": 4 }, @@ -5791,21 +5698,21 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", "exportedSymbols": { "Terminable": [ - 442 + 438 ] }, - "id": 443, + "id": 439, "nodeType": "SourceUnit", "nodes": [ { - "id": 407, + "id": 403, "literals": [ "solidity", - "0.4", - ".24" + "0.5", + ".4" ], "nodeType": "PragmaDirective", - "src": "0:23:5" + "src": "0:22:5" }, { "baseContracts": [], @@ -5813,20 +5720,20 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 442, + "id": 438, "linearizedBaseContracts": [ - 442 + 438 ], "name": "Terminable", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 409, + "id": 405, "name": "_creator", "nodeType": "VariableDeclaration", - "scope": 442, - "src": "56:25:5", + "scope": 438, + "src": "55:25:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -5834,10 +5741,11 @@ "typeString": "address" }, "typeName": { - "id": 408, + "id": 404, "name": "address", "nodeType": "ElementaryTypeName", - "src": "56:7:5", + "src": "55:7:5", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5848,11 +5756,11 @@ }, { "constant": false, - "id": 411, + "id": 407, "name": "_terminated", "nodeType": "VariableDeclaration", - "scope": 442, - "src": "88:25:5", + "scope": 438, + "src": "87:25:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -5860,10 +5768,10 @@ "typeString": "bool" }, "typeName": { - "id": 410, + "id": 406, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "88:4:5", + "src": "87:4:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5874,26 +5782,26 @@ }, { "body": { - "id": 423, + "id": 419, "nodeType": "Block", - "src": "145:70:5", + "src": "144:70:5", "statements": [ { "expression": { "argumentTypes": null, - "id": 417, + "id": 413, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 414, + "id": 410, "name": "_creator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 409, - "src": "156:8:5", + "referencedDeclaration": 405, + "src": "155:8:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5905,18 +5813,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 415, + "id": 411, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 892, - "src": "167:3:5", + "referencedDeclaration": 889, + "src": "166:3:5", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 416, + "id": 412, "isConstant": false, "isLValue": false, "isPure": false, @@ -5924,38 +5832,38 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "167:10:5", + "src": "166:10:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "src": "156:21:5", + "src": "155:21:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 418, + "id": 414, "nodeType": "ExpressionStatement", - "src": "156:21:5" + "src": "155:21:5" }, { "expression": { "argumentTypes": null, - "id": 421, + "id": 417, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 419, + "id": 415, "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 411, - "src": "188:11:5", + "referencedDeclaration": 407, + "src": "187:11:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5966,14 +5874,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 420, + "id": 416, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "202:5:5", + "src": "201:5:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5981,50 +5889,48 @@ }, "value": "false" }, - "src": "188:19:5", + "src": "187:19:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 422, + "id": 418, "nodeType": "ExpressionStatement", - "src": "188:19:5" + "src": "187:19:5" } ] }, "documentation": null, - "id": 424, + "id": 420, "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, + "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 412, + "id": 408, "nodeType": "ParameterList", "parameters": [], - "src": "133:2:5" + "src": "132:2:5" }, - "payable": false, "returnParameters": { - "id": 413, + "id": 409, "nodeType": "ParameterList", "parameters": [], - "src": "145:0:5" + "src": "144:0:5" }, - "scope": 442, - "src": "122:93:5", + "scope": 438, + "src": "121:93:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 432, + "id": 428, "nodeType": "Block", - "src": "248:52:5", + "src": "247:52:5", "statements": [ { "expression": { @@ -6032,7 +5938,7 @@ "arguments": [ { "argumentTypes": null, - "id": 428, + "id": 424, "isConstant": false, "isLValue": false, "isPure": false, @@ -6040,15 +5946,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "267:12:5", + "src": "266:12:5", "subExpression": { "argumentTypes": null, - "id": 427, + "id": 423, "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 411, - "src": "268:11:5", + "referencedDeclaration": 407, + "src": "267:11:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6067,21 +5973,21 @@ "typeString": "bool" } ], - "id": 426, + "id": 422, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 895, - 896 + 892, + 893 ], - "referencedDeclaration": 895, - "src": "259:7:5", + "referencedDeclaration": 892, + "src": "258:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 429, + "id": 425, "isConstant": false, "isLValue": false, "isPure": false, @@ -6089,58 +5995,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "259:21:5", + "src": "258:21:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 430, + "id": 426, "nodeType": "ExpressionStatement", - "src": "259:21:5" + "src": "258:21:5" }, { - "id": 431, + "id": 427, "nodeType": "PlaceholderStatement", - "src": "291:1:5" + "src": "290:1:5" } ] }, "documentation": null, - "id": 433, + "id": 429, "name": "notTerminated", "nodeType": "ModifierDefinition", "parameters": { - "id": 425, + "id": 421, "nodeType": "ParameterList", "parameters": [], - "src": "245:2:5" + "src": "244:2:5" }, - "src": "223:77:5", + "src": "222:77:5", "visibility": "internal" }, { "body": { - "id": 440, + "id": 436, "nodeType": "Block", - "src": "339:37:5", + "src": "338:37:5", "statements": [ { "expression": { "argumentTypes": null, - "id": 438, + "id": 434, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 436, + "id": 432, "name": "_terminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 411, - "src": "350:11:5", + "referencedDeclaration": 407, + "src": "349:11:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6151,14 +6057,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 437, + "id": 433, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "364:4:5", + "src": "363:4:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6166,51 +6072,49 @@ }, "value": "true" }, - "src": "350:18:5", + "src": "349:18:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 439, + "id": 435, "nodeType": "ExpressionStatement", - "src": "350:18:5" + "src": "349:18:5" } ] }, "documentation": null, - "id": 441, + "id": 437, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "_terminate", "nodeType": "FunctionDefinition", "parameters": { - "id": 434, + "id": 430, "nodeType": "ParameterList", "parameters": [], - "src": "327:2:5" + "src": "326:2:5" }, - "payable": false, "returnParameters": { - "id": 435, + "id": 431, "nodeType": "ParameterList", "parameters": [], - "src": "339:0:5" + "src": "338:0:5" }, - "scope": 442, - "src": "308:68:5", + "scope": 438, + "src": "307:68:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 443, - "src": "27:352:5" + "scope": 439, + "src": "26:352:5" } ], - "src": "0:379:5" + "src": "0:378:5" }, "id": 5 }, @@ -6219,22 +6123,22 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "exportedSymbols": { "Roles": [ - 536 + 532 ] }, - "id": 537, + "id": 533, "nodeType": "SourceUnit", "nodes": [ { - "id": 444, + "id": 440, "literals": [ "solidity", "^", - "0.4", - ".24" + "0.5", + ".0" ], "nodeType": "PragmaDirective", - "src": "0:24:6" + "src": "0:23:6" }, { "baseContracts": [], @@ -6242,24 +6146,24 @@ "contractKind": "library", "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", "fullyImplemented": true, - "id": 536, + "id": 532, "linearizedBaseContracts": [ - 536 + 532 ], "name": "Roles", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "Roles.Role", - "id": 449, + "id": 445, "members": [ { "constant": false, - "id": 448, + "id": 444, "name": "bearer", "nodeType": "VariableDeclaration", - "scope": 449, - "src": "145:32:6", + "scope": 445, + "src": "150:32:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6267,28 +6171,28 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 447, + "id": 443, "keyType": { - "id": 445, + "id": 441, "name": "address", "nodeType": "ElementaryTypeName", - "src": "154:7:6", + "src": "159:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "145:25:6", + "src": "150:25:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 446, + "id": 442, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "165:4:6", + "src": "170:4:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6301,15 +6205,15 @@ ], "name": "Role", "nodeType": "StructDefinition", - "scope": 536, - "src": "127:55:6", + "scope": 532, + "src": "128:61:6", "visibility": "public" }, { "body": { - "id": 480, + "id": 476, "nodeType": "Block", - "src": "302:109:6", + "src": "317:123:6", "statements": [ { "expression": { @@ -6321,19 +6225,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 461, + "id": 457, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 457, + "id": 453, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 453, - "src": "316:7:6", + "referencedDeclaration": 449, + "src": "335:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6347,14 +6251,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 459, + "id": 455, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "335:1:6", + "src": "354:1:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6370,20 +6274,20 @@ "typeString": "int_const 0" } ], - "id": 458, + "id": 454, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "327:7:6", + "src": "346:7:6", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 460, + "id": 456, "isConstant": false, "isLValue": false, "isPure": true, @@ -6391,13 +6295,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "327:10:6", + "src": "346:10:6", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "src": "316:21:6", + "src": "335:21:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6411,21 +6315,21 @@ "typeString": "bool" } ], - "id": 456, + "id": 452, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 895, - 896 + 892, + 893 ], - "referencedDeclaration": 895, - "src": "308:7:6", + "referencedDeclaration": 892, + "src": "327:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 462, + "id": 458, "isConstant": false, "isLValue": false, "isPure": false, @@ -6433,15 +6337,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "308:30:6", + "src": "327:30:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 463, + "id": 459, "nodeType": "ExpressionStatement", - "src": "308:30:6" + "src": "327:30:6" }, { "expression": { @@ -6449,7 +6353,7 @@ "arguments": [ { "argumentTypes": null, - "id": 469, + "id": 465, "isConstant": false, "isLValue": false, "isPure": false, @@ -6457,31 +6361,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "352:19:6", + "src": "375:19:6", "subExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 466, + "id": 462, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 451, - "src": "357:4:6", + "referencedDeclaration": 447, + "src": "380:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$449_storage_ptr", + "typeIdentifier": "t_struct$_Role_$445_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, { "argumentTypes": null, - "id": 467, + "id": 463, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 453, - "src": "363:7:6", + "referencedDeclaration": 449, + "src": "386:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6491,7 +6395,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Role_$449_storage_ptr", + "typeIdentifier": "t_struct$_Role_$445_storage_ptr", "typeString": "struct Roles.Role storage pointer" }, { @@ -6499,18 +6403,18 @@ "typeString": "address" } ], - "id": 465, + "id": 461, "name": "has", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 535, - "src": "353:3:6", + "referencedDeclaration": 531, + "src": "376:3:6", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$449_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$445_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 468, + "id": 464, "isConstant": false, "isLValue": false, "isPure": false, @@ -6518,7 +6422,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "353:18:6", + "src": "376:18:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6537,21 +6441,21 @@ "typeString": "bool" } ], - "id": 464, + "id": 460, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 895, - 896 + 892, + 893 ], - "referencedDeclaration": 895, - "src": "344:7:6", + "referencedDeclaration": 892, + "src": "367:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 470, + "id": 466, "isConstant": false, "isLValue": false, "isPure": false, @@ -6559,20 +6463,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "344:28:6", + "src": "367:28:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 471, + "id": 467, "nodeType": "ExpressionStatement", - "src": "344:28:6" + "src": "367:28:6" }, { "expression": { "argumentTypes": null, - "id": 478, + "id": 474, "isConstant": false, "isLValue": false, "isPure": false, @@ -6583,40 +6487,40 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 472, + "id": 468, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 451, - "src": "379:4:6", + "referencedDeclaration": 447, + "src": "406:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$449_storage_ptr", + "typeIdentifier": "t_struct$_Role_$445_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 475, + "id": 471, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 448, - "src": "379:11:6", + "referencedDeclaration": 444, + "src": "406:11:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 476, + "id": 472, "indexExpression": { "argumentTypes": null, - "id": 474, + "id": 470, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 453, - "src": "391:7:6", + "referencedDeclaration": 449, + "src": "418:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6627,7 +6531,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "379:20:6", + "src": "406:20:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6638,14 +6542,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 477, + "id": 473, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "402:4:6", + "src": "429:4:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6653,52 +6557,51 @@ }, "value": "true" }, - "src": "379:27:6", + "src": "406:27:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 479, + "id": 475, "nodeType": "ExpressionStatement", - "src": "379:27:6" + "src": "406:27:6" } ] }, "documentation": "@dev give an account access to this role", - "id": 481, + "id": 477, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 454, + "id": 450, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 451, + "id": 447, "name": "role", "nodeType": "VariableDeclaration", - "scope": 481, - "src": "257:17:6", + "scope": 477, + "src": "272:17:6", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$449_storage_ptr", + "typeIdentifier": "t_struct$_Role_$445_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 450, + "id": 446, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 449, - "src": "257:4:6", + "referencedDeclaration": 445, + "src": "272:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$449_storage_ptr", + "typeIdentifier": "t_struct$_Role_$445_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -6707,11 +6610,11 @@ }, { "constant": false, - "id": 453, + "id": 449, "name": "account", "nodeType": "VariableDeclaration", - "scope": 481, - "src": "276:15:6", + "scope": 477, + "src": "291:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6719,10 +6622,11 @@ "typeString": "address" }, "typeName": { - "id": 452, + "id": 448, "name": "address", "nodeType": "ElementaryTypeName", - "src": "276:7:6", + "src": "291:7:6", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6732,26 +6636,25 @@ "visibility": "internal" } ], - "src": "256:36:6" + "src": "271:36:6" }, - "payable": false, "returnParameters": { - "id": 455, + "id": 451, "nodeType": "ParameterList", "parameters": [], - "src": "302:0:6" + "src": "317:0:6" }, - "scope": 536, - "src": "244:167:6", + "scope": 532, + "src": "259:181:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 511, + "id": 507, "nodeType": "Block", - "src": "538:109:6", + "src": "575:123:6", "statements": [ { "expression": { @@ -6763,19 +6666,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 493, + "id": 489, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 489, + "id": 485, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 485, - "src": "552:7:6", + "referencedDeclaration": 481, + "src": "593:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6789,14 +6692,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 491, + "id": 487, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "571:1:6", + "src": "612:1:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6812,20 +6715,20 @@ "typeString": "int_const 0" } ], - "id": 490, + "id": 486, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "563:7:6", + "src": "604:7:6", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 492, + "id": 488, "isConstant": false, "isLValue": false, "isPure": true, @@ -6833,13 +6736,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "563:10:6", + "src": "604:10:6", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "src": "552:21:6", + "src": "593:21:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6853,21 +6756,21 @@ "typeString": "bool" } ], - "id": 488, + "id": 484, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 895, - 896 + 892, + 893 ], - "referencedDeclaration": 895, - "src": "544:7:6", + "referencedDeclaration": 892, + "src": "585:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 494, + "id": 490, "isConstant": false, "isLValue": false, "isPure": false, @@ -6875,15 +6778,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "544:30:6", + "src": "585:30:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 495, + "id": 491, "nodeType": "ExpressionStatement", - "src": "544:30:6" + "src": "585:30:6" }, { "expression": { @@ -6894,25 +6797,25 @@ "arguments": [ { "argumentTypes": null, - "id": 498, + "id": 494, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 483, - "src": "592:4:6", + "referencedDeclaration": 479, + "src": "637:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$449_storage_ptr", + "typeIdentifier": "t_struct$_Role_$445_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, { "argumentTypes": null, - "id": 499, + "id": 495, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 485, - "src": "598:7:6", + "referencedDeclaration": 481, + "src": "643:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6922,7 +6825,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Role_$449_storage_ptr", + "typeIdentifier": "t_struct$_Role_$445_storage_ptr", "typeString": "struct Roles.Role storage pointer" }, { @@ -6930,18 +6833,18 @@ "typeString": "address" } ], - "id": 497, + "id": 493, "name": "has", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 535, - "src": "588:3:6", + "referencedDeclaration": 531, + "src": "633:3:6", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$449_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$445_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 500, + "id": 496, "isConstant": false, "isLValue": false, "isPure": false, @@ -6949,7 +6852,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "588:18:6", + "src": "633:18:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6963,21 +6866,21 @@ "typeString": "bool" } ], - "id": 496, + "id": 492, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 895, - 896 + 892, + 893 ], - "referencedDeclaration": 895, - "src": "580:7:6", + "referencedDeclaration": 892, + "src": "625:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 501, + "id": 497, "isConstant": false, "isLValue": false, "isPure": false, @@ -6985,20 +6888,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "580:27:6", + "src": "625:27:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 502, + "id": 498, "nodeType": "ExpressionStatement", - "src": "580:27:6" + "src": "625:27:6" }, { "expression": { "argumentTypes": null, - "id": 509, + "id": 505, "isConstant": false, "isLValue": false, "isPure": false, @@ -7009,40 +6912,40 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 503, + "id": 499, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 483, - "src": "614:4:6", + "referencedDeclaration": 479, + "src": "663:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$449_storage_ptr", + "typeIdentifier": "t_struct$_Role_$445_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 506, + "id": 502, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 448, - "src": "614:11:6", + "referencedDeclaration": 444, + "src": "663:11:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 507, + "id": 503, "indexExpression": { "argumentTypes": null, - "id": 505, + "id": 501, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 485, - "src": "626:7:6", + "referencedDeclaration": 481, + "src": "675:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7053,7 +6956,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "614:20:6", + "src": "663:20:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7064,14 +6967,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 508, + "id": 504, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "637:5:6", + "src": "686:5:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -7079,52 +6982,51 @@ }, "value": "false" }, - "src": "614:28:6", + "src": "663:28:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 510, + "id": 506, "nodeType": "ExpressionStatement", - "src": "614:28:6" + "src": "663:28:6" } ] }, "documentation": "@dev remove an account's access to this role", - "id": 512, + "id": 508, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "remove", "nodeType": "FunctionDefinition", "parameters": { - "id": 486, + "id": 482, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 483, + "id": 479, "name": "role", "nodeType": "VariableDeclaration", - "scope": 512, - "src": "493:17:6", + "scope": 508, + "src": "530:17:6", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$449_storage_ptr", + "typeIdentifier": "t_struct$_Role_$445_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 482, + "id": 478, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 449, - "src": "493:4:6", + "referencedDeclaration": 445, + "src": "530:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$449_storage_ptr", + "typeIdentifier": "t_struct$_Role_$445_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -7133,11 +7035,11 @@ }, { "constant": false, - "id": 485, + "id": 481, "name": "account", "nodeType": "VariableDeclaration", - "scope": 512, - "src": "512:15:6", + "scope": 508, + "src": "549:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7145,10 +7047,11 @@ "typeString": "address" }, "typeName": { - "id": 484, + "id": 480, "name": "address", "nodeType": "ElementaryTypeName", - "src": "512:7:6", + "src": "549:7:6", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7158,26 +7061,25 @@ "visibility": "internal" } ], - "src": "492:36:6" + "src": "529:36:6" }, - "payable": false, "returnParameters": { - "id": 487, + "id": 483, "nodeType": "ParameterList", "parameters": [], - "src": "538:0:6" + "src": "575:0:6" }, - "scope": 536, - "src": "477:170:6", + "scope": 532, + "src": "514:184:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 534, + "id": 530, "nodeType": "Block", - "src": "817:74:6", + "src": "864:84:6", "statements": [ { "expression": { @@ -7189,19 +7091,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 526, + "id": 522, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 522, + "id": 518, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 516, - "src": "831:7:6", + "referencedDeclaration": 512, + "src": "882:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7215,14 +7117,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 524, + "id": 520, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "850:1:6", + "src": "901:1:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7238,20 +7140,20 @@ "typeString": "int_const 0" } ], - "id": 523, + "id": 519, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "842:7:6", + "src": "893:7:6", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 525, + "id": 521, "isConstant": false, "isLValue": false, "isPure": true, @@ -7259,13 +7161,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "842:10:6", + "src": "893:10:6", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "src": "831:21:6", + "src": "882:21:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7279,21 +7181,21 @@ "typeString": "bool" } ], - "id": 521, + "id": 517, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 895, - 896 + 892, + 893 ], - "referencedDeclaration": 895, - "src": "823:7:6", + "referencedDeclaration": 892, + "src": "874:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 527, + "id": 523, "isConstant": false, "isLValue": false, "isPure": false, @@ -7301,15 +7203,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "823:30:6", + "src": "874:30:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 528, + "id": 524, "nodeType": "ExpressionStatement", - "src": "823:30:6" + "src": "874:30:6" }, { "expression": { @@ -7318,40 +7220,40 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 529, + "id": 525, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 514, - "src": "866:4:6", + "referencedDeclaration": 510, + "src": "921:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$449_storage_ptr", + "typeIdentifier": "t_struct$_Role_$445_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 530, + "id": 526, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 448, - "src": "866:11:6", + "referencedDeclaration": 444, + "src": "921:11:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 532, + "id": 528, "indexExpression": { "argumentTypes": null, - "id": 531, + "id": 527, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 516, - "src": "878:7:6", + "referencedDeclaration": 512, + "src": "933:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7362,53 +7264,52 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "866:20:6", + "src": "921:20:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 520, - "id": 533, + "functionReturnParameters": 516, + "id": 529, "nodeType": "Return", - "src": "859:27:6" + "src": "914:27:6" } ] }, "documentation": "@dev check if an account has this role\n@return bool", - "id": 535, + "id": 531, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "has", "nodeType": "FunctionDefinition", "parameters": { - "id": 517, + "id": 513, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 514, + "id": 510, "name": "role", "nodeType": "VariableDeclaration", - "scope": 535, - "src": "738:17:6", + "scope": 531, + "src": "799:17:6", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$449_storage_ptr", + "typeIdentifier": "t_struct$_Role_$445_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 513, + "id": 509, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 449, - "src": "738:4:6", + "referencedDeclaration": 445, + "src": "799:4:6", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$449_storage_ptr", + "typeIdentifier": "t_struct$_Role_$445_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -7417,11 +7318,11 @@ }, { "constant": false, - "id": 516, + "id": 512, "name": "account", "nodeType": "VariableDeclaration", - "scope": 535, - "src": "757:15:6", + "scope": 531, + "src": "818:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7429,10 +7330,11 @@ "typeString": "address" }, "typeName": { - "id": 515, + "id": 511, "name": "address", "nodeType": "ElementaryTypeName", - "src": "757:7:6", + "src": "818:7:6", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7442,20 +7344,19 @@ "visibility": "internal" } ], - "src": "737:36:6" + "src": "798:36:6" }, - "payable": false, "returnParameters": { - "id": 520, + "id": 516, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 519, + "id": 515, "name": "", "nodeType": "VariableDeclaration", - "scope": 535, - "src": "809:4:6", + "scope": 531, + "src": "858:4:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7463,10 +7364,10 @@ "typeString": "bool" }, "typeName": { - "id": 518, + "id": 514, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "809:4:6", + "src": "858:4:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7476,20 +7377,20 @@ "visibility": "internal" } ], - "src": "808:6:6" + "src": "857:6:6" }, - "scope": 536, - "src": "725:166:6", + "scope": 532, + "src": "786:162:6", "stateMutability": "view", "superFunction": null, "visibility": "internal" } ], - "scope": 537, - "src": "109:784:6" + "scope": 533, + "src": "108:842:6" } ], - "src": "0:894:6" + "src": "0:951:6" }, "id": 6 }, @@ -7498,41 +7399,41 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "exportedSymbols": { "SafeMath": [ - 664 + 660 ] }, - "id": 665, + "id": 661, "nodeType": "SourceUnit", "nodes": [ { - "id": 538, + "id": 534, "literals": [ "solidity", "^", - "0.4", - ".24" + "0.5", + ".0" ], "nodeType": "PragmaDirective", - "src": "0:24:7" + "src": "0:23:7" }, { "baseContracts": [], "contractDependencies": [], "contractKind": "library", - "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", + "documentation": "@title SafeMath\n@dev Unsigned math operations with safety checks that revert on error", "fullyImplemented": true, - "id": 664, + "id": 660, "linearizedBaseContracts": [ - 664 + 660 ], "name": "SafeMath", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 570, + "id": 566, "nodeType": "Block", - "src": "271:314:7", + "src": "296:354:7", "statements": [ { "condition": { @@ -7541,19 +7442,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 549, + "id": 545, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 547, + "id": 543, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 540, - "src": "486:1:7", + "referencedDeclaration": 536, + "src": "527:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7564,14 +7465,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 548, + "id": 544, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "491:1:7", + "src": "532:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7579,33 +7480,33 @@ }, "value": "0" }, - "src": "486:6:7", + "src": "527:6:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 553, + "id": 549, "nodeType": "IfStatement", - "src": "482:35:7", + "src": "523:45:7", "trueBody": { - "id": 552, + "id": 548, "nodeType": "Block", - "src": "494:23:7", + "src": "535:33:7", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "30", - "id": 550, + "id": 546, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "509:1:7", + "src": "556:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7613,26 +7514,26 @@ }, "value": "0" }, - "functionReturnParameters": 546, - "id": 551, + "functionReturnParameters": 542, + "id": 547, "nodeType": "Return", - "src": "502:8:7" + "src": "549:8:7" } ] } }, { "assignments": [ - 555 + 551 ], "declarations": [ { "constant": false, - "id": 555, + "id": 551, "name": "c", "nodeType": "VariableDeclaration", - "scope": 571, - "src": "523:9:7", + "scope": 566, + "src": "578:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7640,10 +7541,10 @@ "typeString": "uint256" }, "typeName": { - "id": 554, + "id": 550, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "523:7:7", + "src": "578:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7653,26 +7554,26 @@ "visibility": "internal" } ], - "id": 559, + "id": 555, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 558, + "id": 554, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 556, + "id": 552, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 540, - "src": "535:1:7", + "referencedDeclaration": 536, + "src": "590:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7682,25 +7583,25 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 557, + "id": 553, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 542, - "src": "539:1:7", + "referencedDeclaration": 538, + "src": "594:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "535:5:7", + "src": "590:5:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "523:17:7" + "src": "578:17:7" }, { "expression": { @@ -7712,7 +7613,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 565, + "id": 561, "isConstant": false, "isLValue": false, "isPure": false, @@ -7723,19 +7624,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 563, + "id": 559, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 561, + "id": 557, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 555, - "src": "554:1:7", + "referencedDeclaration": 551, + "src": "613:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7745,18 +7646,18 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 562, + "id": 558, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 540, - "src": "558:1:7", + "referencedDeclaration": 536, + "src": "617:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "554:5:7", + "src": "613:5:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7766,18 +7667,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 564, + "id": 560, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 542, - "src": "563:1:7", + "referencedDeclaration": 538, + "src": "622:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "554:10:7", + "src": "613:10:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7791,21 +7692,21 @@ "typeString": "bool" } ], - "id": 560, + "id": 556, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 895, - 896 + 892, + 893 ], - "referencedDeclaration": 895, - "src": "546:7:7", + "referencedDeclaration": 892, + "src": "605:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 566, + "id": 562, "isConstant": false, "isLValue": false, "isPure": false, @@ -7813,56 +7714,55 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "546:19:7", + "src": "605:19:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 567, + "id": 563, "nodeType": "ExpressionStatement", - "src": "546:19:7" + "src": "605:19:7" }, { "expression": { "argumentTypes": null, - "id": 568, + "id": 564, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 555, - "src": "579:1:7", + "referencedDeclaration": 551, + "src": "642:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 546, - "id": 569, + "functionReturnParameters": 542, + "id": 565, "nodeType": "Return", - "src": "572:8:7" + "src": "635:8:7" } ] }, - "documentation": "@dev Multiplies two numbers, reverts on overflow.", - "id": 571, + "documentation": "@dev Multiplies two unsigned integers, reverts on overflow.", + "id": 567, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "mul", "nodeType": "FunctionDefinition", "parameters": { - "id": 543, + "id": 539, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 540, + "id": 536, "name": "a", "nodeType": "VariableDeclaration", - "scope": 571, - "src": "217:9:7", + "scope": 567, + "src": "242:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7870,10 +7770,10 @@ "typeString": "uint256" }, "typeName": { - "id": 539, + "id": 535, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "217:7:7", + "src": "242:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7884,11 +7784,11 @@ }, { "constant": false, - "id": 542, + "id": 538, "name": "b", "nodeType": "VariableDeclaration", - "scope": 571, - "src": "228:9:7", + "scope": 567, + "src": "253:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7896,10 +7796,10 @@ "typeString": "uint256" }, "typeName": { - "id": 541, + "id": 537, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "228:7:7", + "src": "253:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7909,20 +7809,19 @@ "visibility": "internal" } ], - "src": "216:22:7" + "src": "241:22:7" }, - "payable": false, "returnParameters": { - "id": 546, + "id": 542, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 545, + "id": 541, "name": "", "nodeType": "VariableDeclaration", - "scope": 571, - "src": "262:7:7", + "scope": 567, + "src": "287:7:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7930,10 +7829,10 @@ "typeString": "uint256" }, "typeName": { - "id": 544, + "id": 540, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "262:7:7", + "src": "287:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7943,19 +7842,19 @@ "visibility": "internal" } ], - "src": "261:9:7" + "src": "286:9:7" }, - "scope": 664, - "src": "204:381:7", + "scope": 660, + "src": "229:421:7", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 594, + "id": 590, "nodeType": "Block", - "src": "762:203:7", + "src": "845:229:7", "statements": [ { "expression": { @@ -7967,19 +7866,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 583, + "id": 579, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 581, + "id": 577, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 575, - "src": "776:1:7", + "referencedDeclaration": 571, + "src": "929:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7990,14 +7889,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 582, + "id": 578, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "780:1:7", + "src": "933:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -8005,7 +7904,7 @@ }, "value": "0" }, - "src": "776:5:7", + "src": "929:5:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8019,21 +7918,21 @@ "typeString": "bool" } ], - "id": 580, + "id": 576, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 895, - 896 + 892, + 893 ], - "referencedDeclaration": 895, - "src": "768:7:7", + "referencedDeclaration": 892, + "src": "921:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 584, + "id": 580, "isConstant": false, "isLValue": false, "isPure": false, @@ -8041,28 +7940,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "768:14:7", + "src": "921:14:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 585, + "id": 581, "nodeType": "ExpressionStatement", - "src": "768:14:7" + "src": "921:14:7" }, { "assignments": [ - 587 + 583 ], "declarations": [ { "constant": false, - "id": 587, + "id": 583, "name": "c", "nodeType": "VariableDeclaration", - "scope": 595, - "src": "846:9:7", + "scope": 590, + "src": "945:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8070,10 +7969,10 @@ "typeString": "uint256" }, "typeName": { - "id": 586, + "id": 582, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "846:7:7", + "src": "945:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8083,26 +7982,26 @@ "visibility": "internal" } ], - "id": 591, + "id": 587, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 590, + "id": 586, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 588, + "id": 584, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 573, - "src": "858:1:7", + "referencedDeclaration": 569, + "src": "957:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8112,66 +8011,65 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 589, + "id": 585, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 575, - "src": "862:1:7", + "referencedDeclaration": 571, + "src": "961:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "858:5:7", + "src": "957:5:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "846:17:7" + "src": "945:17:7" }, { "expression": { "argumentTypes": null, - "id": 592, + "id": 588, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 587, - "src": "959:1:7", + "referencedDeclaration": 583, + "src": "1066:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 579, - "id": 593, + "functionReturnParameters": 575, + "id": 589, "nodeType": "Return", - "src": "952:8:7" + "src": "1059:8:7" } ] }, - "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", - "id": 595, + "documentation": "@dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.", + "id": 591, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "div", "nodeType": "FunctionDefinition", "parameters": { - "id": 576, + "id": 572, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 573, + "id": 569, "name": "a", "nodeType": "VariableDeclaration", - "scope": 595, - "src": "708:9:7", + "scope": 591, + "src": "791:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8179,10 +8077,10 @@ "typeString": "uint256" }, "typeName": { - "id": 572, + "id": 568, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "708:7:7", + "src": "791:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8193,11 +8091,11 @@ }, { "constant": false, - "id": 575, + "id": 571, "name": "b", "nodeType": "VariableDeclaration", - "scope": 595, - "src": "719:9:7", + "scope": 591, + "src": "802:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8205,10 +8103,10 @@ "typeString": "uint256" }, "typeName": { - "id": 574, + "id": 570, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "719:7:7", + "src": "802:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8218,20 +8116,19 @@ "visibility": "internal" } ], - "src": "707:22:7" + "src": "790:22:7" }, - "payable": false, "returnParameters": { - "id": 579, + "id": 575, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 578, + "id": 574, "name": "", "nodeType": "VariableDeclaration", - "scope": 595, - "src": "753:7:7", + "scope": 591, + "src": "836:7:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8239,10 +8136,10 @@ "typeString": "uint256" }, "typeName": { - "id": 577, + "id": 573, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "753:7:7", + "src": "836:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8252,19 +8149,19 @@ "visibility": "internal" } ], - "src": "752:9:7" + "src": "835:9:7" }, - "scope": 664, - "src": "695:270:7", + "scope": 660, + "src": "778:296:7", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 618, + "id": 614, "nodeType": "Block", - "src": "1145:64:7", + "src": "1272:78:7", "statements": [ { "expression": { @@ -8276,19 +8173,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 607, + "id": 603, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 605, + "id": 601, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 599, - "src": "1159:1:7", + "referencedDeclaration": 595, + "src": "1290:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8298,18 +8195,18 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 606, + "id": 602, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 597, - "src": "1164:1:7", + "referencedDeclaration": 593, + "src": "1295:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1159:6:7", + "src": "1290:6:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8323,21 +8220,21 @@ "typeString": "bool" } ], - "id": 604, + "id": 600, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 895, - 896 + 892, + 893 ], - "referencedDeclaration": 895, - "src": "1151:7:7", + "referencedDeclaration": 892, + "src": "1282:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 608, + "id": 604, "isConstant": false, "isLValue": false, "isPure": false, @@ -8345,28 +8242,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1151:15:7", + "src": "1282:15:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 609, + "id": 605, "nodeType": "ExpressionStatement", - "src": "1151:15:7" + "src": "1282:15:7" }, { "assignments": [ - 611 + 607 ], "declarations": [ { "constant": false, - "id": 611, + "id": 607, "name": "c", "nodeType": "VariableDeclaration", - "scope": 619, - "src": "1172:9:7", + "scope": 614, + "src": "1307:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8374,10 +8271,10 @@ "typeString": "uint256" }, "typeName": { - "id": 610, + "id": 606, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1172:7:7", + "src": "1307:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8387,26 +8284,26 @@ "visibility": "internal" } ], - "id": 615, + "id": 611, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 614, + "id": 610, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 612, + "id": 608, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 597, - "src": "1184:1:7", + "referencedDeclaration": 593, + "src": "1319:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8416,66 +8313,65 @@ "operator": "-", "rightExpression": { "argumentTypes": null, - "id": 613, + "id": 609, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 599, - "src": "1188:1:7", + "referencedDeclaration": 595, + "src": "1323:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1184:5:7", + "src": "1319:5:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1172:17:7" + "src": "1307:17:7" }, { "expression": { "argumentTypes": null, - "id": 616, + "id": 612, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 611, - "src": "1203:1:7", + "referencedDeclaration": 607, + "src": "1342:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 603, - "id": 617, + "functionReturnParameters": 599, + "id": 613, "nodeType": "Return", - "src": "1196:8:7" + "src": "1335:8:7" } ] }, - "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", - "id": 619, + "documentation": "@dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).", + "id": 615, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "sub", "nodeType": "FunctionDefinition", "parameters": { - "id": 600, + "id": 596, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 597, + "id": 593, "name": "a", "nodeType": "VariableDeclaration", - "scope": 619, - "src": "1091:9:7", + "scope": 615, + "src": "1218:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8483,10 +8379,10 @@ "typeString": "uint256" }, "typeName": { - "id": 596, + "id": 592, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1091:7:7", + "src": "1218:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8497,11 +8393,11 @@ }, { "constant": false, - "id": 599, + "id": 595, "name": "b", "nodeType": "VariableDeclaration", - "scope": 619, - "src": "1102:9:7", + "scope": 615, + "src": "1229:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8509,10 +8405,10 @@ "typeString": "uint256" }, "typeName": { - "id": 598, + "id": 594, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1102:7:7", + "src": "1229:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8522,20 +8418,19 @@ "visibility": "internal" } ], - "src": "1090:22:7" + "src": "1217:22:7" }, - "payable": false, "returnParameters": { - "id": 603, + "id": 599, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 602, + "id": 598, "name": "", "nodeType": "VariableDeclaration", - "scope": 619, - "src": "1136:7:7", + "scope": 615, + "src": "1263:7:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8543,10 +8438,10 @@ "typeString": "uint256" }, "typeName": { - "id": 601, + "id": 597, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1136:7:7", + "src": "1263:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8556,32 +8451,32 @@ "visibility": "internal" } ], - "src": "1135:9:7" + "src": "1262:9:7" }, - "scope": 664, - "src": "1078:131:7", + "scope": 660, + "src": "1205:145:7", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 642, + "id": 638, "nodeType": "Block", - "src": "1339:64:7", + "src": "1498:78:7", "statements": [ { "assignments": [ - 629 + 625 ], "declarations": [ { "constant": false, - "id": 629, + "id": 625, "name": "c", "nodeType": "VariableDeclaration", - "scope": 643, - "src": "1345:9:7", + "scope": 638, + "src": "1508:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8589,10 +8484,10 @@ "typeString": "uint256" }, "typeName": { - "id": 628, + "id": 624, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1345:7:7", + "src": "1508:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8602,26 +8497,26 @@ "visibility": "internal" } ], - "id": 633, + "id": 629, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 632, + "id": 628, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 630, + "id": 626, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 621, - "src": "1357:1:7", + "referencedDeclaration": 617, + "src": "1520:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8631,25 +8526,25 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 631, + "id": 627, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 623, - "src": "1361:1:7", + "referencedDeclaration": 619, + "src": "1524:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1357:5:7", + "src": "1520:5:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1345:17:7" + "src": "1508:17:7" }, { "expression": { @@ -8661,19 +8556,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 637, + "id": 633, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 635, + "id": 631, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 629, - "src": "1376:1:7", + "referencedDeclaration": 625, + "src": "1543:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8683,18 +8578,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 636, + "id": 632, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 621, - "src": "1381:1:7", + "referencedDeclaration": 617, + "src": "1548:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1376:6:7", + "src": "1543:6:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8708,21 +8603,21 @@ "typeString": "bool" } ], - "id": 634, + "id": 630, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 895, - 896 + 892, + 893 ], - "referencedDeclaration": 895, - "src": "1368:7:7", + "referencedDeclaration": 892, + "src": "1535:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 638, + "id": 634, "isConstant": false, "isLValue": false, "isPure": false, @@ -8730,56 +8625,55 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1368:15:7", + "src": "1535:15:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 639, + "id": 635, "nodeType": "ExpressionStatement", - "src": "1368:15:7" + "src": "1535:15:7" }, { "expression": { "argumentTypes": null, - "id": 640, + "id": 636, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 629, - "src": "1397:1:7", + "referencedDeclaration": 625, + "src": "1568:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 627, - "id": 641, + "functionReturnParameters": 623, + "id": 637, "nodeType": "Return", - "src": "1390:8:7" + "src": "1561:8:7" } ] }, - "documentation": "@dev Adds two numbers, reverts on overflow.", - "id": 643, + "documentation": "@dev Adds two unsigned integers, reverts on overflow.", + "id": 639, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 624, + "id": 620, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 621, + "id": 617, "name": "a", "nodeType": "VariableDeclaration", - "scope": 643, - "src": "1285:9:7", + "scope": 639, + "src": "1444:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8787,10 +8681,10 @@ "typeString": "uint256" }, "typeName": { - "id": 620, + "id": 616, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1285:7:7", + "src": "1444:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8801,11 +8695,11 @@ }, { "constant": false, - "id": 623, + "id": 619, "name": "b", "nodeType": "VariableDeclaration", - "scope": 643, - "src": "1296:9:7", + "scope": 639, + "src": "1455:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8813,10 +8707,10 @@ "typeString": "uint256" }, "typeName": { - "id": 622, + "id": 618, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1296:7:7", + "src": "1455:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8826,20 +8720,19 @@ "visibility": "internal" } ], - "src": "1284:22:7" + "src": "1443:22:7" }, - "payable": false, "returnParameters": { - "id": 627, + "id": 623, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 626, + "id": 622, "name": "", "nodeType": "VariableDeclaration", - "scope": 643, - "src": "1330:7:7", + "scope": 639, + "src": "1489:7:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8847,10 +8740,10 @@ "typeString": "uint256" }, "typeName": { - "id": 625, + "id": 621, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1330:7:7", + "src": "1489:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8860,19 +8753,19 @@ "visibility": "internal" } ], - "src": "1329:9:7" + "src": "1488:9:7" }, - "scope": 664, - "src": "1272:131:7", + "scope": 660, + "src": "1431:145:7", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 662, + "id": 658, "nodeType": "Block", - "src": "1602:44:7", + "src": "1795:54:7", "statements": [ { "expression": { @@ -8884,19 +8777,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 655, + "id": 651, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 653, + "id": 649, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "1616:1:7", + "referencedDeclaration": 643, + "src": "1813:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8907,14 +8800,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 654, + "id": 650, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1621:1:7", + "src": "1818:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -8922,7 +8815,7 @@ }, "value": "0" }, - "src": "1616:6:7", + "src": "1813:6:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8936,21 +8829,21 @@ "typeString": "bool" } ], - "id": 652, + "id": 648, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 895, - 896 + 892, + 893 ], - "referencedDeclaration": 895, - "src": "1608:7:7", + "referencedDeclaration": 892, + "src": "1805:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 656, + "id": 652, "isConstant": false, "isLValue": false, "isPure": false, @@ -8958,15 +8851,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1608:15:7", + "src": "1805:15:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 657, + "id": 653, "nodeType": "ExpressionStatement", - "src": "1608:15:7" + "src": "1805:15:7" }, { "expression": { @@ -8975,19 +8868,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 660, + "id": 656, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 658, + "id": 654, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 645, - "src": "1636:1:7", + "referencedDeclaration": 641, + "src": "1837:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8997,49 +8890,48 @@ "operator": "%", "rightExpression": { "argumentTypes": null, - "id": 659, + "id": 655, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "1640:1:7", + "referencedDeclaration": 643, + "src": "1841:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1636:5:7", + "src": "1837:5:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 651, - "id": 661, + "functionReturnParameters": 647, + "id": 657, "nodeType": "Return", - "src": "1629:12:7" + "src": "1830:12:7" } ] }, - "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", - "id": 663, + "documentation": "@dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", + "id": 659, "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], "name": "mod", "nodeType": "FunctionDefinition", "parameters": { - "id": 648, + "id": 644, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 645, + "id": 641, "name": "a", "nodeType": "VariableDeclaration", - "scope": 663, - "src": "1548:9:7", + "scope": 659, + "src": "1741:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9047,10 +8939,10 @@ "typeString": "uint256" }, "typeName": { - "id": 644, + "id": 640, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1548:7:7", + "src": "1741:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9061,11 +8953,11 @@ }, { "constant": false, - "id": 647, + "id": 643, "name": "b", "nodeType": "VariableDeclaration", - "scope": 663, - "src": "1559:9:7", + "scope": 659, + "src": "1752:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9073,10 +8965,10 @@ "typeString": "uint256" }, "typeName": { - "id": 646, + "id": 642, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1559:7:7", + "src": "1752:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9086,20 +8978,19 @@ "visibility": "internal" } ], - "src": "1547:22:7" + "src": "1740:22:7" }, - "payable": false, "returnParameters": { - "id": 651, + "id": 647, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 650, + "id": 646, "name": "", "nodeType": "VariableDeclaration", - "scope": 663, - "src": "1593:7:7", + "scope": 659, + "src": "1786:7:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9107,10 +8998,10 @@ "typeString": "uint256" }, "typeName": { - "id": 649, + "id": 645, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1593:7:7", + "src": "1786:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9120,20 +9011,20 @@ "visibility": "internal" } ], - "src": "1592:9:7" + "src": "1785:9:7" }, - "scope": 664, - "src": "1535:111:7", + "scope": 660, + "src": "1728:121:7", "stateMutability": "pure", "superFunction": null, "visibility": "internal" } ], - "scope": 665, - "src": "117:1531:7" + "scope": 661, + "src": "125:1726:7" } ], - "src": "0:1649:7" + "src": "0:1852:7" }, "id": 7 }, @@ -9142,22 +9033,22 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "exportedSymbols": { "IERC20": [ - 733 + 729 ] }, - "id": 734, + "id": 730, "nodeType": "SourceUnit", "nodes": [ { - "id": 666, + "id": 662, "literals": [ "solidity", "^", - "0.4", - ".24" + "0.5", + ".0" ], "nodeType": "PragmaDirective", - "src": "0:24:8" + "src": "0:23:8" }, { "baseContracts": [], @@ -9165,9 +9056,9 @@ "contractKind": "interface", "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", "fullyImplemented": false, - "id": 733, + "id": 729, "linearizedBaseContracts": [ - 733 + 729 ], "name": "IERC20", "nodeType": "ContractDefinition", @@ -9177,18 +9068,70 @@ "documentation": null, "id": 671, "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], - "name": "totalSupply", + "name": "transfer", "nodeType": "FunctionDefinition", "parameters": { "id": 667, "nodeType": "ParameterList", - "parameters": [], - "src": "156:2:8" + "parameters": [ + { + "constant": false, + "id": 664, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 671, + "src": "155:10:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 663, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "155:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 666, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 671, + "src": "167:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 665, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "167:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "154:27:8" }, - "payable": false, "returnParameters": { "id": 670, "nodeType": "ParameterList", @@ -9199,56 +9142,55 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 671, - "src": "182:7:8", + "src": "200:4:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" }, "typeName": { "id": 668, - "name": "uint256", + "name": "bool", "nodeType": "ElementaryTypeName", - "src": "182:7:8", + "src": "200:4:8", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, "value": null, "visibility": "internal" } ], - "src": "181:9:8" + "src": "199:6:8" }, - "scope": 733, - "src": "136:55:8", - "stateMutability": "view", + "scope": 729, + "src": "137:69:8", + "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, { "body": null, "documentation": null, - "id": 678, + "id": 680, "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, + "kind": "function", "modifiers": [], - "name": "balanceOf", + "name": "approve", "nodeType": "FunctionDefinition", "parameters": { - "id": 674, + "id": 676, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 673, - "name": "who", + "name": "spender", "nodeType": "VariableDeclaration", - "scope": 678, - "src": "214:11:8", + "scope": 680, + "src": "229:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9259,90 +9201,8 @@ "id": 672, "name": "address", "nodeType": "ElementaryTypeName", - "src": "214:7:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "213:13:8" - }, - "payable": false, - "returnParameters": { - "id": 677, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 676, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 678, - "src": "250:7:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 675, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "250:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "249:9:8" - }, - "scope": 733, - "src": "195:64:8", - "stateMutability": "view", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 687, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "allowance", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 683, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 680, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 687, - "src": "282:13:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 679, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "282:7:8", + "src": "229:7:8", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9353,11 +9213,92 @@ }, { "constant": false, - "id": 682, - "name": "spender", + "id": 675, + "name": "value", "nodeType": "VariableDeclaration", - "scope": 687, - "src": "297:15:8", + "scope": 680, + "src": "246:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 674, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "246:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "228:32:8" + }, + "returnParameters": { + "id": 679, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 678, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 680, + "src": "279:4:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 677, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "279:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "278:6:8" + }, + "scope": 729, + "src": "212:73:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 691, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 687, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 682, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 691, + "src": "313:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9368,90 +9309,8 @@ "id": 681, "name": "address", "nodeType": "ElementaryTypeName", - "src": "297:7:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "281:32:8" - }, - "payable": false, - "returnParameters": { - "id": 686, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 685, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 687, - "src": "341:7:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 684, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "341:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "340:9:8" - }, - "scope": 733, - "src": "263:87:8", - "stateMutability": "view", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 696, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "transfer", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 692, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 689, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 696, - "src": "372:10:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 688, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "372:7:8", + "src": "313:7:8", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9462,11 +9321,38 @@ }, { "constant": false, - "id": 691, + "id": 684, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 691, + "src": "327:10:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 683, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "327:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 686, "name": "value", "nodeType": "VariableDeclaration", - "scope": 696, - "src": "384:13:8", + "scope": 691, + "src": "339:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9474,10 +9360,10 @@ "typeString": "uint256" }, "typeName": { - "id": 690, + "id": 685, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "384:7:8", + "src": "339:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9487,9 +9373,62 @@ "visibility": "internal" } ], - "src": "371:27:8" + "src": "312:41:8" + }, + "returnParameters": { + "id": 690, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 689, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 691, + "src": "372:4:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 688, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "372:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "371:6:8" + }, + "scope": 729, + "src": "291:87:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 696, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 692, + "nodeType": "ParameterList", + "parameters": [], + "src": "404:2:8" }, - "payable": false, "returnParameters": { "id": 695, "nodeType": "ParameterList", @@ -9500,56 +9439,55 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 696, - "src": "417:4:8", + "src": "430:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { "id": 693, - "name": "bool", + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "417:4:8", + "src": "430:7:8", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], - "src": "416:6:8" + "src": "429:9:8" }, - "scope": 733, - "src": "354:69:8", - "stateMutability": "nonpayable", + "scope": 729, + "src": "384:55:8", + "stateMutability": "view", "superFunction": null, "visibility": "external" }, { "body": null, "documentation": null, - "id": 705, + "id": 703, "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], - "name": "approve", + "name": "balanceOf", "nodeType": "FunctionDefinition", "parameters": { - "id": 701, + "id": 699, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 698, - "name": "spender", + "name": "who", "nodeType": "VariableDeclaration", - "scope": 705, - "src": "444:15:8", + "scope": 703, + "src": "464:11:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9560,7 +9498,90 @@ "id": 697, "name": "address", "nodeType": "ElementaryTypeName", - "src": "444:7:8", + "src": "464:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "463:13:8" + }, + "returnParameters": { + "id": 702, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 701, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 703, + "src": "500:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 700, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "500:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "499:9:8" + }, + "scope": 729, + "src": "445:64:8", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 712, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 708, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 705, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 712, + "src": "534:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 704, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "534:7:8", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9569,96 +9590,13 @@ "value": null, "visibility": "internal" }, - { - "constant": false, - "id": 700, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 705, - "src": "461:13:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 699, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "461:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "443:32:8" - }, - "payable": false, - "returnParameters": { - "id": 704, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 703, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 705, - "src": "498:4:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 702, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "498:4:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "497:6:8" - }, - "scope": 733, - "src": "427:77:8", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 716, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "transferFrom", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 712, - "nodeType": "ParameterList", - "parameters": [ { "constant": false, "id": 707, - "name": "from", + "name": "spender", "nodeType": "VariableDeclaration", - "scope": 716, - "src": "530:12:8", + "scope": 712, + "src": "549:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9669,7 +9607,8 @@ "id": 706, "name": "address", "nodeType": "ElementaryTypeName", - "src": "530:7:8", + "src": "549:7:8", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9677,40 +9616,21 @@ }, "value": null, "visibility": "internal" - }, + } + ], + "src": "533:32:8" + }, + "returnParameters": { + "id": 711, + "nodeType": "ParameterList", + "parameters": [ { "constant": false, - "id": 709, - "name": "to", + "id": 710, + "name": "", "nodeType": "VariableDeclaration", - "scope": 716, - "src": "544:10:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 708, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "544:7:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 711, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 716, - "src": "556:13:8", + "scope": 712, + "src": "589:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9718,10 +9638,10 @@ "typeString": "uint256" }, "typeName": { - "id": 710, + "id": 709, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "556:7:8", + "src": "589:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9731,66 +9651,32 @@ "visibility": "internal" } ], - "src": "529:41:8" + "src": "588:9:8" }, - "payable": false, - "returnParameters": { - "id": 715, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 714, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 716, - "src": "593:4:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 713, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "593:4:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "592:6:8" - }, - "scope": 733, - "src": "508:91:8", - "stateMutability": "nonpayable", + "scope": 729, + "src": "515:83:8", + "stateMutability": "view", "superFunction": null, "visibility": "external" }, { "anonymous": false, "documentation": null, - "id": 724, + "id": 720, "name": "Transfer", "nodeType": "EventDefinition", "parameters": { - "id": 723, + "id": 719, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 718, + "id": 714, "indexed": true, "name": "from", "nodeType": "VariableDeclaration", - "scope": 724, - "src": "623:20:8", + "scope": 720, + "src": "619:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9798,10 +9684,11 @@ "typeString": "address" }, "typeName": { - "id": 717, + "id": 713, "name": "address", "nodeType": "ElementaryTypeName", - "src": "623:7:8", + "src": "619:7:8", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9812,12 +9699,12 @@ }, { "constant": false, - "id": 720, + "id": 716, "indexed": true, "name": "to", "nodeType": "VariableDeclaration", - "scope": 724, - "src": "649:18:8", + "scope": 720, + "src": "641:18:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9825,10 +9712,11 @@ "typeString": "address" }, "typeName": { - "id": 719, + "id": 715, "name": "address", "nodeType": "ElementaryTypeName", - "src": "649:7:8", + "src": "641:7:8", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9839,12 +9727,12 @@ }, { "constant": false, - "id": 722, + "id": 718, "indexed": false, "name": "value", "nodeType": "VariableDeclaration", - "scope": 724, - "src": "673:13:8", + "scope": 720, + "src": "661:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9852,10 +9740,10 @@ "typeString": "uint256" }, "typeName": { - "id": 721, + "id": 717, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "673:7:8", + "src": "661:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9865,28 +9753,28 @@ "visibility": "internal" } ], - "src": "617:73:8" + "src": "618:57:8" }, - "src": "603:88:8" + "src": "604:72:8" }, { "anonymous": false, "documentation": null, - "id": 732, + "id": 728, "name": "Approval", "nodeType": "EventDefinition", "parameters": { - "id": 731, + "id": 727, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 726, + "id": 722, "indexed": true, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 732, - "src": "715:21:8", + "scope": 728, + "src": "697:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9894,10 +9782,11 @@ "typeString": "address" }, "typeName": { - "id": 725, + "id": 721, "name": "address", "nodeType": "ElementaryTypeName", - "src": "715:7:8", + "src": "697:7:8", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9908,12 +9797,12 @@ }, { "constant": false, - "id": 728, + "id": 724, "indexed": true, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 732, - "src": "742:23:8", + "scope": 728, + "src": "720:23:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9921,10 +9810,11 @@ "typeString": "address" }, "typeName": { - "id": 727, + "id": 723, "name": "address", "nodeType": "ElementaryTypeName", - "src": "742:7:8", + "src": "720:7:8", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9935,12 +9825,12 @@ }, { "constant": false, - "id": 730, + "id": 726, "indexed": false, "name": "value", "nodeType": "VariableDeclaration", - "scope": 732, - "src": "771:13:8", + "scope": 728, + "src": "745:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9948,10 +9838,10 @@ "typeString": "uint256" }, "typeName": { - "id": 729, + "id": 725, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "771:7:8", + "src": "745:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9961,16 +9851,16 @@ "visibility": "internal" } ], - "src": "709:79:8" + "src": "696:63:8" }, - "src": "695:94:8" + "src": "682:78:8" } ], - "scope": 734, - "src": "115:676:8" + "scope": 730, + "src": "114:648:8" } ], - "src": "0:792:8" + "src": "0:763:8" }, "id": 8 }, @@ -9979,42 +9869,42 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "exportedSymbols": { "SafeERC20": [ - 877 + 874 ] }, - "id": 878, + "id": 875, "nodeType": "SourceUnit", "nodes": [ { - "id": 735, + "id": 731, "literals": [ "solidity", "^", - "0.4", - ".24" + "0.5", + ".0" ], "nodeType": "PragmaDirective", - "src": "0:24:9" + "src": "0:23:9" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "./IERC20.sol", - "id": 736, + "id": 732, "nodeType": "ImportDirective", - "scope": 878, - "sourceUnit": 734, - "src": "26:22:9", + "scope": 875, + "sourceUnit": 730, + "src": "25:22:9", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "file": "../../math/SafeMath.sol", - "id": 737, + "id": 733, "nodeType": "ImportDirective", - "scope": 878, - "sourceUnit": 665, - "src": "49:33:9", + "scope": 875, + "sourceUnit": 661, + "src": "48:33:9", "symbolAliases": [], "unitAlias": "" }, @@ -10024,31 +9914,31 @@ "contractKind": "library", "documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.", "fullyImplemented": true, - "id": 877, + "id": 874, "linearizedBaseContracts": [ - 877 + 874 ], "name": "SafeERC20", "nodeType": "ContractDefinition", "nodes": [ { - "id": 740, + "id": 736, "libraryName": { "contractScope": null, - "id": 738, + "id": 734, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 664, + "referencedDeclaration": 660, "src": "382:8:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$664", + "typeIdentifier": "t_contract$_SafeMath_$660", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", "src": "376:27:9", "typeName": { - "id": 739, + "id": 735, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "395:7:9", @@ -10060,9 +9950,9 @@ }, { "body": { - "id": 757, + "id": 753, "nodeType": "Block", - "src": "501:45:9", + "src": "481:51:9", "statements": [ { "expression": { @@ -10073,12 +9963,12 @@ "arguments": [ { "argumentTypes": null, - "id": 752, + "id": 748, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 744, - "src": "530:2:9", + "referencedDeclaration": 740, + "src": "514:2:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10086,12 +9976,12 @@ }, { "argumentTypes": null, - "id": 753, + "id": 749, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 746, - "src": "534:5:9", + "referencedDeclaration": 742, + "src": "518:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10111,32 +10001,32 @@ ], "expression": { "argumentTypes": null, - "id": 750, + "id": 746, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 742, - "src": "515:5:9", + "referencedDeclaration": 738, + "src": "499:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$733", + "typeIdentifier": "t_contract$_IERC20_$729", "typeString": "contract IERC20" } }, - "id": 751, + "id": 747, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", - "referencedDeclaration": 696, - "src": "515:14:9", + "referencedDeclaration": 671, + "src": "499:14:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 754, + "id": 750, "isConstant": false, "isLValue": false, "isPure": false, @@ -10144,7 +10034,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "515:25:9", + "src": "499:25:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10158,21 +10048,21 @@ "typeString": "bool" } ], - "id": 749, + "id": 745, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 895, - 896 + 892, + 893 ], - "referencedDeclaration": 895, - "src": "507:7:9", + "referencedDeclaration": 892, + "src": "491:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 755, + "id": 751, "isConstant": false, "isLValue": false, "isPure": false, @@ -10180,52 +10070,51 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "507:34:9", + "src": "491:34:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 756, + "id": 752, "nodeType": "ExpressionStatement", - "src": "507:34:9" + "src": "491:34:9" } ] }, "documentation": null, - "id": 758, + "id": 754, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "safeTransfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 747, + "id": 743, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 742, + "id": 738, "name": "token", "nodeType": "VariableDeclaration", - "scope": 758, - "src": "434:12:9", + "scope": 754, + "src": "431:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$733", + "typeIdentifier": "t_contract$_IERC20_$729", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 741, + "id": 737, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 733, - "src": "434:6:9", + "referencedDeclaration": 729, + "src": "431:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$733", + "typeIdentifier": "t_contract$_IERC20_$729", "typeString": "contract IERC20" } }, @@ -10234,11 +10123,11 @@ }, { "constant": false, - "id": 744, + "id": 740, "name": "to", "nodeType": "VariableDeclaration", - "scope": 758, - "src": "452:10:9", + "scope": 754, + "src": "445:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10246,10 +10135,11 @@ "typeString": "address" }, "typeName": { - "id": 743, + "id": 739, "name": "address", "nodeType": "ElementaryTypeName", - "src": "452:7:9", + "src": "445:7:9", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10260,11 +10150,11 @@ }, { "constant": false, - "id": 746, + "id": 742, "name": "value", "nodeType": "VariableDeclaration", - "scope": 758, - "src": "468:13:9", + "scope": 754, + "src": "457:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10272,10 +10162,10 @@ "typeString": "uint256" }, "typeName": { - "id": 745, + "id": 741, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "468:7:9", + "src": "457:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10285,26 +10175,25 @@ "visibility": "internal" } ], - "src": "428:57:9" + "src": "430:41:9" }, - "payable": false, "returnParameters": { - "id": 748, + "id": 744, "nodeType": "ParameterList", "parameters": [], - "src": "501:0:9" + "src": "481:0:9" }, - "scope": 877, - "src": "407:139:9", + "scope": 874, + "src": "409:123:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 778, + "id": 774, "nodeType": "Block", - "src": "666:55:9", + "src": "628:61:9", "statements": [ { "expression": { @@ -10315,12 +10204,12 @@ "arguments": [ { "argumentTypes": null, - "id": 772, + "id": 768, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 762, - "src": "699:4:9", + "referencedDeclaration": 758, + "src": "665:4:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10328,12 +10217,12 @@ }, { "argumentTypes": null, - "id": 773, + "id": 769, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 764, - "src": "705:2:9", + "referencedDeclaration": 760, + "src": "671:2:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10341,12 +10230,12 @@ }, { "argumentTypes": null, - "id": 774, + "id": 770, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 766, - "src": "709:5:9", + "referencedDeclaration": 762, + "src": "675:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10370,32 +10259,32 @@ ], "expression": { "argumentTypes": null, - "id": 770, + "id": 766, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 760, - "src": "680:5:9", + "referencedDeclaration": 756, + "src": "646:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$733", + "typeIdentifier": "t_contract$_IERC20_$729", "typeString": "contract IERC20" } }, - "id": 771, + "id": 767, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", - "referencedDeclaration": 716, - "src": "680:18:9", + "referencedDeclaration": 691, + "src": "646:18:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)" } }, - "id": 775, + "id": 771, "isConstant": false, "isLValue": false, "isPure": false, @@ -10403,7 +10292,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "680:35:9", + "src": "646:35:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10417,21 +10306,21 @@ "typeString": "bool" } ], - "id": 769, + "id": 765, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 895, - 896 + 892, + 893 ], - "referencedDeclaration": 895, - "src": "672:7:9", + "referencedDeclaration": 892, + "src": "638:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 776, + "id": 772, "isConstant": false, "isLValue": false, "isPure": false, @@ -10439,117 +10328,118 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "672:44:9", + "src": "638:44:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 777, + "id": 773, "nodeType": "ExpressionStatement", - "src": "672:44:9" + "src": "638:44:9" } ] }, "documentation": null, - "id": 779, + "id": 775, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "safeTransferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 767, + "id": 763, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 760, + "id": 756, "name": "token", "nodeType": "VariableDeclaration", - "scope": 779, - "src": "581:12:9", + "scope": 775, + "src": "564:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$733", + "typeIdentifier": "t_contract$_IERC20_$729", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 759, + "id": 755, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 733, - "src": "581:6:9", + "referencedDeclaration": 729, + "src": "564:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$733", + "typeIdentifier": "t_contract$_IERC20_$729", "typeString": "contract IERC20" } }, "value": null, "visibility": "internal" }, + { + "constant": false, + "id": 758, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 775, + "src": "578:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 757, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "578:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 760, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 775, + "src": "592:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 759, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "592:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, { "constant": false, "id": 762, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 779, - "src": "599:12:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 761, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "599:7:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 764, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 779, - "src": "617:10:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 763, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "617:7:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 766, "name": "value", "nodeType": "VariableDeclaration", - "scope": 779, - "src": "633:13:9", + "scope": 775, + "src": "604:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10557,10 +10447,10 @@ "typeString": "uint256" }, "typeName": { - "id": 765, + "id": 761, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "633:7:9", + "src": "604:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10570,26 +10460,25 @@ "visibility": "internal" } ], - "src": "575:75:9" + "src": "563:55:9" }, - "payable": false, "returnParameters": { - "id": 768, + "id": 764, "nodeType": "ParameterList", "parameters": [], - "src": "666:0:9" + "src": "628:0:9" }, - "scope": 877, - "src": "550:171:9", + "scope": 874, + "src": "538:151:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 813, + "id": 810, "nodeType": "Block", - "src": "823:330:9", + "src": "771:353:9", "statements": [ { "expression": { @@ -10601,7 +10490,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 802, + "id": 799, "isConstant": false, "isLValue": false, "isPure": false, @@ -10615,19 +10504,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 791, + "id": 787, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 789, + "id": 785, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 785, - "src": "1045:5:9", + "referencedDeclaration": 781, + "src": "1007:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10638,14 +10527,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 790, + "id": 786, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1054:1:9", + "src": "1016:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -10653,21 +10542,21 @@ }, "value": "0" }, - "src": "1045:10:9", + "src": "1007:10:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 792, + "id": 788, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "1044:12:9", + "src": "1006:12:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10684,7 +10573,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 800, + "id": 797, "isConstant": false, "isLValue": false, "isPure": false, @@ -10694,28 +10583,50 @@ "arguments": [ { "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 795, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 892, - "src": "1077:3:9", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" + "arguments": [ + { + "argumentTypes": null, + "id": 792, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 913, + "src": "1047:4:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$874", + "typeString": "library SafeERC20" + } } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$874", + "typeString": "library SafeERC20" + } + ], + "id": 791, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1039:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" }, - "id": 796, + "id": 793, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "typeConversion", "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1077:10:9", + "names": [], + "nodeType": "FunctionCall", + "src": "1039:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10723,12 +10634,12 @@ }, { "argumentTypes": null, - "id": 797, + "id": 794, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 783, - "src": "1089:7:9", + "referencedDeclaration": 779, + "src": "1054:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10748,32 +10659,32 @@ ], "expression": { "argumentTypes": null, - "id": 793, + "id": 789, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 781, - "src": "1061:5:9", + "referencedDeclaration": 777, + "src": "1023:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$733", + "typeIdentifier": "t_contract$_IERC20_$729", "typeString": "contract IERC20" } }, - "id": 794, + "id": 790, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 687, - "src": "1061:15:9", + "referencedDeclaration": 712, + "src": "1023:15:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 798, + "id": 795, "isConstant": false, "isLValue": false, "isPure": false, @@ -10781,7 +10692,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1061:36:9", + "src": "1023:39:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10792,14 +10703,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 799, + "id": 796, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1101:1:9", + "src": "1066:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -10807,27 +10718,27 @@ }, "value": "0" }, - "src": "1061:41:9", + "src": "1023:44:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 801, + "id": 798, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "1060:43:9", + "src": "1022:46:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1044:59:9", + "src": "1006:62:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10841,21 +10752,21 @@ "typeString": "bool" } ], - "id": 788, + "id": 784, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 895, - 896 + 892, + 893 ], - "referencedDeclaration": 895, - "src": "1036:7:9", + "referencedDeclaration": 892, + "src": "998:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 803, + "id": 800, "isConstant": false, "isLValue": false, "isPure": false, @@ -10863,15 +10774,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1036:68:9", + "src": "998:71:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 804, + "id": 801, "nodeType": "ExpressionStatement", - "src": "1036:68:9" + "src": "998:71:9" }, { "expression": { @@ -10882,12 +10793,12 @@ "arguments": [ { "argumentTypes": null, - "id": 808, + "id": 805, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 783, - "src": "1132:7:9", + "referencedDeclaration": 779, + "src": "1101:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10895,12 +10806,12 @@ }, { "argumentTypes": null, - "id": 809, + "id": 806, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 785, - "src": "1141:5:9", + "referencedDeclaration": 781, + "src": "1110:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10920,32 +10831,32 @@ ], "expression": { "argumentTypes": null, - "id": 806, + "id": 803, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 781, - "src": "1118:5:9", + "referencedDeclaration": 777, + "src": "1087:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$733", + "typeIdentifier": "t_contract$_IERC20_$729", "typeString": "contract IERC20" } }, - "id": 807, + "id": 804, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 705, - "src": "1118:13:9", + "referencedDeclaration": 680, + "src": "1087:13:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 810, + "id": 807, "isConstant": false, "isLValue": false, "isPure": false, @@ -10953,7 +10864,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1118:29:9", + "src": "1087:29:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10967,21 +10878,21 @@ "typeString": "bool" } ], - "id": 805, + "id": 802, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 895, - 896 + 892, + 893 ], - "referencedDeclaration": 895, - "src": "1110:7:9", + "referencedDeclaration": 892, + "src": "1079:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 811, + "id": 808, "isConstant": false, "isLValue": false, "isPure": false, @@ -10989,52 +10900,51 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1110:38:9", + "src": "1079:38:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 812, + "id": 809, "nodeType": "ExpressionStatement", - "src": "1110:38:9" + "src": "1079:38:9" } ] }, "documentation": null, - "id": 814, + "id": 811, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "safeApprove", "nodeType": "FunctionDefinition", "parameters": { - "id": 786, + "id": 782, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 781, + "id": 777, "name": "token", "nodeType": "VariableDeclaration", - "scope": 814, - "src": "751:12:9", + "scope": 811, + "src": "716:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$733", + "typeIdentifier": "t_contract$_IERC20_$729", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 780, + "id": 776, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 733, - "src": "751:6:9", + "referencedDeclaration": 729, + "src": "716:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$733", + "typeIdentifier": "t_contract$_IERC20_$729", "typeString": "contract IERC20" } }, @@ -11043,11 +10953,11 @@ }, { "constant": false, - "id": 783, + "id": 779, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 814, - "src": "769:15:9", + "scope": 811, + "src": "730:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11055,10 +10965,11 @@ "typeString": "address" }, "typeName": { - "id": 782, + "id": 778, "name": "address", "nodeType": "ElementaryTypeName", - "src": "769:7:9", + "src": "730:7:9", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11069,11 +10980,11 @@ }, { "constant": false, - "id": 785, + "id": 781, "name": "value", "nodeType": "VariableDeclaration", - "scope": 814, - "src": "790:13:9", + "scope": 811, + "src": "747:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11081,10 +10992,10 @@ "typeString": "uint256" }, "typeName": { - "id": 784, + "id": 780, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "790:7:9", + "src": "747:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11094,39 +11005,38 @@ "visibility": "internal" } ], - "src": "745:62:9" + "src": "715:46:9" }, - "payable": false, "returnParameters": { - "id": 787, + "id": 783, "nodeType": "ParameterList", "parameters": [], - "src": "823:0:9" + "src": "771:0:9" }, - "scope": 877, - "src": "725:428:9", + "scope": 874, + "src": "695:429:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 844, + "id": 841, "nodeType": "Block", - "src": "1265:135:9", + "src": "1216:145:9", "statements": [ { "assignments": [ - 824 + 821 ], "declarations": [ { "constant": false, - "id": 824, + "id": 821, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 845, - "src": "1271:20:9", + "scope": 841, + "src": "1226:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11134,10 +11044,10 @@ "typeString": "uint256" }, "typeName": { - "id": 823, + "id": 820, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1271:7:9", + "src": "1226:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11147,18 +11057,18 @@ "visibility": "internal" } ], - "id": 835, + "id": 832, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 833, + "id": 830, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 820, - "src": "1338:5:9", + "referencedDeclaration": 817, + "src": "1293:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11180,14 +11090,14 @@ "arguments": [ { "argumentTypes": null, - "id": 828, + "id": 825, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 915, - "src": "1318:4:9", + "referencedDeclaration": 913, + "src": "1273:4:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$877", + "typeIdentifier": "t_contract$_SafeERC20_$874", "typeString": "library SafeERC20" } } @@ -11195,24 +11105,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$877", + "typeIdentifier": "t_contract$_SafeERC20_$874", "typeString": "library SafeERC20" } ], - "id": 827, + "id": 824, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1310:7:9", + "src": "1265:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 829, + "id": 826, "isConstant": false, "isLValue": false, "isPure": false, @@ -11220,7 +11130,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1310:13:9", + "src": "1265:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11228,12 +11138,12 @@ }, { "argumentTypes": null, - "id": 830, + "id": 827, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 818, - "src": "1325:7:9", + "referencedDeclaration": 815, + "src": "1280:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11253,32 +11163,32 @@ ], "expression": { "argumentTypes": null, - "id": 825, + "id": 822, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 816, - "src": "1294:5:9", + "referencedDeclaration": 813, + "src": "1249:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$733", + "typeIdentifier": "t_contract$_IERC20_$729", "typeString": "contract IERC20" } }, - "id": 826, + "id": 823, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 687, - "src": "1294:15:9", + "referencedDeclaration": 712, + "src": "1249:15:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 831, + "id": 828, "isConstant": false, "isLValue": false, "isPure": false, @@ -11286,27 +11196,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1294:39:9", + "src": "1249:39:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 832, + "id": 829, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 643, - "src": "1294:43:9", + "referencedDeclaration": 639, + "src": "1249:43:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 834, + "id": 831, "isConstant": false, "isLValue": false, "isPure": false, @@ -11314,14 +11224,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1294:50:9", + "src": "1249:50:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1271:73:9" + "src": "1226:73:9" }, { "expression": { @@ -11332,12 +11242,12 @@ "arguments": [ { "argumentTypes": null, - "id": 839, + "id": 836, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 818, - "src": "1372:7:9", + "referencedDeclaration": 815, + "src": "1331:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11345,12 +11255,12 @@ }, { "argumentTypes": null, - "id": 840, + "id": 837, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 824, - "src": "1381:12:9", + "referencedDeclaration": 821, + "src": "1340:12:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11370,32 +11280,32 @@ ], "expression": { "argumentTypes": null, - "id": 837, + "id": 834, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 816, - "src": "1358:5:9", + "referencedDeclaration": 813, + "src": "1317:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$733", + "typeIdentifier": "t_contract$_IERC20_$729", "typeString": "contract IERC20" } }, - "id": 838, + "id": 835, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 705, - "src": "1358:13:9", + "referencedDeclaration": 680, + "src": "1317:13:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 841, + "id": 838, "isConstant": false, "isLValue": false, "isPure": false, @@ -11403,7 +11313,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1358:36:9", + "src": "1317:36:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11417,21 +11327,21 @@ "typeString": "bool" } ], - "id": 836, + "id": 833, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 895, - 896 + 892, + 893 ], - "referencedDeclaration": 895, - "src": "1350:7:9", + "referencedDeclaration": 892, + "src": "1309:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 842, + "id": 839, "isConstant": false, "isLValue": false, "isPure": false, @@ -11439,52 +11349,51 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1350:45:9", + "src": "1309:45:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 843, + "id": 840, "nodeType": "ExpressionStatement", - "src": "1350:45:9" + "src": "1309:45:9" } ] }, "documentation": null, - "id": 845, + "id": 842, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "safeIncreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 821, + "id": 818, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 816, + "id": 813, "name": "token", "nodeType": "VariableDeclaration", - "scope": 845, - "src": "1193:12:9", + "scope": 842, + "src": "1161:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$733", + "typeIdentifier": "t_contract$_IERC20_$729", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 815, + "id": 812, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 733, - "src": "1193:6:9", + "referencedDeclaration": 729, + "src": "1161:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$733", + "typeIdentifier": "t_contract$_IERC20_$729", "typeString": "contract IERC20" } }, @@ -11493,11 +11402,11 @@ }, { "constant": false, - "id": 818, + "id": 815, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 845, - "src": "1211:15:9", + "scope": 842, + "src": "1175:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11505,10 +11414,11 @@ "typeString": "address" }, "typeName": { - "id": 817, + "id": 814, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1211:7:9", + "src": "1175:7:9", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11519,11 +11429,11 @@ }, { "constant": false, - "id": 820, + "id": 817, "name": "value", "nodeType": "VariableDeclaration", - "scope": 845, - "src": "1232:13:9", + "scope": 842, + "src": "1192:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11531,10 +11441,10 @@ "typeString": "uint256" }, "typeName": { - "id": 819, + "id": 816, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1232:7:9", + "src": "1192:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11544,39 +11454,38 @@ "visibility": "internal" } ], - "src": "1187:62:9" + "src": "1160:46:9" }, - "payable": false, "returnParameters": { - "id": 822, + "id": 819, "nodeType": "ParameterList", "parameters": [], - "src": "1265:0:9" + "src": "1216:0:9" }, - "scope": 877, - "src": "1157:243:9", + "scope": 874, + "src": "1130:231:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 875, + "id": 872, "nodeType": "Block", - "src": "1512:135:9", + "src": "1453:145:9", "statements": [ { "assignments": [ - 855 + 852 ], "declarations": [ { "constant": false, - "id": 855, + "id": 852, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 876, - "src": "1518:20:9", + "scope": 872, + "src": "1463:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11584,10 +11493,10 @@ "typeString": "uint256" }, "typeName": { - "id": 854, + "id": 851, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1518:7:9", + "src": "1463:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11597,18 +11506,18 @@ "visibility": "internal" } ], - "id": 866, + "id": 863, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 864, + "id": 861, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 851, - "src": "1585:5:9", + "referencedDeclaration": 848, + "src": "1530:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11630,14 +11539,14 @@ "arguments": [ { "argumentTypes": null, - "id": 859, + "id": 856, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 915, - "src": "1565:4:9", + "referencedDeclaration": 913, + "src": "1510:4:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$877", + "typeIdentifier": "t_contract$_SafeERC20_$874", "typeString": "library SafeERC20" } } @@ -11645,24 +11554,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$877", + "typeIdentifier": "t_contract$_SafeERC20_$874", "typeString": "library SafeERC20" } ], - "id": 858, + "id": 855, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1557:7:9", + "src": "1502:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 860, + "id": 857, "isConstant": false, "isLValue": false, "isPure": false, @@ -11670,7 +11579,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1557:13:9", + "src": "1502:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11678,12 +11587,12 @@ }, { "argumentTypes": null, - "id": 861, + "id": 858, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 849, - "src": "1572:7:9", + "referencedDeclaration": 846, + "src": "1517:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11703,32 +11612,32 @@ ], "expression": { "argumentTypes": null, - "id": 856, + "id": 853, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 847, - "src": "1541:5:9", + "referencedDeclaration": 844, + "src": "1486:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$733", + "typeIdentifier": "t_contract$_IERC20_$729", "typeString": "contract IERC20" } }, - "id": 857, + "id": 854, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 687, - "src": "1541:15:9", + "referencedDeclaration": 712, + "src": "1486:15:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 862, + "id": 859, "isConstant": false, "isLValue": false, "isPure": false, @@ -11736,27 +11645,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1541:39:9", + "src": "1486:39:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 863, + "id": 860, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 619, - "src": "1541:43:9", + "referencedDeclaration": 615, + "src": "1486:43:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 865, + "id": 862, "isConstant": false, "isLValue": false, "isPure": false, @@ -11764,14 +11673,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1541:50:9", + "src": "1486:50:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1518:73:9" + "src": "1463:73:9" }, { "expression": { @@ -11782,12 +11691,12 @@ "arguments": [ { "argumentTypes": null, - "id": 870, + "id": 867, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 849, - "src": "1619:7:9", + "referencedDeclaration": 846, + "src": "1568:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11795,12 +11704,12 @@ }, { "argumentTypes": null, - "id": 871, + "id": 868, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 855, - "src": "1628:12:9", + "referencedDeclaration": 852, + "src": "1577:12:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11820,32 +11729,32 @@ ], "expression": { "argumentTypes": null, - "id": 868, + "id": 865, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 847, - "src": "1605:5:9", + "referencedDeclaration": 844, + "src": "1554:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$733", + "typeIdentifier": "t_contract$_IERC20_$729", "typeString": "contract IERC20" } }, - "id": 869, + "id": 866, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 705, - "src": "1605:13:9", + "referencedDeclaration": 680, + "src": "1554:13:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 872, + "id": 869, "isConstant": false, "isLValue": false, "isPure": false, @@ -11853,7 +11762,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1605:36:9", + "src": "1554:36:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11867,21 +11776,21 @@ "typeString": "bool" } ], - "id": 867, + "id": 864, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 895, - 896 + 892, + 893 ], - "referencedDeclaration": 895, - "src": "1597:7:9", + "referencedDeclaration": 892, + "src": "1546:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 873, + "id": 870, "isConstant": false, "isLValue": false, "isPure": false, @@ -11889,52 +11798,51 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1597:45:9", + "src": "1546:45:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 874, + "id": 871, "nodeType": "ExpressionStatement", - "src": "1597:45:9" + "src": "1546:45:9" } ] }, "documentation": null, - "id": 876, + "id": 873, "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, + "kind": "function", "modifiers": [], "name": "safeDecreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 852, + "id": 849, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 847, + "id": 844, "name": "token", "nodeType": "VariableDeclaration", - "scope": 876, - "src": "1440:12:9", + "scope": 873, + "src": "1398:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$733", + "typeIdentifier": "t_contract$_IERC20_$729", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 846, + "id": 843, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 733, - "src": "1440:6:9", + "referencedDeclaration": 729, + "src": "1398:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$733", + "typeIdentifier": "t_contract$_IERC20_$729", "typeString": "contract IERC20" } }, @@ -11943,11 +11851,11 @@ }, { "constant": false, - "id": 849, + "id": 846, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 876, - "src": "1458:15:9", + "scope": 873, + "src": "1412:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11955,10 +11863,11 @@ "typeString": "address" }, "typeName": { - "id": 848, + "id": 845, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1458:7:9", + "src": "1412:7:9", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11969,11 +11878,11 @@ }, { "constant": false, - "id": 851, + "id": 848, "name": "value", "nodeType": "VariableDeclaration", - "scope": 876, - "src": "1479:13:9", + "scope": 873, + "src": "1429:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11981,10 +11890,10 @@ "typeString": "uint256" }, "typeName": { - "id": 850, + "id": 847, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1479:7:9", + "src": "1429:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11994,27 +11903,26 @@ "visibility": "internal" } ], - "src": "1434:62:9" + "src": "1397:46:9" }, - "payable": false, "returnParameters": { - "id": 853, + "id": 850, "nodeType": "ParameterList", "parameters": [], - "src": "1512:0:9" + "src": "1453:0:9" }, - "scope": 877, - "src": "1404:243:9", + "scope": 874, + "src": "1367:231:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 878, - "src": "353:1296:9" + "scope": 875, + "src": "352:1248:9" } ], - "src": "0:1650:9" + "src": "0:1601:9" }, "id": 9 } diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin index e02c608ef..51814af0e 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b506040516040806107f28339810160405280516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561006f90640100000000610093810204565b6003805483919060ff19166001838181111561008757fe5b0217905550505061013c565b6100ab6002826401000000006105e16100ae82021704565b50565b600160a060020a03811615156100c357600080fd5b6100d68282640100000000610105810204565b156100e057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561011c57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106a78061014b6000396000f3006080604052600436106100535763ffffffff60e060020a6000350416630c08bf8881146100585780632e6b68491461006f578063608d3d3d14610090578063d43acc79146100c5578063fe4028bb146100da575b600080fd5b34801561006457600080fd5b5061006d6100fb565b005b34801561007b57600080fd5b5061006d600160a060020a0360043516610119565b34801561009c57600080fd5b506100b1600160a060020a0360043516610139565b604080519115158252519081900360200190f35b3480156100d157600080fd5b5061006d610154565b3480156100e657600080fd5b5061006d600160a060020a036004351661015d565b61010433610139565b151561010f57600080fd5b610117610339565b565b61012233610139565b151561012d57600080fd5b61013681610400565b50565b600061014c60028363ffffffff61041116565b90505b919050565b61011733610448565b600080548190819074010000000000000000000000000000000000000000900460ff161561018a57600080fd5b61019333610139565b151561019e57600080fd5b600160a060020a03841660009081526004602052604090205460ff16156101c457600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561020557600080fd5b505af1158015610219573d6000803e3d6000fd5b505050506040513d602081101561022f57600080fd5b5051151561023c57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561027a57600080fd5b505af115801561028e573d6000803e3d6000fd5b505050506040513d60208110156102a457600080fd5b50519150600060ff8316108015906102c0575060058260ff1611155b15156102cb57600080fd5b6102d482610459565b9050600160035460ff1660018111156102e957fe5b14156102f9576064600a82020490505b600160a060020a038085166000908152600460205260409020805460ff19166001908117909155546103339116858363ffffffff61050b16565b50505050565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561039e57600080fd5b505af11580156103b2573d6000803e3d6000fd5b505050506040513d60208110156103c857600080fd5b5051905060008111156103f8576000546001546103f891600160a060020a0391821691168363ffffffff61050b16565b6101366105aa565b61013660028263ffffffff6105e116565b6000600160a060020a038216151561042857600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61013660028263ffffffff61062f16565b600060ff82161515610476575069152d02c7e14af680000061014f565b8160ff1660011415610493575069d3c21bcecceda100000061014f565b8160ff16600214156104b157506a01a784379d99db4200000061014f565b8160ff16600314156104cf57506a027b46536c66c8e300000061014f565b8160ff16600414156104ed57506a034f086f3b33b68400000061014f565b8160ff166005141561014f57506a0422ca8b0a00a42500000061014f565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561056e57600080fd5b505af1158015610582573d6000803e3d6000fd5b505050506040513d602081101561059857600080fd5b505115156105a557600080fd5b505050565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a03811615156105f657600080fd5b6106008282610411565b1561060a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561064457600080fd5b61064e8282610411565b151561065957600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820607cdb7d48cff40583123be547a706873bba6b846ef7d5e3d0130e7698d76c6e0029 \ No newline at end of file +608060405234801561001057600080fd5b506040516040806107e88339810180604052604081101561003057600080fd5b5080516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561007f906401000000006100a3810204565b6003805483919060ff19166001838181111561009757fe5b0217905550505061014c565b6100bb6002826401000000006105c76100be82021704565b50565b600160a060020a03811615156100d357600080fd5b6100e68282640100000000610115810204565b156100f057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561012c57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61068d8061015b6000396000f3fe608060405234801561001057600080fd5b506004361061005a5760e060020a60003504630c08bf88811461005f5780632e6b684914610069578063608d3d3d1461008f578063d43acc79146100c9578063fe4028bb146100d1575b600080fd5b6100676100f7565b005b6100676004803603602081101561007f57600080fd5b5035600160a060020a0316610115565b6100b5600480360360208110156100a557600080fd5b5035600160a060020a0316610135565b604080519115158252519081900360200190f35b610067610150565b610067600480360360208110156100e757600080fd5b5035600160a060020a0316610159565b61010033610135565b151561010b57600080fd5b610113610320565b565b61011e33610135565b151561012957600080fd5b610132816103e6565b50565b600061014860028363ffffffff6103f716565b90505b919050565b6101133361042e565b60005474010000000000000000000000000000000000000000900460ff161561018157600080fd5b61018a33610135565b151561019557600080fd5b600160a060020a03811660009081526004602052604090205460ff16156101bb57600080fd5b600081905080600160a060020a0316631777fb4b6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156101fc57600080fd5b505afa158015610210573d6000803e3d6000fd5b505050506040513d602081101561022657600080fd5b5051151561023357600080fd5b600081600160a060020a03166380258e476040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561027157600080fd5b505afa158015610285573d6000803e3d6000fd5b505050506040513d602081101561029b57600080fd5b50519050600560ff821611156102b057600080fd5b60006102bb8261043f565b9050600160035460ff1660018111156102d057fe5b14156102e0576064600a82020490505b600160a060020a038085166000908152600460205260409020805460ff191660019081179091555461031a9116858363ffffffff6104f116565b50505050565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a08231916024808301926020929190829003018186803b15801561038457600080fd5b505afa158015610398573d6000803e3d6000fd5b505050506040513d60208110156103ae57600080fd5b5051905060008111156103de576000546001546103de91600160a060020a0391821691168363ffffffff6104f116565b610132610590565b61013260028263ffffffff6105c716565b6000600160a060020a038216151561040e57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61013260028263ffffffff61061516565b600060ff8216151561045c575069152d02c7e14af680000061014b565b8160ff1660011415610479575069d3c21bcecceda100000061014b565b8160ff166002141561049757506a01a784379d99db4200000061014b565b8160ff16600314156104b557506a027b46536c66c8e300000061014b565b8160ff16600414156104d357506a034f086f3b33b68400000061014b565b8160ff166005141561014b57506a0422ca8b0a00a42500000061014b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561055457600080fd5b505af1158015610568573d6000803e3d6000fd5b505050506040513d602081101561057e57600080fd5b5051151561058b57600080fd5b505050565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a03811615156105dc57600080fd5b6105e682826103f7565b156105f057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561062a57600080fd5b61063482826103f7565b151561063f57600080fd5b600160a060020a0316600090815260209190915260409020805460ff1916905556fea165627a7a72305820da6d23ac8f4b151242d9a9cc936a0d9469d337bb92eddce5cc529e4f80d49b290029 \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json index 011ad68c3..c0e18880b 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json @@ -81,7 +81,7 @@ "type": "constructor" } ], - "bytecode": "608060405234801561001057600080fd5b506040516040806107f28339810160405280516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561006f90640100000000610093810204565b6003805483919060ff19166001838181111561008757fe5b0217905550505061013c565b6100ab6002826401000000006105e16100ae82021704565b50565b600160a060020a03811615156100c357600080fd5b6100d68282640100000000610105810204565b156100e057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561011c57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106a78061014b6000396000f3006080604052600436106100535763ffffffff60e060020a6000350416630c08bf8881146100585780632e6b68491461006f578063608d3d3d14610090578063d43acc79146100c5578063fe4028bb146100da575b600080fd5b34801561006457600080fd5b5061006d6100fb565b005b34801561007b57600080fd5b5061006d600160a060020a0360043516610119565b34801561009c57600080fd5b506100b1600160a060020a0360043516610139565b604080519115158252519081900360200190f35b3480156100d157600080fd5b5061006d610154565b3480156100e657600080fd5b5061006d600160a060020a036004351661015d565b61010433610139565b151561010f57600080fd5b610117610339565b565b61012233610139565b151561012d57600080fd5b61013681610400565b50565b600061014c60028363ffffffff61041116565b90505b919050565b61011733610448565b600080548190819074010000000000000000000000000000000000000000900460ff161561018a57600080fd5b61019333610139565b151561019e57600080fd5b600160a060020a03841660009081526004602052604090205460ff16156101c457600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561020557600080fd5b505af1158015610219573d6000803e3d6000fd5b505050506040513d602081101561022f57600080fd5b5051151561023c57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561027a57600080fd5b505af115801561028e573d6000803e3d6000fd5b505050506040513d60208110156102a457600080fd5b50519150600060ff8316108015906102c0575060058260ff1611155b15156102cb57600080fd5b6102d482610459565b9050600160035460ff1660018111156102e957fe5b14156102f9576064600a82020490505b600160a060020a038085166000908152600460205260409020805460ff19166001908117909155546103339116858363ffffffff61050b16565b50505050565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561039e57600080fd5b505af11580156103b2573d6000803e3d6000fd5b505050506040513d60208110156103c857600080fd5b5051905060008111156103f8576000546001546103f891600160a060020a0391821691168363ffffffff61050b16565b6101366105aa565b61013660028263ffffffff6105e116565b6000600160a060020a038216151561042857600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61013660028263ffffffff61062f16565b600060ff82161515610476575069152d02c7e14af680000061014f565b8160ff1660011415610493575069d3c21bcecceda100000061014f565b8160ff16600214156104b157506a01a784379d99db4200000061014f565b8160ff16600314156104cf57506a027b46536c66c8e300000061014f565b8160ff16600414156104ed57506a034f086f3b33b68400000061014f565b8160ff166005141561014f57506a0422ca8b0a00a42500000061014f565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561056e57600080fd5b505af1158015610582573d6000803e3d6000fd5b505050506040513d602081101561059857600080fd5b505115156105a557600080fd5b505050565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a03811615156105f657600080fd5b6106008282610411565b1561060a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561064457600080fd5b61064e8282610411565b151561065957600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820607cdb7d48cff40583123be547a706873bba6b846ef7d5e3d0130e7698d76c6e0029", + "bytecode": "608060405234801561001057600080fd5b506040516040806107e88339810180604052604081101561003057600080fd5b5080516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561007f906401000000006100a3810204565b6003805483919060ff19166001838181111561009757fe5b0217905550505061014c565b6100bb6002826401000000006105c76100be82021704565b50565b600160a060020a03811615156100d357600080fd5b6100e68282640100000000610115810204565b156100f057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561012c57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61068d8061015b6000396000f3fe608060405234801561001057600080fd5b506004361061005a5760e060020a60003504630c08bf88811461005f5780632e6b684914610069578063608d3d3d1461008f578063d43acc79146100c9578063fe4028bb146100d1575b600080fd5b6100676100f7565b005b6100676004803603602081101561007f57600080fd5b5035600160a060020a0316610115565b6100b5600480360360208110156100a557600080fd5b5035600160a060020a0316610135565b604080519115158252519081900360200190f35b610067610150565b610067600480360360208110156100e757600080fd5b5035600160a060020a0316610159565b61010033610135565b151561010b57600080fd5b610113610320565b565b61011e33610135565b151561012957600080fd5b610132816103e6565b50565b600061014860028363ffffffff6103f716565b90505b919050565b6101133361042e565b60005474010000000000000000000000000000000000000000900460ff161561018157600080fd5b61018a33610135565b151561019557600080fd5b600160a060020a03811660009081526004602052604090205460ff16156101bb57600080fd5b600081905080600160a060020a0316631777fb4b6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156101fc57600080fd5b505afa158015610210573d6000803e3d6000fd5b505050506040513d602081101561022657600080fd5b5051151561023357600080fd5b600081600160a060020a03166380258e476040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561027157600080fd5b505afa158015610285573d6000803e3d6000fd5b505050506040513d602081101561029b57600080fd5b50519050600560ff821611156102b057600080fd5b60006102bb8261043f565b9050600160035460ff1660018111156102d057fe5b14156102e0576064600a82020490505b600160a060020a038085166000908152600460205260409020805460ff191660019081179091555461031a9116858363ffffffff6104f116565b50505050565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a08231916024808301926020929190829003018186803b15801561038457600080fd5b505afa158015610398573d6000803e3d6000fd5b505050506040513d60208110156103ae57600080fd5b5051905060008111156103de576000546001546103de91600160a060020a0391821691168363ffffffff6104f116565b610132610590565b61013260028263ffffffff6105c716565b6000600160a060020a038216151561040e57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61013260028263ffffffff61061516565b600060ff8216151561045c575069152d02c7e14af680000061014b565b8160ff1660011415610479575069d3c21bcecceda100000061014b565b8160ff166002141561049757506a01a784379d99db4200000061014b565b8160ff16600314156104b557506a027b46536c66c8e300000061014b565b8160ff16600414156104d357506a034f086f3b33b68400000061014b565b8160ff166005141561014b57506a0422ca8b0a00a42500000061014b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561055457600080fd5b505af1158015610568573d6000803e3d6000fd5b505050506040513d602081101561057e57600080fd5b5051151561058b57600080fd5b505050565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a03811615156105dc57600080fd5b6105e682826103f7565b156105f057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561062a57600080fd5b61063482826103f7565b151561063f57600080fd5b600160a060020a0316600090815260209190915260409020805460ff1916905556fea165627a7a72305820da6d23ac8f4b151242d9a9cc936a0d9469d337bb92eddce5cc529e4f80d49b290029", "functionHashes": { "addCoreTeam(address)": "2e6b6849", "isCoreTeam(address)": "608d3d3d", @@ -91,7 +91,7 @@ }, "gasEstimates": { "creation": { - "codeDepositCost": "340600", + "codeDepositCost": "335400", "executionCost": "infinite", "totalCost": "infinite" }, diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/package-lock.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/package-lock.json index e2076f62f..18c9528d6 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/package-lock.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/package-lock.json @@ -5,15 +5,23 @@ "requires": true, "dependencies": { "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -23,23 +31,18 @@ "concat-map": "0.0.1" } }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" - }, "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" }, "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", "wrap-ansi": "^2.0.0" } }, @@ -48,31 +51,56 @@ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, + "command-exists": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.8.tgz", + "integrity": "sha512-PM54PkseWbiiD/mMsbvW351/u+dafwTJ0ye2qB60G1aGQP9j3xK2gmMDc+R34L3nDtx4qMCitXT75mkbkGJDLw==" + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "requires": { - "is-arrayish": "^0.2.1" + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "locate-path": "^2.0.0" } }, "fs-extra": { @@ -97,6 +125,11 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, "glob": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", @@ -115,11 +148,6 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -139,31 +167,20 @@ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "requires": { - "builtin-modules": "^1.0.0" - } - }, "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "jsonfile": { "version": "2.4.0", @@ -173,6 +190,17 @@ "graceful-fs": "^4.1.6" } }, + "keccak": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-1.4.0.tgz", + "integrity": "sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw==", + "requires": { + "bindings": "^1.2.1", + "inherits": "^2.0.3", + "nan": "^2.2.1", + "safe-buffer": "^5.1.0" + } + }, "klaw": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", @@ -189,28 +217,42 @@ "invert-kv": "^1.0.0" } }, - "load-json-file": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" } }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "requires": { + "mimic-fn": "^1.0.0" + } }, "memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=" }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -219,15 +261,17 @@ "brace-expansion": "^1.1.7" } }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "nan": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", + "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==" + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "path-key": "^2.0.0" } }, "number-is-nan": { @@ -244,85 +288,70 @@ } }, "openzeppelin-solidity": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/openzeppelin-solidity/-/openzeppelin-solidity-2.0.0.tgz", - "integrity": "sha512-SolpxQFArtiYnlSNg3dZ9sz0WVlKtPqSOcJkXRllaZp4+Lpfqz3vxF0yoh7g75TszKPyadqoJmU7+GM/vwh9SA==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/openzeppelin-solidity/-/openzeppelin-solidity-2.1.3.tgz", + "integrity": "sha512-Zz595xw6w4ZrNU3JJJTlPd8bHFbHv5OkJlkqsM2i+NBs6CzImoHI3dZ+nmhkfR+p52cGXKmayAGbnfdCum1SMg==" }, "os-locale": { - "version": "1.4.0", - "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "requires": { - "lcid": "^1.0.0" + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" } }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "requires": { - "error-ex": "^1.2.0" + "p-try": "^1.0.0" } }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "^2.0.0" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" }, "path-is-absolute": { "version": "1.0.1", "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { + "path-key": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "^2.0.0" - } + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, "require-directory": { "version": "2.1.1", @@ -330,9 +359,9 @@ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, "require-from-string": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", - "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" }, "require-main-filename": { "version": "1.0.1", @@ -340,13 +369,18 @@ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" }, "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "requires": { - "glob": "^7.0.5" + "glob": "^7.1.3" } }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "semver": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", @@ -357,90 +391,81 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, - "solc": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.24.tgz", - "integrity": "sha512-2xd7Cf1HeVwrIb6Bu1cwY2/TaLRodrppCq3l7rhLimFQgmxptXhTC3+/wesVLpB09F1A2kZgvbMOgH7wvhFnBQ==", + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "requires": { - "fs-extra": "^0.30.0", - "memorystream": "^0.3.1", - "require-from-string": "^1.1.0", - "semver": "^5.3.0", - "yargs": "^4.7.1" + "shebang-regex": "^1.0.0" } }, - "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { + "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz", - "integrity": "sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg==" + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "solc": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.5.4.tgz", + "integrity": "sha512-Jz3yz2mct0AYzR83/jBgxDqrLXTHhYUg2G2PVJbMMt5Vu+8e3Of1Mn3nvjPw5mh46jrzt8l4fBN7vHqG5ZF0cw==", + "requires": { + "command-exists": "^1.2.8", + "fs-extra": "^0.30.0", + "keccak": "^1.0.2", + "memorystream": "^0.3.1", + "require-from-string": "^2.0.0", + "semver": "^5.5.0", + "tmp": "0.0.33", + "yargs": "^11.0.0" + } }, "string-width": { - "version": "1.0.2", - "resolved": "http://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { - "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^3.0.0" } }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "requires": { - "is-utf8": "^0.2.0" + "os-tmpdir": "~1.0.2" } }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "isexe": "^2.0.0" } }, "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" - }, - "window-size": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", - "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, "wrap-ansi": { "version": "2.1.0", @@ -449,6 +474,39 @@ "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } } }, "wrappy": { @@ -461,34 +519,36 @@ "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, "yargs": { - "version": "4.8.1", - "resolved": "http://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", - "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", "requires": { - "cliui": "^3.2.0", + "cliui": "^4.0.0", "decamelize": "^1.1.1", + "find-up": "^2.1.0", "get-caller-file": "^1.0.1", - "lodash.assign": "^4.0.3", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", + "os-locale": "^2.0.0", "require-directory": "^2.1.1", "require-main-filename": "^1.0.1", "set-blocking": "^2.0.0", - "string-width": "^1.0.1", - "which-module": "^1.0.0", - "window-size": "^0.2.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", "y18n": "^3.2.1", - "yargs-parser": "^2.4.1" + "yargs-parser": "^9.0.2" } }, "yargs-parser": { - "version": "2.4.1", - "resolved": "http://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", - "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", "requires": { - "camelcase": "^3.0.0", - "lodash.assign": "^4.0.6" + "camelcase": "^4.1.0" } } } diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/package.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/package.json index c6ec5d4db..e0362baf7 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/package.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/package.json @@ -9,7 +9,7 @@ "author": "", "license": "ISC", "dependencies": { - "openzeppelin-solidity": "2.0.0", - "solc": "0.4.24" + "openzeppelin-solidity": "2.1.3", + "solc": "0.5.4" } } From 7000139481e1561735574f7b62b61f80954c3ec4 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Mon, 11 Mar 2019 20:22:11 +0100 Subject: [PATCH 17/17] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index c45c553d2..f173dfdc9 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,4 @@ # ALGOToken Responsible for the issuing of ALGO tokens + +Plese see the documentation at https://smartcontracts.superalgos.org/ .